【JSRC 小课堂】Web 安全专题(一)认证缺失和认证缺陷漏洞
本期嘉宾:3stoneBrother,京东集团攻防与实验室安全工程师,业务蓝军负责人,熟悉 Web 渗透测试,长期致力于甲方 web 业务安全方向攻击与防御研究。
小课堂黑板报
Web 作为一个公司对外提供服务的入口,如果开发者的安全意识不强,就会导致 Web 应用安全问题层出不穷。黑客往往以 Web 漏洞为入口,进而操作和控制网站,最终达到入侵的目的。JSRC 小课堂 Web 安全专题,将以 Web 安全存在率较高的逻辑漏洞为学习切入点,逐步带来由中级到高级的 Web 攻击手法演示,以及漏洞挖掘案例和经验讲解。欢迎热爱 Web 安全的小伙伴一起交流学习。
基础知识:认证缺失和认证缺陷漏洞
逻辑漏洞通常被称为“不安全的对象引用和功能级访问控制缺失"。这类漏洞的成因主要是开发人员在对数据进行增、删、改、查时对客户端请求的数据过分相信而遗漏了权限的判定。我们以逻辑漏洞里比较容易理解和研究的认证缺失和认证缺陷漏洞为例,进行详细讲解。认证缺失和认证缺陷漏洞主要指功能级访问控制缺失,例如任意增删改查用户信息。实际业务场景中,可能出现开发人员安全意识比较薄弱的现象,例如业务上线前没有做认证处理,或者认证处理环节没有问题,但是没有控制好权限,导致可越权获取高权限用户的敏感信息。那么如何快速发现认证缺失漏洞和认证缺陷漏洞,避免敏感信息泄漏呢?基于工具开发主要由四个环节组成,即域名信息收集、站点信息爬取、规则的分析与提取和批量处理结果分析与展示。
Step 1 域名信息收集
如何进行域名收集呢?建议可以通过如下三种方式:
搜索引擎:如 Google
基于 Google hacker 技术,例如:site: xx.com。
优点:被动获取。
缺点:依赖于搜索引擎的爬虫能力,搜索引擎难于爬去域名下的所有站点信息。
证书透明度下面是我常用的证书透明度检索站点:
下面是我常用的证书透明度检索站点:
https://developers.facebook.com/tools/ct/search/
https://transparencyreport.google.com/https/certificates
优点:被动获取。
子域名爆破
我常用的两个子域名爆破的工具是:
https://github.com/lijiejie/subDomainsBrute
https://github.com/OJ/gobuster.git
优点:更加灵活,可以相对全面获取信息。
缺点:主动扫描,并发量过大可能影响线上业务,且依赖于字典的质量。
Step 2 站点信息爬取
域名收集完成后,就需要进行站点信息爬取。针对静态网页的站点信息爬取,可以通过 python 的 requests 库。
动态网页的站点信息爬取会相对复杂些,无法通过 python 的 requests 请求来实现,原因是存在 javascript 异步请求加载的接口。这里就要提到 PhantomJS,PhantomJS 是一个基于 Webkit 的“无界面”浏览器,它会把网站加载到内存并执行页面上的 JavaScript。它不会展示图形界面,所以运行起来比完整的浏览器要高效
如果我们把 Selenium 和 PhantomJS 结合在一起,就可以运行一个非常强大的网络爬虫,这个爬虫可以处理 JavaScrip、Cookie、headers,以及任何我们真实用户需要做的事情。
Step 3 规则的分析与提取
规则的分析和提取具体指:确认是否存在认证缺失或授权缺陷的标准。
如何确认是否存在认证缺失?
我们从认证层面可以从如下环节进行验证,即统一单点登录、自建系统登录、无需登录和异常页面。
统一单点登录:响应码 302,重定向 URL:
https://sso.*.com/login? ReturnUrl=http://files.*.com。
自建登录系统:响应码 302,存在 login、password、passwd、登录、注册等字段。
无需登录:响应码 200,且响应包数据长度大于一定阈值。
异常页面:发出的链接没有数据包返回,即死链接,不需再做下一步分析。
如何确认是否存在授权缺陷?
如果响应返回敏感信息,则可能存在授权缺陷,我们可以通过正则表达式进行验证。
正则表达式(Regular Expression),又称规则表达式或常规表示法,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。我常用的测试正则表达式的工具是https://regex101.com/。我们在上述工具中应用正则表达式,对动态爬取的站点信息进行模式匹配,提取、统计和分析符合规则列表的数据,根据这些特征确定是否存在认证缺失和认证缺陷漏洞。
部分策略规则图示:
Step 4 批量处理结果分析与展示
检测完是否存在证缺失漏洞和认证缺陷漏洞,就到了确认命中率的时刻啦。
认证缺失的批量命中情况可参考下图:
1.单点登录
2.自建登录系统
3.不用登录
4.异常
欢迎点击【京东智联云】了解开发者社区
更多精彩技术实践与独家干货解析
欢迎关注【京东智联云开发者】公众号
版权声明: 本文为 InfoQ 作者【京东科技开发者】的原创文章。
原文链接:【http://xie.infoq.cn/article/0821e4fec4178a09a831b5cb1】。文章转载请联系作者。
评论