I. Giới thiệu về các phương pháp Pentest
- Black box: Chuyên viên đánh giá kiểm tra mức độ bảo mật mà không có bất cứ thông tin nào về cấu trúc của ứng dụng, các thành phần bên trong của nó. Chuyên viên đánh giá đóng vai trò như một hacker. Nhân viên quản trị có thể giám sát hệ thống trong quá trình kiểm tra nhưng không được thay đổi thông tin cấu hình nếu không thỏa thuận trước với người kiểm tra. Sẽ có một bản báo cáo cho quá trình kiểm tra sau khi hoàn tất các khuyến cáo.
- White box: Có đầy đủ kiến thức, thông tin bên trong ứng dụng. White box bao gồm quá trình rà soát mã nguồn ứng dụng để tìm lỗi.
- Graybox: Chuyên viên đánh giá kiểm tra với một lượng thông tin được cung cấp.
Trong bài viết này Hocviendaotao sẽ hướng dẫn pentest black box sử dụng Burp Suite.
II. Đặc điểm của phương pháp Pentest Black box
- Tính sẵn sàng cao: Với phương pháp này, chuyên viên không nhất thiết phải chờ có mã nguồn thì mới có thể kiểm tra được ứng dụng, có thể kiểm tra bất cứ ứng dụng nào.
- Tái sử dụng cao: Khả năng sự dụng là việc kiểm tra đối với ứng dụng.
- Đơn giản, dễ thực hiện: Không đòi hỏi quy trình phức tạp.
- Tính bao phú hạn chế: Đây là một trong những hạn chế lớn nhất của Black box testing. Bạn cần phải xây dựng nhiều tình huống kiểm tra cho ứng dụng và phải quét hết các trường hợp đầu vào mà ứng dụng sử dụng.
III. Các bước tiến hành Pentest black box
1. Thu thập thông tin ứng dụng
- Kiểm tra các subdomain của trang web và các port tồn tại của mục tiêu.
- Các công cụ sử dụng: dig.exe (kiểm tra các zone transfer), nmap (kiểm tra port), site online (http://www.robtex.com/),..
- Kiểm tra ngôn ngữ lập trình và các framework được sử dụng trên mục tiêu.
- Site online: http://builtwith.com/
- Kiểm tra hệ điều hành và môi trường của mục tiêu.
- Kiểm tra các file chứa trong ứng dụng.
- Kiểm tra sự khác biệt của các HTTP method.
2. Xây dựng cấu trúc site, thư mục
Bước này cần duyệt tất cả các chức năng của ứng dụng thông qua intercept proxy. Có thể sử dụng công cụ spider để phát hiện những đường dẫn, chức năng còn bỏ sót. Kết thúc bước này cần xây dựng cấu trúc cây thư mục của ứng dụng.
Cây bao gồm các file, thư mục, các request/response phục vụ cho việc tìm điểm vào của ứng dụng. Công cụ sử dụng: Target tool, Proxy tool, Spider tool
a) Target tool
Đây là công cụ cho phép các chuyên gia có thể nhìn tổng quát nhất các phần của ứng dụng, liệt kê tất cả các link mà trình duyệt đã đi qua theo các đối tượng phân biệt bằng domain name và khu vực trong các ứng dụng.
♦ Tab Sitemap:
Những site hoặc link nào đang được mở trực tiếp trên browser sẽ có màu đen, các web hoặc link có liên kết tới nhưng không được người dùng bấm sẽ có màu xám.
Những tính năng quan trọng trong phần target:
- Add/ Remove from/to Scope : cho phép định nghĩa các ứng dụng nào là mục tiêu.
- Spider this host/branch : cho phép automatic crawl toàn bộ hoặc 1 phần của ứng dụng.
- Active/Passive Scan : cho phép scan tự động hoặc thụ động toàn bộ ứng dụng hoặc 1 phần của ứng dụng.

- Engagement tools (Pro version only):
+ Search : cho phép tìm theo từ khóa được định trước trong những phần của request hoặc response.
+ Find Comments : tìm tất cả chú thích trong khu vực được chọn.
+ Find scripts : tìm tất cả các javascript trong khu vực được chọn.
+ Find references : tìm các references trong khu vực được chọn.
+ Analyze target : liệt kê các link trong khu vực được chọn bao gồm : static link, dynamic link, parameters……
+ Discover content : tìm các file tồn tại trong khu vực được chọn.
+ Schedule task : tạo schedule cho scan, spider, save state….
+ Find Comments : tìm tất cả chú thích trong khu vực được chọn.
+ Find scripts : tìm tất cả các javascript trong khu vực được chọn.
+ Find references : tìm các references trong khu vực được chọn.
+ Analyze target : liệt kê các link trong khu vực được chọn bao gồm : static link, dynamic link, parameters……
+ Discover content : tìm các file tồn tại trong khu vực được chọn.
+ Schedule task : tạo schedule cho scan, spider, save state….
♦ Tab Scope:
Tab dùng để điều chỉnh các site nào được định nghĩa trong scope. Đối với các ứng dụng nào đưa vào scope sẽ được dùng trong các công cụ khác rất tiện lợi.

- Include in scope : các URL trong đây sẽ được đưa vào scope.
- Exclude from scope : các URL trong đây sẽ được loại trừ khỏi scope.
Note: có thể định nghĩa trực tiếp các scope tại tab Site map.
b) Proxy tool
Proxy tools là công cụ trung gian nằm giữa client browser và web server cho phép xoá, sửa các request và response được gửi giữa web server và client. Proxy tool bao gồm 3 tab:
♦ Tab Intercrept
Mặc định khi bật lên Proxy tool đang ở trạng thái “Intercept is on”. Ở trạng thái này tất cả request sẽ bị chặn lại và có thể sửa trực tiếp và gửi tới web server sau đó bằng cách nhấn nút Forward hoặc xoá bỏ bằng cách nhấn nút Drop.

- Action: cho phép thực hiện nhiều tác vụ như:
+ Gửi request đến đến các công cụ khác của Burp Suite
+ Request in browser : cho phép xem lại request ngay trên browser trong 2 trường hợp : trong session hiện tại hoặc original session
+ Engagement tool : Find references, Content Discovery, Schedule, Generate
+ CSRF PoC (tạo file htm đã được nhấn kèm hành động dùng để kiểm tra CSRF)
+ Change request method : thay đổi method đang được sử dụng POST ⇔ GET
+ Don’t intercept :
+ Do intercept > Response of this request : cho phép chặn và sửa response của chính request đang intercept
+ Request in browser : cho phép xem lại request ngay trên browser trong 2 trường hợp : trong session hiện tại hoặc original session
+ Engagement tool : Find references, Content Discovery, Schedule, Generate
+ CSRF PoC (tạo file htm đã được nhấn kèm hành động dùng để kiểm tra CSRF)
+ Change request method : thay đổi method đang được sử dụng POST ⇔ GET
+ Don’t intercept :
+ Do intercept > Response of this request : cho phép chặn và sửa response của chính request đang intercept
- Comment this item : khi comment, comment sẽ xuất hiện trong tab History

♦ Tab History
Liệt kê tất cả mọi request và response đã được trao đổi giữa server và client browser. Ngoài ra tab còn có thể tạo các filter nhằm tập trung vào các phần mà người sử dụng quan tâm.

Có thể tạo nhiều tab History ứng dụng rất tốt cho phép tạo từng tab History riêng biệt cho từng browser. Các column trong tab có thể sort theo thứ tự và thay đổi vị trí tùy ý.
♦ Tab Options

- Proxy listeners : thêm, sửa, xóa các port mà Burp suite sẽ lắng nghe request gửi tới.
- Intercept client request : định nghĩa các request nào sẽ bị chặn lại để thay đổi trong tab Intercept. Content-length của request sẽ được tự động update khi có thay đổi trong request.
- Intercept Server Response : định nghĩa các response từ web server sẽ bị chặn lại để thay đổi trong tab Intercept. Content-length của request sẽ được tự động update khi có thay đổi trong request.
- Response Modification : thay đổi các thuộc tính của response. Quan trọng nhất là :
+ Unhide hidden form fields : hiện các form ẩn
+ Enable disable form fields : hiện các form bị disable
+ Remove Javascript form validation : xóa các javascript filter tại các form
+ Enable disable form fields : hiện các form bị disable
+ Remove Javascript form validation : xóa các javascript filter tại các form
- Match and replace : nếu trùng sẽ được thay thế bởi các parameter định nghĩa trước. Hữu dụng đối với các trường hợp cần thay đổi hay chặn các link chính xác hoặc theo regrex.
- Miscellaneous : các tinh chỉnh thêm trong các request và response.
c) Spider tool
♦ Tab Control
Cho phép bắt đầu và dừng spider các link.

♦ Tab Options
- Crawler Settings : điều chỉnh các nguồn đầu vào của crawler
- Passive Spidering : crawl các link như theo browser không tự động gửi request
- Form Submissions : cấu hình các thông tin để gửi khi có thông tin yêu cầu trong quá trình crawl

- Application Login : cấu hình login vào application, cho phép manual, tự động hoặc không submit các form

- Spider Engine : cấu hình tần suất gửi các request trong quá trình crawl
+ Number of threads : số connection mở đồng thời tới web server
+ Number of retries on network failure : số lần thử lại khi không gửi được request
+ Pause before retry : thời gian giữa các lần thử lại
+ Request Header : cho phép sửa các field trong request Header được sử dụng bởi Spider
+ Number of retries on network failure : số lần thử lại khi không gửi được request
+ Pause before retry : thời gian giữa các lần thử lại
+ Request Header : cho phép sửa các field trong request Header được sử dụng bởi Spider
Lưu ý, tất cả thao tác duyệt phải thực hiện thông qua Intercrept Proxy để lưu lại thông tin về sitemap, request. Khi kết thúc quá trình, ta thu được sitemap của ứng dụng bao gồm cấu trúc file, thư mục, các url. Nên lưu lại trạng thái của sitemap.
3. Xác định các điểm vào của ứng dụng
Bước này tiến hành phân tích sitemap, các request thu được ở bước trên, xác định tất cả các điểm vào của ứng dụng. Quá trình thực hiện:
Quan sát lại sitemap, tiến hành nhận diện các chức năng cốt lõi mà ứng dụng tạo ra và hành động của mỗi chức năng được thiết kế.
Nhận diện được các cơ chết bảo mật cốt lõi và cách làm việc của chúng. Hiểu cơ chế xử lý chứng thực, quản lý phiên, điều khiển truy cập và các chức năng hỗ trợ như đăng ký, khôi phục mật khẩu. Ví dụ: kiểm tra xem đăng nhập có sử dụng phương pháp gì: token hay username/password, có sử dụng capcha không, quản lý phiên như thế nào, giá trị session được sinh ra như thế nào, có cung cấp chứng năng đăng ký hay quên mật khẩu không, cơ chế đăng ký và khôi phục như thế nào,…
Nhận diện tất cả các điểm nhập liệu khác nhau mà người dùng gửi đến ứng dụng để xử lý như: các URL chứ chuỗi truy vấn, các tham số gửi qua URL, các tham số trong body của POST request, cookie, các header mà ứng dụng có thể xử lý (User-Agent, Referer, Accept,…),…
Phân tích các HTTP request ở trên để đảm bảo thu thập hết các điểm vào của ứng dụng. Công cụ sử dụng: Burp suite Intruder để fuzzing resource. Intruder tool sử dụng nhằm tự động hoá việc gửi các request theo quy tắc do chuyên viên kiểm tra đặt ra. Việc sử dụng Intruder tool sẽ giúp tăng tốc độ kiểm tra bảo mật.
Intruder tool bao gồm 5 phần :
♦ Tab Target: Định nghĩa mục tiêu tấn công
- Host: domain name của mục tiêu
- Port: Port sẽ gửi request tới
- Use HTTPS: sử dụng kết nối SSL

♦ Tab Position: Xác định vị trí điểm sẽ tấn công và kiểu fuzzing
- Add các điểm sẽ nhập payload
- Clear các điểm nhập payload sẵn có
- Automatic chọn tất cả các điểm có thể nhập payload (sau dấu =)
- Button Clear phía dưới dùng để xoá toàn bộ request
- Các điểm nhập payload hoàn toàn có thể tùy biến theo ý tưởng của chuyên viên
- Các payload sẽ được nhập vào thay chỗ cho các ký tự giữa từng cặp $$ và số lượng các ký tự $ luôn phải là số chẵn
- Request sẽ được gửi chính xác như được xác định tại đây kể cả khoảng trống (spacebar)
Lưu ý : a$$ sẽ khác a $$ (có khoảng trống giữa a và $$)

Định nghĩa kiểu các payload sẽ được gửi :
- Cùng sử dụng chung 1 payload cho tất cả mọi điểm nhập payload:
+Sniper : sử dụng chung 1 payload gửi lần lượt tại tất cả mọi điểm nhập payload theo thứ tự từ trái qua phải và từ trên xuống dưới, chạy hết position 1 chạy tiếp position 2.
+ Battering Ram : sử dụng chung 1 payload gửi cùng lúc tại mọi điểm nhập payload.
+ Battering Ram : sử dụng chung 1 payload gửi cùng lúc tại mọi điểm nhập payload.
- Gửi các payload khác nhau cho các điểm nhập khác nhau :
+ Pitchfork : gửi các payload khác nhau cùng lúc theo thứ tự trong payload tại mọi điểm nhập payload
+ Cluster Bomb : gửi các payload lần lượt theo danh sách, các payload sẽ kết hợp chéo với nhau
+ Cluster Bomb : gửi các payload lần lượt theo danh sách, các payload sẽ kết hợp chéo với nhau
Attack type | Payload | Position | Thứ tự chạy | Ví dụ |
Sniper | 1 payload | Chạy lần lượt từng position, có thể nhiều position | Từ trái sang phải, từ trên xuống dưới | A B C |
Battering Ram | 1 payload | Chạy đồng thời tất cả các position, có thể nhiều position | A A B B C C | |
Pitchfork | Nhiều payload | Chạy đồng thời tất cả các position, có thể nhiều position | A 1 B 2 C 3 | |
Cluster Bomb | Nhiều payload | Chạy đồng thời, kết hợp các payload với nhau, có thể nhiều position | A1 B1 A2 B2 |

♦ Tab Payload: xác định các thành phần, nguồn gửi và quy tắc gửi các request
- Payload set là số payload được chỉ định tại tab Position. Khi có nhiều payload, để cấu hình các payload sẽ chọn tại đây
- Payload type là nơi cấu hình cho các kiểu payload như

+ Simple list : các payload sẽ được đưa thủ công vào đây
+ Runtime file : payload sẽ được lấy trực tiếp từ file được viết sẵn
+ Custom iterator : đây là payload phức tạp cho phép cấu hình nhiều payload con (max 8 payload) tại 1 position. VD: nếu muốn cấu hình 2 payload chạy tại position 1 ta sẽ cấu hình (1) > (2) rồi chọn payload (3),(4),(5). Các payload con này sẽ chạy tương tự như kiểu cluster bomb tại position 1. Các position khác vẫn chạy bình thường theo cấu hình ở Tab Position.
+ Runtime file : payload sẽ được lấy trực tiếp từ file được viết sẵn
+ Custom iterator : đây là payload phức tạp cho phép cấu hình nhiều payload con (max 8 payload) tại 1 position. VD: nếu muốn cấu hình 2 payload chạy tại position 1 ta sẽ cấu hình (1) > (2) rồi chọn payload (3),(4),(5). Các payload con này sẽ chạy tương tự như kiểu cluster bomb tại position 1. Các position khác vẫn chạy bình thường theo cấu hình ở Tab Position.

+Character Substitution : payload chạy tương tự như simple list nhưng cho phép thay đổi các ký tự theo chuẩn định trước
+ Case modification : payload chạy tương tự như simple list nhưng cho phép thay đổi các kiểu của ký tự sang chữ thường, chữ hoa,…..
+ Recursive grep : cho phép trích xuất kết quả của response trước làm đầu vào của request sau. Phần trích xuất này phải được định nghĩa trong Tab Option. Kiểu payload này rất hữu dụng khi khai thác các kiểu SQL injection mà cần lấy kết quả trước làm đầu vào sau (VD: select top 1 table_name from information_schema.tables where table name not in $PAYLOAD$)
+ Illegal Unicode: payload này cho phép chuyển các character sang các kiểu encode khác như UTF-8, hex, …. Để bypass các filter
+ Character block : cho phép tạo từng block character hiệu quả trong kiểu kiểm tra về buffer overflow.
+ Number : payload là kiểu số
+ Dates : payload là ngày tháng
+ Brute forcer : payload dùng để brute force theo các ký tự được chỉ định.
+ Null payload : payload rỗng dùng trong các trường hợp cần kiểm tra về performace hoặc ki không cần payload chỉ tạo request liên tục.
+ Bit flipper : cho phép thay đổi payload theo từng bit.
+ Username Generator : payload dùng để tạo username hữu dụng trong các trường hợp brute force username
+ ECB Block Shuffler : payload để thay đổi các block mã hóa ECB
+ Case modification : payload chạy tương tự như simple list nhưng cho phép thay đổi các kiểu của ký tự sang chữ thường, chữ hoa,…..
+ Recursive grep : cho phép trích xuất kết quả của response trước làm đầu vào của request sau. Phần trích xuất này phải được định nghĩa trong Tab Option. Kiểu payload này rất hữu dụng khi khai thác các kiểu SQL injection mà cần lấy kết quả trước làm đầu vào sau (VD: select top 1 table_name from information_schema.tables where table name not in $PAYLOAD$)
+ Illegal Unicode: payload này cho phép chuyển các character sang các kiểu encode khác như UTF-8, hex, …. Để bypass các filter
+ Character block : cho phép tạo từng block character hiệu quả trong kiểu kiểm tra về buffer overflow.
+ Number : payload là kiểu số
+ Dates : payload là ngày tháng
+ Brute forcer : payload dùng để brute force theo các ký tự được chỉ định.
+ Null payload : payload rỗng dùng trong các trường hợp cần kiểm tra về performace hoặc ki không cần payload chỉ tạo request liên tục.
+ Bit flipper : cho phép thay đổi payload theo từng bit.
+ Username Generator : payload dùng để tạo username hữu dụng trong các trường hợp brute force username
+ ECB Block Shuffler : payload để thay đổi các block mã hóa ECB
- Payload Proccessing cho phép cấu hình thêm một số rule cho payload như thêm vào phần đầu của payload, thêm vào sau payload,… Có thể cấu hình nhiều rule, các rủ sẽ được xét thứ tự từ trên xuống dưới.

- Payload encode: cho phép URL encode các ký tự đặc biệt có thể có trong payload
♦ Tab Options : xác định các thành phần hỗ trợ cho payload và response
- Request Header:
+ Update content-length header : tự động update content-length header nếu payload thay đổi
+ Set Connection: close : kết thúc connection sau mỗi request
+ Set Connection: close : kết thúc connection sau mỗi request
- Request Engine: cấu hình tần suất và cách thức gửi payload
- Attack result: Chỉ định cách thức lưu kết quả của payload
- Grep-Match: Đây là phần cực kỳ hữu dùng trong trường hợp cần tìm và phân tích các phần trong response trả về, các từ cần tìm sẽ được đưa thủ công hoặc load trực tiếp từ file
- Grep-Extract: Tương tự như Grep-Match nhưng kết hợp với Recursive Grep để trích xuất từ Response đưa vào request
- Grep-payload: Sử dụng để tìm trong response chính payload đưa vào. Sử dụng khi kiểm tra XSS
+ Result table : phân tích kết quả trả về theo quy tắc được định sẵn.
Các thành phần liên quan đến Intruder bao gồm : Tab Session, Macros trong tab chính OPTIONS
4. Xác định khả năng tấn công
Bước này tiến hành phân tích từng điểm vào ứng dụng, xác định điểm vào đó có thể mắc lỗi gì. Mục đích là xác định khả năng tấn công ứng dụng. Ánh xạ giữa cấu trúc bên trong và chức năng của ứng dụng ở phía server. Ví dụ một chức năng nhận thông tin đặt hàng của khách hàng thì chắc chắn sẽ tương tác với database.
Bước này yêu cầu:
Hiểu được những chức năng chính được triển khai như thế nào ? sử dụng cơ chế bảo mật như thế nào ?
Xác định tất cả chức năng chi tiết của ứng dụng và ánh xạ những chức năng này sang những lỗ hổng bảo mật có thể mắc. Với mỗi điểm vào ứng dụng thu được ở trên, nhận diện các lỗi thông dụng thường xuất hiện ở chúng. Cụ thể như sau:
Hiểu được những chức năng chính được triển khai như thế nào ? sử dụng cơ chế bảo mật như thế nào ?
Xác định tất cả chức năng chi tiết của ứng dụng và ánh xạ những chức năng này sang những lỗ hổng bảo mật có thể mắc. Với mỗi điểm vào ứng dụng thu được ở trên, nhận diện các lỗi thông dụng thường xuất hiện ở chúng. Cụ thể như sau:
STT | Chức năng/Tương tác | Khả năng mắc lỗi |
1 | Tương tác với cơ sở dữ liệu | SQL injection |
2 | Tương tác với hệ thống (ping, traceroute) | Command injection |
3 | File upload, download | Path traversal, stored cross-site scripting |
4 | Hiển thị thông tin do người dùng cung cấp | Cross-site scripting |
5 | Dynamic redirects | Chuyển hướng người dùng, header injection |
6 | Đăng nhập, đăng ký, khôi phục mật khẩu. | Liệt kê người dùng, mật khẩu yếu, tấn công brute force |
7 | Đăng nhập nhiều lớp (username/password, token) | Logic flaws |
8 | Tính năng mạng xã hội, thông tin tài khoản | Liệt kê người dùng, stored cross-site scripting |
9 | Tương tác với email | E-mail hoặc command injection |
10 | Sử dụng ứng dụng hãng thứ ba | Những lỗ hổng đã công bố |
11 | Phiên | Session Fixation |
12 | Chức năng quan trọng (thêm, sửa, xóa người dùng) | CSRF |
13 | Thông tin truyền dạng rõ | Session Hjacking |
14 | Phân quyền theo chiều ngang | Phân quyền truy cập dữ liệu |
15 | Phân quyền theo chiều dọc | Leo thang đặc quyền |
Nếu ứng dụng sử dụng nền tảng bên thứ ba cung cấp, tiến hành tìm kiếm những lỗ hổng bảo mật đã được công bố tại: www.osvdb.org.
Lưu ý: Tìm kiếm với phiên bản tương ứng.
5. Kiểm tra các lỗi thường gặp
Công cụ sử dụng: Burp suite Repeater
Đây là công cụ dùng thường xuyên nhất đối với chuyên viên kiểm tra bảo mật Cho phép thay đổi bất cứ phần nào trong request trực tiếp trong raw mode.

Repeater cũng có các thành phần tương tự như tab Target

Dựa vào thông tin về điểm vào, lỗi có thể mắc, tiến hành kiểm tra khả năng mắc lỗi với từng điểm vào ứng dụng. Kiểm tra các lỗi:
Lỗi liên quan đến xác thực: liệt kê người dùng, tấn công vét cạn mật khẩu, chính sách mật khẩu mạnh.
Lỗi liên quan đến quản lý phiên: Session Fixation, Session Hijacking, lỗi CSRF.
Lỗi liên quan đến phân quyền, logic ứng dụng: lỗi phân quyền truy cập người dung, lỗi leo thang đặc quyền.
Lỗi không mã hóa dữ liệu nhạy cảm, sử dụng thuật toán mã hóa yếu.
Lỗi cho phép spam SMS, email.
Lỗi phê chuẩn đầu vào dữ liệu, bao gồm:
+ Lỗi nhúng mã: SQL injection, OS command injection
+ Lỗi Cross-site-scripting
+ Lỗi thao tác với file: Path Traversal, Local File include/Remote File include.
+ Lỗi liên quan đến chuyển hướng người dùng.
Lỗi liên quan đến quản lý phiên: Session Fixation, Session Hijacking, lỗi CSRF.
Lỗi liên quan đến phân quyền, logic ứng dụng: lỗi phân quyền truy cập người dung, lỗi leo thang đặc quyền.
Lỗi không mã hóa dữ liệu nhạy cảm, sử dụng thuật toán mã hóa yếu.
Lỗi cho phép spam SMS, email.
Lỗi phê chuẩn đầu vào dữ liệu, bao gồm:
+ Lỗi nhúng mã: SQL injection, OS command injection
+ Lỗi Cross-site-scripting
+ Lỗi thao tác với file: Path Traversal, Local File include/Remote File include.
+ Lỗi liên quan đến chuyển hướng người dùng.
Phương pháp kiểm tra đối với những lỗi thuộc dạng phê chuẩn đầu dữ liệu là sử dụng kỹ thuật Fuzzing. Phương pháp này có nghĩa là tiến hành gửi tới điểm vào dữ liệu những loại dữ liệu không hợp lệ (dữ liệu sai, dữ liệu gây lỗi, thường được gọi là mã tấn công, payload), nhận lấy kết quả trả về từ ứng dụng, phân tích xem có khả năng mắc lỗi hay không. Việc fuzzing được tiến hành ở tất cả điểm vào ứng dụng, bao gồm:
- URI: Các thành phần trong URI, Post Data
- Protocol: Các thành phần gồm: HTTP Protocol, HTTP Header, Cookie
- Fuzzing URI: URI có cấu trúc như sau:
/[path]/[page].[extension]?[name]=[value]&[name]=[value] |
Trong đó:
- path: Đối với path thì trong quá trình fuzz các lỗi thường được kiểm tra là path traversal.
- page: Đối với page thì có thể có các lỗi như để lộ những tập tin nhạy cảm như config.bin, config.inc, …
- extension: Khi fuzzing một số extension mà server không hỗ trợ có thể nhận diện ra được công nghệ mà web server đó sử dụng và nhận thấy lỗi thông báo từ web server khi thực hiện truy vấn các extension không hỗ trợ.
- name: quá trình fuzzing các thành phần biến có thể dẫn đến khám phá các biến mà không công bố mà có khả năng vượt qua server. Hơn nữa việc gửi các thêm các biến không mong đợi có thể dẫn đến ứng dụng ứng dụng bộc lộ thêm các ứng xử không lường trước.
- value: các giá trị này là các giá trị mà ứng dụng mong đợi từ người sử dụng, trong quá trình fuzzing thì việc thay đổi các giá trị mong đợi từ ứng dụng có thể kiểm tra ứng dụng có thể bị các lỗi như các lỗi liên quan đến chèn như sql injection, xss, local file inclusion, remote file inclusion, … Đây là thành phần được kiểm tra nhiều nhất.
- separator: là thành phần mà web server sử dụng để nhận biết các tham số và giátrị mà ứng dụng Web server sử dụng. Trong quá trình fuzzing các separator này thì các webserver khác nhau thì sẽ có kiểu xử lý khác nhau.
+ Fuzzing Protocol: Giao thức HTTP hay sử dụng HTTP/1.0 và HTTP/1.1. Tiến hành fuzzing các thành phần mà giao thức HTTP, gồm:
Fuzzing các phương thức đệ trình khác ngoài GET/POST như PUT, DELETE, TRACE, …
Fuzzing các phương thức đề trình khác mà giao thức HTTP không hỗ trợ để xem sự phản ứng của Web Server.
Fuzzing Header và Cookies: Cấu trúc của Header trong giao thức HTTP có dạng: [Header name]: [Header value]
Quá trình fuzzing các thành phần Header name và Header value để xem sự phản ứng của Web Server. Lưu ý nếu gửi dữ liệu bằng phương thức POST thì dữ liệu được gửi trong phần Header và cách kiểm tra cũng tương tự như Fuzzing URI.
Cookies là thành phần quan trọng trong ứng dụng Web và thường được ứng dụng Web làm nơi lưu trữ thông tin phiên làm việc. Fuzzing các thành phần của Cookies luôn cần được chú ý đến. Các thức fuzzing cũng tương tự như Fuzzing URI.
Fuzzing các phương thức đệ trình khác ngoài GET/POST như PUT, DELETE, TRACE, …
Fuzzing các phương thức đề trình khác mà giao thức HTTP không hỗ trợ để xem sự phản ứng của Web Server.
Fuzzing Header và Cookies: Cấu trúc của Header trong giao thức HTTP có dạng: [Header name]: [Header value]
Quá trình fuzzing các thành phần Header name và Header value để xem sự phản ứng của Web Server. Lưu ý nếu gửi dữ liệu bằng phương thức POST thì dữ liệu được gửi trong phần Header và cách kiểm tra cũng tương tự như Fuzzing URI.
Cookies là thành phần quan trọng trong ứng dụng Web và thường được ứng dụng Web làm nơi lưu trữ thông tin phiên làm việc. Fuzzing các thành phần của Cookies luôn cần được chú ý đến. Các thức fuzzing cũng tương tự như Fuzzing URI.
Sau khi tiến hành gửi, fuzzing điểm vào ứng dụng, cần phân tích kết quả fuzzing để biết điểm vào đó có mắc lỗi hay không. Để nhận biết có mắc lỗi hay không, có thể phân tích, nhận biết theo:
• HTTP Status code: Trong quá trình fuzzing thì cách Web Server xử lý thường
• bộc lộ qua mã trạng thái của nó. Ví dụ: 401 – Unauthorized, 500 – Internal
• Server Errors …
• Web server error messages: Các thông điệp được thông báo bởi ứng dụng hoặc
• Web Server.
• Dropped connections: Quá trình fuzzing có thể dẫn đến Web server bị down
• bởi một dữ liệu fuzzing nào đó.
• Log files và Event Logs: Là các nhật ký hệ thống lưu trữ quá trình trao đổi
• giữa Web Server và User.
Quá trình tiến hành fuzzing với mỗi loại lỗi, bao gồm vị trí tiến hành fuzzing, mã tấn công, phương pháp nhận diện lỗi khác nhau. Tùy mỗi đặc trưng của từng lỗi sẽ có đặc điểm, cách làm khác nhau. Trong phần trên, mỗi điểm vào ứng dụng đều được tiến hành dự đoán lỗi có thể mắc phải.
• HTTP Status code: Trong quá trình fuzzing thì cách Web Server xử lý thường
• bộc lộ qua mã trạng thái của nó. Ví dụ: 401 – Unauthorized, 500 – Internal
• Server Errors …
• Web server error messages: Các thông điệp được thông báo bởi ứng dụng hoặc
• Web Server.
• Dropped connections: Quá trình fuzzing có thể dẫn đến Web server bị down
• bởi một dữ liệu fuzzing nào đó.
• Log files và Event Logs: Là các nhật ký hệ thống lưu trữ quá trình trao đổi
• giữa Web Server và User.
Quá trình tiến hành fuzzing với mỗi loại lỗi, bao gồm vị trí tiến hành fuzzing, mã tấn công, phương pháp nhận diện lỗi khác nhau. Tùy mỗi đặc trưng của từng lỗi sẽ có đặc điểm, cách làm khác nhau. Trong phần trên, mỗi điểm vào ứng dụng đều được tiến hành dự đoán lỗi có thể mắc phải.
Cập nhật công nghệ từ Youtube tại link: https://www.youtube.com/channel/UCOxeYcvZPGf-mGLYSl_1LuA/videos
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ vui lòng liên hệ qua email: dinhanhtuan68@gmail.com hoặc Zalo
Nếu bạn muốn tạo video chuyên nghiệp và sáng tạo hãy tham gia khóa học HƯỚNG DẪN TỰ TẠO VIDEO CLIP CHUYÊN NGHIỆP SÁNG TẠO