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

相关阅读

视频讲解

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

寻找Web资产

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

nmap -A -F 10.10.11.161 -V
图片[1]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

然后找到了web服务

图片[2]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

API模糊测试

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

图片[3]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

ffuf -u http://10.10.11.161/FUZZ -w /usr/share/wordlists/dirb/common.txt
图片[4]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

图片[5]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

图片[6]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

ffuf -u http://10.10.11.161/api/FUZZ -w /usr/share/wordlists/dirb/common.txt
图片[7]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

图片[8]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

图片[9]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog
图片[10]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

这里可以看到/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

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

图片[12]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

图片[13]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

图片[14]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog
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

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

图片[16]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog
图片[17]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

图片[18]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

图片[19]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

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

图片[20]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

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

图片[21]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

{
    "user":"phdsec"
}

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

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

图片[22]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

图片[23]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

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

图片[24]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

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

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

图片[25]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

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

图片[26]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

username=phdsec@me.com&password=pass1234

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

authorization: bearer <Token>
图片[27]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

图片[28]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

图片[29]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

图片[30]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

最终进入相应的系统

图片[31]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

图片[32]-【漏洞赏金渗透课程】Api接口渗透测试、Fuzz技巧分享-FancyPig's blog

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

© 版权声明
THE END
喜欢就支持一下吧
点赞17赞赏 分享
评论 共6条

请登录后发表评论