Trước khi vào bài viết này, mình muốn chia sẻ lý do tại sao có bài viết này. Trong quá trình mình đi giảng dạy các khóa học về Secure Coding hay những workshop, team Security có những bài demo về các lỗ hổng bảo mật cũng như giới thiệu về các công cụ bảo mật. Burp Suite là công cụ mà chúng tôi thường xuyên sử dụng để hỗ trợ quá trình khai thác các lỗ hổng bảo mật. Sau mỗi bài demo, tôi nhận được rất nhiều câu hỏi liên quan đến công cụ này như: Công cụ này là gì? Sử dụng nó như thế nào? Sử dụng nó có thể khai thác những lỗ hổng nào? Hay đơn giản là tester hay developer có sử dụng công cụ này để kiểm tra website được không... Rất nhiều câu hỏi hay và đó là lý do hôm nay mình có bài viết chia sẻ này. Có thể các bạn đã gặp rất nhiều các bài hướng dẫn này, nhưng với bài viết này mình sẽ tiếp cận theo hướng đối với người chưa biết sử dụng công cụ và hướng dẫn để các bạn sử dụng nó.
Đối tượng có thể là các bạn mới làm về bảo mật, các bạn developer hoặc tester muốn tìm hiểu sử dụng công cụ cho quá trình test chức năng cũng như test tải, test bảo mật... Bài viết này mình sẽ chỉ hướng dẫn những chức năng nổi bật gắn liền với các yêu cầu test chức năng và bảo mật chứ không giới thiệu toàn bộ chức năng của BurpSuite. Để tìm hiểu thêm các chức năng khác, các bạn có thể xem thêm tại (burp documentation). Bài viết không hướng tới những người đã có kinh nghiệm cũng như "lão làng" trong giới bảo mật nên có thể sẽ không đi sâu nhiều về bảo mật. Rất mong các bạn sẽ đón nhận
Giới thiệu về công cụ
Burp Suite là gì
Burp Suite là một trong những công cụ kiểm tra thâm nhập và tìm lỗ hổng phổ biến nhất và thường được sử dụng để kiểm tra bảo mật ứng dụng web. Burp Suite là một công cụ dựa trên proxy được sử dụng để đánh giá tính bảo mật của các ứng dụng dựa trên web và thực hiện kiểm tra thực hành. Với hơn 40.000 người dùng, Burp Suite là trình quét lỗ hổng bảo mật trên web được sử dụng rộng rãi nhất trên thế giới. Nó có các mô đun mạnh mẽ và được đóng gói với các phần mở rộng tùy chọn có thể tăng hiệu quả kiểm tra ứng dụng web. Burp Suite là một công cụ pentest ứng dụng web. Đây không phải là một công cụ “ăn sẵn” như Acunetix, mà nó chỉ hỗ trợ một số việc cho tester trong quá trình pentest. Với một chút cố gắng, bất kỳ ai cũng có thể sử dụng Burp Suite để kiểm thử các ứng dụng web. Các tính năng nâng cao của Burp sẽ giúp tester nâng cao kỹ năng và trình độ của mình hơn nữa. Ngoài ra, giao diện của Burp cũng rất trực quan và thân thiện. Chúng ta có thể nhìn rõ request được gửi (Request) cũng như phản hồi từ phía server (Respone)
Một số tính năng nổi bật của Burpsuite
- Interception Proxy: được thiết kế để bắt các request từ đó có thể tùy ý sửa đổi trước khi các request này được gửi lên server.
- Repeater: cho phép sử dụng một request trước đó và tùy sửa đổi nội dung request một cách nhanh chóng nhiều lần khác nhau.
- Intruder: tự động hóa việc gửi hàng loạt các request có chứa các payload tương tự nhau lên server.
- Decoder: decode và encode string theo các format khác nhau (URL, Base64, HTML,…).
- Comparer: chỉ ra sự khác nhau giữa các requests/responses
- Extender: API để mở rộng chức năng của Burp Suite. Bạn có thể download các extensions thông qua Bapp Store.
- Spider & Discover Content: crawl link có trong ứng dụng web.
- Scanner (chỉ có trong bản Pro): đây là một mô đun khác mạnh mẽ, nó tự động quét các lỗ hổng trong ứng dụng web (XSS, SQLi, Command Injection, File Inclusion,…).
Hướng dẫn cài đặt
Môi trường cài đặt
Bước 1: Các bạn cần cài đặt java (jre) trước khi cài đặt công cụ này. Tải và cài đặt java (jre) Java Jre
Bước 2: Tải và cài đặt Burp Suite Burp Suite. Các bạn có thể tải bản Community Free hoặc trả phí (Bản free sẽ bị giới hạn một số chức năng).
Cài đặt chức năng proxy
Để có thể sử dụng Burp Suite các bạn cần thiết lập Proxy trên Firefox hoặc Chrome. Ở bài này mình sẽ hướng dẫn và demo trên firefox (lý do là firefox cá nhân mình thấy thích hợp để test hơn )
Bước 1: Cài đặt Proxy Firefox hoặc chrome:
Bước 2: Thiết lập cấu hình trên BurpSuite: Tab Proxy -> Option -> Add Address: 127.0.0.1 Port: 8080 (Port giống với port proxy trên firefox và chrome)
Bước 3: Cài đặt chứng chỉ cho burp Để có thể bắt các request website https các bận cần cài đặt và trust chứng chỉ của Burp cho trình duyệt. Các bạn truy cập vào đường dẫn http://burp trên trình duyệt để tải về chứng chỉ và cài đặt trên máy.
Sử dụng Burpsuite
Như mình đã đề cập bài này mình sẽ share những phần trọng tâm và quan trọng sử dụng để test chức năng hay bảo mật. Mình sẽ sử dụng 1 số trang để demo trong đó có http://testphp.vulnweb.com/
Control toàn bộ request
Với chức năng này, bạn hoàn toàn kiểm soát được dữ liệu được gửi lên server từ client. Và dĩ nhiên có thể dễ dàng vượt qua được các kiểm tra phía client bằng java script hay html5. Để sử dụng chức năng này, các bạn vào tab Proxy -> Intercept và chọn Intercept is on
Các chức năng:
Intercept is on: Request trước khi được gửi lên server sẽ được chặn lại tại đây để sửa đổi Nếu không on thì request sẽ đi thẳng lên server (Request vẫn được lưu lại tại tab Proxy -> Proxy history . Nếu không muốn bắt request thì các bạn chỉ cần click vào để tắt đi là ok.
Drop: Request bị drop và không gửi lên server
Forward: Request được gửi lên server sau khi sửa đổi (hoặc không)
Các bạn có thể thấy ró request được gửi lên bao gồm header, body... Và dĩ nhiên là bạn có thể sửa đổi thoải mái.
*LƯU Ý: Vì khi các bạn chọn "Intercept is on" Burpsuite sẽ bắt toàn bộ request gửi từ trình duyệt nên nó có thể có cả request từ các website khác không phải request mình cần. Gặp trường hợp vậy các bạn cứ chọn forward cho tới khi nào có thể bắt được đúng request của website mình muốn.
Bypass client validation
Vậy nếu với website sử dụng Javascript để kiểm tra ở phía client các bạn sẽ làm sao để bypass? Ví dụ client cho bạn nhập 1 số nhưng chặn việc nhập số âm hoặc số quá lớn. Các bạn có thể nhập vào 1 số hợp lệ, tiếp đó chặn bắt lại request và sửa số đó thành số âm hoặc 1 số lớn. Hoặc nếu website có chức năng upload ảnh và sử dụng javascript để kiểm tra đuôi file có phải là .png hay .jpg không. Các bạn chỉ cần up 1 file ảnh hợp lệ rồi sau đó sửa đổi đuôi file sang đuôi mình mong muốn như: .html, .php,..image. Demo bypass chức năng upload file: Chức năng uplaod ảnh chặn upload file php ở phía client Bước 1: Upload 1 file php không thành công
Bước 2: Bypass bằng việc up 1 file ảnh hợp lệ sau đó sửa đổi đuôi file và nội dung rồi forward:
Bước 3: Kết quả upload thành công file shell.php lên server và có thể rce được server
Vậy với cách làm tương tự các bạn có thể test với nhiều loại dữ liệu khác nhau.
Nhập liệu 1 lần test được tất cả các trường hợp
Chắc các bạn test đã từng gặp trường hợp ngồi nhập 1 form với cả vài chục trường và mỗi thành như vậy đều toát mồ hôi hột. Và hơn nữa mỗi lần nhập cũng chỉ test được 1 trường dữ liệu. Vậy nếu 1 form khoảng 30 trường thì các bạn sẽ cần nhập liệu 30 lần , chắc khá là mệt đây. Vậy bài toán này giải quyết sao??? Rất may burpsuite có thể giúp ban với chức năng Repeater. Chỉ với 1 request hợp lệ được "Intercept is on" sau đó là click chuột phải và "Send to repeater" là các bạn có thể thoải mái test và không cần nhập liệu lại nhiều lần khác nhau.
Demo với chức năng cập nhật profile user:
Bước 1: Cập nhật với dữ liệu hợp lệ và "Intercept"
Bước 2: Send to repeater
Bước 3: Làm việc trên repeater. Trên tab repeater, mỗi khi bạn nhấn "Send" dữ liệu sẽ được gửi trên server. Các bạn có thể xem luôn response server trả về tại respone cũng như kiểm tra tại trình duyệt. Ở đây mình sửa lại dũ liệu thành "Mobile Security"
LƯU Ý: Khi chỉnh sử request nếu dữ liệu không đúng sẽ có màu đen các bạn cần điền dữ liệu ở reuqest dưới dạng URL encode trước khi gửi lên server (Sử dụng tổ hợp phím Ctrl + U để encode và Cltr + Shift + U để decode). Ví dụ nhập "Mibile Security" vì có dấu cách nên request sẽ lỗi (Dữ liệu hợp lệ sẽ có màu đỏ, dữ liệu lỗi sẽ có màu đen). Các bạn chỉ cần bôi đen "Mibile Security" rồi sử dụng "Ctrl + U" là ok:
Bước 4: Xem kết quả cập nhật thành công
Chức năng quá tiện lợi giúp giảm thiểu thời gian nhập liệu cũng như test nhanh được nhiều trường hợp khác nhau.
Sử dụng BurpSuite tấn công Brute fore
Thay vì việc ngồi nhập một loạt các user name password để kiểm tra, các bạn có thể tự động hóa nó để kiểm tra qua mô đun: Intruder Demo tấn công brute force login form (Vì là demo nên bỏ qua thông tin đăng nhập test/test đã được hiển thị)
Bước 1: Nhập dữ liệu đăng nhập
Bước 2: Send to Intruder
Bước 3: Làm việc trên Intruder:
- Thiết lập request trong intruder
- Clear$$
- Chọn mode Cluster bomb
- Chọn username và password sau đó Add$$. Đây là bước chọn username và password để tấn công brutefore.
- Chỉnh sửa paload sử dụng file username.txt và password.txt
- Cài đặt option và xem kết quả. Kết quả thành công có length của response khác với toàn bộ request còn lại. Kết quả thành công là test/test
Tổng kết
Ngoài các chức năng trên, còn rất nhiều module khác nhau khá mạnh của burpsuite như scanner (chỉ sử dụng cho bản pro), các extention khác nhau. Nhưng qua một số demo trên mong sẽ giúp cho các bạn có thể biết cách sử dụng cơ bản để test một số case thực tế. Cảm ơn các bạn đã theo dõi