Portswigger Labs — Portswigger Labs — Api-testing-... - FreeBuf网络安全行业门户
https://www.freebuf.com/articles/web/387931.html --参考文章
API testing | PortSwigger靶场_finding and exploiting an unused api endpoint-CSDN博客
https://blog.csdn.net/m0_50841600/article/details/135456276 --参考文章
burp靶场-API testing_exploiting server-side parameter pollution in a qu-CSDN博客
https://blog.csdn.net/qq_33168924/article/details/135582256 --参考文章
HTTP协议 9 种请求方式用途及区别(详解)-- GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT_请求方法options post-CSDN博客
https://blog.csdn.net/demo_yo/article/details/123596028 --参考文章
若要解决实验问题,请查找公开的 API 文档并删除 carlos。您可以使用以下凭据登录自己的帐户:
wiener:peter。
所需知识
若要解决此实验,需要了解:
1、什么是 API 文档。
2、API 文档如何对攻击者有用。
3、如何发现 API 文档。
登陆修改邮箱发现历史数据包存在api接口 接口中存在delete请求方法的功能 用于删除用户 输入carlos删除成功
注:以下三个接口通常为api文档
/api
/swagger/index.html
/openapi.json
若要解决实验室问题,请以administrator身份登录并删除 carlos。
所需知识
若要解决此实验,需要了解:
1、如何使用 URL 查询语法尝试更改服务器端请求。
2、如何使用错误消息来了解服务器端 API 如何处理用户输入。
发现忘记密码的功能点 拼接参数发现不支持参数提示 csrf=ubCBdKYEa2Pv4Trp64zUVroqHqjA1Hhq&username=administrator%26(&)x=y
csrf=ubCBdKYEa2Pv4Trp64zUVroqHqjA1Hhq&username=administrator%23(#) --显示field参数未被声明
csrf=ubCBdKYEa2Pv4Trp64zUVroqHqjA1Hhq&username=administrator%26(&)field=email%23(#) --拼接参数发现返回数据
翻看重置密码的页面 加载了一个forgotPassword.js 里面有一处检测存在resetToken如果存在的就打印reset_token
csrf=ubCBdKYEa2Pv4Trp64zUVroqHqjA1Hhq&username=administrator%26field=reset_token%23 --administrator的resetToken是存在的 我们需要将他显示出来 所以拼接参数reset_token
https://0a6000ac03dd61fb841f6038002600f8.web-security-academy.net/forgot-password?reset_token=6elc300bcqzzxexpx4pcwv0suf7iuhdf --进行拼接resetToken重置密码成功
3、Finding and exploiting an unused API endpoint
要解决实验问题,请利用隐藏的 API 端点购买一件轻量级 l33t 皮夹克。您可以使用以下凭据登录自己的帐户:wiener:peter。
所需知识若要解决此实验,需要了解:
1、如何使用错误消息构造有效的请求。
2、RESTful API 如何使用 HTTP 方法。
3、更改 HTTP 方法如何显示其他功能。
在把夹克加入购物车的数据包当中发现接口 改变POST发包尝试
回显 Allow: GET, PATCH 尝试PATCH请求数据
"error":"Only 'application/json' Content-Type is supported" --显示只允许json格式 尝试json格式 发生500错误
利用json格式探针 发现报错 price没有出现 进一步利用 修改之后发现改为0元
4、Exploiting a mass assignment vulnerability
要解决实验室问题,请查找并利用大量分配漏洞来购买轻量级 l33t 皮夹克。您可以使用以下凭据登录自己的帐户:wiener:peter。
所需知识
若要解决此实验,需要了解:
1、什么是质量分配。
2、为什么质量分配可能会导致隐藏参数。
3、如何识别隐藏参数。
4、如何利用批量分配漏洞。
夹克加入购物车后 结账时发现checkout接口 返回json格式 尝试利用POST发包
显示没有发现键值对数组 尝试将上述数据包中的json内容传入
探针参数 修改参数percentage为100购买成功
服务器端参数污染 |网络安全学院 (portswigger.net)
https://portswigger.net/web-security/api-testing/server-side-parameter-pollution --参考
前置:某些系统包含无法从 Internet 直接访问的内部 API。当网站在没有充分编码的情况下将用户输入嵌入到对内部 API 的服务器端请求中时,就会发生服务器端参数污染。
若要解决实验室问题,请以管理员身份登录并删除 carlos。
所需知识
若要解决此实验,需要了解:
1、如何识别用户输入是否包含在服务器端 URL 路径或查询字符串中。
2、如何使用路径遍历序列尝试更改服务器端请求。
3、如何发现 API 文档。
登录框界面发现忘记密码的功能尝试抓包 查看历史数据包forgotPassword.js forgot-password 查看该数据包
我们先行尝试一下第二关卡的payload
返回 --> 路由无效。请参考 API 定义
我们尝试进行目录遍历 当访问../../../../%23时 服务器返回的信息表示404错误 说明已经遍历到了api的根目录
尝试一些常见api定义文件名 查看报错信息接口信息
/api/internal/v1/users/{username}/field/{field}
username=../../../../api/internal/v1/users/administrator/field/email%23 --拼接接口信息 返回正常
翻看forgotPassword.js文件 发现代码段 与第二关卡类似 如果存在resetToken就打印出来 那只需要拼接url(passwordResetToken)即可得到
{
"type": "passwordResetToken",
"result": "2wshlu417kaiuudmikbrrowv5skqkxpq" --得到token
}
https://0a7600fd031c32ef81fd25a100610075.web-security-academy.net/forgot-password?passwordResetToken=2wshlu417kaiuudmikbrrowv5skqkxpq --拼接访问即可
原文始发于微信公众号(寒鹭网络安全团队):API测试
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论