En

wafp——web application finger print

作者:cheney公布时间:2013-12-05最后更新:2013-12-05

MD5:068a2aa0fcba7161dca7071377f5b154

174451 37632

下载该工具
分享

工具简介:

一款用于检测常见web软件及版本的框架。支持快速扩展可识别软件种类。


使用说明:

       运行环境:linux

       在bin目录下,执行

              ./wafp  wafp.conf host port

./wafp:程序名

Wafp.conf:配置文件,包括:

       LogFilePath:日志文件的目录

       LogLevel:  日志等级

       LogFileNum:日志文件最大个数

       LogFileSize:日志文件最大大小。采用滚动日志的方式。当日志到达LogFileSize的时候,重新生成一个文件,当文件数达到LogFileNum的时候,删除最旧的文件

       PluginPath:各个软件识别配置文件的目录

       ResultPath:结果文件存放目录

Host:域名或ip

Port:开放的web端口号。

注:识别后的版本结果存放在ResultPath目录下,以host为文件名,各字段意义:

软件名 版本号 识别规则id 端口




 

编译说明:

  1.        软件版本识别框架发送http请求,依赖于openssl库,请确认openssl库安装于/usr/local/ssl目录下。
  2.        在src目录下make install即可
  3.        可执行程序位于bin目录下。



软件版本探测规则配置文件说明:

软件版本探测规则通过xml文件的方式进行配置。同时提供可扩展的接口,方便针对特别需求开发相关插件,进行探测服务。

 

实例:

<pluginappname="apache">

    <description></description>

    <tests>

        <test type=0 typeid=907000001certainty=90>

            <url>/</url>

            <field>server</field>

           <appregexp>apache</appregexp>

           <verregexp><![CDATA[[\s]*apache/[\s]*((\d+\.)+\d+)]]></verregexp>

        </test>

        <test type=2 typeid=907002001certainty=80>

            <url>/favicon.ico</url>

           <md5>71e30c507ca3fa005e2d1322a5aa8fb2</md5>

            <ver>Redhatapache</ver>

        </test>

        <test type=2 typeid=907002002certainty=80>

            <url>/favicon.ico</url>

           <md5>dcea02a5797ce9e36f19b7590752563e</md5>

            <ver>centos/debian/fedoraapache</ver>

        </test>

        <test type=2 typeid=907002003certainty=80>

            <url>/favicon.ico</url>

            <md5>d99217782f41e71bcaa8e663e6302473</md5>

            <ver>Redhat/fedoraapache</ver>

        </test>

        <test type=3 typeid=907003001certainty=80>

            <url>/</url>

           <expectedhttpcode>200</expectedhttpcode>

            <regexp><![CDATA[<html><body><h1>Itworks!</h1></body></html>]]></regexp>

           <verregexp><![CDATA[]]></verregexp>

        </test>

    </tests>

</plugin>

 

说明:

       目前软件及版本识别框架支持三种探测方式,用户可自己集成ITest接口,实现自己的探测方式。


Type

配置

备注说明

实现类

0

<url>

要访问的url

通过http返回的banner识别软件版本信息。如apache软件,返回的http头部的server字段可能是Server:Apache/2.4.2

Src/plugin/CHtmlheaderTest.cpp

<field>

http返回中的字段名,如server,cookie

<appregexp>

从返回的字段中通过正则取出软件名

<verregexp>

如果返回的字段匹配appregexp,通过verregexp正则取出版本信息,注意,通过正则中最外面的括号获取版本号信息,获取不到为unknown

2

<url>

要访问的url

返回某个url,计算返回内容的md5,此方法最准

Src/plugin/CMD5Test.cpp

<md5>

期望的返回内容的MD5

<ver>

如果返回内容命中MD5,则版本为本配置的

3

<url>

要访问的url

查看返回的内容中是否存在特定的内容,比如Powered by xxx

Src/RegexpTest.cpp

<expectedhttpcode>

期望的http返回码

<regexp>

在返回的内容中匹配正则,匹配上了,就是存在该软件

<verregexp>

通过verregexp正则取出版本信息,注意,通过正则中最外面的括号获取版本号信息,获取不到为unknown


其他字段说明:

Typeid:唯一标识该版本识别配置的id

Certainty:确认度。同一个软件的识别,可能有多种方法,当多种方法都能识别出来时,根据certainty的大小确认哪个方法更准确。越大越准确。

Description:该配置文件相关说明。

 

注:

1)如配置的内容存在xml标签,需要使用CDATA包含起来。