【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享

作者:FancyPig | 发布时间: | 更新时间:

相关阅读

data-postsbox="{"id":11474,"title":"【零基础学渗透】工具篇——BurpSuite","author":"Sec-Labs","author_id":10015,"cover_image":"https://static.pigsec.cn/wp-content/uploads/2022/03/20220313155529975.png","cover_video":"","views":9400,"comment_count":663,"category":"cybersecurity","is_forum_post":false}">{"id":11474,"title":"【零基础学渗透】工具篇——BurpSuite","author":"Sec-Labs","author_id":10015,"cover_image":"https://static.pigsec.cn/wp-content/uploads/2022/03/20220313155529975.png","cover_video":"","views":9400,"comment_count":663,"category":"cybersecurity","is_forum_post":false}
data-postsbox="{"id":210,"title":"ffuf安装与使用教程","author":"FancyPig","author_id":1,"cover_image":"","cover_video":"","views":4459,"comment_count":1,"category":"cybersecurity","is_forum_post":false}">{"id":210,"title":"ffuf安装与使用教程","author":"FancyPig","author_id":1,"cover_image":"","cover_video":"","views":4459,"comment_count":1,"category":"cybersecurity","is_forum_post":false}
data-postsbox="{"id":241,"title":"使用ffuf对DVWA整个目录进行扫描","author":"FancyPig","author_id":1,"cover_image":"","cover_video":"","views":6507,"comment_count":2,"category":"cybersecurity","is_forum_post":false}">{"id":241,"title":"使用ffuf对DVWA整个目录进行扫描","author":"FancyPig","author_id":1,"cover_image":"","cover_video":"","views":6507,"comment_count":2,"category":"cybersecurity","is_forum_post":false}

视频讲解

本期视频将大家了解如何对api接口进行渗透测试,通过模糊测试可以找到更多的端点,然后通过burp可以手动进行测试,最终完成入侵!

寻找Web资产

首先我们需要通过Nmap来寻找web服务,-F代表扫描Top100端口

nmap -A -F 10.10.11.161 -V

当然,如果你想要降低扫描速度可以使用-T1或者-T2

data-postsbox="{"id":25078,"title":"Nmap新手教程 包含安装、使用、命令汇总","author":"黎明","author_id":70180,"cover_image":"","cover_video":"","views":2535,"comment_count":6,"category":"cybersecurity","is_forum_post":false}">{"id":25078,"title":"Nmap新手教程 包含安装、使用、命令汇总","author":"黎明","author_id":70180,"cover_image":"","cover_video":"","views":2535,"comment_count":6,"category":"cybersecurity","is_forum_post":false}

然后找到了web服务

API模糊测试

我们先尝试直接访问80端口

然后使用FFUF对接口路径进行模糊测试

ffuf -u http://10.10.11.161/FUZZ -w /usr/share/wordlists/dirb/common.txt

可以看到结果里有/api路径

然后我们访问网页/api,可以看到里面有/v1端点

当然如果什么都没有,您可以继续使用FFUF模糊测试

ffuf -u http://10.10.11.161/api/FUZZ -w /usr/share/wordlists/dirb/common.txt

我们继续通过网页进行访问,发现返回值里有"user""admin"

我们尝试看看能不能继续进行访问

这里可以看到/user显示Not Found,我们可以继续进行模糊测试

ffuf -u http://10.10.11.161/api/user/FUZZ -w /usr/share/wordlists/dirb/common.txt

结果里这些数字,应该就是用户的id

为了验证这一点,我们手动访问/api/v1/user/1,可以看到管理员账户的信息

其实在这里,如果是漏洞赏金的话,我们就已经可以上报信息泄露类的漏洞了,但是,我们继续,看看能不能有进一步的发现,这里有个小技巧,就是对结果的大小,我们可以使用-mr去匹配,比方说Size大小包含4

ffuf -u http://10.10.11.161/api/user/FUZZ -w /usr/share/wordlists/dirb/common.txt -mr 4

当然,除了Size为4的,你还可以匹配到包含4的,比方说104

接下来我们需要对注册、登录的关键接口进行手动测试

我们可以打开burpsuite并开启拦截(intercept)

并将拦截下来的包传到repeater里,这样我们可以手动修改参数

在repeater界面上,我们点击发送就可以随时看到返回的结果

下面是什么参数都没有修改的,和我们在浏览器里直接访问的没有区别!

通常注册和登录都使用的是POST请求,我们将请求进行修改,并点击发送

我们可以看到响应里提示,body里没有必填的字段

我们尝试在body里构造一个json格式的,比方说我想注册一个用户名为phdsec

{
    "user":"phdsec"
}

我们进行修改,并发送请求

可以看到这时报错是value is not a valid dict

稍微有经验一点,你能一眼看出是Content-Type里给的格式错了,粗暴的方式是你可以直接把这段去掉试试

可以看到现在不报之前的错误了,这里提示的是缺少密码字段(password field)

并且这里提示我们注册需要的是email,也就是邮件账户

综上我们对输入的内容进行修改

{
    "email":"phdsec@me.com",
    "password":"pass1234"
}

可以看到再次发送后,返回值是201 Created代表我们的用户已经被成功创建

既然账户都可以注册了,但我们尝试下,看看能否登录

这里可以看到提示的报错是 422 无法处理的实体

这时我们需要思考,是不是登录的时候可能不是使用的json格式,而是最传统的方式

username=phdsec@me.com&password=pass1234

这里进行尝试,发现已经登录成功,并且给我们返回了access_token,看到bearer关键词,就可以判断这里是一个JWT的令牌,如果我们在请求头中携带,则可以完成身份的验证

authorization: bearer <Token>

我们之前结果中发现有docs路径

我们可以尝试使用上面说的方式进行身份验证,继续请求

继续在跳转到下个页面添加同样的请求体

最终进入相应的系统

发现我们已经进入了接口文档的页面,至此渗透测试结束!

当然,这里身份验证的方式提到了JWT令牌(json web token),与之类似的还有很多种,我们会在后续的文章里涉及!

标签:api, 接口, api安全, api安全测试工具, api安全防护, api安全产品, api安全厂商, 接口安全, 接口安全测试, 接口安全性, 接口安全性测试怎么测, 接口安全设计, 接口测试工具, 接口测试用例怎么编写