Penetration Testing Step 3 – Web Attacks nên bắt đầu từ đâu?

Kết thúc nội dung Penetration Testing Step 2 – Tập tành Vulnerability Scanning với Nessus, dù cũng còn nhiều thứ cần nói nhưng tôi xin tạm gác lại đó để nhảy qua Step 3 – Penetration Attempt Tấn công của quá trình Penetration Testing luôn cho nó máu.

Với Penetration Attempt, bạn có thể có nhiều dạng target khác nhau. Nhưng trong đám đó có 1 đối tượng luôn đứng đầu danh sách về mức độ phổ biến là Web Application. Vì lẽ đó, trong chủ đề chính hôm nay, tôi sẽ tập trung chém gió về vấn đề Web Application Attacks (sau đây tôi gọi tắt là Web Attacks thôi cho gọn).

Lưu ý: Nếu bạn chưa biết gì về Penetration Testing thì có thể xem thêm nội dung Penetration Testing – 6 điều tối thiểu bạn cần biết tôi đã giới thiệu.

#1. Mười chiêu thức cần nằm lòng của Web Attacks

Xem xét Web Attacks, tùy thuộc target cụ thể, công tác enumeration & exploit vulnerabilities (tôi tạm dịch là liệt kê và khai thác lỗ hổng) cũng sẽ có cả tỉ thứ ảo diệu khôn lường. Tuy nhiên, may mắn thay, bạn đã có vị cứu tinh là OWASP Top 10 list, dự án cung cấp thông tin về 10 chiêu thức nền tảng liên quan đến Web Attacks để từ đó bạn có thể tạo ra vô vàn combo lợi hại. Thông tin về 10 chiêu thức này tóm lược như sau:

OWASP top 10
OWASP top 10

#2. Triển Web Attacks nên bắt đầu từ đâu?

Dù 10 chiêu thức Web Attacks nói trên đã được nghiên cứu và giới thiệu chi tiết nhưng nếu mới đầu trận mà bạn đã đòi xông vào triển ngay đám này thì khả năng vỡ mồm khá cao.

Như lẽ thường, chuyện gì cũng phải có đầu có đuôi, bạn nên bỏ một ít thời gian ngâm cứu về target với các kỹ thuật lướt web như “người thường” thông qua web browser để cố gắng xác định các vấn đề cơ bản như:

  • Web có các chức năng gì?
  • Sử dụng programming language & frameworks gì?
  • Sử dụng web server software?
  • Sử dụng database software gì
  • Sử dụng server operating system gì?

Để trả lời các câu hỏi trên, bạn sẽ có một số phương án như sau.

#2.1 URL inspection

Việc kiểm tra URL và file extension (ví dụ .php, .jsp, .do, .html) có thể giúp bạn xác định programming language của target. Ví dụ với ông Facebook chạy với php như sau.

URL inspection
URL inspection

#2.2 Page source inspection

Kế đến, bạn có thể kiểm tra page source để xác định thêm thông tin với Inspecting tool. Ví dụ, với Firefox có sẵn trên Kali Linux, tôi có thể triển bằng phím tắt Ctrl + Shift + K hoặc chuột phải chọn Inspect Element đại vô một thành phần nào đó (cái này sẽ đặc biệt hữu ích khi cần tìm soi kỹ 1 element cụ thể).

Page source inspection
Page source inspection

Tại đây bạn sẽ có thể soi kèo các nội dung thú vị như:

  • Page content/source;
  • Framework (ví dụ JavaScript);
  • Hidden input field/comment;
  • Client-side controls;
Page source inspection result 1
Page source inspection result 1
Page source inspection result 2
Page source inspection result 2

Lưu ý: Cái ký hiệu “{}” ở dưới cùng của tab DebuggerPretty Print. Bấm vào đó bạn sẽ view code dễ hơn (tất nhiên với điều kiện bạn đã biết đọc code).

Page source inspection result 3
Page source inspection result 3

#2.3 Kiểm tra Respone Headers

Bạn cũng có thể đọc thêm thông tin với Respone Headers thông qua việc sử dụng:

  • Proxy: cho phép intercept (can thiệp) request/response giữa client và web server. Cái này tôi sẽ giới thiệu kỹ hơn sau với thằng Burp Suite;
  • Network: tab Network ví dụ như trong cái Firefox Web Developer menu ở trên cũng cho phép bạn xem thông tin request/response. Lưu ý thằng này để xem chuyện đã rồi nên bạn cần refresh page để xem lại lịch sử traffic.

Ví dụ với trang megacorpone.com của ông Offensive Security, bạn sẽ có thể đọc thông tin liên quan đến web server software như sau

Respone headers
Respone headers

#2.4 Thông tin từ Sitemap

Sitemap files giúp search engine bot crawlindex site (tôi tạm dịch là cào hốt và đánh chỉ mục cho site). Các file này thường cũng sẽ bao gồm thông tin các URL nhạy cảm/ admin console không được crawl (nhưng đây là chỗ mấy ông pentester khoái nhất). Hai dạng phổ biến nhất của đám này là robots.txtsitemap.xml. Ví dụ thử với sư cụ Google, bạn sẽ thấy chỗ nào Allow/Disallow (cho phép/không cho phép) kiểu như sau:

Sitemap check
Sitemap check

Lưu ý: curl tôi có giới thiệu trong nội dung Giải ngố Kali Linux – Phần 8: Download file trên Linux với wget và curl

#2.5 Admin Console

Các web server thường có remote administration web application/console có thể truy cập qua URL cụ thể (và TCP port cụ thể). Với MySQL, hai dạng manager application phổ biến là TomcatphpMyAdmin (tương ứng với /manager/html/phpadmin hoặc vị trí khác tùy thuộc application server software cụ thể). Đúng chuẩn thì các console này sẽ bị giới hạn chỉ cho phép local access (truy cập nội bộ thay vì từ xa) hoặc thông qua thiết lập custom TCP port. Tuy nhiên, đôi khi mấy ông quản lý “quên” nên vẫn để cấu hình mặc định dẫn đến cho phép truy cập từ bên ngoài. Nhìn chung, khả năng mấy ổng quên là khá thấp nhưng ai biết được, biết đâu trời độ, bạn lại vớ bẫm được thì sao?

#3. Web Attacks Tool và ông thần Burp Suite

Sau khi thỏa mãn với việc thăm dò và khám phá web target thủ công như “người thường” nói trên, đã đến lúc bạn móc hàng nóng là các Web Attacks Tool ra để múc target. Tool hỗ trợ phát hiện và khai thác web vulnerabilities thì có khá nhiều và đa phần đã được cài sẵn trên Kali Linux.

Và cũng như phần Vulnerabilities Scanning, khi sử dụng Web Attacks Tool, đặc biệc là các con hàng có chế độ chạy tự động, bạn nên bỏ thời gian nghiên cứu nắm rõ nguyên lý hoạt động trước khi động thủ. Việc này sẽ giúp bạn có thể xác định khi nào tool cho kết quả False Positive/ False Negative để có phương án kiểm tra/ điều chỉnh phù hợp. Ngoài ra, đôi khi đời không như mơ, cũng sẽ có tình huống bạn cũng không được lựa chọn tool yêu thích mà bắt buộc “có gì chơi nấy” hay thậm chí phải tay không bắt cướp, không có tool tiếc gì sất. Do vậy, khả năng xử lý thủ công mỹ nghệ luôn là kỹ năng đáng đồng tiền bát gạo.

Quay trở lại vấn đề chính, khi bàn về đám tool phục vụ Web Attacks thì không thể không nhắc đến một nhân vật tai to mặt bự là ông thần Burp Suite của Portswigger.

Burp Suite
Burp Suite

Burp Suite, về cơ bản, là bộ tool dạng GUI-based chuyên trị web security testing với 2 dạng:

  • Community Edition: chủ yếu bao gồm các tool để test thủ công;
  • Commercial version (Professinal & Enterprise Edition): tăng khả năng tự động hóa, tích hợp cũng như bổ sung thêm các tính năng trâu chó hơn cho vunerability scanner.

Vì là hàng khủng nên việc sử dụng Burp Suite điêu luyện cũng đòi hỏi bạn sẽ phải đầu tư khá nhiều thời gian để nghiên cứu. Để bảo đảm liền mạch câu chuyện, trong nội dung kỳ này, tôi sẽ dạo đầu với Burp Suite nhiêu đó thôi. Kỳ tới tôi sẽ bàn kỹ hơn về cái tool khủng này.

1 thought on “Penetration Testing Step 3 – Web Attacks nên bắt đầu từ đâu?”

Leave a Reply

Your email address will not be published. Required fields are marked *