之前写过一个比较入门的漏洞挖掘浅谈,而之后的漏洞挖掘和工作中的产品测试过程中除了白盒代码审计之外比较偏向黑盒测试/漏洞挖掘,那么我觉得漏洞挖掘/黑盒测试过程中的遇到过的一些fuzz技术思想有必要借用我遇到过的实战中的例子来归纳总结下,通过实例对fuzz的思想进行展开。
一、登陆1)验证码
图片验证码1 ->拒绝服务攻击
-》Fuzz存在潜藏参数,可控验证码生成大小: 如存在验证码生成包中存在height、width、length等参数且能够被我们控制那么就可能进行拒绝服务攻击
图片验证码2->删除验证码参数bypass验证
手机验证码1->爆破
手机验证码2->短信轰炸
2)用户名枚举
若测试中回显信息出现用户名不存在、或者回显code与正确的code不同时则可能存在用户名枚举
3)弱口令
二、逻辑漏洞 2.1敏感信息泄露(接口参数fuzz+驼峰命名法)原本是一个如下一个根据个人信息显示订单的请求数据包
POST /sale/appOrder/orderInfo HTTP/1.1 Host: xxx.com Origin: http://xxx.com Cookie:**** ... orderId=1234返回的一个正常的个人订单信息。然而我将post的内容删除后,请求接口上继续Fuzz参数并配合驼峰命名规则
POST /sale/appOrder/+paramFuzzing HTTP/1.1 Host: xxx.com Origin: http://xxx.com Cookie:**** ...最终得到大量订单信息的泄露
2.2逻辑漏洞-越权1(参数值替换)
将相关的信息字段内容替换为测试账号B的信息(例如:login=A-> login=B
、userid=A->userid=B)
2.3逻辑漏洞-越权2(参数值枚举)
对于以上情况在不知道账户2的id或不想另注册测试账户时用到另一种暴力而简便方法,可能大家都知道intruder.
2.4逻辑漏洞-IDOR(IDOR-不安全的直接对象引用)
IDOR或许和越权有点像,在测试越权修改user_id时也许经常会看到401未认证或用户未授权,大多少人会和我之前的我一样结束这样一个越权测试,认为目标系统不存在越权漏洞。但在正是了解和接触IDOR之后测试面才会不断发散扩展。IDOR漏洞不仅限于参数数值更改,它还包括参数数值删除,以及其他与个人信息相关的字段替换以及HTTP污染等。
》举例
假如请求中存在以下参数
{"userid":"",""meail":"","content":"","anmousid":"",user_hash":"",}1)替换请求中的userid
经常会出现
A
HTTP/1.1 404 .... errorB
HTTP/1.1 403 .... errorC
HTTP/1.1 401 ... 未认证2)删除请求中对应的token/user_hash
保留userid,将与其对应的token/user_hash参数值删除 ,原例A->B
3)删除userid及对应user_hash
返回结果如B
但是最后当将userid、user_hash、anmousid都删除只保留email和content时却认证成功返回了数据。
对于C中情况测试还存在一个IDOR的Bypass,HTTP参数污染。