当前位置:   article > 正文

DVWA 之 XSS(Reflected)反射型XSS_dvwa xss反射型

dvwa xss反射型

目录

1、级别:Low

2、级别:Medium

3、级别:High

4、级别:Impossible


 

反射型XSS攻击

        又称为非持久性跨站点脚本攻击,它是最常见的类型的XSS。漏洞产生的原因是攻击者注入的数据反映在响应中。一个典型的非持久性XSS包含一个带XSS攻击向量的链接(即每次攻击需要用户的点击) 恶意代码并没有保存在目标网站,由浏览器解析脚本。

1、级别:Low

源码: 

  1. <?php
  2. header ("X-XSS-Protection: 0");
  3. // Is there any input?
  4. if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
  5. // Feedback for end user
  6. echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
  7. }
  8. ?>

代码采用get方式传入了name参数,没有做任何的过滤与检查,存在明显的XSS漏洞

输入一个简单的语句测试一下:

<script>alert(1)</script>

 有弹窗,即测试成功,按F12查看一下网页代码

可以看到我们在输出“Hello”之后成功注入了代码,原本这个地方应该是输入数据的,但是却变成运行代码了 ,从而达到黑客想要的目的,甚至是获取信息。

尝试一下直接获取cookie

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

 

2、级别:Medium

  1. <?php
  2. header ("X-XSS-Protection: 0");
  3. // Is there any input?
  4. if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
  5. // Get input
  6. $name = str_replace( '<script>', '', $_GET[ 'name' ] );
  7. // Feedback for end user
  8. echo "<pre>Hello ${name}</pre>";
  9. }
  10. ?>

 这里对输入进行了过滤,使用str_replace函数将输入中的<script>替换为空,有多种方法可以进行绕过。

双写绕过

 <sc<script>ript>alert(123)</script>

 

 大小写绕过

<Script>alert(456)</script>

 

利用其他标签进行绕过 

(1)img(图片插入法)

<img src=1 οnerrοr=alert('xss')>

(2) iframe

 <iframe οnlοad=alert(123456)>

…… 

3、级别:High

  1. <?php
  2. header ("X-XSS-Protection: 0");
  3. // Is there any input?
  4. if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
  5. // Get input
  6. $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );
  7. // Feedback for end user
  8. echo "<pre>Hello ${name}</pre>";
  9. }
  10. ?>

preg_replace() 函数用于正则表达式的搜索和替换,这里凡是带script的都会被过滤,/i的意思是大小写通用,所以上述双写和大小写绕过都不行了,但利用其他的标签进行绕过依然可以成功。

4、级别:Impossible

  1. <?php
  2. // Is there any input?
  3. if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
  4. // Check Anti-CSRF token
  5. checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
  6. // Get input
  7. $name = htmlspecialchars( $_GET[ 'name' ] );
  8. // Feedback for end user
  9. echo "<pre>Hello ${name}</pre>";
  10. }
  11. // Generate Anti-CSRF token
  12. generateSessionToken();
  13. ?>

添加了 anti-token 防御机制,和htmlseecialchars函数来防御

htmlspecialchars()函数
htmlspecialchars函数的功能:
把预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号)成为 &
" (双引号)成为 "
' (单引号)成为 '
< (小于)成为 <
> (大于)成为 >


完美的对我们输入的内容进行过滤,避免了XSS攻击。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/335294
推荐阅读
相关标签
  

闽ICP备14008679号