Giới thiệu về công cụ Webscarab
Tổng quan ứng dụng web
Ứng dụng web là một ứng dụng khách chủ sử dụng giao thức HTTP để tương tác với người dùng và hệ thống khác Trình duyệt như Chrome, Internet Explorer, Firefox, và Opera thường là công cụ mà người dùng sử dụng để gửi và nhận thông tin từ máy chủ thông qua các trang web Các ứng dụng này có thể bao gồm các trang trao đổi, bán hàng, diễn đàn, hoặc dịch vụ gửi nhận email.
Các kỹ thuật xây dựng ứng dụng web đang phát triển nhanh chóng, từ việc sử dụng CGI (Common Gateway Interface) trên máy chủ web với cơ sở dữ liệu đơn giản, đến việc áp dụng các ngôn ngữ hiện đại như Java, ASP, và PHP Hiện nay, ứng dụng web thường hoạt động trên các máy chủ phân tán, cho phép kết nối với nhiều nguồn dữ liệu khác nhau, mang lại hiệu suất và khả năng mở rộng tốt hơn.
Một ứng dụng web thường có cấu trúc như sau:
Hình 1.1 Cấu trúc ứng dụng web
- Client: Lớp này bao gồm các trình duyệt web và các ứng dụng có thể tạo ra các HTTP request đến Web Server
- Server: Lớp này bao gồm các Web Server có thể can thiệp các request được tạo bởi Client và trả về các phản hồi (response)
- Business: Lớp này bao gồm ứng dụng trên Server có thể được tận dụng bởi các
Web Server để thực hiện các tiến trình xử lý cần thiết Lớp này tương tác với lớp Data qua các chương trình bên ngoài
- Data: Lớp này bao gồm các Database và bất kì các nguồn dữ liệu nào
Mô hình hoạt động của ứng dụng web
Hình 1.2 Mô hình hoạt động của ứng dụng web
- Trình khách: Các trình duyệt như Internet Explorer, Fire Fox, …
- Hệ quản trị CSDL: SQL Server, MySQL, …
Tường lửa (Firewall) là một giải pháp bảo mật mạng, đóng vai trò như lớp bảo vệ bên ngoài, có chức năng chính là kiểm soát lưu lượng thông tin giữa các máy tính.
Tổng quan giao thức HTTP/HTTPS
HTTP là viết tắt của Giao thức truyền tải siêu văn bản (Hypertext Transfer
HTTP (Hypertext Transfer Protocol) là giao thức ứng dụng cho các hệ thống thông tin phân phối, cộng tác và đa phương tiện, đóng vai trò quan trọng trong giao tiếp trên World Wide Web từ năm 1990 Giao thức này là stateless, có nghĩa là nó không lưu trữ thông tin về các phiên làm việc trước đó, và có thể được sử dụng cho nhiều mục đích khác nhau HTTP hỗ trợ các phương thức yêu cầu, mã lỗi và tiêu đề, cho phép mở rộng tính năng và ứng dụng của nó trong việc truyền tải thông tin trực tuyến.
HTTP là giao thức giao tiếp dựa trên TCP/IP, được sử dụng để phân phối dữ liệu trên mạng WWW, với cổng mặc định là TCP 80, nhưng cũng có thể sử dụng các cổng khác Giao thức này cung cấp cách thức chuẩn hóa để các máy tính có thể giao tiếp, xác định cách thức xây dựng và gửi yêu cầu từ Client đến Server, cũng như cách Server phản hồi lại các yêu cầu đó.
HTTPS, viết tắt của Hypertext Transfer Protocol Secure, là giao thức kết hợp giữa HTTP và các giao thức bảo mật SSL/TLS, cho phép trao đổi thông tin an toàn trên Internet Giao thức này thường được sử dụng cho các giao dịch nhạy cảm, nơi yêu cầu tính bảo mật cao.
Công cụ Webscarab
WebScarab là một framework Java dùng để phân tích ứng dụng web, hỗ trợ cả hai giao thức HTTP và HTTPS Nó có khả năng ghi lại và thay đổi tham số của ứng dụng trước khi gửi yêu cầu và nhận phản hồi giữa trình duyệt và ứng dụng web.
WebScarab hoạt động với nhiều chế độ nhờ vào các plugin, trong đó phổ biến nhất là chức năng proxy chặn Chức năng này cho phép người dùng xem xét và điều chỉnh các yêu cầu mà trình duyệt gửi đến máy chủ, cũng như các phản hồi từ máy chủ trước khi chúng được hiển thị trên trình duyệt WebScarab hỗ trợ cả giao tiếp HTTP và HTTPS, đồng thời cho phép người điều hành kiểm tra các cuộc hội thoại giữa yêu cầu và phản hồi đã diễn ra.
1.3.2 Lịch sử hình thành và phát triển
WebScarab bắt nguồn từ thiết kế của những người sống trong danh sách
WebAppSec chạy từ SourceForge, cho một công cụ mạnh mẽ, miễn phí, mở để xem xét
WebScarab là một trong bảy ứng dụng web tìm lỗ hổng bảo mật, bắt đầu như một công cụ tải xuống tất cả các trang trên một website Sau gần một năm phát triển, tôi đã rút ra những bài học từ quá trình phát triển Exodus và tích hợp chúng vào WebScarab, nhằm nâng cao hiệu quả và khả năng phát hiện lỗ hổng bảo mật.
Hiện tại, mã nguồn của WebScarab đã trải qua những thay đổi lớn, gần như không còn gì từ phiên bản ban đầu Mặc dù mã nguồn spider mà WebSphinx/WebScarab dựa trên đã được cải tiến và kiểm tra kỹ lưỡng, nhưng nó không còn phù hợp với quan điểm của nhà sản xuất về cách hoạt động của công cụ này Thay vì giữ lại 99% WebSphinx, nhà sản xuất đã quyết định triển khai một con nhện tầm thường thay thế Tuy nhiên, mã nguồn gốc của WebScarab/WebSphinx vẫn có sẵn trên SourceForge cho những ai quan tâm.
Vào năm 2013, sự phát triển của WebScarab đã chậm lại, và Dự án Zed Attack Proxy (ZAP) của OWASP, một công cụ proxy mã nguồn mở với nhiều tính năng vượt trội và đang được phát triển tích cực, dường như đã trở thành người kế nhiệm chính thức của WebScarab Tuy nhiên, cần lưu ý rằng ZAP thực chất được fork từ Paros Proxy, không phải từ WebScarab.
1.3.3 Các tính năng của WebScarab
WebScarab cung cấp nhiều tính năng và plugin hữu ích giúp người thử nghiệm bút nắm bắt hành vi của ứng dụng web Dưới đây là danh sách các plugin kèm theo mô tả ngắn gọn từ trang web chính thức của WebScarab.
- Phân đoạn - trích xuất các tập lệnh và nhận xét HTML từ các trang HTML khi chúng được nhìn thấy qua proxy hoặc các plugin khác
Proxy là công cụ quan sát lưu lượng truy cập giữa trình duyệt và máy chủ web, với WebScarab có khả năng theo dõi cả lưu lượng HTTP và HTTPS Điều này được thực hiện thông qua việc thiết lập kết nối SSL giữa WebScarab và trình duyệt, thay vì chỉ đơn thuần kết nối trình duyệt với máy chủ Ngoài ra, nhiều plugin proxy khác cũng đã được phát triển, giúp nhà điều hành kiểm soát các yêu cầu và phản hồi đi qua proxy một cách hiệu quả.
Đánh chặn thủ công cho phép người dùng nhanh chóng sửa đổi các yêu cầu và phản hồi HTTP và HTTPS trước khi chúng đến máy chủ hoặc trình duyệt.
Beanshell cho phép thực hiện các thao tác phức tạp trên yêu cầu và phản hồi, giúp người dùng linh hoạt hơn trong việc xử lý dữ liệu Mọi chức năng có thể được biểu diễn bằng Java đều có thể được thực thi trong môi trường này.
Hiển thị các trường ẩn trên các trang HTML bằng cách chuyển đổi tất cả các trường ẩn thành trường văn bản, giúp chúng hiển thị rõ ràng và cho phép người dùng chỉnh sửa dễ dàng.
8 sửa Đôi khi, việc sửa đổi một trường ẩn trong chính trang sẽ dễ dàng hơn là chặn yêu cầu sau khi nó đã được gửi đi
Trình mô phỏng băng thông cho phép người dùng giả lập tốc độ mạng chậm hơn, giúp họ quan sát cách trang web của mình hoạt động khi được truy cập qua modem.
- Spider - xác định các URL mới trên trang web mục tiêu và tìm nạp chúng theo lệnh
- Yêu cầu thủ công - cho phép chỉnh sửa và phát lại các yêu cầu trước đó hoặc tạo các yêu cầu hoàn toàn mới
Phân tích SessionID là quá trình thu thập và đánh giá một số cookie nhằm xác định mức độ ngẫu nhiên và tính không thể đoán trước của chúng Tuy nhiên, cần lưu ý rằng phân tích này có tính chất khá tầm thường và không thực hiện các kiểm tra nghiêm ngặt như tiêu chuẩn FIPS.
- Tìm kiếm - cho phép người dùng tạo các biểu thức BeanShell tùy ý để xác định các cuộc hội thoại sẽ được hiển thị trong danh sách
So sánh và tính toán khoảng cách chỉnh sửa giữa các cơ quan phản hồi trong các cuộc hội thoại quan sát và một cuộc hội thoại cơ bản đã chọn Khoảng cách chỉnh sửa được định nghĩa là số lần chỉnh sửa cần thiết để chuyển đổi tài liệu này thành tài liệu khác Để nâng cao hiệu suất, các chỉnh sửa được tính toán dựa trên mã thông báo từ thay vì từng byte.
Plugin XSS / CRLF là công cụ phân tích thụ động, giúp tìm kiếm dữ liệu do người dùng kiểm soát trong tiêu đề và nội dung phản hồi HTTP Nó được sử dụng để xác định khả năng chèn CRLF, một phương thức phân tách phản hồi HTTP, cùng với các lỗ hổng phản ánh trong kịch bản chéo trang (XSS).
Cài đặt
Cài đặt Webscarb trên máy Kali linux
Hình 2.1: Cấu hình máy ảo kali
Lệnh lscpu cung cấp các thông tin về CPU và các đơn vị xử lý Lệnh này không có bất kỳ tùy chọn hoặc chức năng nào khác
Hình 2.2: Thông tin hệ điều hành máy ảo Kali
Dùng lệnh uname -a để xem thông tin hệ điều hành và tên người dùng
Vì Webscarb chạy trên nền tảng ngôn ngữ java cho nên trước hết chúng ta phải cài đặt môi trường Java cho máy ubuntu
Hình 2.3: Version java của máy ảo kali
Dùng tổ hợp câu lệnh để tải java về máy
Hình 2.4: Hướng dẫn tải java
- Dùng lệnh sudo -su để vào chế độ người quản trị hệ thống
- Dùng lệnh sudo apt update apt upgrade để tiến hành update hệ thống
- Tải java (jdk 11.0.13) về máy bằng câu lệnh apt install -y default-jdk
Sau đó tiến hành tải webscarab về máy thông qua trang web https://code.google.com/archive/p/webscarab-ng/downloads
Hình 2.5: Đường dẫn url vào trang web download webscarab
Giải nén trực tiếp file zip ra ngoài desktop, sau khi giải nén sẽ có 1 file jar, một file bat và một file sh
Hình 2.6: Webscarb sau khi được giải nén
Mở một cửa sổ terminal mới lên, đưa đường dẫn vào desktop rồi chạy chương trình shell start.sh bằng lệnh bash start.sh
Hình 2.8: Webscarab khởi động thành công
Chúng ta có thể kết nối đến cơ sở dữ liệu đã tồn tại thông qua JDBC trên nền tảng Java, hoặc kết nối đến cơ sở dữ liệu mặc định của WebScarab bằng cách sử dụng tên người dùng "sa" và để mật khẩu trống.
Hướng dẫn cài đặt và sử dụng Webscarab (Phiên bản dành cho MacOS)
2.2.1 Cài đặt webscarab trên macos
Truy cập vào đường link https://macdownload.informer.com/webscarab/download/ sau đó tiến hành download file .zip về máy
Hình 2.9: Địa chỉ download webscarab cho hệ điều hành MacOS
Sau đó tiến hành giải nén rồi chạy file webscarab.jar bằng terminal Chuyển đường dẫn đến file đã giải nên rồi chạy câu lệnh java -jar webscarab.jar
Hình 2.10: Mở ứng dụng webscarab trên hệ điều hành macos
2.2.2 Các tính năng của ứng dụng webscarab
Proxy HTTP là công cụ quan trọng trong việc đánh giá lỗ hổng của ứng dụng web, cho phép ghi lại tất cả các giao dịch khi sử dụng ứng dụng Nó tạo ra lịch sử các trang đã truy cập và liên kết đã nhấp, đồng thời cho phép người dùng xem yêu cầu HTTP và phản hồi, giúp hiểu rõ hơn về các dữ liệu được gửi đi trong quá trình hoạt động.
Hình 2.12: Cài đặt Proxy cho webscarab
Cài đặt proxy cho trình duyệt web giúp kết nối đến mạng internet một cách hiệu quả Đảm bảo rằng proxy cho trình duyệt web được cấu hình tương tự như proxy đã thiết lập cho Webscarab để đảm bảo tính tương thích và hiệu suất tối ưu.
Trình duyệt Web được sử dụng ở đây là FireFox, cách cấu hình proxy cho FireFox được thực hiện như sau : Tools > Options > Advanced > Network > Settings
Hình 2.13: Cài đặt Proxy cho FireFox
Tab Summary trong web scarab sẽ tóm tắt lại tất cả các yêu cầu, phản hồi và trạng thái của các url
Hình 2.14: Kết quả request/respond trên tab summary
2.2.2.2 Chức năng Session ID Analysis
Khi một phiên (session) được tạo ra, nó sẽ được lưu trữ trong một tệp có tên dài và khó đoán, gọi là session id trên máy chủ Đồng thời, trên máy khách cũng sẽ có một cookie được tạo ra với giá trị tương ứng với session id, giúp xác định phiên nào thuộc về client nào.
Một trong các ứng dụng điển hình là việc quản lý Đăng nhập, Đăng xuất của thành viên mà hầu hết các trang Web nào cũng phải có
Hình 2.16: Phân tích Session ID
Chọn phương thức POST và đưa địa chỉ URL vào sau đó inser địa chỉ này vào webscarab Sau đó chọn Test để nhận được responds từ server
Khi đăng nhập vào ứng dụng Hacme Casino, quá trình này sẽ tạo ra một ID phiên, cùng với các yêu cầu và phản hồi từ điều hướng bên trong ứng dụng, cho phép người dùng phân tích các ID phiên khác được tạo ra trong ứng dụng.
Hình 2.17: Đăng nhâp vào ứng dụng web Hacme Casino
Hình 2.18: Quy trình đăng nhập
Trong tab Collection, người dùng có thể theo dõi các yêu cầu đã gửi trong quá trình đăng nhập, thể hiện sự tương tác giữa server và client.
23 Hình 2.19: Tab Collection trong Session ID Analysis
24 Hình 2.20: Chọn 1 phiên để phân tích
25 Hình 2.21: Phân tích hiện tại
Demo
SQL Injection
Bài viết này sẽ khám phá ứng dụng Hecme Casino của Foundstone, trong đó có các lỗ hổng được tích hợp sẵn Fuzzing sẽ được áp dụng để phát hiện các loại lỗ hổng khác nhau trong ứng dụng web, chẳng hạn như XSS, SQL injection và các vấn đề liên quan đến truy vấn và đường dẫn thư mục Tuy nhiên, hướng dẫn này sẽ chủ yếu tập trung vào các tham số dễ bị tấn công SQL injection.
Hình 3.1: Cố gắng đăng nhập vào Hacme Casino
Thao tác này không đăng nhập vào ứng dụng, nhưng Webscarab sẽ ghi lại quá trình đăng nhập trong tab Summary Khi đã hoàn thành, hãy tìm cuộc hội thoại đăng nhập trong tab này Sau khi xác định cuộc hội thoại, nhấp chuột phải và chọn “Use as fuzz template” để gửi các thông số và tiêu đề liên quan đến yêu cầu đó sang tab fuzzing.
Hình 3.2: Gửi cuộc trò chuyện tới mẫu fuzz
Trong tab Fuzzer của Webscarab, bạn có thể xem tất cả các tham số liên quan đến yêu cầu hoặc cuộc trò chuyện Tại đây, bạn có khả năng thêm hoặc xóa các tham số để kiểm tra phản ứng của ứng dụng web với các giá trị và kiểu khác nhau Sau khi xác định các thông số cần fuzzing, bạn cần chọn một nguồn fuzzing bằng cách nhấp vào nút “Sources” bên cạnh các nút “Start” và “Stop” trong tab Fuzzer.
Chọn một tệp văn bản kiểu từ điển chứa các tham số cần làm mờ, chẳng hạn như từ điển SQL injection, vì trường "username" thường dễ bị tấn công chèn SQL.
Có rất nhiều từ điển SQL injection trên mạng, một số thậm chí còn dành riêng cho các nền tảng khác nhau (ví dụ: MySQL, MS SQL Server, DB2, v.v.)
Sau khi tất cả các nguồn từ điển được thêm vào, hãy chuyển đến tab Fuzzer chính và gán các tham số cho một nguồn fuzz
Để ngăn một tham số bị mờ trong Webscarab, bạn cần để trống trường “Fuzz Source” hoặc xóa hoàn toàn tham số đó Trong ví dụ này, “user_login” là tham số duy nhất được lặp lại thông qua từ điển SQLattack Sau đó, hãy nhấp vào “Start” để Webscarab thử nghiệm tất cả các tham số trong từ điển Điều này có nghĩa là giá trị “test” sẽ được thay thế bằng các giá trị trong từ điển tấn công SQL injection, và một yêu cầu mới sẽ được gửi đến máy chủ web cho mỗi tham số tấn công trong từ điển của bạn.
Hình 3.5: Chạy bộ làm mờ
Khi thực hiện hoạt động fuzzing, cần chú ý đến "Total Requests" và "Current Request"; cả hai số này sẽ đạt 68 khi bộ làm mờ đã kiểm tra tất cả các tham số trong từ điển SQL injection Số ID 97 bên trái bảng đại diện cho yêu cầu đầu tiên, trong khi yêu cầu cuối cùng có số ID 164 Việc theo dõi các ID yêu cầu này là rất quan trọng để đánh giá kết quả của hoạt động mờ Người dùng cũng cần lưu ý rằng việc xem xét các yêu cầu không bị mờ có thể giúp xác định những yêu cầu không dễ bị tấn công.
Sau khi bộ làm mờ hoàn tất các yêu cầu, cần kiểm tra kết quả để xác định xem có tham số tấn công nào thành công trong lần tiêm SQL hay không Hãy quay lại tab tóm tắt và mở cuộc trò chuyện đầu tiên của quá trình Sau đó, tiến hành kiểm tra thủ công từng cuộc trò chuyện liên quan đến hoạt động mờ và tìm kiếm những khác biệt trong các câu trả lời Những khác biệt này cần được chú ý, vì việc đánh dấu và tìm kiếm SQL chèn không hoàn toàn chính xác, nhưng việc hiểu cách ứng dụng xử lý đầu vào sẽ giúp xác định những gì nên và không nên mong đợi trong phản hồi HTTP.
Hình 3.6 minh họa rằng giá trị đầu tiên trong từ điển tấn công đã được áp dụng cho tên người dùng, cho thấy Webscarab đang hoạt động bình thường Phần trên cùng của hình cho thấy một yêu cầu POST đã được gửi đến /account/login để xác minh thông tin đăng nhập của người dùng Do SQL injection đầu tiên không phải là người dùng hợp lệ, phản hồi nhận được là một chuyển hướng về màn hình đăng nhập.
32 Hình 3.7: Vị trí thay đổi SQL injection
Hình 3.9: Đăng nhập thành công
WebScarab là công cụ lý tưởng cho những người có khả năng lập trình hoặc hiểu biết vững về giao thức HTTP Nó không chỉ giúp đánh giá mức độ an toàn của trang web mà còn có khả năng ngăn chặn các cuộc tấn công thông qua việc chặn proxy Bên cạnh đó, WebScarab còn hỗ trợ thực hiện các cuộc tấn công chủ yếu như SQL Injection và XSS.
Bài báo cáo này khám phá lý thuyết và chức năng của WebScarab, đồng thời trình bày quá trình hình thành, phát triển và tác dụng của ứng dụng trong việc đánh giá mức độ an toàn của trang web WebScarab được phát triển trên nền tảng Kali Linux nhưng cũng tương thích với nhiều hệ điều hành khác như MacOS và Windows.
Qua bài báo cáo, tôi đã hiểu rõ hơn về các giao thức truyền tin như HTTP và HTTPS, cũng như cách thức hoạt động của một trang web, từ đó nâng cao kiến thức về an toàn thông tin Trong quá trình tìm hiểu Webscarab, tôi cũng đã khám phá nhiều công cụ khác như Burp Suite và Snort, có chức năng tương tự trong việc đánh giá an toàn ứng dụng web Tôi xin chân thành cảm ơn thầy đã tạo điều kiện cho chúng tôi có cơ hội tiếp cận những kiến thức mới mẻ này.
Em xin chân thành cảm ơn thầy và chúc thầy luôn mạnh khoẻ!