0
0

More than 3 years have passed since last update.

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

Posted at

前提

目標

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

手順概要

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

内容

挙動の把握

  • ボタンを押すとPOSTリクエストが飛ぶ
  • 文字列がDBに保存され、下部に転写される

コードを確認

low

  • 入力値がそのまま格納される。
<?php
$name    = trim( $_POST[ 'txtName' ] ); 
?> 

medium

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

high

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

impossible

  • htmlspecialcharsはhtmlにとっての特殊文字をエスケープさせるので、タグの入力がエスケープされる。
<?php
$name = stripslashes( $name ); 
name = htmlspecialchars( $name ); 
?>

脆弱性を攻撃する

nameに入力するが、htmlで文字制限かかっているので、maxlengthを増やせば入力可能になる。

low

  • 防御無しのため、ストレートに攻撃する。
  • <script>alert("low")</script>
  • 見づらいがscriptが埋め込まれている(下図)

image.png

medium

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

image.png

high

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

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