未加星标

如何使用Wappalyzer API进行Web应用指纹识别

字体大小 | |
[工具软件 所属分类 工具软件 | 发布者 店小二04 | 时间 2015 | 作者 碳基体 ] 0人收藏点击收藏

Web应用指纹识别,是web渗透信息收集最关键的一步,这方面开源的工具也非常多,像BlindElephant,whatweb以及在非安全圈都很火的wappalyzer。本文主要描述如何使用wappalyzer的perlphp接口进行指纹识别。

Wappalyzer的功能是识别单个uri的指纹,其原理就是给指定URI发送HTTP请求,获取响应头与响应体并按指纹规则进行匹配。这也是web应用指纹识别最基础的部分,除此之外,还有指纹置信度计算(如何去处伪造指纹,多种指纹特征如何综合判断,隐藏指纹信息如何提取),整个站点的指纹识别还涉及到有效爬虫抓取,分布式计算等问题,这些都不在本文内容中。

CodeSec小科普:了解wappalyzer


如何使用Wappalyzer API进行Web应用指纹识别

如何使用Wappalyzer API进行Web应用指纹识别

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

官方地址:https://wappalyzer.com/

一、perl版本

原理:

给指定uri发送HTTP请求,通过分析HTTP相应的以下部分来判断指纹

(1) headers特征

响应头key:value对,多个key:value用逗号隔开,例如

"headers":{"X-AMP-Version":"([\\d.]+)\\;version:\\1","Set-Cookie":"^AMP="},

(2) html特征

响应体内容,多个规则用逗号隔开,例如

"html":["<divclass=\"[^\"]*parbase","_jcr_content","/etc/designs/","/etc/clientlibs/"]

特别注意:html全文匹配的规则一定要谨慎编写

(3)url特征

url内容,例如

"url":"/cgi-bin/UCEditor\\?(?:.*&)?merchantid=."

(4) meta特征

响应html 页面中诸如<metaname="version"content="neblog-1.0"/>中的名字name:内容content对,多个规则用逗号隔开,例如

"meta":{"generator":"webEdition","DC.title":"webEdition"}

(5) script特征

响应html页面中诸如<scripttype="text/javascript"src="http://b1.bst.126.net/newpage/r/j/ec.js?v=1413881655525"></script> src中中url内容,多个规则用逗号隔开,例如

"script":["angular(?:\\-|\\.)([\\d.]*\\d)[^/]*\\.js\\;version:\\1","/([\\d.]+(\\-?rc[.\\d]*)*)/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 [email protected]变量来确定路径,或者更暴力的find吧)

安装:

cpan-iWWW::Wappalyzer
clonehttps://github.com/tanjiti/FingerPrint.git

运行:

(1)获取单个uri的指纹

perlFingerPrint.plwww.xxx.com<uri必选>tanjiti.json[指纹规则文件,可选]

返回结果

{
"www.xxx.com": {
"blogs": ["WordPress"
],
"web-servers": ["Nginx"
],
"cdn": ["CloudFlare"
],
"cms": ["WordPress"
],
"font-scripts": ["Google Font API"
],
"javascript-frameworks": ["jQuery"
],
"javascript-graphics": ["Javascript Infovis Toolkit"
]
}
}

(2)从文件读取url列表进行批量指纹识别,并将结果输出到文件中

perlFingerPrint.plurl.txt<uri文件路径必选>tanjiti.json[指纹规则文件,可选]

结果输出到 url.txt__fingerprint 文件里

指纹规则文件编写示例:

moretanjiti.json "apps": {
"Discuz!":{
"website": "www.discuz.net/forum.php",
"cats": [ 1 ],
"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": [ 27 ],
"headers": { "Server": "php/?([\\d.]+)?\\;confidence:40\\;version:\\1", "X-Powered-By": "php/?([\\d.]+)?\\;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-curl
peclinstallchannel://pecl.php.net/v8js-0.1.3
echoextension=v8js.so>>/etc/php5/cli/php.ini

验证是否安装成功

php-m|grepv8js
v8js-----------OK

第二步:下载Wappalyzer脚本

gitclonehttps://github.com/ElbertF/Wappalyzer.git
cp-RWappalyzer/drivers/php/*.
cpWappalyzer/share/js/wappalyzer.jsjs/
cpWappalyzer/share/apps.json.(指纹规则文件)该规则文件的正则编写的有问题,所以我使用的以前版本的规则文件cp/usr/lib/perl5/WWW/apps.json.

php版指纹识别程序结构如下:

index.php主程序
Wappalyzer.php
WappalyzerException.php
js/driver.jsjs/wappalyzer.js
apps.json指纹规则文件

第三步:验证是否成功

phpindex.phpwww.tanjiti.com

输出格式为

应用名,版本号,置信度,app类型 (比perl版本多了对版本号,置信度的获取)

CloudFlare, , 100%, cdn
Javascript Infovis Toolkit, , 100%, javascript-graphics
jQuery, , 100%, javascript-frameworks
Nginx, , 100%, web-servers
PHP, 5.5.9, 100%, programming-languages
Ubuntu, , 100%, operating-systems
WordPress, 4.0, 100%, cms, blogs

接下来的优化输出为json格式与批量处理uri同perl版本。

最后寄言,一定一定要写好正则,NFA引擎正则优化TIPS、Perl正则技巧及正则性能评测方法

参考信息

http://wappalyzer.com/

http://cn2.php.net/v8js/

[本文系CodeSec专栏作者碳基体撰写,转载请注明来自CodeSec.Net]
分页:12
转载请注明
本文标题:如何使用Wappalyzer API进行Web应用指纹识别
本站链接:http://www.codesec.net/view/56514.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 工具软件 | 评论(0) | 阅读(1755)