Web 指纹识别虽然已经是老生常谈的话题,但其在漏洞挖掘 / 漏洞治理的过程中仍然有着举足轻重的作用:
实际落地时,无论甲方场景还是乙方场景,基本都是构建指纹体系,通过对指纹库的持续运营实现。指纹库通常由【Web 组件】 + 【识别该组件的规则】组成,识别过程通过解析流量,查找匹配的规则,输出指纹。本文中将着重分析下指纹识别体系建设的一些维度和实现思路。
主动识别逻辑比较简单。主动访问特定的 URL ,从响应中提取特征信息,从而判定是否为某个 Web 组件。
例如:识别OFBiz
,可主动访问/myportal/control/main
,检查 Cookie 和响应 body 是否包括 OFBiz
/ofbiz
等字样。
被动接收所有流量,也就是说并不会额外发送请求。每条响应再去逐一匹配指纹库的每条规则。
请求数据源可来源于:
Chrome
的爬虫,为了应对 js 动态页面这里有几个场景急需解决:
响应数 * 规则数
。为了降低轮训匹配的大量消耗,可以对爬虫 / 镜像中的流量进行去重,可大幅度减少要检测的响应数。对于相似流量比对,可参考腾讯src的策略。获取响应后可通过以下维度进行特征匹配。多个维度可以同时设定特征规则,最后通过加权计算后,输出指纹识别结果。
根据响应头中的信息进行匹配。重点关注 HTTP 的以下响应头,如:
Server
X-Powered-by
Set-Cookie
WWW-Authenticate
分析
Powered By XXX
<body class="ke-content">
<meta name="version" content="neblog-1.0">
<script src="http://example.com/js/bootstrap.min.js"></script>
wordpress
默认带有 readme.html
,以及 wp-admin
、wp-content/uploads
等目录;weblogic
可能使用 wls-wsat
目录Apache
默认的404页面、Tomcat
的报错页面、Mysql
默认SQL错误信息robots.txt
。例如 Discuz
的默认 robots.txt
Hash
(通常计算 MD5
)。例如:通用的特征文件,如 favicon.ico
、css
、logo.ico
、js
等文件一般不会修改;其他带有明显特征的文件。例如 Dedecms
的 /img/buttom_logo.gif
指纹识别看似简单的领域,其实深入研究后还是有很多值得钻研的点的,例如:
如果有师傅有任何问题,或者想参与到指纹识别模块的开发中来,欢迎与我联系。
16 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!