相关阅读
视频讲解
本期视频将大家了解如何对api接口进行渗透测试,通过模糊测试可以找到更多的端点,然后通过burp可以手动进行测试,最终完成入侵!
寻找Web资产
首先我们需要通过Nmap来寻找web服务,-F
代表扫描Top100端口
nmap -A -F 10.10.11.161 -V
![图片[1]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022035512702.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
当然,如果你想要降低扫描速度可以使用-T1
或者-T2
然后找到了web服务
![图片[2]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022035720588-1024x516.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
API模糊测试
我们先尝试直接访问80端口
![图片[3]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022035809703.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
然后使用FFUF对接口路径进行模糊测试
ffuf -u http://10.10.11.161/FUZZ -w /usr/share/wordlists/dirb/common.txt
![图片[4]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022041755654-1024x560.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
可以看到结果里有/api
路径
![图片[5]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022041933135-1024x551.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
然后我们访问网页/api
,可以看到里面有/v1
端点
![图片[6]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022042010420.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
当然如果什么都没有,您可以继续使用FFUF模糊测试
ffuf -u http://10.10.11.161/api/FUZZ -w /usr/share/wordlists/dirb/common.txt
![图片[7]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022042103742.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
我们继续通过网页进行访问,发现返回值里有"user"
、"
admin"
![图片[8]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022042137475.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
我们尝试看看能不能继续进行访问
![图片[9]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022042241810.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
![图片[10]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022042302472.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
这里可以看到/user
显示Not Found
,我们可以继续进行模糊测试
ffuf -u http://10.10.11.161/api/user/FUZZ -w /usr/share/wordlists/dirb/common.txt
![图片[11]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022042359453-1024x508.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
结果里这些数字,应该就是用户的id
![图片[12]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022042447681.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
为了验证这一点,我们手动访问/api/v1/user/1
,可以看到管理员账户的信息
![图片[13]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022042525608.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
其实在这里,如果是漏洞赏金的话,我们就已经可以上报信息泄露类的漏洞了,但是,我们继续,看看能不能有进一步的发现,这里有个小技巧,就是对结果的大小,我们可以使用-mr
去匹配,比方说Size大小包含4
的
![图片[14]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022042723348-1024x550.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
ffuf -u http://10.10.11.161/api/user/FUZZ -w /usr/share/wordlists/dirb/common.txt -mr 4
当然,除了Size为4的,你还可以匹配到包含4的,比方说104
![图片[15]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022042934727-1024x634.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
接下来我们需要对注册、登录的关键接口进行手动测试
![图片[16]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022043110248.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
![图片[17]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022043124579.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
我们可以打开burpsuite并开启拦截(intercept)
![图片[18]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022043203663-1024x633.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
并将拦截下来的包传到repeater里,这样我们可以手动修改参数
![图片[19]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022043241496-1024x539.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
在repeater界面上,我们点击发送就可以随时看到返回的结果
下面是什么参数都没有修改的,和我们在浏览器里直接访问的没有区别!
![图片[20]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022043320934-1024x483.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
通常注册和登录都使用的是POST请求,我们将请求进行修改,并点击发送
我们可以看到响应里提示,body里没有必填的字段
![图片[21]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022043511952-1024x463.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
我们尝试在body里构造一个json格式的,比方说我想注册一个用户名为phdsec
的
{
"user":"phdsec"
}
我们进行修改,并发送请求
可以看到这时报错是value is not a valid dict
![图片[22]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022043421472-1024x491.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
稍微有经验一点,你能一眼看出是Content-Type
里给的格式错了,粗暴的方式是你可以直接把这段去掉试试
![图片[23]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022043750944-1024x370.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
可以看到现在不报之前的错误了,这里提示的是缺少密码字段(password field)
并且这里提示我们注册需要的是email
,也就是邮件账户
![图片[24]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022043930574-1024x579.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
综上我们对输入的内容进行修改
{
"email":"phdsec@me.com",
"password":"pass1234"
}
可以看到再次发送后,返回值是201 Created
代表我们的用户已经被成功创建
![图片[25]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022044110591-1024x478.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
既然账户都可以注册了,但我们尝试下,看看能否登录
这里可以看到提示的报错是 422 无法处理的实体
![图片[26]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022044304941.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
这时我们需要思考,是不是登录的时候可能不是使用的json格式,而是最传统的方式
username=phdsec@me.com&password=pass1234
这里进行尝试,发现已经登录成功,并且给我们返回了access_token,看到bearer
关键词,就可以判断这里是一个JWT的令牌,如果我们在请求头中携带,则可以完成身份的验证
authorization: bearer <Token>
![图片[27]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022044525450-1024x419.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
我们之前结果中发现有docs
路径
![图片[28]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022044653959.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
我们可以尝试使用上面说的方式进行身份验证,继续请求
![图片[29]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022044843487.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
继续在跳转到下个页面添加同样的请求体
![图片[30]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022044922568.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
最终进入相应的系统
![图片[31]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022044951663-1024x488.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
发现我们已经进入了接口文档的页面,至此渗透测试结束!
![图片[32]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/10/20221022045013765-1024x557.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
当然,这里身份验证的方式提到了JWT令牌(json web token),与之类似的还有很多种,我们会在后续的文章里涉及!
- 最新
- 最热
只看作者