GIỚI THIỆU CÔNG CỤ
Giới thiệu
WhatWeb là công cụ quét website được phát triển bởi Andrew Horton và Brendan Coles, cùng sự đóng góp của nhiều người khác, sử dụng ngôn ngữ lập trình Ruby Được giới thiệu lần đầu vào khoảng năm 2009 tại hội nghị Kiwicon III ở New Zealand, WhatWeb hiện nay được xem là công cụ rà quét website thế hệ mới.
Hình 1: Giao diện thực hiện WhatWeb trong Kali Linux
Cách thức hoạt động
WhatWeb là công cụ giúp xác định các trang web, bao gồm hệ thống quản lý nội dung (CMS), nền tảng blog, gói thống kê và phân tích, thư viện JavaScript, máy chủ web và thiết bị nhúng Với hơn 1800 plugin, mỗi plugin được thiết kế để nhận dạng các thành phần khác nhau của trang web Ngoài ra, WhatWeb còn cung cấp thông tin về số phiên bản, địa chỉ email, ID tài khoản, mô-đun khuôn khổ web và các lỗi SQL.
WhatWeb cung cấp hai phương pháp quét là quét thụ động và kiểm tra tích cực Quét thụ động trích xuất dữ liệu từ các tiêu đề HTTP, mô phỏng lượt truy cập bình thường Các tùy chọn linh hoạt của nó được nâng cao với khả năng đệ quy và nhiều loại truy vấn khác nhau, giúp xác định tất cả các công nghệ tương tự như một máy quét lỗ hổng bảo mật.
WhatWeb cho phép người dùng thực hiện quét thông tin trực tiếp mà không cần sử dụng Kali Linux, giúp dễ dàng tiếp cận và sử dụng cho mọi người, đặc biệt là những người không có chuyên môn trong lĩnh vực này.
Hình 2: Giao diện web của WhatWeb
WhatWeb có khả năng quét trang web một cách lén lút và nhanh chóng, hoặc một cách triệt để nhưng chậm hơn Công cụ này cho phép người dùng điều chỉnh mức độ gây hấn để cân bằng giữa tốc độ và độ tin cậy Khi truy cập một trang web, WhatWeb thu thập thông tin về các công nghệ web đang được sử dụng Nếu thông tin thu thập được không đủ để xác định trang web, WhatWeb sẽ tiếp tục thẩm vấn để có thêm dữ liệu Mức độ xâm nhập mặc định của công cụ này được gọi là
Chế độ “lén lút” (stealthy) là phương pháp quét nhanh nhất, chỉ cần một yêu cầu HTTP cho một trang web, phù hợp cho việc quét các trang web công cộng Ngoài ra, các chế độ tích cực hơn cũng đã được phát triển để phục vụ cho các thử nghiệm thâm nhập.
Plugin WhatWeb có khả năng nhận diện các trang web một cách chính xác, từ những dấu hiệu rõ ràng đến những chi tiết tinh tế Hầu hết các trang web WordPress thường được nhận dạng qua thẻ meta HTML, nhưng một số trang web có thể loại bỏ thẻ này mà vẫn không làm khó được WhatWeb Plugin này cung cấp một công cụ hữu ích cho việc phân tích và nhận diện các trang web.
Bài viết trình bày 15 bài kiểm tra quan trọng, bao gồm kiểm tra biểu tượng yêu thích, tệp cài đặt mặc định, trang đăng nhập và kiểm tra các liên kết tương đối trong thư mục "/wp-content/".
WhatWeb nổi bật với hơn 1800 plugin, cụ thể là 1824 plugin tại thời điểm viết bài Đây là một con số ấn tượng mà ít công cụ nào có được Các plugin này kết hợp nhiều phương pháp như chuỗi văn bản (phân biệt chữ hoa chữ thường), biểu thức chính quy, truy vấn cơ sở dữ liệu Google Hack (với bộ từ khóa giới hạn), hàm băm MD5, nhận dạng URL, và các mẫu thẻ HTML Ngoài ra, nó còn hỗ trợ tùy chỉnh ngôn ngữ Ruby cho các hoạt động thụ động và tích cực, với các plugin tùy chỉnh được xác định qua dòng lệnh.
Hình 3: Một số Plugins trong công cụ
Công cụ này giúp tối ưu hóa sự trao đổi giữa tốc độ và độ tin cậy, điều chỉnh hiệu suất quét trang web, kiểm soát số lượng trang web quét đồng thời, quản lý chuyển hướng và hỗ trợ tên miền quốc tế (IDN), đồng thời cung cấp nhận thức rõ ràng về kết quả.
WhatWeb hỗ trợ nhiều định dạng nhật ký như Brief, Verbose, XML, JSON, MagicTree, RubyObject, MongoDB, SQL và ElasticSearch Nó cũng cho phép sử dụng proxy, bao gồm cả TOR, cùng với các tiêu đề HTTP tùy chỉnh và xác thực HTTP cơ bản.
Khớp mờ (fuzzy matching) là một kỹ thuật trong dịch thuật hỗ trợ bởi máy tính, cho phép tìm kiếm sự tương ứng giữa các phân đoạn văn bản và cơ sở dữ liệu bản dịch trước đó với độ chính xác không cần đạt 100% Kỹ thuật này thường áp dụng ở cấp độ câu, nhưng một số công nghệ dịch cũng cho phép đối sánh ở cấp độ cụm từ Khớp mờ thường được sử dụng khi người dịch làm việc với bộ nhớ dịch (TM - Translation Memory) và dựa trên việc kết hợp các chuỗi gần đúng.
Whatweb có khả năng xác định nhiều thông tin quan trọng về một trang web, bao gồm nền tảng, hệ thống quản lý nội dung (CMS), loại tập lệnh, Google Analytics, nền tảng máy chủ web, địa chỉ IP, quốc gia, tiêu đề máy chủ và cookie.
Pentester có thể tận dụng công cụ này để phát hiện và quét lỗ hổng bảo mật hiệu quả Công cụ này đi kèm với nhiều tính năng hữu ích như hỗ trợ proxy, khả năng quét và dò tìm lỗ hổng trên nhiều địa chỉ IP cùng lúc.
Các phiên bản đã phát hành
Sau khi phiên bản 0.3 được phát hành vào năm 2009 tại Kiwicon III, các nhà phát triển đã tiếp tục cho ra mắt nhiều phiên bản mới, với phiên bản mới nhất 0.5.5 được ra mắt vào ngày 16 tháng 1 năm 2021.
WhatWeb đã được giới thiệu trên nhiều trang web và diễn đàn, đồng thời tích hợp vào các phần mềm và hệ điều hành như Backtrack, Pentoo, BlackArch, BackBox và NodeZero.
So sánh WhatWeb với một số trang web hoặc công cụ khác
Tiêu chí đưa ra để so sánh đó là mục tiêu cùng xác định một trang web nào đó a webdav_scanner
WebDAV là giao thức cho phép người dùng cộng tác và chỉnh sửa nội dung trực tuyến một cách hiệu quả Được phát triển như một phần mở rộng của HTTP, WebDAV tận dụng các tính năng độc đáo của mình để cải thiện các phương thức và tiêu đề tiêu chuẩn của HTTP.
Giao thức WebDAV chủ yếu được sử dụng để chỉnh sửa và cộng tác từ xa, đồng thời cũng có khả năng truyền tệp Nó thường hoạt động trên cổng 80 hoặc cổng 443 để đảm bảo giao tiếp được mã hóa Mặc dù WebDAV mang lại sự tiện lợi cho người dùng trong việc truy cập nội dung web từ bất kỳ đâu, nhưng nếu không được cấu hình đúng, chức năng từ xa này có thể tạo ra lỗ hổng bảo mật nghiêm trọng.
Có thể sử dụng Metasploitable làm máy mục tiêu và máy Linux làm máy cục bộ để kiểm tra tính năng này
Hình 4: Kết quả sau khi sử dụng webdav_scanner
Kết quả từ hình ảnh cho thấy máy quét cung cấp thông tin HTTP, bao gồm phiên bản Apache và trạng thái bật tắt của WebDAV.
Các nhà phát triển ứng dụng web thường bỏ qua việc thêm các kiểm tra an toàn cho xác thực, dẫn đến việc thông tin nhạy cảm có thể bị lộ khi URL của ứng dụng bị yêu cầu trực tiếp Điều này có thể tạo ra cơ hội cho lỗ hổng chèn tệp cục bộ Công cụ ínpathx sử dụng bản sao của cây nguồn của ứng dụng để thực hiện các yêu cầu đến các tệp ở những vị trí đã biết, nhằm tìm kiếm các thông báo lỗi có chứa đường dẫn.
WhatWeb tự động trích xuất đường dẫn tệp cục bộ từ lỗi PHP bằng cách tìm kiếm các mẫu lỗi trong một hoặc nhiều trang liên kết từ URL đích Một số plugin của WhatWeb cũng có khả năng lấy đường dẫn tệp cục bộ thông qua các lỗ hổng tiết lộ thông tin đã biết trong ứng dụng mục tiêu Bạn có thể sử dụng danh sách đường dẫn kiểm tra trong WhatWeb với tùy chọn –url-partern để lấp đầy khoảng trống này.
BlindElephant là một công cụ lấy dấu vân tay ứng dụng web, giúp xác định phiên bản của ứng dụng web bằng cách so sánh các tệp tĩnh với các hàm băm đã được tính toán trước cho các phiên bản tương ứng Kỹ thuật này có ưu điểm là nhanh chóng, tiết kiệm băng thông, không xâm lấn, và có khả năng tự động hóa cao Trong khi đó, WhatWeb hiện tại không có nhiều dấu vân tay cho các phiên bản ứng dụng đã biết Mặc dù BlindElephant có điểm tương đồng với chế độ tích cực của WhatWeb, nhưng mục tiêu chính của WhatWeb là phát hiện càng nhiều ứng dụng càng tốt mà không cần thông tin về phiên bản.
Hình 5: Giao diện dòng lệnh của BlindElephant d WAFP - Web Application Finger Printing
WAFP xác định hệ thống bằng cách thu thập nhiều URL và so sánh tổng MD5 với cơ sở dữ liệu, phương pháp này rất hiệu quả cho các hệ thống đã được ghi nhận Việc thêm hệ thống mới vào cơ sở dữ liệu cũng khá dễ dàng Tuy nhiên, WhatWeb hiện tại chưa có nhiều dấu vân tay cho các phiên bản ứng dụng đã biết.
WAFP tương tự như chế độ tích cực của WhatWeb, với mục tiêu chính là xác định nhiều ứng dụng nhất có thể mà không cần quan tâm đến thông tin về phiên bản.
Hình 6: Ví dụ câu lệnh trong WAFP
W3af, viết tắt của Web Application Attack and Audit Framework, là một dự án nhằm cung cấp một khuôn khổ giúp bảo mật các ứng dụng web Dự án này tập trung vào việc phát hiện và khai thác tất cả các lỗ hổng trong ứng dụng web, tương tự như WhatWeb Bên cạnh đó, NMap NSE Plugins cũng đóng vai trò quan trọng trong việc hỗ trợ bảo mật.
Nmap cung cấp thông tin chi tiết về máy chủ HTTP thông qua quét phiên bản, ví dụ như lệnh nmap -sV -p80 treshna.com Hiện tại, các plugin này vẫn đang trong quá trình phát triển.
Công cụ Finger Printer WordPress cho phép tìm kiếm đa dạng và truy xuất thông tin về các phiên bản plugin đã cài đặt trong hệ thống WordPress Nó có khả năng phân tích một URL hoặc dựa trên kết quả được Google lập chỉ mục Ngoài ra, công cụ này còn hiển thị mã CVE liên quan đến từng plugin nếu có.
Hình 8: Ví dụ sử dụng plecost h Shodan Computer Search Engine
ShodanHQ duy trì một cơ sở dữ liệu phong phú về các tiêu đề HTTP từ nhiều địa chỉ IP công cộng Người dùng có thể tìm kiếm và nhận thông tin về tiêu đề HTTP cùng quốc gia tương ứng với các địa chỉ IP theo yêu cầu Để nhận hơn 10 kết quả cho mỗi truy vấn, người dùng cần đăng ký miễn phí, nhưng chỉ có thể truy cập 50 kết quả đầu tiên Để có được kết quả đầy đủ, người dùng sẽ phải thanh toán 20 đô la Mỹ.
Giao diện người dùng web của WhatWeb đã được giới thiệu, trong đó Aggression được đặt thành bị động 1 Người dùng không cần đăng ký tài khoản để sử dụng Công cụ THC's Amap (Application MAPper) tập trung vào việc thu thập biểu ngữ và phát hiện giao thức, thay vì chỉ lấy dấu vân tay hệ điều hành Bằng cách kiểm tra các dịch vụ đang chạy trên máy, người dùng có thể xác định rõ ràng hệ điều hành và mục đích của máy chủ.
Vào năm 2015, Amap đã trở thành một công cụ quét tiên tiến dành cho pentesters, với khả năng xác định các ứng dụng ngay cả khi chúng hoạt động trên các cổng không tiêu chuẩn Công cụ này còn có khả năng nhận diện các ứng dụng không dựa trên định dạng ASCII, thông qua việc gửi các gói kích hoạt và phân tích phản hồi từ danh sách các chuỗi phản hồi.
CÀI ĐẶT VÀ SỬ DỤNG CÔNG CỤ
Cài đặt
- Chuẩn bị môi trường: Máy sử dụng hệ điều hành Kali Linux
Hình 9: Thông tin về phiên bản Kali Linux sử dụng
- Cài đặt công cụ: sudo apt install whatweb
Hình 10: Cài đặt công cụ
- Kiểm tra phiên bản WhatWeb: whatweb –version
Hình 11: Kiểm tra phiên bản WhatWeb
Các tham số trong câu lệnh
a Cấu trúc câu lệnh: whatweb [options] b Lựa chọn mục tiêu:
• : nhập URL, tên máy chủ, địa chỉ IP, tên tệp hoặc dải IP ở định dạng CIDR, x.x.x - x hoặc x.x.x.x - x.x.x.x
• input-file=FILE, -i: Đọc mục tiêu từ một tệp Có thể đặt tên máy chủ hoặc
URL trực tiếp bằng -i/dev/stdin c Sửa đổi mục tiêu:
• url-prefix: Thêm tiền tố vào URL mục tiêu
• url-suffix: Thêm hậu tố vào URL mục tiêu
To optimize your URL structure, incorporate specific targets within the URL, such as example.com/%insert%/ Additionally, consider the level of aggression, which refers to the balance between speed, stealth, and reliability in your approach.
aggression, -a = LEVEL Đặt mức độ xâm lấn mặc định là 1
1 Tàng hình (Stealthy): Thực hiện một yêu cầu HTTP cho mỗi mục tiêu và cũng tuân theo các chuyển hướng
3 Xâm lấn (Aggressive): Nếu một plugin cấp 1 phù hợp, các yêu cầu bổ sung sẽ được thực hiện
4 Nặng (Heavy): Tạo ra nhiều yêu cầu HTTP cho mỗi mục tiêu URL từ tất cả các plugin đều được thử
Các plugin cấp 3 có khả năng đoán nhiều URL hơn và thực hiện các hành động không được phép, điều này có thể gây ra những vấn đề không an toàn Hiện tại, WhatWeb không hỗ trợ các bài kiểm tra xâm nhập hoặc khai thác trong các plugin của mình.
• user-agent, -U=AGENT: Xác định là Agent thay vì WhatWeb phiên bản
Để thêm tiêu đề HTTP, sử dụng cú pháp "-H" theo sau là tên tiêu đề và giá trị, ví dụ: "Foo: Bar" Nếu bạn muốn thay thế một tiêu đề hiện có, chỉ cần chỉ định tên tiêu đề mới Để xóa một tiêu đề, bạn có thể chỉ định một giá trị trống, chẳng hạn như "User -Agent:".
• follow-redirect=WHEN: Kiểm soát thời điểm theo dõi chuyển hướng WHEN có thể là “never”, “http-only”, “meta-only”, “same-site” hoặc “always” Mặc định là chọn “always”
• max-redirects=NUM: Số lượng chuyển hướng tối đa Mặc định: 10 f Xác thực:
• user, -u=: Xác thực cơ bản HTTP
• cookie, -c=COOKIES: Sử dụng cookie, ví dụ: 'name = value; name2 = value2
• cookie-jar=FILE: Đọc cookie từ một tệp g Proxy:
• proxy: Cài đặt hostname và port cho proxy Mặc định sẽ là
• proxy-user: Cài uservà password cho proxy h Plugins:
• list-plugins, -l: Danh sách tất cả plugins
• info-plugins, -I=[SEARCH]: Danh sách tất cả plugins với thông tin chi tiết
Tùy chọn tìm kiếm với các từ khóa trong danh sách được phân tách bằng dấu phẩy
• search-plugins=STRING: Tìm kiếm plugins theo từ khóa
Tùy chọn -p=LIST cho phép bạn chọn các plugin, trong đó LIST là danh sách các plugin được phân tách bằng dấu phẩy Mặc định, tất cả các plugin sẽ được chọn Mỗi phần tử trong danh sách có thể là một thư mục, tệp hoặc tên plugin, và có thể đi kèm với một công cụ sửa đổi như + hoặc - Ngoài ra, -p + cũng là một phím tắt cho tùy chọn -p +plugins-disable.
• grep, -g=STRING|REGEXP: Tìm kiếm theo chuỗi hoặc cụm từ thông dụng
Chỉ hiển thị kết quả phù hợp
• custom-pluginINITION: Xác định một plugin tùy chỉnh có tên Custom-
• dorks=PLUGIN: Liệt kê các dorks của Google cho plugin đã chọn i Output:
• verbose, -v: Đầu ra chi tiết bao gồm các mô tả plugin Sử dụng hai lần để debug
• colour, color=WHEN: Kiểm soát khi nào màu sắc được sử dụng WHEN có thể là “never”, “always” hoặc “auto”
• quiet, -q: Không hiển thị brief logging (ghi nhật kí ngắn gọn) vào STDOUT
• no-errors: Loại bỏ thông báo lỗi k Logging:
• log-brief=FILE: Ghi đầu ra ngắn gọn chỉ trong một dòng
• log-verbose=FILE: Ghi đầu ra chi tiết
• log-errors=FILE: Các lỗi ghi nhật ký
• log-xml=FILE: Ghi nhật ký định dạng XML
• log-json=FILE: Ghi nhật ký định dạng JSON
• log-sql=FILE: Ghi nhật ký câu lệnh SQL INSERT
• log-sql-create=FILE: Tạo bảng cơ sở dữ liệu SQL
• log-json-verbose=FILE: Ghi nhật ký chi tiết theo định dạng JSON
• log-magictree=FILE: Ghi nhật ký định dạng cây ma thuật XML
• log-object=FILE: Ghi nhật ký định dạng kiểm tra đối tượng Ruby
• log-mongo-database: Tên của cơ sở dữ liệu MongoDB
• log-mongo-collection: Tên của bộ sưu tập MongoDB
• log-mongo-host: Tên máy chủ hoặc địa chỉ IP MongoDB
• log-mongo-username: Tên username MongoDB Mặc định: nil
• log-mongo-password: password MongoDB Mặc định: nil
• log-elastic-index: Tên của chỉ mục để lưu trữ kết quả Mặc định: whatweb
• log-elastic-host: Máy chủ:cổng của giao diện http elastic Mặc định máy chủ:cổng là 127.0.0.1:9200 l Hiệu suất và ổn định:
• max-threads, -t: Số luồng đồng thời Mặc định là 25 luồng
• open-timeout: Thời gian tính bằng giây, mặc định là 15 giây
• read-timeout: Thời gian tính bằng giây, mặc định là 30 giây
• wait=SECONDS: Thời gian đợi giữa các kết nối m Trợ giúp và thông cảm:
• short-help: Hướng dẫn sử dụng ngắn
• help, -h: Hướng dẫn sử dụng hoàn thiện
• debug: Nâng cao lỗi trong plugin
• version: Hiển thị thông tin phiên bản.
Thực hành đơn giản
a Quét trang web example.com: whatweb example.com
Kết quả quét trang web example.com cho thấy thông tin chi tiết về các plugin sử dụng Đồng thời, khi quét đồng thời hai trang web reddit.com và slashdot.org bằng lệnh whatweb -v, chúng ta cũng nhận được mô tả rõ ràng về các plugin của cả hai trang này.
Hình 13: Mô tả chi tiết plugin của reddit.com
Hình 14: Mô tả chi tiết plugin của slashdot.org
Hình 15: Mô tả chi tiết plugin của slashdot.org
Hình 16: Mô tả chi tiết plugin
Hình 17: Mô tả chi tiết plugin của reddit.com
Hình 18: Mô tả chi tiết plugin
Hình 19: Mô tả chi tiết HTTP Headers của reddit.com c Quét xâm lấn trang web vietnamairline.com với độ xâm lấn khác nhau: whatweb -a 3 vietnamairline.com
Hình 20: Kết quả quét với mức xâm lấn độ 3 whatweb -a 1 vietnamairline.com
Hình 21: Kết quả quét với độ xâm lấn mức 1
So sánh hai hình, ta nhận thấy rằng ở mức xâm lấn 1 (chế độ Stealthy), công cụ chỉ xác định được rằng trang web sử dụng Bootstrap Trong khi đó, ở mức độ 3 (chế độ Aggressive), công cụ có thể chỉ ra phiên bản Bootstrap cụ thể đang được sử dụng, bao gồm phiên bản 3.3.2 và 3.3.6 Ngoài ra, công cụ cũng cho phép quét mạng cục bộ một cách nhanh chóng và loại bỏ các thông báo lỗi.
Hình 22: Kết quả sử dụng tham số no-errors
Thử nghiệm thực tế với trang web wordpress.org
Câu lệnh sử dụng: whatweb wordpress.org
Hình 23: Thông tin cơ bản về trang web b Quét và ghi ra thông tin đầy đủ của các plugin
Câu lệnh sử dụng: whatweb -v wordpress.org
Hình 24: Phần đầu tiên của báo cáo về trang web
Hình 25: Phần thứ hai báo cáo chi tiết hơn về trang web
Hình 26: Thông tin về thư viện sử dụng, web server
Danh sách UncommonHeaders bao gồm tất cả các tiêu đề tiêu chuẩn và nhiều tiêu đề không tiêu chuẩn nhưng phổ biến Những tiêu đề thú vị như x-powered-by, server và x-aspnet-version được bổ sung để tạo sự phong phú cho danh sách này.
Hình 28: Thông tin về Header
Trong quá trình thu thập thông tin từ các trang web WordPress, đặc biệt là từ WordPress.org, người dùng sẽ nhận thấy một điều thú vị là trong phần HTTP Header, có một Response Header đặc biệt mang tên X-Olaf Header Khác với các Header thông thường được thể hiện bằng chữ cái hoặc số, nội dung phản hồi của X-Olaf Header lại là hình ảnh người tuyết.
Cuối năm 2015, WordPress.org đã công bố trở thành nhà cung cấp Olaf chính thức, mang đến sự vui vẻ và thú vị cho người dùng Tiêu đề X - Olaf được sử dụng phổ biến nhất ở Mỹ, tiếp theo là Vương quốc Anh Ngoài ra, việc quét thông thường và ghi thông tin vào file có tên là FILE dưới dạng XML cũng được thực hiện.
Câu lệnh sử dụng: whatweb wordpress.org –log-xml=FILE
Hình 29: Câu lệnh sử dụng
Hình 30: Kết quả được lưu dưới dạng XML d Quét thông thường và ghi thông tin vào file tên là FILR dưới dạng kiểm tra đối tượng Ruby
Câu lệnh sử dụng: whatweb wordpress.org –log-object=FILR
Hình 31: Kết quả e Danh sách tất cả các Plugin kèm theo thông tin chi tiết
Câu lệnh sử dụng: whatweb -I wordpress.org
Danh sách này sẽ trình bày các plugin kèm theo thông tin như địa chỉ website, tác giả, phiên bản và các đặc điểm nổi bật khác Cuối cùng, danh sách sẽ tổng hợp và thống kê các plugin dựa trên các tiêu chí đặc trưng.
Hình 32: Thông tin chi tiết các Plugins f Tùy chỉnh màu sắc cho thông tin được đưa ra
Câu lệnh sử dụng: whatweb wordpress.org –colour=always whatweb wordpress.org –colour=never
Hình 33: Kết quả so sánh
Sử dụng hai câu lệnh và so sánh kết quả cho thấy rằng câu lệnh có sử dụng màu sắc mang lại thông tin đầu ra dễ nhìn và dễ nhận biết hơn so với câu lệnh không có màu sắc Thêm vào đó, các câu lệnh mặc định luôn sử dụng màu sắc để cải thiện khả năng hiển thị.