欢迎来到云服务器

网络技术

Web网站措施范例指纹识别

web应用指纹识别,是web渗透信息收集最要害的一步,这方面开源的东西也很是多,像BlindElephant,whatweb 以及在非安详圈都很火的wappalyzer。本文主要描写如何利用wappalyzer的perl与php接口举办指纹识别。

wappalyzer的成果是识别单个uri的指纹,其道理就是给指定URI发送HTTP请求,获取响应头与响应体并按指纹法则举办匹配。这也是web应用指纹识别最基本的部门,除此之外,尚有指纹置信度计较(如何去处伪造指纹,多种指纹特征如何综合判定,埋没指纹信息如何提取),整个站点的指纹识别还涉及到有效爬虫抓取,,漫衍式计较等问题,这些都不在本文内容中。

一、perl版本

道理:

给指定uri发送HTTP请求,通过阐明HTTP相应的以下部门来判定指纹

(1)  headers特征 

响应头key:value对,多个key:value用逗号离隔,譬喻



"headers": { "X-AMP-Version": "([d.]+);version:", "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特征



"script": [ "angular(?:-|.)([d.]*d)[^/]*.js;version:", "/([d.]+(-?rc[.d]*)*)/angular(.min)?.js;version:", "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 -i  WWW::Wappalyzer  



clone 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:", "X-Powered-By": "php/?([d.]+)?;confidence:40;version:", "Set-Cookie": "PHPSESSID" },
"url": ".php(?:$|?)"
}
}


二、php版本

道理 同perl版本,区别有两点:

1. HTTP请求部门:较之perl利用LWP发送HTTP请求,php利用curl发送HTTP请求

腾讯云代理

Copyright © 2003-2021 MFISP.COM. 国外vps服务器租用 梦飞云服务器租用 版权所有 粤ICP备11019662号