Owasp Zap là 1 Tool Test Security hoàn toàn mạnh mẽ, giúp bạn dễ dàng scan và tìm ra lỗ hổng trong hệ thống ứng dụng của bạn. Owasp Zap với vô số các tính năng và cách thiết lập, và nhiều khi sẽ làm bạn bối rối khi lần đầu làm quen. Bài viết này sẽ hướng dẫn cách sử dụng Owasp Zap để test 1 ứng dụng thực tế, một cách đơn giản và dễ hiểu nhất. Bài viết có thể coi là phần tiếp theo của series Web Application Security của tác giả Q_Đ.V.P đã từng viết trước, bạn có thể tham khảo, và mình sẽ lược bỏ trong bài viết này những phần mà tác giả Q_Đ.V.P đã trình bày.
https://blog.vietnamlab.vn/2017/06/05/tool-test-security-owasp-zap-series-web-application-security/

Điều kiện

Owasp Zap chạy bằng Java chính vì vậy ta cần phải cài đặt JRE. Nếu bạn chưa cài JRE thì có thể vào Web Site Oracle download và cặt đặt.

Download cài đặt

Bạn có thể download cài đặt Owasp Zap phiên bản mới nhất ứng với môi trường làm việc của bạn từ link phía dưới.
https://github.com/zaproxy/zaproxy/wiki/Downloads

Download và cài đặt như một ứng dụng bình thường. Sau khi cài đặt xong ta khởi động ứng dụng và sẽ có giao diện như hình bên dưới

uc?id=13HO-9_GGYf29pv-rMeW9zpBaPywJAglw&export=download

Thiết lập Local Proxy

OWASP ZAP có chức năng proxy cục bộ, cho phép OWASP ZAP hoạt động như một proxy cục bộ.

  • Thiết lập bên phía Owasp Zap

uc?id=1uCqZPrgtS5Y1xBHPCFBDGmeqb_Ys7u1X&export=download

Chọn Tools -> Options màn hình sau sẽ xuất hiện.

uc?id=1JJxepa7-Kgx5xInCFJX0FryLSjK1dqrI&export=download

Ta sẽ thiết lập Address và Port . Mặc đinh sẽ là localhost:8080. Trường hợp mà có ứng dụng nào khác đã chiếm dụng port 8080 thì ta có thể đổi 1 port khác tùy ý, rồi nhấn OK để lưu thiết lập.

  • Thiết lập bên phía Browser (Google chorme)

Hầu hết các hướng dẫn thiết lập đều internet đều hướng dẫn thiết lập với FireFox. Nhưng trong bài viết này mình sẽ hướng dẫn thiết lập với Google Chorme, mục đích là để mình sử dụng được Add-on Postman của Google chorme để test API (sẽ trình bày sau).

Việc cần làm là bạn cài Add-on SwitchyOmega. Add-on này sẽ giúp bạn ON OFF việc chuyển đổi proxy 1 cách dễ dàng.

uc?id=1tHvHIr0sagMw4dz9RpVhpG4X8OGg5axd&export=download

Bạn chọn New profile và điền những thông tin cần thiết , chú ý là chỗ Proxy servers bạn phải thiết lập cùng Address và cùng Port đã được thiết lập ở phía Owasp Zap. Thiết lập này sẽ giúp cho Owasp Zap bắt được những truy cập mà bạn đang truy cập phía Browser.

Sau khi thiết lập xong , nút Apply changes sẽ sáng lên, click vào để lưu thiết lập.

Ok, bạn đã thiết lâp xong Proxy cho Browser , nhìn lên góc phải browser bạn sẽ thấy icon hình tròn. Click vào cái profile bạn vừa thiết lập giangpt để ON và Click vào System Proxy để vô hiệu hóa thiết lập.

uc?id=1eshFrXXwq2lSFJnO8zdLGmkaDP3n9gNR&export=download

Vậy là bước này đã xong , bây giờ bạn đã có thể ON OFF để chuyển đổi proxy 1 cách dễ dàng.

Truy cập vào ứng dụng Web mà bạn muốn test

Sau khi thiết lập xong Proxy cho cả Owasp ZapBrowser. Bạn có thể truy cập vào ứng dụng Web mà bạn đang phát triển để test, bất kể môi trường local, staging hay production .

uc?id=1eZsIDe9CUNkWbAAGgV9gHKXNs5f6_9Kg&export=download

uc?id=1rqg9aKj_tlTIL0IH2hJyrhkttBqCkVB-&export=download

Nếu thiết lập đúng , phía bên trái phần Sites của Owaps Zap sẽ hiển thị URL của trang Web mà mình vừa truy cập. Đến đây thì bước chuẩn bị cho việc Scan Injection kết thúc.

Trước khi Scan Injection

  • Chuyển sang Protected Mode

uc?id=1qXjPTyn-rGpZhu-2rI8fcVSVBhz-nsVf&export=download

Owasp Zap có 4 chế độ quét , khi khởi động nó được set chế độ mặc định là Standard, do đó ta cần phải chuyển sang chế độ Protected Mode.

Lý do trọn chế độ Protected là vì, nếu trọn chế độ mặc định Standard hay là chế độ Attack thì có khả năng là nó sẽ tấn công vào các trang Web mà mình không quản lý được. Ngược lại nếu trọn chế độ Safe thì nó lại không scan được hết hoàn toàn các lỗ hổng , do đó ta trọn chế đô protected.

Thử tiến hành Test

Click chuột phải vào link URL ở bên phía tab Sites, ta sẽ thấy mục Attack nhưng không kích hoạt được vì chưa Include in Context.

  • Include in Context

Để thực hiện kiểm tra thâm nhập ở chế độ Protected, bạn cần include URL cần được kiểm tra trong Context.

uc?id=1NIa6za3fnFR8yBWLM9gnxa9K_g8f3aYI&export=download

Click chuột phải vào URL được hiển thị trên tab Sites và chọn Include in Context-> New Context, màn hình session property sẽ xuất hiện.

uc?id=1-jt9u7Ju3tMIOm4-mUq-MNdorZOHyGeJ&export=download

Chọn vào URL và nhấn OK để được include vào trong context. Khi nó được include vào trong context, 1 vòng tròn màu đỏ được hiển thị trong các icon của URL như hình bên dưới.

uc?id=1jvH7tIUP5wMjPdsQS7hAbLYpq4Om7Vnk&export=download

Bây giờ chúng ta đã có thể thực hiện các cuộc tấn công như quét động.

※ Khi thực hiện kiểm tra thâm nhập với OWASP ZAP, vui lòng chỉ đến trang web được quản lý bởi chính bạn trong môi trường cục bộ. Nếu nó được thực hiện cho một máy chủ được quản lý bởi một bên thứ ba được xuất bản trên Internet, nó có thể được coi là một truy cập trái phép.

uc?id=1KuPiCD9rFDNBBL_N97iDdoqKNiTk5Ztc&export=download
Chúng tôi đang thực hiện Active Scan. Nếu có một lỗ hổng sau khi quét xong, nó sẽ được hiển thị trong Alerts.

uc?id=1vgbg0t1zYMMllP4iEzlOzy9ukyWCQ3MU&export=download

Click vào nút Show scan progress details, sẽ hiên lên các danh sách các hạng mục injection đang quét , chẳng hạn như SQL injection, Cross Site Script... Việc quét sẽ được thực hiện lần lượt cho đến hết các hạng mục.

uc?id=1C0vCEAX7SFzHtUSDn6AtFYeYMePR_RRM&export=download

Trong tab Active Scan, click vào 1 dòng bất kỳ , ta sẽ thấy được Owasp Zap đã giả lập request để tấn công và tìm lỗ hổng trong ứng dụng của bạn .Trong tab Request và Response ở phía trên sẽ hiển thị rõ những thông tin giả lập đó. Như trong request bên dưới Owasp Zap chèn thêm đoạn query trong request.

uc?id=1PMY-kMaw07qAubhv2_vsPVydaD8cIuvP&export=download

Như trong hình trên các bạn chỉ thấy mỗi Request bằng phương thức GET thôi phải không. Đó là do mình chỉ mới truy cập vào trang Login của ứng dụng, mà chưa thực hiện việc login, nên Owasp Zap chưa bắt được cái Request đó để Scan, đây là tính năng rất hay của Owasp Zap, chỉ đến đâu test đến đó, và mình có thể control được phạm vi test của Owasp Zap.

Bây giờ , thử Login và thao tác trong ứng dụng, để Owasp Zap có thể bắt hết được các Request của ứng dụng và test . Owasp Zap nó thể bắt được và lưu các tham số mình truyền vào khi gửi Request trong ứng dụng và dựa vào những tham số đó để giả lập hàng ngàn Request khác nhau để test và tìm ra lỗ hổng của ứng dụng.

uc?id=1epFLxt_GqTjNKe0gTqinz4nopsGxWma0&export=download
Như hình trên mình vừa thực hiện việc login vào ứng dụng, bên tab Sites, mình click vào URL POST:login(xxx,xxxx) nó sẽ hiện thị ra thông tin request account lẫn password của request login bên của sổ Request. Bây giờ Owasp Zap có thể sử dụng những thông tín đó để làm giả các request và tìm ra lỗ hổng của ứng dụng.

uc?id=10YwdSOOWIDW84uVNu5_MaGCZHS4kfJ6k&export=download

Tiếp theo mình đã thao tác đến 1 chức năng khác của ứng dụng là chức nặng tạo token như bạn thấy ở trên, và Owasp Zap cũng đã bắt lại được những thông tin request để sử dụng cho việc làm giả dữ liệu. Và cuối cùng mình đã Logout khỏi ứng dụng. Dĩ nhiên Owasp Zap cũng bắt lại được thao tác đó.
Câu hỏi đặt ra là ví dụ mình thực hiện việc test cho 3 chức năng trên Login , đăng ký token và Logout. Muốn đăng ký Token thì mình phải Login, mà lỡ trong quá trình chạy test Owasp zap nó chạy tới trang Logout và logout luôn thì làm sao mình test được chức năng đăng ký Token. Hỏi vậy thôi, để mình trả lời luôn là Owasp Zap có hỗ trợ điều đó, và mình sẽ hướng dẫn trong bước tiếp theo.

  • Thiết lập User Password cho những chức năng cần phải Login

Quay trở lại bước Include Context hồi nãy, trong của sổ Session Propeties. Click vào context mà mình vừa tạo, chọn mục Authentication.

Chọn URL Login , chọn username, password, phía dưới dùng là 2 đoạn text mà khi mình login hay logout nó hiển thị trên trang Web, mục đích để Owasp Zap kiểm tra coi mình đã Login hay Logout thành công hay chưa. Mẹo là bạn có thể click qua tab Response và copy đoạn text trong phần body của Response và paste vô.

uc?id=1ZFS00hI8ySp7HKQc8lzRFRrsWd0_AxNH&export=download

Tiếp theo chọn mục Users để thiết lập user ,password cho việc Login.

uc?id=1wBp07cUmezcJBEg0NuiM1WO9DG94lFQA&export=download

Tiếp theo chọn mục Forced User và chọn cái user vừa tạo, nhấn OK là bạn đã thiết lập xong cho việc Login.

Còn 1 việc nữa là bạn nhấn vào Icon phía dưới để enable cho user vừa tạo.
uc?id=1Rzc6BWcrraLRIIHcTbKm6tSFuJxKijSD&export=download

Cuối cùng khi thực hiện chạy test thì bạn chọn vào cái user vừa tạo và chạy test.

uc?id=1YoqajB_Q3sxrpBbai2rZnlwXuIcJrJri&export=download

uc?id=18bj1PRgotEZXJMpMc1Cgt8HJRRbMv8ir&export=download

Như các bạn thấy Owasp Zap đã giả những request với phương thức là POST, và sử dụng username và password mà mình vừa thiết lập đề login và test các chức năng cần login.
uc?id=1dWkjaEfdp8qY-bD_96J5RzEDBUrm6cHg&export=download

  • Thiết lập để test API

Bước tiếp theo này mình sẽ hưỡng dẫn để test API.

Bạn cần phải cài Adds On Postman. Rất đơn giản, bạn cũng cần phải ON cái thiết lập Proxy ở trên để Owasp Zap bắt được Request.

uc?id=14DNQdmFkQu3lQoYfcfZBvyIzB2xbKsso&export=download

Điền URL cần test, chọn phương thức, điền các tham số như bạn test 1 API bằng Postman thông thường và nhớ phải nhấn SEND để gửi request.

uc?id=1J2F2jVpiRQuiRuvSKnoazfJ11x8AOKLy&export=download

Đó Owasp Zap bắt được rồi kìa. Giờ chỉ cần nhấn Active Scan là nó sẽ Scan được API.

Lưu Session và xuất file Report

  • Lưu Sesion

Bạn có thể lưu những thiết lập ở trên bằng cách. Nhập tên và chỗ cần lưu và nhấn OK là xong.

uc?id=14KS0hj77R0W_Y6vLP1LtRofCyFdMLMT5&export=download

  • Tạo Report

Sau khi Scan xong bạn có thể xuất file report cho kết quả vừa Scan. Có nhiều định dạng file report cho bạn lựa trọn như HTML, XML hay Markdown.

uc?id=18C7Hu58YK664Lmn-fPDMXNvmiLGz8YYh&export=download

Kiểm tra kết quả

Không phải lúc nào kết quả Scan của Owasp Zap đều đúng. Có những trường hợp không phải là lỗ hổng những Owasp Zap vẫn báo là lỗ hổng. Chính vì vậy ta cần phải kiểm tra lại 1 lần nữa.

Ví dụ: như kết quả phía dưới là có SQL injection, nhưng thực tế trong code của ứng dụng của mình không sử dụng query, nhưng do lúc nào trả về status là 200 nên Owasp Zap hiểu nhầm là SQL injection.

uc?id=1EfBDX_yPyBdwVC15aCSG-uQh0ftO3M9V&export=download

Kết Luận

Owasp Zap là một công cụ hữu ích để kiểm tra lổ hổng của ứng dụng web. Ngoài ra còn các ứng dụng khác như OpenVas có thể quét được lỗ hổng của hệ thống OS, các bạn có thể tìm hiểu thêm.