网站地图    收藏   

主页 > 后端 > 网站安全 >

浅谈web指纹识别技术 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 13:03 作者: 阅读:

[导读] 目前网络上开源的web指纹识别程序很多,如Wapplyzer,BlindElephant,plecost,w3af,whatweb, wpscan, joomscan等等,基本都是国外的,使用的时候因各方面因素会有一些限制,在某些特定环境下需要自...

目前网络上开源的web指纹识别程序很多,如Wapplyzer,BlindElephant,plecost,w3af,whatweb, wpscan, joomscan等等,基本都是国外的,使用的时候因各方面因素会有一些限制,在某些特定环境下需要自己定制指纹识别工具,本文会浅析这些指纹识别程序的原理以及如何编写一个web应用指纹识别程序,完全没有技术含量,有不妥的地方还望各种SM。

0×01:识别的几种方式

目前常见的web应用指纹识别主要有以下几种方式,泽总已经总结的很明确了。

1:网页中发现关键字

2:特定文件的MD5(主要是静态文件、不一定要是MD5)

3:指定URL的关键字

4:指定URL的TAG模式

以上4种模式结合起来识别的话正确率一般在95%以上,除非个别BT的站点修改的体无完肤,如meta、文件路径、css等都删除了或故意修改成其他的webapp等,那我只能说你屌爆了。

0×02:识别方式详解

一般应用程序在html、js、css等文件中多多少少会包含一些特征码,这跟ips、waf等产品的特性有点类似,有特征码匹配模式。比如wordpress如果没有特细隐藏的话,在robots.txt中会包含wp-admin之类,首页index.php中会包含generator=wordpress 3.xx,后面为版本号,页面中会包含wp-content路径等等。
这几条都是存在网页中的关键字。其他的应用也有类似的例子,如discuz、dedecms、phpwind等在页面中都会发现一些固定的特征码。特征码如何查找这里不详细说明了,下期会有文章详细说明如何批量查找特征码,接下来先介绍一下几款常见的web应用指纹识别程序。

1:Wapplyzer

Wapplyzer是基于正则表达式来识别web应用的,如下图:

 




仔细看看Wapplyzer的规则其实很简单,挑一条看看,如下:
'WordPress':             { cats: { 1:  1, 2: 11 }, meta: { 'generator': /WordPress/i }, html: /

2:plecost

plecost是基于python架构,利用了Beautiful Soup 来解析html、xml文件识别网站使用的插件及版本。要了解plecost的原理,必须先知道Beautiful Soup是干啥用的,简单科普下Beautiful Soup:

Beautiful Soup 是一个 Python HTML/XML 处理器,设计用来快速地转换网页抓取。以下的特性支撑着 Beautiful Soup:

    Beautiful Soup 不会选择 即使你给他一个损坏的标签。 他产生一个转换DOM树,尽可能和你原文档内容含义一致 。这种措施通常能够你搜集数据的需求。
    Beautiful Soup 提供一些简单的方法以及类Python语法 来查找、查找、修改一颗转换树:一个工具集帮助你解析一棵树并释出你需要的内容。你不需要为每一个应用创建自己的解析工具。
    Beautiful Soup 自动将送进来的文档转换为 Unicode 编码 而且在输出的时候转换为 UTF-8,。 除非这个文档没有指定编码方式或者Beautiful Soup 没能自动检测编码,你需要手动指定编码方式,否则你不需要考虑编码的问题。

再看看plecost代码,如下图:

 


 

加载并读取wp_plugin_list.txt,利用urlopen探测目标url是否存在该插件。Plecos编写插件也非常方便,在wp_plugin_list.txt里面写上插件名称、最新版本号和cve即可。

3:whatweb

whatweb是一个web应用程序指纹识别工具,可以鉴别出内容管理系统(CMS)、博客平台、统计分析软件、javascript库、服务器和其他更多Web程序。whatweb拥有超过900个插件,插件是用来鉴别Web应用系统的。因此,开发者呼吁更多的人帮助开发插件,不用担心作者声称插件是十分容易编写的。
可以说whatweb是目前网络上比较强大的一款应用识别程序了。它支持正则表达式、md5 hash匹配、url识别、HTML标记模式、蜘蛛爬行等等。

Whatweb插件编写需要理解一些变量的定义,通过下面的例子就可以看出个大概,如下:

Plugin.define "Plone" do
author "Andrew Horton"
version "0.2"
description "CMS http://plone.org"
examples %w| www.norden.org www.trolltech.com www.plone.net www.smeal.psu.edu|

dorks [
'"powered by plone"'
]

matches [
{:name=>"meta generator tag",
:regexp=>/

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论