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

发布于:2025-09-06 ⋅ 阅读:(20) ⋅ 点赞:(0)

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

    💥👉点赞❤️ 关注🔔 收藏⭐️ 评论💬💥
    更多文章戳👉
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 目标URL http://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/v1 v1 图书管理API 中等
/users/v1 v1 用户管理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 - 综合攻击面映射工具


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

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


网站公告

今日签到

点亮在社区的每一天
去签到