当前位置: 首页 > java >正文

3-8〔OSCP ◈ 研记〕❘ WEB应用攻击▸REST API枚举

       郑重声明: 本文所有安全知识与技术,仅用于探讨、研究及学习,严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任,本人不承担任何责任。 如需转载,请注明出处且不得用于商业盈利。 

    💥👉点赞❤️ 关注🔔 收藏⭐️ 评论💬💥
    更多文章戳👉
Whoami!-CSDN博客🚀

​​​​


𖤐 嘿,经过前面的预热,我们正式打开这扇门,来吧 !  

𖤐 𝓗𝓮𝔂, 𝓪𝓯𝓽𝓮𝓻 𝔀𝓪𝓻𝓶-𝓾𝓹,𝔀𝓮'𝓻𝓮 𝓷𝓸𝔀 𝓸𝓯𝓯𝓲𝓬𝓲𝓪𝓵𝓵𝔂 𝓸𝓹𝓮𝓷𝓲𝓷𝓰 𝓽𝓱𝓲𝓼 𝓭𝓸𝓸𝓻,𝓒𝓸𝓶𝓮 𝓸𝓷 ! 


→ 信息收集▸WEB应用攻击▸REST API枚举-----我们在这儿~ 🔥🔥🔥

→ 漏洞检测

→ 初始立足点

→ 权限提升 

→ 横向移动

→ 报告/分析

→ 教训/修复  


目录

1.使用Gobuster工具枚举REST API

1.1 原理与思路

1.2 使用Gobuster工具枚举API

1.2.1 目标识别

1.2.2 模式文件创建

1.2.3 执行Gobuster扫描

1.2.4 扫描结果分析

1.2.5 利用已发现API的URL查看API内容

1.2.6 深度递归发现

1.2.7 继续查看API内容

1.2.8 防御建议及其他

💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬


1.使用Gobuster工具枚举REST API

黑盒渗透测试中,API枚举是发现潜在攻击面的关键步骤。使用Gobuster工具结合字典暴力破解可以有效地发现隐藏的API端点,为进一步的安全测试提供基础。

Gobuster是一款用Go语言编写的目录/文件暴力破解工具,适合Web内容发现和API端点枚举。

1.1 原理与思路

  • 初始暴力枚举

    使用 Gobuster 工具,并结合专用字典,对目标API的目录和路径进行暴力猜解,以发现潜在的初始接口。

  • 递归深度探测

    在发现初步接口后,分析其返回数据,从中提取出有价值的字段(如账户名),并将这些字段作为新的子路径,继续进行递归探测,逐步深入API结构。

  • 敏感信息识别与推断

    在探测过程中,成功识别出包含敏感信息的password等路径。据此,进一步推断出可能的有效用户名等关键身份信息。

  • 路径拼接与端点猜测

    将获取到的用户名等信息,重新拼接回已知的API路径中,系统地尝试推测各类功能端点(如登录、注册、修改密码等)及其对应的HTTP请求方法(如 POSTPUT)。

  • 权限提升与横向移动

    最终,通过调用注册接口巧妙构造请求报文,成功创建一个新用户,并通过该途径将其权限提升至管理员,从而实现横向移动攻击,获得更高级别的系统访问权。


1.2 使用Gobuster工具枚举API

1.2.1 目标识别

目标地址: http://192.168.50.16:5002
端口: 5002
服务: API网关

API网关:通常是一个负责管理和路由API请求的中介,它会把请求转发到合适的服务。

API样式:API名称通常对所使用的功能或数据进行描述,路径通常后跟随版本号,形成如下模式:/api_name/v1


1.2.2 模式文件创建

创建模式文件api_pattern.txt

{GOBUSTER}/v1
{GOBUSTER}/v2

🎯为什么要创建这个模式文件?我们用几个步骤拆解一下:

  • 设定目标与规则

    • 目标网址:我们要扫描的网站是 http://192.168.50.16:5002

    • 扫描规则:我们猜测这个网站的API(接口)路径有一种常见的命名方式,即 [名字]/[版本号]

    • 简化测试:为了不让测试太复杂,我们只猜两个最常见的版本号:v1 和 v2

  • 准备“猜谜字典”

    • 我们使用一个叫做 big.txt 的文件作为我们的“猜谜字典”,这个文件里包含了成千上万个常见的英文单词和路径名称,比如 adminrootuserloginapi 等等。

  • 工具如何工作(核心)

    • 我们使用一个叫 Gobuster 的工具,它非常聪明。

    • 我们告诉它一个模式(Pattern){ }/v1 和 { }/v2

    • 这里的 { } 就像一个空白填空框。Gobuster 会把我们“字典”(big.txt)里的每一个词,依次拿到这个填空框里试一试。

  • 实际猜测示例

    • 当字典里轮到 root 这个词时,Gobuster 就会组合出两个完整的网址:

      • http://192.168.50.16:5002/root/v1

      • http://192.168.50.16:5002/root/v2

    • 然后工具会自动去访问这两个网址,看看它们是否存在。

    • 接着,字典里轮到 api 这个词,工具又会去尝试:

      • http://192.168.50.16:5002/api/v1

      • http://192.168.50.16:5002/api/v2

    • 就像这样,工具会不知疲倦地把字典里的每一个词都这样试一遍,直到找出所有存在的路径。


1.2.3 执行Gobuster扫描

kali@kali:~$ gobuster dir -u http://192.168.50.16:5002 \
-w /usr/share/wordlists/dirb/big.txt \
-p api_pattern.txt \
-x php,txt,json \
-t 10
参数说明示例值
-u目标URLhttp://192.168.50.16:5002
-w字典文件/usr/share/wordlists/dirb/big.txt
-p模式文件api_pattern.txt
-x文件扩展名php,txt,json
-t线程数10

1.2.4 扫描结果分析

===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.50.16:5001
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/big.txt
[+] Patterns: pattern (1 entries)
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.1.0
[+] Timeout: 10s
===============================================================
2022/04/06 04:19:46 Starting gobuster in directory enumeration mode
===============================================================
/books/v1 (Status: 200) [Size: 235]
/console (Status: 200) [Size: 1985]
/ui (Status: 308) [Size: 265] [--> http://192.168.50.16:5001/ui/]
/users/v1 (Status: 200) [Size: 241]

发现的API端点

端点版本潜在功能风险等级
/books/v1v1图书管理API中等
/users/v1v1用户管理API
/ui-API文档界面信息

关键发现

  • 📚 /books/v1:可能包含图书数据操作功能

  • 👥 /users/v1:可能包含用户认证和管理功能

  • 📖 /ui:访问发现的/ui路径往往能获得完整的API文档(重要信息源)


1.2.5 利用已发现API的URL查看API内容

如下图,使用curl检查/users/v1的API内容,发现三个用户账户(name1、name2、admin),其中包括一个似乎值得进一步调查的管理员账户

kali@kali:~$ curl -i http://192.168.50.16:5002/users/v1
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 241
Server: Werkzeug/1.0.1 Python/3.7.13
Date: Wed, 06 Apr 2022 09:27:50 GMT
{"users": [{"email": "mail1@mail.com","username": "name1"},{"email": "mail2@mail.com","username": "name2"},{"email": "admin@mail.com","username": "admin"}]
}

1.2.6 深度递归发现

针对疑似管理员的API:users/v1/admin/,继续深入枚举:

kali@kali:~$ gobuster dir -u http://192.168.50.16:5002/users/v1/admin/ -w 
/usr/share/wordlists/dirb/small.txt
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.50.16:5001/users/v1/admin/
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/small.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.1.0
[+] Timeout: 10s
===============================================================
2022/04/06 06:40:12 Starting gobuster in directory enumeration mode
===============================================================
/email (Status: 405) [Size: 142]
/password (Status: 405) [Size: 142]
===============================================================
2022/04/06 06:40:35 Finished
===============================================================

通过递归枚举发现了/password的API路径。


1.2.7 继续查看API内容

使用curl继续查看users/v1/admin/password的api内容。显示其源码内容如下:

kali@kali:~$ curl -i http://192.168.50.16:5002/users/v1/admin/password
HTTP/1.0 405 METHOD NOT ALLOWED
Content-Type: application/problem+json
Content-Length: 142
Server: Werkzeug/1.0.1 Python/3.7.13
Date: Wed, 06 Apr 2022 10:58:51 GMT
{"detail": "The method is not allowed for the requested URL.","status": 405,"title": "Method Not Allowed",     # 这意味着请求的URL存在,但我们的HTTP方法不受支持。"type": "about:blank"
}

以上的过程是不断循环反复的,枚举越多,发现的敏感信息越多,对于后续利用有很大帮助。这里只是说个思路。


1.2.8 防御建议及其他

  • 🔒 访问控制:限制对API文档的公开访问

  • 📊 监控告警:监控暴力枚举行为

  • 🛡️ 速率限制:实施API调用频率限制

  • 🚫 错误信息:避免详细的错误信息泄露

  • 🔍 安全审计:定期审查API端点安全性

其他有用的字典

# 专用API字典
/usr/share/wordlists/seclists/Discovery/Web-Content/api/
/usr/share/wordlists/seclists/Discovery/Web-Content/common-api-endpoints.txt# 自定义API字典
api/
v1/
v2/
users/
auth/
login/

替代工具推荐

  • FFUF - 更快的Web模糊测试工具

  • Dirsearch - 高级目录扫描工具

  • Amass - 综合攻击面映射工具


💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬

您的支持是我创作最大的动力!

http://www.xdnf.cn/news/20272.html

相关文章:

  • Java IO 流深度剖析:原理、家族体系与实战应用
  • 【问题解决】mac笔记本遇到鼠标无法点击键盘可响应处理办法?(Command+Option+P+R)
  • 监管罚单背后,金融机构合规管理迎大考!智慧赋能或是破局关键
  • 数据库基础操作命令总结
  • 基于单片机智能家居环境检测系统/室内环境检测设计
  • 【Python - 类库 - requests】(01)使用“requests“库的基本介绍...
  • 行业了解07:政府/公共部门
  • TVS防护静电二极管选型需要注意哪些参数?-ASIM阿赛姆
  • 【数据结构、java学习】数组(Array)
  • 纯血鸿蒙开发入门:1.开发准备
  • 【NotePad++设置自定义宏】
  • 看显卡低负载状态分析运行情况
  • Kaggle - LLM Science Exam 大模型做科学选择题
  • 上下文工程:AI应用成功的关键架构与实践指南
  • maven编译问题
  • 【智慧城市】2025年中国地质大学(武汉)暑期实训优秀作品(3):基于Mapbox GL JS 构建的城市三维可视化系统
  • 基于单片机雏鸡家禽孵化系统/孵化环境监测设计
  • 【Go】P2 Golang 常量与变量
  • 从零构建企业级LLMOps平台:LMForge——支持多模型、可视化编排、知识库与安全审核的全栈解决方案
  • 亲历记:我如何用新系统终结了财务部的开票混乱
  • 全球汽车氮化镓技术市场规模将于2031年增长至180.5亿美元,2025-2031年复合增长率达94.3%,由Infineon和Navitas驱动
  • 中国生成式引擎优化(GEO)市场分析:领先企业格局与未来趋势分析
  • 安全沙箱配置针对海外vps容器隔离的验证方法
  • CAD:绘图功能
  • eda(电子设计自动化)行业的顶级技术机密,布局布线优化的遗传算法实现,以及国内为什么做不成商业EDA
  • RWA点亮新能源的数字未来
  • DJANGO后端服务启动报错及解决
  • 如何在没有权限的服务器上下载NCCL
  • Photoshop图层
  • 【分享】AgileTC测试用例管理平台使用分享