simeon
在web渗透过程中,对目标网站的指纹识别比较关键,通过工具或者手工来识别CMS系统是自建还是二次开发,还是直接使用公开的CMS程序至关重要。通过获取的这些信息来决定后续渗透的思路和策略。CMS指纹识别是渗透测试环节一个非常重要的阶段,是信息收集中的一个关键环节。
1. 指纹识别技术
组件是网络空间最小单元,Web应用程序、数据库、中间件等都属于组件。指纹是组件上能标识对象类型的一段特征信息,用来在渗透测试信息收集环节中快速识别目标服务。互联网随时代的发展逐渐成熟,大批应用组件等产品在厂商的引导下走向互联网,这些应用程序因功能性、易用性被广大用户所采用。大部分应用组件存在足以说明当前服务名称和版本的特征,识别这些特征获取当前服务信息,也即表明该系统采用那个公司的产品,例如论坛常用Discuz!来搭建,通过其robots.txt等可以识别网站程序是采用 Discuz!
2. 指纹识别思路
指纹识别可以通过一些开源程序和小工具来进行扫描,也可以结合文件头和反馈信息进行手工判断,指纹识别主要思路:
(1)使用工具自动判断
(2)手工对网站的关键字、版权信息、后台登陆、程序版本、robots.txt等常见固有文件进行识别、查找和比对,相同文件具有相同的md5值或者相同的属性。
网上文章对指纹识别方式进行了分析和讨论,根据笔者经验,可以分为以下一些类别:
1.基于特殊文件的md5值匹配
基于web网站独有的favicon.ico、css、logo.ico、js等文件的md5 比对网站类型,通过收集CMS公开代码中的独有文件,这些文件一般轻易不会更改,通过爬虫对这些文件进行抓取并比对md5值,如果一样,则认为该系统匹配。这种识别速度最快,但可能不准确,因为这些独有文件可能在部署到真实系统中会进行更改,那么就会造成很大的误差。
(1)robots.txt文件识别
相关厂商下的cms(内容管理系统)程序文件包含说明当前cms名称及版本的特征码,其中一些独有的文件夹以及名称都是识别cms的好方法,如Discuz官网下robots.txt文件。dedecms官网http://www.dedecms.com/robots.txt文件内容:
Disallow: /plus/feedback_js.php
Disallow: /plus/mytag_js.php
Disallow: /plus/rss.php
Disallow: /plus/search.php
Disallow: /plus/recommend.php
Disallow: /plus/stow.php
Disallow: /plus/count.php
看到这个基本可以判断为dedecms。
(2)计算机md5值
计算网站所使中间件或cms目录下静态文件的md5值,md5码可以唯一地代表原信息的特征。静态文件包括html、js、css、image等,建立在站点静态文件存在的情况下访问,如 Dedecms 官网下网站根目录http://www.dedecms.com/img/buttom_logo.gif图片文件,目前有一些公开程序,通过配置cms.txt文件中的相应值进行识别,如图1所示。
图1对图片文件进行md5计算并配置
2.请求响应主体内容或头信息的关键字匹配
请求响应主体内容或头信息的关键字匹配方法可以寻找网站的css 、js代码的命名规则,也可以找关键字,以及head cookie等等,但是弊端是收集这些规则会耗费很久的时间。
3.基于Url关键字识别
基于爬虫爬出来的网站目录比对web信息,准确性比较高,但是如果改了目录结构就会造成问题,而且一部分网站有反爬虫机制,会造成一些困扰
4.基于TCP/IP请求协议识别服务指纹
一些应用程序、组建和数据库服务会有一些特殊的指纹,一般情况下不会进行更改。网络上的通信交互均通过TCP/TP协议簇进行,操作系统也必须实现该协议。操作系统根据不同数据包做出不同反应。如Nmap检测操作系统工具通过向目标主机发送协议数据包并分析其响应信息进行操作系统指纹识别工作,其扫描命令为“nmap –O 192.168.1.1”。
5.在owasp中识别Web应用框架测试方法
(1)http头。查看http响应报头的X-Powered-By字段来识别,可以通过netcat来识别,使用netcat 127.0.0.1 80对127.0.0.1主机的80端口web服务器框架进行识别。
(2)Cookies。一些框架有固定的Cookies名称,这些名称一般情况都不会更改,例如zope3、cakephp、kohanasesson、laravel_session。
(3)Html源代码。html源代码中包含注释、js、css等信息,通过访问这些信息来判断和确认cms系统框架。在源代码中常常会包含powered by、bulit upon、running等特征。
(4)特殊文件和文件夹
1.whatweb
公司官方站点https://www.morningstarsecurity.com/research/whatweb,下载地址:https://github.com/urbanadventurer/WhatWeb。最新版本为0.4.9,Whatweb 是一个开源的网站指纹识别软件,它能识别的指纹包括 cms 类型、博客平台、网站流量分析软件、javascript 库、网站服务器,还可以识别版本号、邮箱地址、账户 id、web 框架模块等。
(1)Whatweb安装
Whatweb 是基于 ruby 语言开发,因此可以安装在具备 ruby 环境的系统中,目前支持 Windows/Mac OSX/Linux。kali Linux下已经集成了此工具。
debian/ubuntu系统下:apt-get install whatweb
git clone https://github.com/urbanadventurer/WhatWeb.git
(2)查看某网站的基本情况
whatweb -v https://www.morningstarsecurity.com/,执行效果如图2所示,加参数v是显示详细信息。
图2显示详细信息
(3)结果以 xml 格式保存到日志
whatweb -v www.morningstarsecurity.com --log-xml= morningstarsecurity.xml
(4)Whatweb 列出所有的插件
whatweb -l
(5)whatweb 查看插件的具体信息
whatweb --info-plugins="插件名"
(6)高级别测试
whatweb --aggression(简写为-a)参数,此参数后边可以跟数字1-4分别对应4个不同的等级。
1 Stealthy 每个目标发送一次 http 请求,并且会跟随重定向
2 Unused //不可用。(从2011年开始,此参数就是在开发状态。)
3 Aggressive 每个目标发送少量的 http 请求,这些请求是根据参数为1时结果确定的
4 Heavy 每个目标会发送大量的 http 请求,会去尝试每一个插件
命令格式:whatweb -a 3 www.wired.com
(7)快速扫描本地网络并阻止错误
whatweb --no-errors 192.168.0.0/24
(8)以https前缀快速扫描本地网络并阻止错误
whatweb --no-errors --url-prefix https://192.168.0.0/24
2.wapplyzer
Wappalyzer的功能是识别单个URL的指纹,其原理就是给指定URI发送HTTP请求,获取响应头与响应体并按指纹规则进行匹配。Wappalyzer是一款浏览器插件,通过Wappalyzer可以识别出网站采用了那种web技术。它能够检测出CMS和电子商务系统、留言板、javascript框架,主机面板,分析统计工具和其它的一些web系统。公司官方网站:https://www.wappalyzer.com,源代码下载地址:https://github.com/AliasIO/Wappalyzer。
(1)Firefox添加Wappalyzer
Wappalyzer通常是附加在浏览器中,在firefox中通过获取附加组件,添加Wappalyzer搜索并安装即可。经测试在Chrome中也可以通过附加来使用,其使用方法很简单,通过浏览器访问地址,单击浏览器地址栏最右上方的弧形图标即可获取某网站服务器、脚本框架等信息,效果如图3所示。
图3获取运行效果
3.whatruns
https://www.whatruns.com/是单独为chrome开发的一款cms指纹识别程序,跟Wappalyzer安装类似,安装完成后,通过</>图标来获取服务的详细运行信息,效果如图4所示。对比Wappalyzer,whatruns获取的信息要多一些。
图4whatruns识别应用程序
4. BlindElephant
BlindElephant是一款Web应用程序指纹识别工具。该工具可以读取目标网站的特定静态文件,计算其对应的哈希值,然后和预先计算出的哈希值做对比,从而判断目标网站的类型和版本号。目前,该工具支持15种常见的Web应用程序的几百个版本。同时,它还提供WordPress和Joomla的各种插件。该工具还允许用户自己扩展,添加更多的版本支持。官方站点:http://blindelephant.sourceforge.net/,kali中默认安装该程序,缺点是该程序后续基本没有更新。程序下载地址:
https://sourceforge.net/code-snapshots/svn/b/bl/blindelephant/code/blindelephant-code-7-trunk.zip
(1)安装
cd blindelephant/src
sudo python setup.py install
(2)使用BlindElephant
BlindElephant.py www.antian365.com wordpress
5. Joomla security scanner
Joomla security scanner可以检测Joomla整站程序搭建的网站是否存在文件包含、sql注入、命令执行等漏洞。下载地址:https://jaist.dl.sourceforge.net/project/joomscan/joomscan/2012-03-10/joomscan-latest.zip
使用命令:joomscan.pl –u www.somesitecom
该程序自2012年后没有更新,对旧的joomla扫描有效果,新的系统需要手动更新漏洞库。
6. cms-explorer
cms-explorer支持对Drupal,wordpress ,Joomla,Mambo程序的探测,该程序后期也未更新。其下载地址为:https://code.google.com/archive/p/cms-explorer/downloads
7. plecost
plecost默认在kali中安装,其缺点也是后续无更新,下载地址:
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/plecost/plecost-0.2.2-9-beta.tar.gz
使用方法:
plecost -n 100 -s 10 -M 15 -i wp_plugin_list.txt 192.168.1.202/wordpress
8.总结
国外目前对cms指纹识别比较好的程序为whatweb、whatruns和wapplyzer,其它cms指纹识别程序从2013年后基本没有更新。在进行web指纹识别渗透测试时可以参考fuzzdb,下载地址:https://github.com/fuzzdb-project/fuzzdb,里面有不少有用的东西。
1.御剑web指纹识别程序
御剑web指纹识别程序是一款CMS指纹识别小工具,该程序由.NET 2.0框架开发,配置灵活、支持自定义关键字和正则匹配两种模式、使用起来简洁、体验良好。在指纹命中方面表现不错、识别速度很快、但目前比较明显的缺陷是指纹的配置库偏少。
2. Test404轻量WEB指纹识别
Test404轻量WEB指纹识别程序是一款CMS指纹识别小工具,配置灵活、支持自行添加字典、使用起来简洁、体验良好。在指纹命中方面表现不错、识别速度很快。软件下载地址:http://www.test404.com/post-1299.html,运行效果如图5所示,可手动更新指纹识别库。
图5Test404轻量WEB指纹识别
3. Scan-T 主机识别系统
Scan-T(https://github.com/nanshihui/Scan-T)结合Django和Nmap,模仿了类似Shodan的东西,可对主机信息进行识别,可在线架设。架设好的系统界面如图6所示。
图6Scan-T主机识别系统
4. Dayu主机识别系统
Dayu(https://github.com/Ms0x0/Dayu)是一款运行在Java环境的主机识别软件。运行时需要将Feature.json指纹文件放到D盘根目录(d:\Feature.json),如无D磁盘,请自行下载源码更改org.secbug.conf下Context.java文件中的currpath常量,其主要命令有:
java -jar Dayu.jar -r d:\1.txt -t 100 --http-request / --http-response tomcat
java -jar Dayu.jar -u www.discuz.net,www.dedecms.com -o d:\result.txt
java -jar Dayu.jar -u cn.wordpress.org -s https -p 443 -m 3
该软件共有500多条指纹识别记录,可对现有的系统进行识别。
目前有两个网站提供在线指纹识别,通过域名或者ip地址进行查询。
1.云悉指纹识别
http://www.yunsee.cn/finger.html
2.bugscaner指纹识别
http://whatweb.bugscaner.com/look/
通过对国内外指纹识别工具进行实际测试,发现国外whatweb、whatruns和wapplyzer三款软件后续不断有更新,识别效果相对较好。Test404轻量WEB指纹识别和御剑指纹识别能够对国内的CMS系统进行识别。
1.在对目标进行渗透测试信息收集时,可以通过whatweb、whatruns和wapplyzer等来进行初步的识别和交叉识别,判断程序大致信息。
2.通过分析Cookies名称、特殊文件名称、html源代码文件等来准确识别CMS信息,然后通过下载对应的CMS软件来进行精确比对,甚至确定其准去版本。
3.针对该版本进行漏洞测试和漏洞挖掘,建议先在本地进行测试,然后再在真实系统进行实际测试。
4.指纹识别可以结合漏洞扫描进行测试。
更多攻防文章可以访问本人专栏:渗透攻击入门到实践,让SQLmap子*弹飞一会儿 链接地址: http://blog.51cto.com/cloumn/detail/3
参考文章及资源下载:
http://www.freebuf.com/articles/2555.html
https://zhuanlan.zhihu.com/p/27056398
https://github.com/urbanadventurer/WhatWeb
https://github.com/dionach/CMSmap
https://pan.baidu.com/share/link?shareid=437376&uk=3526832374
http://blindelephant.sourceforge.net/
https://github.com/iniqua/plecost
https://wappalyzer.com/
https://github.com/Ms0x0/Dayu