III. Tấn công dựa vào kí tự rỗng IV. Ngôn ngữ trình chủ
Chương 10: Một số kĩ thuật tấn công khác
CHƯƠNG 10: MỘT SỐ KĨ THUẬT TẤN CÔNG KHÁC
I. MÃ HÓA URL (URL Encoding)
I.1. Khái niệm
Theo RFC 1738 định nghĩa URL và RFC 2369 cho URIs, những kí tự được giới hạn sử dụng trên URL hoặc URI là một tập các kí tự US-ASCII. Theo RFC 1738, 2369 những kí tự chữ số, kí tự đặc biệt như “ $-_.+!*’() ” và một số kí tự dành riêng là không bị mã hoá trên URL hay URIs. Còn những kí tự đặc biệt khác thì
được mã hóa như khoảng trắng, < > ”…Sau khi trình chủ nhận được dữ liệu này,
trình chủ sẽ tự động giải mã để thao tác như bình thường. Vậy hacker có thể lợi dụng được gì trong URL mã hóa này.
Những nhà phát triển ứng dụng có thể sẽ thiết kế ứng dụng để kiểm tra dữ liệu nhập vào của người dùng có hợp lệ hay không, những kí tự đặc biệc như < > trong thẻ script thường được dùng trong những kĩ thuật tấn công như XSS sẽ bị
lọai bỏ Vậy để hợp thức hóa nội dung dữ liệu cần nhập, hacker thay vì nhập trực
tiếp kí tự đặc biệt vào ô nhập thì họ có thể nhập những kí tự đã được mã hoá theo chuẩn RFC 1738, RFC 2369. Như vậy bằng cách đó, hacker có thể dễ dàng vượt qua kiểm soát này.
Chương 10: Một số kĩ thuật tấn công khác
Ví dụ 10.I.1-1:
http://www.myserver.c0m/script.php?mydata=%3cscript%20src=%22htt
p%3a%2f%2fwww.yourserver.com%2fbadscript.js%22%3e%3c%2fscript%3e
Biến mydata sẽ mang nội dung:
<script src="http://www.yourserver.com/badscript.js"></script>
I.2. Một số biện pháp phòng chống
• Tránh sử dụng phương thức GET vì nếu dùng GET, dữ liệu dễ dàng được thêm vào URL. Vì thế, sử dụng phương thức POST bất cứ khi nào có thể. • Trong trường hợp URL bắt buộc được sử dụng để chuyển dữ liệu lên trình
chủ, cần giới hạn kiểu dữ liệu, nên kiểm tra dữ liệu trong ứng dụng trước khi sử dụng.
• Không nên sử dụng ngôn ngữ máy khách để kiểm tra tính đúng đắn của dữ liệu.
II. KIỂU TẤN CÔNG VƯỢT ĐƯỜNG DẪN
II.1. Khái niệm
Nhiều ứng dụng sử dụng tập tin hệ thống của trình chủ trong “lớp trình bày” để hiển thị thông tin lưu trử tạm thời. Những tập tin này bao gồm những tập tin hình ảnh , tập tin HTML, hay những ứng dụng CGI. Thư mục WWW-ROOT là một thư mục gốc ảo bên trong trình chủ, nơi mà được truy xuất bởi trình duyệt. Ứng dụng lưu trữ thông tin bên trong hoặc bên ngòai WWW-ROOT.
Nếu ứng dụng không kiểm tra những kí tự đặc biệt, thường được sử dụng trong đường dẫn như “/” thì có thể rằng ứng dụng đã có một lỗ hổng cho kiểu tấn công
Chương 10: Một số kĩ thuật tấn công khác
vượt đường dẫn. Hacker có thể yêu cầu trình chủ trả về kết quả là nội dung những tập tin vật lí như /etc/password…
Tóm lại:
Kiểu tấn công này cũng dựa vào sự lỏng lẻo trong quá trình kiểm tra dữ liệu trên
URL, cookie, HTTP Header yêu cầu. Lợi dụng quyền truy xuất một tập tin của ứng dụng, nhờ đó hacker có thể xem được file lưu trữ trên hệ thống.
Ví dụ 10.II.1-1:
http://maydich.com/show.asp?result= “dangnhapthanhcong.asp”
nhưng nếu hacker thay đổi tên tập tin cần truy xuất như sau:
http://maydich.com/show.asp?result= ../etc/password
như vậy hacker có thể xem nội dung file password được lưu trữ trong hệ thống.
II.2. Một số biện pháp phòng chống
Việc phòng chống kiểu tấn công vượt đường dẫn là một thử thách lớn cho những nhà ứng dụng trong một hệ thống phân tán. Tuy nhiên, cách phòng chống tốt nhất vẫn là Ứng dụng cần kiểm tra việc truy xuất file trước khi xuất kết quả cho trình duyệt.
Chương 10: Một số kĩ thuật tấn công khác