Shikata Ga Nai

Private? There is no such things.

Using PHAR deserialization to deploy a custom gadget chainをやってみた

Hello there, ('ω')ノ

 

PHARデシリアライズを使用してカスタムガジェットチェーンをデプロイするを。

 

このラボでは、PHARの逆シリアル化を高度なハッキング手法と組み合わせると。

カスタムガジェットチェーンを介してリモートでコードが実行されて。

 

まずは、ログインして。

 

f:id:ThisIsOne:20210528133832p:plain

 

JPGをアバターとしてアップロードして。

 

f:id:ThisIsOne:20210528134015p:plain

 

インターセプトしてリクエストを見ていくと下記のリクエストが。

 

f:id:ThisIsOne:20210528134403p:plain

 

履歴を見ると上記のリクエストは表示されていないものの。

下記のレスポンスから呼ばれているようで。

 

f:id:ThisIsOne:20210528134711p:plain

 

Imagesにチェックを入れてリクエストが表示されるようにしておいて。

 

f:id:ThisIsOne:20210528135114p:plain

 

f:id:ThisIsOne:20210528154026p:plain

 

cgi-binのリクエストをSendすると。

レスポンスにCustomTemplate.php〜ファイルを見つけることができて。

 

f:id:ThisIsOne:20210528135447p:plain

 

バックアップ拡張子を使用してファイルをリクエストすると。

file_exists()が、lockFilePath属性で呼び出されていて。

 

f:id:ThisIsOne:20210528135647p:plain

 

Blog.phpでは、Twigテンプレートエンジンを使用していることがわかって。

これで、デシリアライズを使用してSSTIペイロードを渡すことができて。

 

f:id:ThisIsOne:20210528155713p:plain

 

下記からTwigでリモートコード実行するためのSSTIペイロードをダウンロードして。

これは、ファイルを削除するPHPスクリプトを含んだphar-jpg-polyglotで。

https://github.com/PortSwigger/serialization-examples/blob/master/php/phar-jpg-polyglot.jpg

 

f:id:ThisIsOne:20210528133629p:plain

 

ファイルをアップロードして。

 

f:id:ThisIsOne:20210528140259p:plain

 

アバターをロードするリクエストをリピータへ。

 

f:id:ThisIsOne:20210528160752p:plain

 

phar://ストリームでアップロードした悪意のあるアバターを。

逆シリアル化するようにリクエストをSendすると。

 

f:id:ThisIsOne:20210528140404p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210528140341p:plain

 

Best regards, (^^ゞ