最新消息:

wafp——web application finger print

工具 admin 1811浏览 0评论
作者:cheney 阅读(627) 下载(120) 公布时间:2013-12-05 14:47:05

工具简介:

一款用于检测常见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包含起来。

 

转自:http://security.tencent.com/index.php/opensource/detail/7

 

ps:作者提出了三种不同的方式来识别程序指纹:一是根据某些url返回的头部字段信息;二是根据某些url内容的md5值;三是根据某些url内容进行正则匹配

转载请注明:jinglingshu的博客 » wafp——web application finger print

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址