4.9 暴力破解
“暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
- 1.是否要求用户设置复杂的密码;
- 2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
- 3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
- 4.是否采用了双因素认证
4.9.2 暴力破解漏洞攻击
目标:https://www.bihuoedu.com/vul/burteforce/bf_form.php
对status或Length的返回值进行排序,查看不同之处。如果有,查看返回包是否显示为登录成功,例如上图即返回“Login success”。。这个数据包中的Payload就是爆破成功的密码。
4.9.4 暴力破解漏洞修复建议
- 如果用户登录此时超过设置的阈值,则锁定账户
- 如果某个IP登录次数超过设置的阈值,则锁定IP
4.10 命令执行
应用程序有时需要调用一些执行系统命令的函数,如在HTTP中,使用system、exec、shell_exec、passthru、popen、proc_popen等函数可以执行系统命令。当黑客能控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行攻击。
4.10.2 命令执行漏洞攻击
常用的管道符。
windows支持:
- | 直接执行后面的语句 ping 127.0.0.1|whoami
- || 前面出错执行后面的 ,前面为假 ping 2 || whoami
- & 前面的语句为假则直接执行后面的,前面可真可假 ping 127.0.0.1&whoami
- &&前面的语句为假则直接出错,后面的也不执行,前面只能为真 ping 127.0.0.1&&whoami
Linux支持:
- ; 前面的执行完执行后面的 ping 127.0.0.1;whoami
- | 管道符,显示后面的执行结果 ping 127.0.0.1|whoami
- 11 当前面的执行出错时执行后面的 ping 1||whoami
- & 前面的语句为假则直接执行后面的,前面可真可假 ping 127.0.0.1&whoami
- &&前面的语句为假则直接出错,后面的也不执行,前面只能为真 ping 127.0.0.1&&whoami
4.10.4 命令执行漏洞修复建议
- 尽量不要使用命令执行函数
- 客户端提交的变量在进入执行命令函数前要做好过滤和检测
- 在使用动态函数之前,确保使用的函数是指定的函数之一
- 对PHP语言来说,不能完全控制的危险函数最好不要使用
4.11 逻辑漏洞挖掘
逻辑漏洞是指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改、越权访问、密码找回、交易支付金额等功能处。其中越权访问又分为水平越权和垂直越权两种:
- 水平越权:相同级别(权限)的用户或者同一角色中不同的用户之间,可以越权访问、修改或删除其他用户信息的非法操作
- 垂直越权:不同级别之间的用户或者不同角色之间用户的越权,比如普通用户可以执行管理员才能执行的功能
黑客在挖掘逻辑漏洞时有2个重点:业务流程和HTTP/HTTPS请求篡改。
4.11.2 越权访问攻击
(水平越权)目标地址:https://www.bihuoedu.com/vul/overpermission/op1/op1_login.php
登录时以admin用户登录,修改username=lucy
(垂直越权)目标地址:https://www.bihuoedu.com/vul/overpermission/op2/op2_login.php
。。。。
4.11.4 越权漏洞修复建议
- 前后端同时对用户输入信息进行校验,双重验证机制
- 调用功能前验证用户是否有权限调用相关功能
- 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
- 直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理
- 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤