Shikata Ga Nai

Private? There is no such things.

Server-side template injection with information disclosure via user-supplied objectsをやってみた

Hello there, ('ω')ノ

 

ユーザ提供のオブジェクトを介した情報開示を伴う。

サーバ側のテンプレートインジェクションを。

 

このラボは、オブジェクトがテンプレートに渡される方法が原因で。

サーバ側のテンプレートインジェクションに対して脆弱で。

 

まずは、ログインして。

 

f:id:ThisIsOne:20210505175804p:plain

 

編集ページを確認すると、下記のように変換されている箇所が確認できて。

 {{product.price}}

 ⇩

 $99.87

 

f:id:ThisIsOne:20210506074936p:plain

 

適当に下記を挿入しれプレビューしてみると。

 {{ Hello <%[%'"}}

 

f:id:ThisIsOne:20210506074054p:plain

 

エラーメッセージからDjangoフレームワークが使用されているようで。

 

f:id:ThisIsOne:20210506074128p:plain

 

下記のサイトでDjangoのドキュメントを調べて。

debugタグでデバッグ情報を表示できるようで。

 https://docs.djangoproject.com/en/3.2/ref/settings/

 

f:id:ThisIsOne:20210505180614p:plain

 

下記のステートメントを入力して、デバッグを呼び出すと。

 {% debug %}

 

f:id:ThisIsOne:20210505180817p:plain

 

アクセスできるオブジェクトとプロパティのリストが含まれていて。

 

f:id:ThisIsOne:20210505180933p:plain

 

下記サイトで、Djangoドキュメントの設定オブジェクトを調べると。

SECRET_KEYプロパティが含まれていて。

 

f:id:ThisIsOne:20210505181541p:plain


 https://docs.djangoproject.com/en/3.2/ref/settings/

 

f:id:ThisIsOne:20210505181319p:plain

 

下記を入力して、保存するとSECRET_KEYが表示されて。

 ydcdl5zq9g7526vec0g6pioxnqxu043q

f:id:ThisIsOne:20210505181031p:plain

 

SECRET_KEYを入力すると。

 

f:id:ThisIsOne:20210505181649p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210505181714p:plain

 

Best regards, (^^ゞ