服务指纹识别
指纹识别是什么?
指纹是指网站CMS指纹识别、计算机操作系统以及web容器的指纹识别等。
应用程序一般在html、js、css等文件中包含一些特征码,这些特征码就是所谓的指纹。当碰到其他网站也存在次特征时,就可以快速识别出该程序,所以叫做指纹识别。
指纹识别的目的
知道对方使用的CMS(是自己开发还是开源的,有什么端口,中间件,IP,服务器存放地址),二级域名,敏感信息等
常见指纹检测的对象
1、CMS信息:比如大汉CMS、织梦、帝国CMS、phpcms、ecshop等;
2、前端技术:比如HTML5、jquery、bootstrap、pure、ace等;
3、Web服务器:比如Apache、lighttpd, Nginx, IIS等;
4、应用服务器:比如Tomcat、Jboss、weblogic、websphere等;
5、开发语言:比如PHP、Java、Ruby、Python、C#等;
6、操作系统信息:比如linux、win2k8、win7、kali、centos等;
7、CDN信息:是否使用CDN,如cloudflare、360cdn、365cyd、yunjiasu等;
8、WAF信息:是否使用waf,如Topsec、Jiasule、Yundun等;
9、IP及域名信息:IP和域名注册信息、服务商信息等;
10、端口信息:有些软件或平台还会探测服务器开放的常见端口。
常见指纹识别方式
特定文件的MD5
一些网站的特定图片文件、js文件、CSS等静态文件,如favicon.ico、css、logo.ico、js等文件一般不会修改,通过爬虫对这些文件进行抓取并比对md5值,如果和规则库中的Md5一致则说明是同一CMS。这种方式速度比较快,误报率相对低一些,但也不排除有些二次开发的CMS会修改这些文件。获得通用文件的哈希值,然后进行对比。
favicon.ico
就是在浏览器的最左侧显示一个网站的 LOGO 小图标,这个图标是放在根目录下的,一般都是以 favicon.ico 命名
eg:Discuz官网favicon.ico,左侧显示的是网站LOGO
自己搭建Discuz论坛favicon.ico,如下图所示:
二者favicon.ico的MD5值对比一致,通过该hash值可以判断出为discuz论坛
正常页面或错误网页中包含的关键字
先访问首页或特定页面如robots.txt等,通过正则的方式去匹配某些关键字,如Powered by Discuz、dedecms等。或者可以构造错误页面,根据报错信息来判断使用的CMS或者中间件信息,比较常见的如tomcat的报错页面。
Discuz页面返回banner信息:Powered by Discuz
请求头信息的关键字匹配
根据网站response返回头信息进行关键字匹配,whatweb和Wappalyzer就是通过banner信息来快速识别指纹,之前fofa的web指纹库很多都是使用的这种方法,效率非常高,基本请求一次就可以,但搜集这些规则可能会耗时很长。而且这些banner信息有些很容易被改掉。根据response header一般有以下几种识别方式:
1、查看http响应报头的X-Powered-By字段来识别,X-Powered-By:PHP/7.1.8
X-Powered-By:anyu.qianxin.com
2、根据Cookies来进行判断,比如一些waf会在返回头中包含一些信息,如360wzws、Safedog、yunsuo等;
3、根据header中的Server信息来判断,如DVRDVS-Webs、yunjiasu-nginx、Mod_Security、nginx-wallarm等;
URL中包含的关键字
通过规则库去探测是否有相应目录,或者根据爬虫结果对链接url进行分析,或者对robots.txt文件中目录进行检测等等方式,通过url地址来判别是否使用了某CMS,比如wordpress默认存在wp-includes和wp-admin目录,织梦默认管理后台为dede目录,solr平台可能使用/solr目录,weblogic可能使用wls-wsat目录等。
eg:discuz默认后台页面,admin.php
http://10.211.55.8/Discuz_X3.4_SC_UTF8_20191201/upload/admin.php
robots.txt 显示banner信息:Discuz! X3
开发语言的识别
web开发语言一般常见的有PHP、jsp、aspx、asp等,常见的识别方式有:
1、通过爬虫获取动态链接进行直接判断是比较简便的方法。asp判别规则如下<a[^>]*?href=(‘|”)[^http][^>]*?\.asp(\?|\#|\1),其他语言可替换相应asp即可。
2、通过X-Powered-By进行识别,比较常见的有X-Powered-By: ASP.NET或者X-Powered-By: PHP/7.1.8
3、通过Set-Cookie进行识别,这种方法比较常见也很快捷,比如Set-Cookie中包含PHPSSIONID说明是php、包含JSESSIONID说明是java、包含ASP.NET_SessionId说明是aspx等。
常见指纹识别工具
在线网址
Bugscaner: http://whatweb.bugscaner.com/look/
云悉指纹: http://www.yunsee.cn/figer.html
whatweb: http://whatweb.net/
waf识别:https://github.com/EnableSecurity/wafw00f
CDN识别:https://raw.githubusercontent.com/3xp10it/mytools/master/xcdn.py
Bugscaner
在线cms识别工具
本地识别工具
御剑Web指纹识别程序
Wappalyzer
Wappalyzer(集成在浏览器或可单独)
Nmap
telnet
乌云漏洞库查询CMS
识别出banner信息,可以从网站CMS漏洞库查询该CMS漏洞历史版本