开发者社区 > 博文 > 【JSRC小课堂】Web安全专题(一)认证缺失和认证缺陷漏洞
分享
  • 打开微信扫码分享

  • 点击前往QQ分享

  • 点击前往微博分享

  • 点击复制链接

【JSRC小课堂】Web安全专题(一)认证缺失和认证缺陷漏洞

  • 京东安全
  • 2020-05-08
  • IP归属:北京
  • 490080浏览

640.jpg


本期嘉宾:3stoneBrother,京东集团攻防与实验室安全工程师,业务蓝军负责人,熟悉Web渗透测试,长期致力于甲方web业务安全方向攻击与防御研究。


小课堂黑板报

Web作为一个公司对外提供服务的入口,如果开发者的安全意识不强,就会导致Web应用安全问题层出不穷。黑客往往以Web漏洞为入口,进而操作和控制网站,最终达到入侵的目的。JSRC小课堂Web安全专题,将以Web安全存在率较高的逻辑漏洞为学习切入点,逐步带来由中级到高级的Web攻击手法演示,以及漏洞挖掘案例和经验讲解。欢迎热爱Web安全的小伙伴一起交流学习。

互联网公司业务上线前会经过代码审计、白盒测试、黑盒测试等,业务漏洞的挖掘难度越来越高,如何快速有效地挖掘更多逻辑漏洞呢?




基础知识:认证缺失和认证缺陷漏洞



逻辑漏洞通常被称为“不安全的对象引用和功能级访问控制缺失"。这类漏洞的成因主要是开发人员在对数据进行增、删、改、查时对客户端请求的数据过分相信而遗漏了权限的判定。我们以逻辑漏洞里比较容易理解和研究的认证缺失和认证缺陷漏洞为例,进行详细讲解。

认证缺失和认证缺陷漏洞主要指功能级访问控制缺失,例如任意增删改查用户信息。实际业务场景中,
可能出现开发人员安全意识比较薄弱的现象,例如业务上线前没有做认证处理,或者认证处理环节没有问题,但是没有控制好权限,导致可越权获取高权限用户的敏感信息。

那么如何快速发现认证缺失漏洞和认证缺陷漏洞,避免敏感信息泄漏呢?基于工具开发主要由四个环节组成,即域名信息收集、站点信息爬取、规则的分析与提取和批量处理结果分析与展示。




Step 1  域名信息收集



如何进行域名收集呢?建议可以通过如下三种方式:

搜索引擎:如Google

基于Google hacker技术,例如:site: xx.com。
  • 优点:被动获取。

  • 缺点:依赖于搜索引擎的爬虫能力,搜索引擎难于爬去域名下的所有站点信息。


证书透明度
下面是我常用的证书透明度检索站点:

https://crt.sh/
https://developers.facebook.com/tools/ct/search/
https://transparencyreport.google.com/https/certificates

640.png

  • 优点:被动获取。

  • 缺点:通配符Wildcard SSL 证书存在,部分子域名无法获取。例如:

640.png

子域名爆破

我常用的两个子域名爆破的工具是:

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,以及任何我们真实用户需要做的事情。


640.jpg




Step 3 规则的分析与提取



规则的分析和提取具体指:确认是否存在认证缺失或授权缺陷的标准。


如何确认是否存在认证缺失?

我们从认证层面可以从如下环节进行验证,即统一单点登录、自建系统登录、无需登录和异常页面。


统一单点登录:响应码302,重定向URL:

https://sso.*.com/login? ReturnUrl=http://files.*.com。

自建登录系统:响应码302,存在login、password、passwd、登录、注册等字段。

无需登录:响应码200,且响应包数据长度大于一定阈值。

异常页面:发出的链接没有数据包返回,即死链接,不需再做下一步分析。


如何确认是否存在授权缺陷?

如果响应返回敏感信息,则可能存在授权缺陷,我们可以通过正则表达式进行验证。


正则表达式(Regular Expression),又称规则表达式或常规表示法,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。我常用的测试正则表达式的工具是https://regex101.com/。我们在上述工具中应用正则表达式,对动态爬取的站点信息进行模式匹配,提取、统计和分析符合规则列表的数据,根据这些特征确定是否存在认证缺失和认证缺陷漏洞。


部分策略规则图示:

640.jpeg




 Step 4 批量处理结果分析与展示



检测完是否存在证缺失漏洞和认证缺陷漏洞,就到了确认命中率的时刻啦。

认证缺失的批量命中情况可参考下图:

1.单点登录

2.自建登录系统

3.不用登录

4.异常

640-2.jpeg



共0条评论