bandit Part3
どうも皆さん、こんにちは。お久しぶりです。今回は前回に引き続きbanditの攻略をやっていこうと思います。今回はLevel13からです。
Level13
問題文曰く、「今までパスワード使ってログインしてたけど、秘密鍵を使ってサーバーにログインしてみてね。そしたら/etc/bandit_pass/bandit14にあるパスワードがみられるよ」だそうです。ではやってみましょう。
まず、前回手にいれたパスワードでbandit13でログイン。ホームディレクトリにはsshkey.privateというファイルがあります。これが秘密鍵です。秘密鍵と公開鍵を用いたssh認証の仕組みについてはこちらのサイトを参考にさせていただきました。ありがとうございました。
https://www.adminweb.jp/web-service/ssh/index4.html
簡単に説明します。クライアント側で二つのカギを作ります。片方のカギで暗号化したものは、もう片方のカギでしか複合できません。片方を秘密鍵といってクライアントが保存、もう片方を公開鍵といい、接続先のサーバーにおいておきます。これらを使って認証を行うには以下の3ステップを行います。
- サーバーが適当な乱数を公開鍵で暗号化し、クライアントに送る。また、この時、データをハッシュして取っておく。
- クライアントは秘密鍵でデータを取り出し、それをハッシュしてサーバーに送り返す。
- クライアントから送られてきたハッシュ値と自分で作ったハッシュ値が一致していれば承認成功。
といった手順になります。
では実際に秘密鍵を使ってログインしてみましょう。
ssh -i sshkey.private bandit14@localhost
これでログインできます。あとは/etc/bandit_pass/bandit14をcatしてみればパスワードゲットです。
Level14
次へのパスワードはローカルホストの30000番ポートにbandit14のパスワードを入力してやると得られるそうです。ここで使えるコマンドはncコマンドです。これはNetCatの略でTCPやUDPのパケットを読み書きできるコマンドラインアプリケーションです。bandit14でログインした後、以下のコマンドを実行します。
nc localhost 30000
(bandit14のパスワードを入力)
これはローカルホストの30000番ポートと通信します、という意味のコマンドです。通信が開始したのち、パスワードを入力してやると、次のパスワードが現れるはずです。
Level15
今度はssl暗号化通信を使ってローカルホストの30001番ポートと通信しましょう。これにはopensslというコマンドを使います。ssl暗号化通信についてはこちらのサイトが非常に分かりやすかったです。ありがとうございました。簡単に言えば、さっきの公開鍵と秘密鍵を使って安全に通信を行う仕組みです。
openssl
s_client -host localhost -port 30001
(Level15のパスワード)
これでパスワードゲットです。
まとめ
ネットワーク難しいよ
おまけ
更新遅れます。次回は年末になると思います。