something about DVWA - XSS(Reflected)

DVWA

DVWA => 备份地址

XSS(Reflected)

XSS是跨站脚本攻击Cross-site scriptingReflected类型是 反射型XSS攻击,此类型的XSS未保存在目标服务器上,是攻击者恶意插入在html中的内容。

Low

  • 手动测试

    在URL中构造恶意参数。

    1
    http://train.com/dvwa/vulnerabilities/xss_r/?name=<script>alert('bad');</script>
  • 源码分析

    • 将页面输入的内容直接输入至拼接至页面渲染

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

Medium

  • 手动测试

    • 双写<script>

      构造双写<script><script<script>>;

      1
      http://train.com/dvwa/vulnerabilities/xss_r/?name=<script<script>>alert('bad');</script>
  • 源码分析

    • 过滤<scrip>标签

      1
      2
      // Get input
      $name = str_replace( '<script>', '', $_GET[ 'name' ] );

High

  • 手动测试

    • 采用<img/>标签

      利用<img/>标签的onerror机制,构造恶意URL。

      1
      http://train.com/dvwa/vulnerabilities/xss_r/?name=<img src="nothing" onerror="alert('bad');"/>
  • 源码分析

    • 以正则表达式的方式过滤<script>标签
    1
    2
    // Get input
    $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );

Impossible

  • 源码分析

    • 将参数转义为html符号实体

      使用htmlspecialchars()函数将如<等特殊符号转义为&lt;html实体。

      1
      2
      // Get input
      $name = htmlspecialchars( $_GET[ 'name' ] );
作者

cSan

发布于

2021-12-05

更新于

2021-12-05

许可协议