Shikata Ga Nai

Private? There is no such things.

OS Command injectionの基本的な診断手順をなるべく詳細にかいてみた①

Hello there, ('ω')ノ

 

まずは、PortSwiggerへ。

 

f:id:ThisIsOne:20211005084239p:plain

 

今回のページのエンドポイントとパラメータを列挙して。

 /product?productId=1

 ⇩

 /product

 productId

 

f:id:ThisIsOne:20211005084455p:plain

 

Check stockをクリックした際のリクエストも同様に。

 /product/stock

 productId

 storeId

 

f:id:ThisIsOne:20211005084332p:plain

 

いきなりスキャンはしませんが、とりあえず、どのようなものが検出できるかを。

 

f:id:ThisIsOne:20211005105537p:plain

 

f:id:ThisIsOne:20211005105641p:plain

 

SQLインジェクションとOSコマンドインジェクションが。

 

f:id:ThisIsOne:20211005105733p:plain

 

せっかくなので、SQLインジェクションを見てみると

いつものリクエストに対して。

 

f:id:ThisIsOne:20211005105940p:plain

 

レスポンスが。

 

f:id:ThisIsOne:20211005110021p:plain

 

もう一つのリクエストにおいては。

 

f:id:ThisIsOne:20211005110041p:plain

 

なぜかレスポンスで、在庫量が表示されて。

 

f:id:ThisIsOne:20211005110103p:plain

 

次にOSコマンドインジェクションを見てみると。

わかりやすそうなリクエストを見てみると。

 

f:id:ThisIsOne:20211005112219p:plain


echoが反映されて。

 

f:id:ThisIsOne:20211005112143p:plain

 

本来だったら、もっとシンプルにスキャンを使わずにマニュアルで。

 productId=1;ping -nc 20 127.0.0.1;&storeId=3

 

f:id:ThisIsOne:20211005115908p:plain

 

上記と下記とでレスポンス時間も異なるのでpingが機能していることがわかって。

 productId=1;ping -nc 2 127.0.0.1;&storeId=3

 

f:id:ThisIsOne:20211005112703p:plain

 

もし、ping先が具体的にほしい場合だとコラボレータを使って。

 

f:id:ThisIsOne:20211005113121p:plain

 

ping先にコラボレータサーバを指定すると。

 

f:id:ThisIsOne:20211005113236p:plain

 

コラボレータサーバは、下記のドメインのタイプAのDNS lookupを受信して。

 oia9a4eytdmvms5bz2xbv9m29tfk39.burpcollaborator.net

 

lookupは、2021-Oct-05 02:32:25 UTCにIPアドレス:3.248.180.44から受信されて。

 

f:id:ThisIsOne:20211005114401p:plain

 

その他、ペイロードリストをつかったりと。

 

f:id:ThisIsOne:20211005115735p:plain

 

下記のようにペイロードを挿入して。

 

f:id:ThisIsOne:20211005115625p:plain

 

PortSwiggerのSolutionのペイロードだったら、一つ目のパラメータで試して。

 

f:id:ThisIsOne:20211005122326p:plain

 

ダメだったら、もう一つのパラメータで試したりと。

 

f:id:ThisIsOne:20211005122203p:plain


ちなみにログを見るとRefererにもペイロードを挿入していることが確認できて。

 

f:id:ThisIsOne:20211005105446p:plain

 

Best regards, (^^ゞ