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请求方法(如
POST
,PUT
)。 -
权限提升与横向移动
最终,通过调用注册接口并巧妙构造请求报文,成功创建一个新用户,并通过该途径将其权限提升至管理员,从而实现横向移动攻击,获得更高级别的系统访问权。
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
的文件作为我们的“猜谜字典”,这个文件里包含了成千上万个常见的英文单词和路径名称,比如admin
,root
,user
,login
,api
等等。工具如何工作(核心)
我们使用一个叫 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 - 综合攻击面映射工具
💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬
您的支持是我创作最大的动力!