burp靶场-API testing

发布时间:2024年01月15日

burp靶场

1.服务端主题

1.API测试

https://portswigger.net/web-security/api-testing#top

1.1 api探测api路径,数据格式,交互方法,参数是否必选:

## 使用Burp Scanner来爬取 API
https://portswigger.net/burp/vulnerability-scanner
GET /api/books HTTP/1.1
Host: example.com
联想:/api/books/mystery

## 插件:查找js中的api:
https://portswigger.net/bappstore/0e61c786db0c4ac787a08c4516d52ccf
## 重点注意:
API 处理的输入数据,包括必选参数和可选参数。
API 接受的请求类型,包括支持的 HTTP 方法和媒体格式。
速率限制和身份验证机制

## 查找公开的api文档说明:它以 JSON 或 XML 等结构化格式编写
## OpenAPI 规范可以从文件或 URL 中解析。该扩展还可以使用目标 ->
## 站点地图上下文菜单中的发送到OpenAPI 解析器选项直接从 URL 获取 OpenAPI 规范
## 插件:OpenAPI Parser
https://portswigger.net/bappstore/6bf7574b632847faaaa4eb5e42f1757c

## 使用burp Scanner来爬取API:
/api
/swagger/index.html
/openapi.json
寻找基本路径:
/api/swagger/v1
/api/swagger
/api

##
GET /api/tasks- 检索任务列表。
POST /api/tasks- 创建一个新任务。
DELETE /api/tasks/1- 删除任务。

## 识别数据包类型
## 插件:尝试转换数据类型:使用插件修改
https://portswigger.net/bappstore/db57ecbe2cb7446292a94aa6181c9278
触发泄露有用信息的错误。
绕过有缺陷的防御。
利用处理逻辑的差异。例如,API 在处理 JSON 数据时可能是安全的,但在处理 XML 时容易受到注入攻击。

## fuzz的参数需要结合系统业务来进行收集整理:
PUT /api/user/update
/update的列表来模糊路径的位置 。 deleteadd


1.2 寻找隐藏的参数:

## 挖掘参数:
插件:Param Miner
https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943

## 目录发现:
https://portswigger.net/burp/documentation/desktop/tools/engagement-tools/content-discovery

在这里插入图片描述

实操实验1:发现api

https://portswigger.net/web-security/api-testing/lab-exploiting-api-endpoint-using-documentation
Lab: Exploiting an API endpoint using documentation
要求:
要解决该实验室问题,请找到公开的 API 文档并删除carlos. 您可以使用以下凭据登录您自己的帐户:wiener:peter。

靶场测试前先登陆账户:
burp官网账户密码:
2105709486@qq.com
.p$'|7WD6[Qb8^7%zTc&k3Y/R!y=JD.+

https://0a6c000d04452323804fbde700e50064.web-security-academy.net/
使用以下凭据登录您自己的帐户:wiener:peter

Your username is: wiener

Your email is: wiener@normal-user.net

登陆站点后,浏览功能点,点击功能,到处浏览,查看功能:my account站点,填写测试数据,burp 代理查看流量历史:
在这里插入图片描述
发现可疑数据包:
在这里插入图片描述
将数据包发送到repeapter:

## 尝试修改请求方法:PATCH GET POST...
## 尝试测试path的payload:
/api/user/wiener
/api/user/
/api/
/api


payload发现泄露的api信息:
在这里插入图片描述
测试泄露的api:
使用泄露的api进行用户删除操作,造成危害:
DELETE /api/user/carlos
在这里插入图片描述

实验2:找到未使用的接口:

Lab: Finding and exploiting an unused API endpoint
实验要求:
要解决该实验室问题,请利用隐藏的 API 端点购买Lightweight l33t Leather Jacket。您可以使用以下凭据登录您自己的帐户: wiener:peter
站点逐个点击功能,burp查看流量包:
点击对应商品:将GET /api/products/1/price查询商品数据流量包发送到repeater:

在这里插入图片描述
在这里插入图片描述
请求包添加请求头:Content-Type: application/json
在这里插入图片描述
根据上面的测试,请求需要提供json数据格式:
在这里插入图片描述
提供参数:将价格修改为1或者0,发现修改成功:
在这里插入图片描述
修改价格为0,将商品添加到购物车,支付,发现实现了0元购:
在这里插入图片描述

实验3:利用批量分配漏洞

实验室:利用批量分配漏洞
Lab: Exploiting a mass assignment vulnerability
通过前端web api接口给后端的实例对象的属性赋值,从而修改了对象属性:
登陆站点:wiener:peter,选择商品——》添加到购物车——》产生订单——》支付——》发现信用额度不够
burp查看数据包,GET与POST的数据包,将两个包发送到repeater,对比参数:发现隐藏的请求参数:
“chosen_discount”:{“percentage”:0}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
再次刷新购物车订单,发现支付费用为0:
在这里插入图片描述

实验4:服务端参数污染

实验室:利用查询字符串中的服务器端参数污染
Lab: Exploiting server-side parameter pollution in a query string
目的:重置administrator,administrator登陆并删除用户carlos
浏览站点,使用忘记密码功能进行密码重置,输入administrator,使用burp 代理历史查看数据包,查看到忘记密码的数据包,查看739,740,741三个与忘记密码操作相关的数据包:
在这里插入图片描述
对username参数进行测试:尝试参数值:administrator,adminstratorx(一个大概率不存在的参数),查看响应包:
Invalid username,这说明了administrator用户名存在,administratorx用户名不存在,可以用来枚举,但是这里的目的不是枚举用户名。
在这里插入图片描述
构造其他参数进行测试,测试服务是否接受其他参数,如添加【&需要使用url编码】:&x=y,username=administrator%26x=y
从响应结果看出服务大概率是接受多个参数,但是参数x是错误不支持的。

在这里插入图片描述
测试:username=administrator#【#号使用url编码】,username=administrator%23
使用#截断参数测试,发现了参数:Fileld
在这里插入图片描述
测试:&field=x#【&与#需要url编码】,username=administrator%26field=x%23
这个payload指定一个fileld参数的值
在这里插入图片描述
接下来,对field参数的值进行爆破:
在“入侵者”>“有效负载”中,单击“从列表添加”。选择内置的服务器端变量名负载列表,然后开始攻击。
查看结果。请注意,带有用户名和电子邮件负载的请求都会返回响应200
在这里插入图片描述
在这里插入图片描述
爆破成功:得到一个email参数
在这里插入图片描述
在忘记密码的js中发现了,重置密码的url:/forgot-password?reset_token=${resetToken}
在这里插入图片描述
后续操作:
在“代理”>“HTTP 历史记录”中,查看/static/js/forgotPassword.jsJavaScript 文件。注意密码重置端点,它引用了 reset_token参数:

/forgot-password?reset_token=${resetToken}

在Repeater选项卡中,将参数值field从 更改email为reset_token:

username=administrator%26field=reset_token%23

发送请求。请注意,这会返回一个密码重置令牌,记下重置令牌:6ws18f561lomm78lgqn51skk22qaakjm

在 Burp 的浏览器中,在地址栏中输入密码重置端点。添加您的密码重置令牌作为参数的值 reset_token。例如:

/forgot-password?reset_token=123456789

设置新密码。

使用您的密码以用户身份登录administrator。

转到管理面板并删除carlos以解决实验。

在这里插入图片描述
/forgot-password?reset_token=6ws18f561lomm78lgqn51skk22qaakjm
浏览器打开重置密码的url:url中附加管理员administrator的参数,重置密码为123test:
在这里插入图片描述
在这里插入图片描述

与owasp对标:

https://portswigger.net/web-security/api-testing/top-10-api-vulnerabilities
https://owasp.org/www-project-web-security-testing-guide/v42/4-Web_Application_Security_Testing/

参考:

https://mp.weixin.qq.com/s/9-2C7vPHPHcTXBJWH9_tlg
https://blog.csdn.net/m0_50841600/article/details/135456276
文章来源:https://blog.csdn.net/qq_33168924/article/details/135582256
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。