Response Splitting, Web Cache Poison Attacks là một kỹ thuật hack web mới. Với khẩu hiệu "Divide and Conquer" - "Chia ra rồi chinh phục" Sẽ có nhiều điều thú vị từ kỹ thuật này laugh.gif . Sau đây chúng ta sẽ cùng tìm hiểu nó nhé. Nội Dung Bài viết - Tổng Quát - Giới thiệu - Khái niệm các trường hợp cho Web Cache Poisoning - Kỹ thuật căn bản về HTTP Response Splitting + Những điều đáng quan tâm khi thực hành - Web Server Mount Point + Quyết định response (giá trị trả về) ở đâu - Cache Poisoning + Apache 2.0 + NetCache 5.2 + Squid 2.4 + Cross Site Scripting IIS6 SP1 - Những kiểu tấn công Cache Poisoning gián tiếp khác. - Lý thuyết Cross User Attack - Hjacking a page với thông tin user - Thực hành bên ngoài - HTTP Response Splitting trong Wild - Nghiên cứu - Kết luận - Relate Work (Những vấn đề liên quan) - Tham chiếu = [ Tổng quát ] = HTTP Response Splitting là một kỹ thuật hack web mới bao gồm nhiều thể loại tấn công web như Cache Web Poisoning, Cross User Defacement, hjacking page, XSS. Kỹ thuật mới này bắt nguồn từ nhiều thể loại tấn công, phù hợp mọi hoàn cảnh, và kết quả của "application of failure" để loại ra những "illegal user input". Trong trường hợp này, user input bao gồm những "malicious và unexcepted character" Cross User defacement làm cho hacker có khả năng giả mạo một page mà được gửi đến victim (target host), ảnh hưởng 1 user tại 1 lần. Cache Web Poisoning giả mạo một cached page trong một cache server trong vô số site users. Hjacking pages với những thông tin quan trọng của user để hacker nắm quyền điều khiển và biết được thông tin user như là thông tin tài chánh, sức khoẻ, v vvv Cross Script Site như các bạn đã biết ăn cắp cookie. Đó là tất cả những kiểu tấn công mà ta gọi chung là HTTP Response Splitting. HTTP Response Splitting tương thích với mọi môi trường: Microsoft ASP, ASP.NET, IBM Web Sphere, BEA, Web Logic, Jakarta Tomcat, Macromedia COLD FUSION, Sun Microsystems, SunONE. Ngoài ra, cũng có các loại server phổ biến như là Apache, IIS Netcache = [ Giới Thiệu ] = Trong phần này, chúng ta sẽ giới thiệu về HTTP Response Splitting, gồm 3 phần + Web Server: dính lỗi HTTP Response Splitting + Target Host: chịu ảnh hưởng bởi Web Server + Attacker: Người mở đầu cuộc tấn công Tính chất của HTTP Response Splitting là tuỳ thuộc vào khả năng của hacker, ta gửi một HTTP request (send packet) tới web server, và bắt buộc nó phải response về (trả về). Web server sẽ thông dịch the request và trả về một response. Nhưng điều làm ta đáng quan tâm là nếu web server trả về 2 response thì sao? và làm sao cho nó trả về 2 response? response thứ 1 thì không quan trọng, quan trọng là response thứ 2 do ta kiểm soát và sẽ trả về những thông tin "nhạy cảm". = [ Khái niệm các trường hợp Web Cache Poisoning ] = Web cache (Bộ nhớ truy cập nhanh của web) có thể được poison (làm độc) tại 3 đối tượng: 1/Poisoning the reverse proxy Trong trường hợp này, hacker muốn deface trang web. Cuối cùng, hacker làm poison trang chủ của trang web. Mỗi client của site đều bị tác động. Đây là căn bản về deface web. Trong trường hợp này, hacker sẽ nhanh cho'ng "dọn dẹp" (để khỏi bị phát hiện). Từ khi cache server được làm chủ bởi site, hacker sẽ nắm một số thông tin quan trọng. 2/Poisoning the cache server Phishing là một kiểu tấn công như các bạn thường gọi FAKE LOGIN, chúng ta Save As một trang login thực sự, rồi chỉnh sửa lại form, edit code lại, dụ victim vào và login, thông tin login đó sẽ được gửi về theo form mặc định. (có thể là user, pass, hoặc những thông tin khác) Nói sang vấn đề khác, nếu cache server không được owned bởi attacked website (target host) Ví dụ như ta attack một American website mà nó lại poison Cache Server của British of ISP sinh ra một vấn đề trở ngại trong việc attack rất nhiều. Thật khó để biết được cache nào bị poison. Đặc trưng loại tấn công này chỉ tồn tại vài phút. 3/Poisoning the cache browser Trong trường hợp này hacker chỉ tấn công tại một user nhất định. Nhưng điều khác với XSS, poisoning cache browser phải chờ victim load it, nếu lúc tấn công, mà user không load (login) thì thất bại rồi, XSS thì bạn chỉ cần đặt link đó, và khi victim click vào, thông tin cookie sẽ gửi về hacker mặc định ở file nào đó. Điều khác biệt là poisoning cache browser hoạt động ngay cả nếu victim đã Disable JavaScript trong browser. = [ Kỹ thuật căn bản về HTTP Response Splitting ] = Tấn công HTTP Response Splitting diễn ra khi server script nhúng mã (embed) user data vào trong HTTP response header. Trường hợp thứ nhất, "redirection HTTP" là một phần trong "location HTTP response header" Trường hợp thứ hai, set cookie tên/giá trị là phần trong "set cookie HTTP response header" Ví dụ: Đây là đoạn code được viết theo ngôn ngữ JSP, nằm tại /redir_lang.jsp QUOTE <% response.sendRedirect("/by_lang.jsp?lang="+ request.getParameter("lang")); %> Giả sử cho rằng parameter sẽ là Englsh, có nghĩa là link sẽ theo như vậy by_lang.jsp?lang=English Cho rằng webserver là BEA LOGIC, ta send request đến server nào Và response (trả về) sẽ như vậy QUOTE HTTP /1.1 302 Moved Temporarily Date: Location: http://x.x.x.x/by_lang.jsp=English Server: Web Logic Content-Type: text/html Set-cookie: JSESSIONID = "một dãy số nào đó" Connection: Close <html> <head> <title>Moved 302 Temporarily</title> </head> <body> </body> </html> Bắt đầu thử attack HTTP Splitting xem Nếu ta chèn thêm đoạn này CODE %0d%0aContent- Length:%200%0d%0aHTTP%20/1.1%20200%20OK%0d%0aContent- Type:%20text/html%d%aContent-Length:%2019%d%a<html>Shazam</html> Khi ra request như vậy, thì response từ server trả về là QUOTE HTTP /1.1 302 Moved Temporarily Date: Location: http://x.x.x.x/by_lang.jsp=English Content-Length: 0 HTTP /1.1 200 OK Content-Type: text/html Content-Length: 19 <html>Shazam</html> Server: Web Logic Content-Type: text/html Set-cookie: JSESSIONID = "một dãy số nào đó" Connection: Close <html> <head> <title>Moved 302 Temporarily</title> . hợp này, hacker muốn deface trang web. Cuối cùng, hacker làm poison trang chủ của trang web. Mỗi client của site đều bị tác động. Đây là căn bản về deface web. Trong trường hợp này, hacker sẽ. cache server trong vô số site users. Hjacking pages với những thông tin quan trọng của user để hacker nắm quyền điều khiển và biết được thông tin user như là thông tin tài chánh, sức khoẻ, v. Người mở đầu cuộc tấn công Tính chất của HTTP Response Splitting là tuỳ thuộc vào khả năng của hacker, ta gửi một HTTP request (send packet) tới web server, và bắt buộc nó phải response về