手动挖掘漏洞(一)输入框未加过滤引发漏洞利用
1.身份认证
-
弱口令
在对一个站点进行渗透测试时候,首先是对页面进行探测,扫描,对一些存在隐患的默认配置来进行发现,最起始的页面应该为一个登陆的页面,我们需要通过登陆才能进入页面,此时我们就可以通过弱口令进行身份认证
-
锁定机制
如果在进行弱口令测试时,有些登陆页面会有锁定账号机制,手动尝试多次如果没有锁定机制才能用fazzer爆破
-
信息收集
在进行爆破时候,需要明确的是 我们拥有一个正确的账号,之后再去爆破密码,所以获取一个正确的账号,获取正确的账号可以哦通过密码错误提示,或者通过手机号为账号
-
密码探测
根据服务器返回信息,查看Errorcode,抓包查看结合burpsuite的proxy和comparer进行字节对比,之后用Intruder下的positions进行字段破解
-
会话sessionID
服务器会根据sessionID的不同从而设置不同的反应,如果没有获取账号密码,可以截获sessionID,在做安全审计的时候注意cookie值,如果多次登录均一致,则说明有问题(设置超时时间)
2.手动挖掘
通过账号验证后,接着进行手动漏洞探测
需要探测的项有:
-
所有变量
-
所有头(cookie中的变量)
-
逐个变量排除(对服务器反馈的字段进行保存)
点击选择只有参数的请求:
接着讲要修改的数据包发送至Reperter
删减之后:
3.如何发现漏洞使得效率变高?
我感觉漏洞的发现是源于开发者只追求功能的实现,而忽略了在这个过程中对细节的处理
例如:进入DVWA平台后,有一个功能为测试某个IP地址是否存活,而背后实现的机制就和我们在终端ping 某个IP效果一样
思路:
程序员在开发过程中,为了实现这个功能的实现,我们试猜想,它所用到的方法,可以去调用系统的ping指令,然后将Ping指令的显示反应到页面上,这里就可以去尝试ping某个地址,看页面的显示和控制台显示的结果是否一致:
网页中显示:
控制台显示:
显示的结果一致,那么我们就可以尝试在网页中输入一些系统指令进行测试:
果然和我们预测的结果一致
通过查看网页源代码去证明我们的猜测
我们不仅仅可以输入分号,也可以输入&&(前面命令为真,后面才能执行)也可以用||(前面失败后面才执行)
问题:
用了DVWA高级别的安全编码:代码的判断,分割写的都很好
小结:漏洞的实现是源于我们懂得正向开发的思路