Rate this post

Không có gì mới dưới ánh mặt trời, và gần như mọi ứng dụng web mà người ta có thể nghĩ đến việc phát triển đều đã được phát triển. Với số lượng lớn các dự án phần mềm nguồn mở và miễn phí đang được tích cực phát triển và triển khai trên khắp thế giới, rất có thể một bài kiểm tra bảo mật ứng dụng sẽ phải đối mặt với mục tiêu phụ thuộc hoàn toàn hoặc một phần vào các ứng dụng hoặc khuôn khổ nổi tiếng này (ví dụ: WordPress , phpBB, Mediawiki, v.v.).

Các bài viết liên quan:

Biết các thành phần ứng dụng web đang được kiểm tra sẽ giúp ích đáng kể trong quá trình kiểm tra và cũng sẽ giảm đáng kể nỗ lực cần thiết trong quá trình kiểm tra. Các ứng dụng web nổi tiếng này có tiêu đề HTML, cookie và cấu trúc thư mục đã biết có thể được liệt kê để xác định ứng dụng. Hầu hết các khung công tác web đều có một số điểm đánh dấu ở những vị trí đó giúp kẻ tấn công hoặc người kiểm tra nhận ra chúng. Về cơ bản đây là những gì tất cả các công cụ tự động làm, chúng tìm kiếm một điểm đánh dấu từ một vị trí được xác định trước và sau đó so sánh nó với cơ sở dữ liệu của các chữ ký đã biết. Để có độ chính xác tốt hơn, một số điểm đánh dấu thường được sử dụng.

Mục tiêu kiểm tra

Lấy dấu vân tay các thành phần đang được ứng dụng web sử dụng.

Làm thế nào để kiểm tra

Black-Box Testing

Có một số vị trí phổ biến cần xem xét để xác định các khuôn khổ hoặc thành phần:

  • HTTP headers
  • Cookies
  • HTML source code
  • Specific files and folders
  • File extensions
  • Error messages

HTTP Headers

Hình thức cơ bản nhất để xác định khung công tác web là xem trường X-Powered-By trong tiêu đề phản hồi HTTP. Nhiều công cụ có thể được sử dụng để đánh dấu mục tiêu, công cụ đơn giản nhất là netcat.

Hãy xem xét Phản hồi yêu cầu HTTP sau:

Từ trường X-Powered-By, chúng tôi hiểu rằng khung ứng dụng web có thể là Mono. Tuy nhiên, mặc dù cách tiếp cận này đơn giản và nhanh chóng, nhưng phương pháp này không hoạt động trong 100% trường hợp. Có thể dễ dàng vô hiệu hóa tiêu đề X-Powered-By bằng một cấu hình phù hợp. Ngoài ra còn có một số kỹ thuật cho phép một trang web làm xáo trộn tiêu đề HTTP (xem ví dụ trong phần Biện pháp khắc phục). Trong ví dụ trên, chúng ta cũng có thể lưu ý rằng một phiên bản cụ thể của nginx đang được sử dụng để cung cấp nội dung.

Vì vậy, trong cùng một ví dụ, người thử nghiệm có thể bỏ lỡ tiêu đề X-Powered-By hoặc nhận được câu trả lời như sau:

Đôi khi có nhiều tiêu đề HTTP hơn trỏ đến một khuôn khổ nhất định. Trong ví dụ sau, theo thông tin từ HTTP-request, người ta có thể thấy rằng tiêu đề X-Powered-By chứa phiên bản PHP. Tuy nhiên, tiêu đề X-Generator chỉ ra rằng khung được sử dụng thực sự là Swiftlet, giúp người kiểm tra thâm nhập mở rộng các vectơ tấn công của họ. Khi thực hiện lấy dấu vân tay, hãy kiểm tra cẩn thận mọi tiêu đề HTTP để tìm những rò rỉ như vậy.

Cookies

Một cách tương tự và có phần đáng tin cậy hơn để xác định khuôn khổ web hiện tại là cookie dành riêng cho khuôn khổ.

Cookie CAKEPHP đã được đặt tự động, cung cấp thông tin về khuôn khổ đang được sử dụng. Danh sách các tên cookie phổ biến được trình bày trong phần Cookie. Hạn chế vẫn còn tồn tại trong việc dựa vào cơ chế nhận dạng này – có thể thay đổi tên của cookie. Ví dụ: đối với khuôn khổ CakePHP đã chọn, điều này có thể được thực hiện thông qua cấu hình sau (đoạn trích từ core.php):

Tuy nhiên, những thay đổi này ít có khả năng được thực hiện hơn những thay đổi đối với tiêu đề X-Powered-By, do đó, cách tiếp cận nhận dạng này có thể được coi là đáng tin cậy hơn.

HTML Source Code

Kỹ thuật này dựa trên việc tìm kiếm các mẫu nhất định trong mã nguồn trang HTML. Thông thường, người ta có thể tìm thấy rất nhiều thông tin giúp người thử nghiệm nhận ra một thành phần cụ thể. Một trong những điểm đánh dấu phổ biến là các nhận xét HTML trực tiếp dẫn đến việc tiết lộ khuôn khổ. Thường xuyên hơn có thể tìm thấy một số đường dẫn dành riêng cho khung, tức là các liên kết đến các thư mục CSS hoặc JS dành riêng cho khung. Cuối cùng, các biến tập lệnh cụ thể cũng có thể trỏ đến một khuôn khổ nhất định.

Từ ảnh chụp màn hình bên dưới, người ta có thể dễ dàng tìm hiểu khuôn khổ đã sử dụng và phiên bản của nó bằng cách đề cập các điểm đánh dấu. Nhận xét, đường dẫn cụ thể và các biến tập lệnh đều có thể giúp kẻ tấn công nhanh chóng xác định một phiên bản của ZK framework.

Thông tin như vậy thường được đặt trong phần <head> của phản hồi HTTP, trong thẻ <meta> hoặc ở cuối trang. Tuy nhiên, toàn bộ câu trả lời nên được phân tích vì nó có thể hữu ích cho các mục đích khác như kiểm tra các nhận xét hữu ích khác và các trường ẩn. Đôi khi, các nhà phát triển web không quan tâm nhiều đến việc che giấu thông tin về các khuôn khổ hoặc thành phần được sử dụng. Vẫn có thể tình cờ gặp một cái gì đó như thế này ở cuối trang:

Specific Files và Folders

Có một cách tiếp cận khác giúp kẻ tấn công hoặc người kiểm tra xác định các ứng dụng hoặc thành phần với độ chính xác cao. Mọi thành phần web đều có cấu trúc tệp và thư mục cụ thể trên máy chủ. Người ta đã lưu ý rằng người ta có thể thấy đường dẫn cụ thể từ nguồn trang HTML nhưng đôi khi chúng không được trình bày rõ ràng ở đó và vẫn nằm trên máy chủ.

Để phát hiện ra chúng, người ta đã sử dụng một kỹ thuật được gọi là duyệt cưỡng bức hoặc “quét rác”. Bẩn thỉu là vũ phu buộc một mục tiêu có thư mục và tên tệp đã biết và giám sát các phản hồi HTTP để liệt kê nội dung máy chủ. Thông tin này có thể được sử dụng cho cả việc tìm kiếm các tệp mặc định và tấn công chúng, cũng như để lấy dấu vân tay của ứng dụng web. Việc quét rác có thể được thực hiện theo một số cách, ví dụ dưới đây cho thấy một cuộc tấn công quét rác thành công nhằm vào một mục tiêu do WordPress cung cấp với sự trợ giúp của danh sách xác định và chức năng xâm nhập của Burp Suite.

Chúng ta có thể thấy rằng đối với một số thư mục dành riêng cho WordPress (ví dụ: / wp-include /, / wp-admin / và / wp-content /), phản hồi HTTP là 403 (Bị cấm), 302 (Đã tìm thấy, chuyển hướng sang wp-login. php) và 200 (OK) tương ứng. Đây là một chỉ báo tốt cho thấy mục tiêu được cung cấp bởi WordPress. Theo cách tương tự, bạn có thể loại bỏ các thư mục plugin ứng dụng khác nhau và các phiên bản của chúng. Trong ảnh chụp màn hình bên dưới, người ta có thể thấy tệp CHANGELOG điển hình của một plugin Drupal, tệp này cung cấp thông tin về ứng dụng đang được sử dụng và tiết lộ phiên bản plugin dễ bị tấn công.

Mẹo: trước khi bắt đầu quét, hãy kiểm tra tệp robots.txt trước. Đôi khi, các thư mục cụ thể của ứng dụng và thông tin nhạy cảm khác cũng có thể được tìm thấy ở đó. Ví dụ về tệp robots.txt như vậy được trình bày trên ảnh chụp màn hình bên dưới.

Các tệp và thư mục cụ thể khác nhau đối với từng ứng dụng cụ thể. Nếu ứng dụng hoặc thành phần được xác định là Nguồn mở, thì có thể có giá trị trong việc thiết lập cài đặt tạm thời trong quá trình kiểm tra thâm nhập để hiểu rõ hơn về cơ sở hạ tầng hoặc chức năng nào được trình bày và những tệp nào có thể được để lại trên máy chủ. Tuy nhiên, một số danh sách tệp tốt đã tồn tại; một ví dụ điển hình là danh sách từ FuzzDB gồm các tệp / thư mục có thể đoán trước được.

File Extensions

URL có thể bao gồm phần mở rộng tệp, phần mở rộng này cũng có thể giúp xác định nền tảng web hoặc công nghệ.

Ví dụ, wiki OWASP đã sử dụng PHP:

Dưới đây là một số phần mở rộng tệp web phổ biến và các công nghệ được liên kết:

  • .php – PHP
  • .aspx – Microsoft ASP.NET
  • .jsp – Java Server Pages

Error Messages

Như có thể thấy trong ảnh chụp màn hình sau, đường dẫn hệ thống tệp được liệt kê trỏ đến việc sử dụng WordPress (wp-content). Người thử nghiệm cũng nên biết rằng WordPress dựa trên PHP (functions.php).

Biện pháp khắc phục hậu quả

Trong khi các nỗ lực có thể được thực hiện để sử dụng các tên cookie khác nhau (thông qua việc thay đổi cấu hình), ẩn hoặc thay đổi đường dẫn tệp / thư mục (thông qua việc viết lại hoặc thay đổi mã nguồn), xóa các tiêu đề đã biết, v.v. những nỗ lực đó chỉ dẫn đến “bảo mật thông qua sự che khuất”. Chủ sở hữu / quản trị viên hệ thống nên nhận ra rằng những nỗ lực đó chỉ làm chậm lại những gì cơ bản nhất của đối thủ. Thời gian / nỗ lực có thể được sử dụng tốt hơn cho các hoạt động nâng cao nhận thức của các bên liên quan và duy trì giải pháp.

Công cụ

Dưới đây là danh sách các công cụ phổ biến và nổi tiếng. Ngoài ra còn có rất nhiều tiện ích khác, cũng như các công cụ lấy dấu vân tay dựa trên khuôn khổ.

WhatWeb

Trang web: https://github.com/urbanadventurer/WhatWeb

Hiện là một trong những công cụ lấy dấu vân tay tốt nhất trên thị trường. Có trong bản dựng Kali Linux mặc định. Ngôn ngữ: Ruby Đối sánh để lấy dấu vân tay được thực hiện bằng:

  • Text strings (case sensitive)
  • Regular expressions
  • Google Hack Database queries (limited set of keywords)
  • MD5 hashes
  • URL recognition
  • HTML tag patterns

Mã ruby ​​tùy chỉnh cho các hoạt động thụ động và tích cực

Đầu ra mẫu được trình bày trên ảnh chụp màn hình bên dưới:

Wappalyzer

Trang web: https://www.wappalyzer.com/

Wapplyzer có sẵn trong nhiều mô hình sử dụng, trong đó phổ biến nhất có thể là các tiện ích mở rộng của Firefox / Chrome. Chúng chỉ hoạt động trên đối sánh biểu thức chính quy và không cần bất kỳ thứ gì khác ngoài trang được tải trong trình duyệt. Nó hoạt động hoàn toàn ở cấp trình duyệt và cho kết quả dưới dạng biểu tượng. Mặc dù đôi khi nó có kết quả dương tính giả, nhưng điều này rất hữu ích để có khái niệm về những công nghệ nào đã được sử dụng để xây dựng một trang web mục tiêu ngay sau khi duyệt qua một trang.

Đầu ra mẫu của một trình cắm được trình bày trên ảnh chụp màn hình bên dưới.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now