干货!top白帽子 Gr36_ 手把手教你挖漏洞|2017 先知白帽大会(2)
在系统中只要输入单引号系统就会返回一个空,这种情形应该不存在注入,但是,这里是不是存在全局过滤机制?遇到单引号或者是其他的特殊字符系统就返回空?我把请求变成 POST 请求,经过这样的变换,发现这个系统是可以注入的,用这种方式可以绕过程序全局的过滤。 0x02 天下大事,必作于细细节决定成败,在测试过程中不仅要胆大而且要心细,多注意一些细枝末节,有时,会有一些比较意外的发现。我有个比较良好的习惯,喜欢察看网页的源代码。 上述案例中,我当时是以普通用户权限登录到系统中,察看网页源码中发现有一堆注释,注释包含着一些链接,这些链接看上去是管理员功能的链接,最后这个链接普通用户也可以访问,这是属于垂直权限的越权漏洞。 类似的 JS 源码也是隐藏着一些看不到的信息,这些信息往往可以往往可以打开测试的局面,我当时在测试过程中遇到后台系统,这个系统没有帐号,经过暴力破解也没有成功进入系统中,这时我去查阅系统加载的 JS 文件,其中一个文件中发现这样一个函数,看上去应该是注册函数,根据里面的逻辑拼接成一个请求,最后发现利用这个请求确实能够注册一个后台系统的帐号密码,然后就可以进一步登录后台系统进行测试。 奇葩的支付漏洞,电商网站选购完商品最后一步进行结算支付,当时选择的支付方式是网银在线,这个请求输入一个订单号,系统会返回一个表单,最终会拼接成网银在线的最终支付链接,如果不仔细看可能就不会发现里面多了一点东西。看 KEY参数,在一般支付宝或者是网银支付链接里,肯定有一个参数校验的过程,为了防止用户篡改支付过程的金额和订单号会做参数交验,KEY会不会就是参数交验过程中遇到的密钥?当时我找到网银在线的文档,经过仔细研究,猜想KEY可能是参数交验所需要的密钥,根据规则结合前面的KEY,自己手动构造一个算参数交验,自己算出来的数值和系统反馈回来的数值一样,印证了我的猜想是正确的,我就可以结合这个规则和KEY构造出任意金额的支付链接,而且可以保证支付链接完完全全合法有效,所以,这可以算是真真正正的任意金额支付漏洞。 0x03 朝高危漏洞出发,不破楼兰终不还测试过程中要有挖高危漏洞的心,如果是挖到低危或者是中危漏洞也要想方设法把它变成高危的漏洞。 某次测试中找到某个系统存在 PHP 文件包含漏洞,经过测试发现这个系统没有任何上传点,文件包含是本地文件包含,意味着无法通过上传或者是远程文件包含拿到 web shell ,这时通过文件包含漏洞继续读系统源代码,最后在某一个文件中发现了这么一行代码,这行代码意味着可以控制 session 变量,PHP的 session 保存服务器某个固定的路径下,而且文件名是固定的前缀加上 session ID,路径可以知道,session 的变量也可以控制,可以通过这个页面往 session 文件里写一句话,最终通过包含session文件的方式获取到web shell。 论坛程序,在众测的过程中遇到很多,对于这种程序大家都有自己的方法,有些是用社工管理员的帐号,或者是利用历史漏洞去入手,自带统一管理的程序。 如果仔细看过漏洞详情,就会知道 UC 有很多的 API设计非常不安全,利用 API 爆破 UC 创始人的密码,这个爆破不受验证码请求次数的研制,爆破创始人密码可以登录 UC 的后台,相当于可以获得论坛至高无上的权限,我在众测过程中发现很多厂商对这里有一些加固,可能会做访问的限制,比如,针对源 IP 的限制,出现这种情况可以回到这里,在拿到创始人密码情况下,可以获得论坛对应的 uc key,可以结合之前UC 的漏洞进行选项,还可以进行注入,注入写本地的中转脚本,可以利用自动化工具完成。 0x04 工欲善其事,必先利其器很多白帽子在众测的时候都用自己的专属的工具包,有些是自己定制化开发的工具,我平常使用比较多的是一款基于被动式的扫描工具,在这种被动式扫描工具出现之前,也有大牛开源了一款工具,但是要经过注入检测,我推荐的这款适用范围更广一些,技术差不多也是利用现成的轮子组合,技术含量不是很高,主要是分享一些思路。 程序搭载的流程,访问代理服务器可以抓取用户所有的请求流量,可以对流量进行存储,后端的扫描程序再对流量进行安全检测。 (编辑:ASP站长网) |