DVWA下的XSS
XSS,跨站脚本攻击 (Cross Site Scripting),恶意攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入其中的恶意代码会被执行,从而达到恶意攻击用户的目的。XSS分为:反射型(Reflected)跨站脚本和存储型(Stored)跨站脚本
(1)反射型XSS:非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。
(2)存储型XSS:存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。
一XSS (Reflected)
1 Low级别
low级别没有进行任何过滤检查,存在漏洞。可以输入:<script>alert(‘haha’)</script>测试一下
2 Medium级别
str_replace:str_replace函数将输入中的<script>删除,这种防护机制是可以被轻松绕过的,有一下两种方法:
(1) 可以双写绕过:<sc<script>ript>alert(‘haha’) </script>
(2)可以大小写混合绕过:<ScRiPt>alert(‘haha’)</script>
或者<a href="http://www.baidu.com">点我一下</a>
3 High级别
High级别使用了黑名单过滤输入,preg_replace() 用于执行一个正则表达式的搜索和替换,这使得双写、大小写都不再有效(正则表达式中i表示不区分大小写)。这就使得无法使用<script>标签注入XSS代码,但是可以通过img、body等标签或者iframe等标签注入恶意代码。
<img src=x οnerrοr=alert(‘haha’)>
<iframe οnlοad=alert(‘haha’)>:
4 Impossible
htmlspecialchars() 函数把预定义的字符转换为HTML实体。
二 XSS(Stored)
1 Low级别
trim(string,charlist)函数移除字符串两侧的空白字符或其他预定义字符,mysql_real_escape_string(string,connection)
函数会对字符串中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义。stripslashes(string)函数删除字符串中的反斜杠。name是有长度限制的。
在message处输入:<script>alert(/666/)</script>,在Burpsuite中抓包,更改txtName后面的值为<script>alert(/666/)</script>。
2 Medium级别
同反射型XSS,只是在抓出的包里修改txtname的值
3 High级别
抓包改参数为<img src=1 οnerrοr=alert(/uuu/)>
4 Impossible级别
XSS,跨站脚本攻击 (Cross Site Scripting),恶意攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入其中的恶意代码会被执行,从而达到恶意攻击用户的目的。XSS分为:反射型(Reflected)跨站脚本和存储型(Stored)跨站脚本
(1)反射型XSS:非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。
(2)存储型XSS:存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。
一XSS (Reflected)
1 Low级别
low级别没有进行任何过滤检查,存在漏洞。可以输入:<script>alert(‘haha’)</script>测试一下
2 Medium级别
str_replace:str_replace函数将输入中的<script>删除,这种防护机制是可以被轻松绕过的,有一下两种方法:
(1) 可以双写绕过:<sc<script>ript>alert(‘haha’) </script>
(2)可以大小写混合绕过:<ScRiPt>alert(‘haha’)</script>
或者<a href="http://www.baidu.com">点我一下</a>
3 High级别
High级别使用了黑名单过滤输入,preg_replace() 用于执行一个正则表达式的搜索和替换,这使得双写、大小写都不再有效(正则表达式中i表示不区分大小写)。这就使得无法使用<script>标签注入XSS代码,但是可以通过img、body等标签或者iframe等标签注入恶意代码。
<img src=x οnerrοr=alert(‘haha’)>
<iframe οnlοad=alert(‘haha’)>:
4 Impossible
htmlspecialchars() 函数把预定义的字符转换为HTML实体。
二 XSS(Stored)
1 Low级别
trim(string,charlist)函数移除字符串两侧的空白字符或其他预定义字符,mysql_real_escape_string(string,connection)
函数会对字符串中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义。stripslashes(string)函数删除字符串中的反斜杠。name是有长度限制的。
在message处输入:<script>alert(/666/)</script>,在Burpsuite中抓包,更改txtName后面的值为<script>alert(/666/)</script>。
2 Medium级别
同反射型XSS,只是在抓出的包里修改txtname的值
3 High级别
抓包改参数为<img src=1 οnerrοr=alert(/uuu/)>
4 Impossible级别