Rate this post

Mặc dù hầu hết các tệp trong máy chủ web đều do chính máy chủ trực tiếp xử lý, nhưng không hiếm khi tìm thấy các tệp không được tham chiếu hoặc bị quên có thể được sử dụng để lấy thông tin quan trọng về cơ sở hạ tầng hoặc thông tin đăng nhập.

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

Hầu hết các trường hợp phổ biến bao gồm sự hiện diện của các phiên bản cũ được đổi tên của tệp đã sửa đổi, tệp bao gồm được tải sang ngôn ngữ lựa chọn và có thể được tải xuống dưới dạng nguồn hoặc thậm chí sao lưu tự động hoặc thủ công dưới dạng lưu trữ nén. Các tệp sao lưu cũng có thể được tạo tự động bởi hệ thống tệp cơ bản mà ứng dụng được lưu trữ trên đó, một tính năng thường được gọi là “ảnh chụp nhanh”.

Tất cả các tệp này có thể cấp cho người thử nghiệm quyền truy cập vào hoạt động bên trong, cửa sau, giao diện quản trị hoặc thậm chí thông tin đăng nhập để kết nối với giao diện quản trị hoặc máy chủ cơ sở dữ liệu.

Một nguồn lỗ hổng quan trọng nằm trong các tệp không liên quan gì đến ứng dụng, nhưng được tạo ra do hậu quả của việc chỉnh sửa tệp ứng dụng hoặc sau khi tạo các bản sao lưu trực tiếp hoặc bằng cách để lại trong cây web các tệp cũ hoặc không được tham chiếu Thực hiện chỉnh sửa tại chỗ hoặc các hành động quản trị khác trên máy chủ web sản xuất có thể vô tình để lại các bản sao lưu, được tạo tự động bởi trình chỉnh sửa trong khi chỉnh sửa tệp hoặc bởi quản trị viên đang nén một tập hợp tệp để tạo bản sao lưu.

Rất dễ để quên các tệp như vậy và điều này có thể gây ra mối đe dọa bảo mật nghiêm trọng cho ứng dụng. Điều đó xảy ra vì các bản sao lưu có thể được tạo với phần mở rộng tệp khác với phần mở rộng của tệp gốc. Một tệp lưu trữ .tar, .zip hoặc .gz mà chúng tôi tạo (và quên…) rõ ràng là có một phần mở rộng khác và điều tương tự cũng xảy ra với các bản sao tự động được tạo bởi nhiều trình chỉnh sửa (ví dụ: emacs tạo một bản sao lưu có tên tệp ~ khi chỉnh sửa tệp ). Tạo một bản sao bằng tay có thể tạo ra hiệu quả tương tự (hãy nghĩ đến việc sao chép tệp vào file.old). Hệ thống tệp cơ bản mà ứng dụng đang sử dụng có thể tạo ảnh chụp nhanh ứng dụng của bạn tại các thời điểm khác nhau mà bạn không biết. Hệ thống này cũng có thể truy cập được qua web, gây ra mối đe dọa kiểu tệp sao lưu tương tự nhưng khác đối với ứng dụng của bạn.

Do đó, các hoạt động này tạo ra các tệp không được ứng dụng cần và có thể được máy chủ web xử lý khác với tệp gốc. Ví dụ: nếu chúng tôi tạo một bản sao của login.asp có tên là login.asp.old, chúng tôi đang cho phép người dùng tải xuống mã nguồn của login.asp. Điều này là do login.asp.old thường sẽ được phân phát dưới dạng văn bản hoặc đơn giản, thay vì được thực thi vì phần mở rộng của nó. Nói cách khác, truy cập login.asp gây ra việc thực thi mã phía máy chủ của login.asp, trong khi truy cập login.asp.old khiến nội dung của login.asp.old (một lần nữa, mã phía máy chủ) được trả lại một cách rõ ràng cho người dùng và hiển thị trong trình duyệt. Điều này có thể gây ra rủi ro về bảo mật, vì thông tin nhạy cảm có thể bị lộ.

Nói chung, để lộ mã phía máy chủ là một ý tưởng tồi. Bạn không chỉ tiết lộ logic nghiệp vụ một cách không cần thiết mà còn có thể vô tình tiết lộ thông tin liên quan đến ứng dụng có thể giúp ích cho kẻ tấn công (tên đường dẫn, cấu trúc dữ liệu, v.v.). Chưa kể thực tế là có quá nhiều script với tên người dùng và mật khẩu được nhúng trong văn bản rõ ràng (đó là một cách làm bất cẩn và rất nguy hiểm).

Các nguyên nhân khác của tệp không được tham chiếu là do lựa chọn thiết kế hoặc cấu hình khi chúng cho phép nhiều loại tệp liên quan đến ứng dụng như tệp dữ liệu, tệp cấu hình, tệp nhật ký, được lưu trữ trong thư mục hệ thống tệp mà máy chủ web có thể truy cập. Các tệp này thường không có lý do gì để nằm trong không gian hệ thống tệp có thể được truy cập qua web, vì chúng chỉ nên được truy cập ở cấp ứng dụng, bởi chính ứng dụng (chứ không phải bởi người dùng bình thường duyệt xung quanh).

Các mối đe dọa

Các tệp cũ, sao lưu và không được tham chiếu có nhiều mối đe dọa khác nhau đối với bảo mật của ứng dụng web:

Các tệp không được tham chiếu có thể tiết lộ thông tin nhạy cảm có thể tạo điều kiện cho một cuộc tấn công tập trung chống lại ứng dụng; ví dụ: bao gồm các tệp chứa thông tin đăng nhập cơ sở dữ liệu, tệp cấu hình chứa tham chiếu đến nội dung ẩn khác, đường dẫn tệp tuyệt đối, v.v.

Các trang không được tham chiếu có thể chứa chức năng mạnh mẽ có thể được sử dụng để tấn công ứng dụng; ví dụ một trang quản trị không được liên kết từ nội dung đã xuất bản nhưng có thể được truy cập bởi bất kỳ người dùng nào biết tìm nó ở đâu.

Các tệp cũ và sao lưu có thể chứa các lỗ hổng bảo mật đã được sửa trong các phiên bản mới hơn; ví dụ: viewdoc.old.jsp có thể chứa lỗ hổng truyền tải thư mục đã được sửa trong viewdoc.jsp nhưng vẫn có thể bị khai thác bởi bất kỳ ai tìm thấy phiên bản cũ.

Các tệp sao lưu có thể tiết lộ mã nguồn cho các trang được thiết kế để thực thi trên máy chủ; ví dụ: yêu cầu viewdoc.bak có thể trả lại mã nguồn cho viewdoc.jsp, mã này có thể được xem xét các lỗ hổng có thể khó tìm bằng cách đưa ra các yêu cầu mù đối với trang thực thi. Trong khi điều này

eat rõ ràng là áp dụng cho các ngôn ngữ có tập lệnh, chẳng hạn như Perl, PHP, ASP, shell scripts, JSP, v.v., nó không giới hạn đối với chúng, như thể hiện trong ví dụ được cung cấp trong dấu đầu dòng tiếp theo.

Các kho lưu trữ sao lưu có thể chứa các bản sao của tất cả các tệp bên trong (hoặc thậm chí bên ngoài) webroot. Điều này cho phép kẻ tấn công nhanh chóng liệt kê toàn bộ ứng dụng, bao gồm các trang không được tham chiếu, mã nguồn, tệp bao gồm, v.v. Ví dụ: nếu bạn quên tệp có tên tệp myservlets.jar.old chứa (bản sao dự phòng của) các lớp triển khai servlet của bạn, bạn đang tiết lộ nhiều thông tin nhạy cảm dễ bị dịch ngược và thiết kế ngược.

Trong một số trường hợp, việc sao chép hoặc chỉnh sửa tệp không sửa đổi phần mở rộng tệp, nhưng sửa đổi tên tệp. Điều này xảy ra chẳng hạn trong môi trường Windows, nơi hoạt động sao chép tệp tạo ra tên tệp có tiền tố là “Bản sao của” hoặc các phiên bản được bản địa hóa của chuỗi này. Vì phần mở rộng tệp được giữ nguyên, đây không phải là trường hợp tệp thực thi được máy chủ web trả về dưới dạng văn bản thuần túy và do đó không phải là trường hợp tiết lộ mã nguồn. Tuy nhiên, những tệp này cũng nguy hiểm vì có khả năng chúng bao gồm logic lỗi thời và không chính xác, khi được gọi ra, có thể gây ra lỗi ứng dụng, có thể mang lại thông tin có giá trị cho kẻ tấn công, nếu hiển thị thông báo chẩn đoán được bật.

Tệp nhật ký có thể chứa thông tin nhạy cảm về các hoạt động của người dùng ứng dụng, ví dụ: dữ liệu nhạy cảm được chuyển trong tham số URL, ID phiên, URL được truy cập (có thể tiết lộ thêm nội dung không được tham chiếu), v.v. Các tệp nhật ký khác (ví dụ: ftp log) có thể chứa thông tin nhạy cảm về việc bảo trì ứng dụng của quản trị viên hệ thống.

Ảnh chụp nhanh hệ thống tệp có thể chứa các bản sao mã chứa các lỗ hổng bảo mật đã được sửa trong các phiên bản gần đây hơn. Ví dụ /.snapshot/monthly.1/view.php có thể chứa lỗ hổng truyền tải thư mục đã được sửa trong /view.php nhưng vẫn có thể bị khai thác bởi bất kỳ ai tìm thấy phiên bản cũ.

Mục tiêu kiểm tra

Tìm và phân tích các tệp không tham chiếu có thể chứa thông tin nhạy cảm.

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

Black-Box Testing

Kiểm tra các tệp không được tham chiếu sử dụng cả kỹ thuật tự động và thủ công và thường bao gồm sự kết hợp của những điều sau:

Suy luận từ sơ đồ đặt tên được sử dụng cho nội dung đã xuất bản

Liệt kê tất cả các trang và chức năng của ứng dụng. Điều này có thể được thực hiện theo cách thủ công bằng trình duyệt hoặc sử dụng công cụ thêu ứng dụng. Hầu hết các ứng dụng sử dụng một sơ đồ đặt tên dễ nhận biết và tổ chức tài nguyên thành các trang và thư mục bằng cách sử dụng các từ mô tả chức năng của chúng. Từ sơ đồ đặt tên được sử dụng cho nội dung đã xuất bản, thường có thể suy ra tên và vị trí của các trang không được tham chiếu. Ví dụ: nếu tìm thấy một trang viewuser.asp, thì cũng tìm kiếm edituser.asp, adduser.asp và deleteuser.asp. Nếu tìm thấy thư mục / app / user, thì hãy tìm cả / app / admin và / app / manager.

Các manh mối khác trong nội dung đã xuất bản

Nhiều ứng dụng web để lại manh mối trong nội dung đã xuất bản có thể dẫn đến việc phát hiện ra các trang và chức năng ẩn. Các manh mối này thường xuất hiện trong mã nguồn của các tệp HTML và JavaScript. Mã nguồn của tất cả nội dung đã xuất bản nên được xem xét thủ công để xác định manh mối về các trang và chức năng khác. Ví dụ:

Nhận xét của lập trình viên và phần được bình luận của mã nguồn có thể đề cập đến nội dung ẩn:

<!-- <A HREF="uploadfile.jsp">Upload a document to the server</A> -->
<!-- Link removed while bugs in uploadfile.jsp are fixed          -->

JavaScript có thể chứa các liên kết trang chỉ được hiển thị trong GUI của người dùng trong một số trường hợp nhất định:

var adminUser=false;
if (adminUser) menu.add (new menuItem ("Maintain users", "/admin/useradmin.jsp"));

Các trang HTML có thể chứa các MẪU đã bị ẩn bằng cách tắt phần tử SUBMIT:

<form action="forgotPassword.jsp" method="post">
    <input type="hidden" name="userID" value="123">
    <!-- <input type="submit" value="Forgot Password"> -->
</form>

Một nguồn manh mối khác về các thư mục không được tham chiếu là tệp /robots.txt được sử dụng để cung cấp hướng dẫn cho rô bốt web:

User-agent: *
Disallow: /Admin
Disallow: /uploads
Disallow: /backup
Disallow: /~jbloggs
Disallow: /include

Blind Guessing

Ở dạng đơn giản nhất, điều này liên quan đến việc chạy danh sách các tên tệp phổ biến thông qua công cụ yêu cầu nhằm cố gắng đoán các tệp và thư mục tồn tại trên máy chủ. Tập lệnh trình bao bọc netcat sau sẽ đọc danh sách từ từ stdin và thực hiện một cuộc tấn công đoán cơ bản:

#!/bin/bash

server=example.org
port=80

while read url
do
echo -ne "$url\t"
echo -e "GET /$url HTTP/1.0\nHost: $server\n" | netcat $server $port | head -1
done | tee outputfile

Tùy thuộc vào máy chủ, GET có thể được thay thế bằng HEAD để có kết quả nhanh hơn. Tệp đầu ra được chỉ định có thể được gắn vào các mã phản hồi “thú vị”. Mã phản hồi 200 (OK) thường chỉ ra rằng tài nguyên hợp lệ đã được tìm thấy (miễn là máy chủ không phân phối “không tìm thấy” tùy chỉnh

trang sử dụng mã 200). Nhưng cũng chú ý đến 301 (Đã di chuyển), 302 (Đã tìm thấy), 401 (Không được phép), 403 (Bị cấm) và 500 (Lỗi nội bộ), cũng có thể cho biết các tài nguyên hoặc thư mục đáng được điều tra thêm.

Cuộc tấn công phỏng đoán cơ bản nên được thực hiện đối với webroot và cũng đối với tất cả các thư mục đã được xác định thông qua các kỹ thuật liệt kê khác. Các cuộc tấn công đoán nâng cao / hiệu quả hơn có thể được thực hiện như sau:

Xác định các phần mở rộng tệp đang được sử dụng trong các khu vực đã biết của ứng dụng (ví dụ: jsp, aspx, html) và sử dụng danh sách từ cơ bản được thêm vào với mỗi phần mở rộng này (hoặc sử dụng danh sách dài hơn các phần mở rộng phổ biến nếu tài nguyên cho phép).

Đối với mỗi tệp được xác định thông qua các kỹ thuật liệt kê khác, hãy tạo một danh sách từ tùy chỉnh bắt nguồn từ tên tệp đó. Nhận danh sách các phần mở rộng tệp phổ biến (bao gồm ~, bak, txt, src, dev, old, inc, orig, copy, tmp, swp, v.v.) và sử dụng từng phần mở rộng trước, sau và thay vì, phần mở rộng của tên tệp thực tế.

Lưu ý: Các hoạt động sao chép tệp của Windows tạo ra các tên tệp có tiền tố là “Bản sao của” hoặc các phiên bản được bản địa hóa của chuỗi này, do đó chúng không thay đổi phần mở rộng tệp. Mặc dù các tệp “Bản sao của” thường không tiết lộ mã nguồn khi được truy cập, nhưng chúng có thể mang lại thông tin có giá trị trong trường hợp chúng gây ra lỗi khi được gọi.

Thông tin thu được thông qua lỗ hổng máy chủ và cấu hình sai

Cách rõ ràng nhất mà một máy chủ bị định cấu hình sai có thể tiết lộ các trang không được tham chiếu là thông qua danh sách thư mục. Yêu cầu tất cả các thư mục được liệt kê để xác định bất kỳ thư mục nào cung cấp danh sách thư mục.

Nhiều lỗ hổng đã được tìm thấy trong các máy chủ web riêng lẻ cho phép kẻ tấn công liệt kê nội dung không được tham chiếu, ví dụ:

  • Lỗ hổng danh sách thư mục Apache? M = D.
  • Nhiều lỗ hổng tiết lộ mã nguồn tập lệnh IIS.
  • Danh sách các lỗ hổng trong thư mục IIS WebDAV.

Sử dụng thông tin công khai

Các trang và chức năng trong các ứng dụng web sử dụng Internet không được tham chiếu từ bên trong ứng dụng có thể được tham chiếu từ các nguồn miền công cộng khác. Có nhiều nguồn tài liệu tham khảo này:

Các trang đã từng được tham chiếu vẫn có thể xuất hiện trong kho lưu trữ của các công cụ tìm kiếm trên Internet. Ví dụ: 1998results.asp có thể không còn được liên kết từ trang web của công ty, nhưng có thể vẫn còn trên máy chủ và trong cơ sở dữ liệu của công cụ tìm kiếm. Tập lệnh cũ này có thể chứa các lỗ hổng có thể được sử dụng để xâm phạm toàn bộ trang web. Trang web: Toán tử tìm kiếm của Google chỉ có thể được sử dụng để chạy truy vấn đối với miền bạn chọn, chẳng hạn như trong: site: www.example.com. Sử dụng công cụ tìm kiếm theo cách này dẫn đến một loạt các kỹ thuật mà bạn có thể thấy hữu ích và được mô tả trong phần Google Hacking của Hướng dẫn này. Kiểm tra nó để trau dồi kỹ năng kiểm tra của bạn thông qua Google. Các tệp sao lưu không có khả năng được tham chiếu bởi bất kỳ tệp nào khác và do đó có thể chưa được Google lập chỉ mục, nhưng nếu chúng nằm trong các thư mục có thể duyệt, công cụ tìm kiếm có thể biết về chúng.

Ngoài ra, Google và Yahoo lưu giữ các phiên bản được lưu trong bộ nhớ cache của các trang được tìm thấy bởi rô bốt của họ. Ngay cả khi 1998results.asp đã bị xóa khỏi máy chủ đích, một phiên bản đầu ra của nó vẫn có thể được các công cụ tìm kiếm này lưu trữ. Phiên bản được lưu trong bộ nhớ cache có thể chứa các tham chiếu đến hoặc manh mối về nội dung ẩn bổ sung vẫn còn trên máy chủ.

Nội dung không được tham chiếu từ bên trong ứng dụng đích có thể được liên kết với các trang web của bên thứ ba. Ví dụ: một ứng dụng xử lý các khoản thanh toán trực tuyến thay mặt cho các thương nhân bên thứ ba có thể chứa nhiều chức năng khác nhau mà (thông thường) chỉ có thể được tìm thấy bằng cách nhấp vào các liên kết trong các trang web của khách hàng.

Bỏ qua bộ lọc tên tệp

Vì các bộ lọc danh sách từ chối dựa trên các cụm từ thông dụng, nên đôi khi người ta có thể tận dụng các tính năng mở rộng tên tệp hệ điều hành ít người biết đến hoạt động theo cách mà nhà phát triển không ngờ tới. Người kiểm tra đôi khi có thể khai thác sự khác biệt về cách mà tên tệp được phân tích cú pháp bởi ứng dụng, máy chủ web và hệ điều hành cơ bản và đó là các quy ước về tên tệp.

Ví dụ: Windows 8.3 mở rộng tên tệp c: \\ tệp chương trình trở thành C: \\ PROGRA \ ~ 1

  • Xóa các ký tự không tương thích
  • Chuyển đổi dấu cách thành dấu gạch dưới
  • Lấy sáu ký tự đầu tiên của tên cơ sở
  • Thêm ~ <ký tự> được sử dụng để phân biệt các tệp có tên bằng cách sử dụng sáu ký tự đầu tiên giống nhau
  • Quy ước này thay đổi sau 3 lần hiển thị cname đầu tiên
  • Cắt ngắn phần mở rộng tệp thành ba ký tự
  • Viết hoa tất cả các ký tự

Gray-Box Testing

Thực hiện kiểm tra hộp xám đối với các tệp cũ và sao lưu yêu cầu kiểm tra các tệp chứa trong các thư mục thuộc tập hợp các thư mục web được cung cấp bởi (các) máy chủ web của cơ sở hạ tầng ứng dụng web. Về mặt lý thuyết, việc kiểm tra phải được thực hiện bằng tay để được kỹ lưỡng. Tuy nhiên, vì trong hầu hết các trường hợp, các bản sao của tệp hoặc tệp sao lưu có xu hướng được tạo bằng cách sử dụng các quy ước đặt tên giống nhau, nên việc tìm kiếm có thể dễ dàng theo kịch bản. Ví dụ: các biên tập viên để lại các bản sao lưu bằng cách đặt tên thêm với phần mở rộng hoặc phần kết thúc dễ nhận biết và con người có xu hướng để lại các tệp có đuôi .old hoặc phần mở rộng có thể dự đoán tương tự. Một chiến lược tốt là lên lịch định kỳ kiểm tra công việc nền cho các tệp có phần mở rộng có khả năng xác định chúng là tệp sao chép hoặc sao lưu, đồng thời thực hiện kiểm tra thủ công trong thời gian dài hơn.

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

Để đảm bảo một chiến lược bảo vệ hiệu quả, việc kiểm tra phải được kết hợp với một chính sách bảo mật nghiêm cấm rõ ràng các hành vi nguy hiểm, chẳng hạn như:

Chỉnh sửa tệp tại chỗ trên hệ thống tệp máy chủ web hoặc máy chủ ứng dụng. Đây là một thói quen đặc biệt xấu, vì nó có khả năng tạo ra các tệp sao lưu hoặc tạm thời bởi các trình chỉnh sửa. Thật ngạc nhiên khi thấy điều này được thực hiện thường xuyên như thế nào, ngay cả trong các tổ chức lớn. Nếu bạn thực sự cần chỉnh sửa tệp trên hệ thống sản xuất, hãy đảm bảo rằng bạn không bỏ sót bất kỳ điều gì không có ý định rõ ràng và coi như bạn đang tự chịu rủi ro.

Kiểm tra cẩn thận bất kỳ hoạt động nào khác được thực hiện trên các hệ thống tệp do máy chủ web hiển thị, chẳng hạn như các hoạt động quản trị tại chỗ. Ví dụ: nếu bạn thỉnh thoảng cần chụp nhanh một vài thư mục (điều bạn không nên làm trên hệ thống sản xuất), bạn có thể muốn nén chúng trước. Hãy cẩn thận để không để lại những tệp lưu trữ đó.

Các chính sách quản lý cấu hình phù hợp sẽ giúp ngăn chặn các tệp lỗi thời và không được tham chiếu.

Các ứng dụng phải được thiết kế để không tạo (hoặc dựa vào) các tệp được lưu trữ trong cây thư mục web do máy chủ web cung cấp. Các tệp dữ liệu, tệp nhật ký, tệp cấu hình, v.v. nên được lưu trữ trong các thư mục mà máy chủ web không thể truy cập, để chống lại khả năng tiết lộ thông tin (chưa kể đến việc sửa đổi dữ liệu nếu quyền của thư mục web cho phép ghi).

Ảnh chụp nhanh hệ thống tệp sẽ không thể truy cập được qua web nếu tài liệu gốc nằm trên hệ thống tệp sử dụng công nghệ này. Định cấu hình máy chủ web của bạn để từ chối quyền truy cập vào các thư mục như vậy, ví dụ: trong Apache, một chỉ thị vị trí sẽ được sử dụng:

<Location ~ ".snapshot">
    Order deny,allow
    Deny from all
</Location>

Công cụ

Các công cụ đánh giá lỗ hổng bảo mật có xu hướng bao gồm kiểm tra để phát hiện các thư mục web có tên chuẩn (chẳng hạn như “quản trị”, “kiểm tra”, “sao lưu”, v.v.) và báo cáo bất kỳ thư mục web nào cho phép lập chỉ mục. Nếu bạn không thể nhận được bất kỳ danh sách thư mục nào, bạn nên cố gắng kiểm tra các tiện ích dự phòng có khả năng xảy ra. Kiểm tra ví dụ

Web spider tools

Một số trong số chúng cũng được bao gồm trong các bản phân phối Linux tiêu chuẩn. Các công cụ phát triển web thường bao gồm các phương tiện để xác định các liên kết bị hỏng và các tệp không được tham chiếu.

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