wappalyzer怎么使用

最近许多朋友都在问我,如何使用Wappalyzer API进行Web应用指纹识别,今天小编就和大家聊一聊这个问题。

操作方法

  • 01

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

  • 02

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

  • 03

    perl版本 原理: 给指定uri发送HTTP请求,通过分析HTTP相应的以下部分来判断指纹 (1)  headers特征 响应头key:value对,多个key:value用逗号隔开,例如 "headers": { "X-AMP-Version": "([\\d.]+)\\;version:\\1", "Set-Cookie": "^AMP=" }, (2)   html特征 响应体内容,多个规则用逗号隔开,例如 "html": [ "<div class=\"[^\"]*parbase", "_jcr_content", "/etc/designs/", "/etc/clientlibs/" ] 特别注意:html全文匹配的规则一定要谨慎编写 (3)  url特征 url内容,例如 "url": "/cgi-bin/UCEditor\\?(?:.*&)?merchantid=." (4)  meta特征 响应html 页面中诸如<meta name="version" content="neblog-1.0"/>中的名字name:内容content对,多个规则用逗号隔开,例如 "meta": { "generator": "webEdition", "DC.title": "webEdition" } (5)  script特征 响应html页面中诸如<script type="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" ]

  • 04

    局限性: 不支持规则文件中APP版本号与置信度的获取 对非utf8的中文编码可能会存在问题 优点: 较之PHP版本,使用qr正则预编译处理,可以提前发现正则的问题,这是我选择该语言版本的主要原因。 (接下来的php版本就能让你知道正则不预编译处理有多坑了!) 脚本的功能: (1)指纹识别结果按JSON格式返回,以便后续指纹信息入库等处理 (2)支持批量uri查询 (3)支持指定自定义JSON格式的指纹规则文件 (默认的指纹文件放置在/usr/lib/perl5/WWW/apps.json ,具体的路径会因cpan模块的安装路径有区别 可以使用perl -V 察看@INC变量来确定路径,或者更暴力的find吧) 安装: cpan -i  WWW::Wappalyzerclone https://github.com/tanjiti/FingerPrint.git 运行: (1)获取单个uri的指纹 perl FingerPrint.pl www.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列表进行批量指纹识别,并将结果输出到文件中 perl FingerPrint.pl url.txt<uri 文件路径 必选> tanjiti.json[指纹规则文件,可选] 结果输出到 url.txt__fingerprint 文件里 指纹规则文件编写示例: more tanjiti.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(?:$|\\?)"               }}

  • 05

    php版本 原理 同perl版本,区别有两点: 1. HTTP请求部分:较之perl使用LWP发送HTTP请求,php使用curl发送HTTP请求 2. 规则匹配部分:指纹规则的匹配部分使用javascript语法,然后通过php的v8js模块来解析。(为什么要这样做呢?当返回响应体内容很多,指纹正则写的很烂的时候,会卡死在规则匹配这一过程中,现在的规则下sina,163等大站基本卡死!) 运行 PHP版的接口已经能直接使用了,只是需要替换规则文件,囧 第一步:安装php、curl及v8js apt-get install php5-dev php-pear build-essential libv8-dev php5-curlpecl install channel://pecl.php.net/v8js-0.1.3echo extension=v8js.so >> /etc/php5/cli/php.ini 验证是否安装成功 php -m | grep v8jsv8js -----------OK 第二步:下载Wappalyzer脚本 git clone https://github.com/ElbertF/Wappalyzer.gitcp -R Wappalyzer/drivers/php/* .cp Wappalyzer/share/js/wappalyzer.js js/cp Wappalyzer/share/apps.json .  (指纹规则文件) 该规则文件的正则编写的有问题,所以我使用的以前版本的规则文件cp /usr/lib/perl5/WWW/apps.json . php版指纹识别程序结构如下: index.php 主程序Wappalyzer.phpWappalyzerException.phpjs/driver.js js/wappalyzer.jsapps.json 指纹规则文件 第三步:验证是否成功 php index.php www.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版本。

  • 06

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

(0)

相关推荐

  • 常用的火狐浏览器插件大全

    火狐浏览器插件 火狐浏览器插件下载地址https://addons.mozilla.org/zh-CN/firefox/ 一.浏览器功能扩展组件 1.便捷到令人发指的 FireGestures 插件作 ...

  • chrome浏览器使用技巧

    如果你要用一种工具用几年,甚至十几年,那就现在开始用它,用的烂熟,那你可以将来的工作中节省掉很大一部分的时间.来源:segmentfault我还记得 18 年的时候,有一次小组开会,当时的老大说我的工 ...

  • 实战干货:UI设计师与Web攻城狮协同工作必知的8个知识点

    这里的分享一些比较系列化的专业共识给大家,特别是UI设计师和web前端都需了解的知识点,双方在这些知识点上达成共识,有助于能更加畅通无阻的进行沟通交流,可以更好的开发完美的产品. 设计基础 尺寸 字体 ...