wappalyzer怎么使用
来源:网络收集 点击: 时间:2024-06-19Web应用指纹识别,是web渗透信息收集最关键的一步,这方面开源的工具也非常多,像BlindElephant,whatweb以及在非安全圈都很火的wappalyzer。本文主要描述如何使用wappalyzer的perl与php接口进行指纹识别。
Wappalyzer的功能是识别单个uri的指纹,其原理就是给指定URI发送HTTP请求,获取响应头与响应体并按指纹规则进行匹配。这也是web应用指纹识别最基础的部分,除此之外,还有指纹置信度计算(如何去处伪造指纹,多种指纹特征如何综合判断,隐藏指纹信息如何提取),整个站点的指纹识别还涉及到有效爬虫抓取,分布式计算等问题,这些都不在本文内容中。

Wappalyzer是一款浏览器插件,通过Wappalyzer可以识别出网站采用了那种web技术。它能够检测出CMS和电子商务系统、留言板、javascript框架,主机面板,分析统计工具和其它的一些web系统。The company behind Wappalyzer还能够收集web程序的一些信息用于统计分析,揭示出各种web系统的使用率即增长情况。实际Wappalyzer就是一个指纹识别工具。

perl版本
原理:
给指定uri发送HTTP请求,通过分析HTTP相应的以下部分来判断指纹
(1) headers特征
响应头key:value对,多个key:value用逗号隔开,例如
headers:{X-AMP-Version:(+)\\;version:\\1,Set-Cookie:^AMP=},
(2) html特征
响应体内容,多个规则用逗号隔开,例如
html:*parbase,_jcr_content,/etc/designs/,/etc/clientlibs/]
特别注意:html全文匹配的规则一定要谨慎编写
(3)url特征
url内容,例如
url:/cgi-bin/UCEditor\\?(?:.*)?merchantid=.
(4) meta特征
响应html 页面中诸如metaname=versioncontent=neblog-1.0/中的名字name:内容content对,多个规则用逗号隔开,例如
meta:{generator:webEdition,DC.title:webEdition}
(5) script特征
响应html页面中诸如scripttype=text/javascriptsrc=http://b1.bst.126.net/newpage/r/j/ec.js?v=1413881655525/script src中中url内容,多个规则用逗号隔开,例如
script:*\\d)*\\.js\\;version:\\1,/(+(\\-?rc*)*)/angular(\\.min)?\\.js\\;version:\\1,angular.*\\.js]

局限性:
不支持规则文件中APP版本号与置信度的获取
对非utf8的中文编码可能会存在问题
优点:
较之PHP版本,使用qr正则预编译处理,可以提前发现正则的问题,这是我选择该语言版本的主要原因。
(接下来的php版本就能让你知道正则不预编译处理有多坑了!)
脚本的功能:
(1)指纹识别结果按JSON格式返回,以便后续指纹信息入库等处理
(2)支持批量uri查询
(3)支持指定自定义JSON格式的指纹规则文件
(默认的指纹文件放置在/usr/lib/perl5/WWW/apps.json ,具体的路径会因cpan模块的安装路径有区别
可以使用perl -V 察看@INC变量来确定路径,或者更暴力的find吧)
安装:
cpan-iWWW::Wappalyzerclonehttps://github.com/tanjiti/FingerPrint.git
运行:
(1)获取单个uri的指纹
perlFingerPrint.plwww.xxx.comuri必选tanjiti.json
返回结果
{ www.xxx.com: { blogs: , web-servers: , cdn: , cms: , font-scripts: , javascript-frameworks: , javascript-graphics: }}
(2)从文件读取url列表进行批量指纹识别,并将结果输出到文件中
perlFingerPrint.plurl.txturi文件路径必选tanjiti.json
结果输出到 url.txt__fingerprint 文件里
指纹规则文件编写示例:
moretanjiti.json
apps: { Discuz!:{ website: www.discuz.net/forum.php, cats: , meta: { generator: Discuz}, headers: {Set-Cookie: _lastact.*_sid|_sid.*_lastact|_sid.*smile|smile.*_sid}, url: /uc_server|uc_client, html: Powered by (?:Discuz!|a href=\http://www\\.discuz\\.net/\|UCenter), implies: php }, PHP: { website: php.net, cats: , headers: { Server: php/?(+)?\\;confidence:40\\;version:\\1, X-Powered-By: php/?(+)?\\;confidence:40\\;version:\\1, Set-Cookie: PHPSESSID }, url: \\.php(?:$|\\?) }}

php版本
原理
同perl版本,区别有两点:
1. HTTP请求部分:较之perl使用LWP发送HTTP请求,php使用curl发送HTTP请求
2. 规则匹配部分:指纹规则的匹配部分使用javascript语法,然后通过php的v8js模块来解析。(为什么要这样做呢?当返回响应体内容很多,指纹正则写的很烂的时候,会卡死在规则匹配这一过程中,现在的规则下sina,163等大站基本卡死!)
运行
PHP版的接口已经能直接使用了,只是需要替换规则文件,囧
第一步:安装php、curl及v8js
apt-getinstallphp5-devphp-pearbuild-essentiallibv8-devphp5-curlpeclinstallchannel://pecl.php.net/v8js-0.1.3echoextension=v8js.so/etc/php5/cli/php.ini
验证是否安装成功
php-m|grepv8jsv8js-----------OK
第二步:下载Wappalyzer脚本
gitclonehttps://github.com/ElbertF/Wappalyzer.gitcp-RWappalyzer/drivers/php/*.cpWappalyzer/share/js/wappalyzer.jsjs/cpWappalyzer/share/apps.json.(指纹规则文件)该规则文件的正则编写的有问题,所以我使用的以前版本的规则文件cp/usr/lib/perl5/WWW/apps.json.
php版指纹识别程序结构如下:
index.php主程序Wappalyzer.phpWappalyzerException.phpjs/driver.jsjs/wappalyzer.jsapps.json指纹规则文件
第三步:验证是否成功
phpindex.phpwww.tanjiti.com
输出格式为
应用名,版本号,置信度,app类型 (比perl版本多了对版本号,置信度的获取)
CloudFlare, , 100%, cdnJavascript Infovis Toolkit, , 100%, javascript-graphicsjQuery, , 100%, javascript-frameworksNginx, , 100%, web-serversPHP, 5.5.9, 100%, programming-languagesUbuntu, , 100%, operating-systemsWordPress, 4.0, 100%, cms, blogs
接下来的优化输出为json格式与批量处理uri同perl版本。

最后寄言,一定一定要写好正则,NFA引擎正则优化TIPS、Perl正则技巧及正则性能评测方法
软件版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_909370.html