编写AWVS脚本探测web services

最近一直在做渗透测试,发现在使用AWVS去扫描一个使用web services的网站时。最后的扫描结果并没有web services。然而web services由于经常出现一些问题,故我们很有必要去收集到网站的使用web services的信息。下面我们通过编写AWVS脚本的方式去让AWVS探测的网站是否存在。

注意:这里默认大家都了解过AWVS基本语法。如果不了解请移步文章的“编写AWVS脚本资料”部分。

0x01思路

我们让AWVS爬取到的每一个路径都添加/services,然后去访问这个构造好的路径。如果存在该页面,则分析返回结果中是否存在“wdsl”字符,若存在则说明该站点存在web services服务。

0x02编写代码

新建报告模板

AWVS》Tools》Vulnerability Editor

图1-新建报告模板

填写好漏洞相关信息

图2-填写漏洞信息

新建探测脚本

找到AWVS的/data/script/folder目录

图3-新建探测脚本

由于我们需要AWVS在爬取到目录时就检查一次该目录是否存在web services。所以我们需要在该目录下的PerFolder文件夹,新建一个名为Web_Services.script的脚本文件。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var target = new THTTPJob(); //实例化一个HTTP任务
var dir = getCurrentDirectory();//获取当前路径
target.url = new TURL(scanURL.url+ dir.fullPath + "/services");//构造请求url
target.execute();//执行http请求

var wsRes = target.response.body;//获取http请求内容
if(!target.wasError && !target.notFound ){//判断是否访问错误或者是404
if(wsRes.indexOf('wsdl') != -1){
logWarning(scanURL.url+dir.fullPath+'----->this web services is exists!!!');//在日志栏显示该调式信息
var ri = new TReportItem();//新建一个报告结果,返回给扫描器界面
ri.loadFromFile('Web_Services.xml');//载入模板
ri.severity = "high"//影响等级
ri.affects = dir.fullPath + "/services";
ri.Request = target.Request.headersString;//测试请求HTTP头输出到界面
ri.response = target.response.body;//测试请求HTTP响应内容输出到界面
ri.fullResponse = target.fullResponse;//测试请求的完整HTTP响应内容输出到界面

//ri.description = "web services";
ri.addReference("how do sql inject web services","http://gv7.me/2017/08/12/how-do-sql-inject-web-services/");

AddReportItem(ri);
}
else
{
logError(scanURL.url+dir.fullPath+"----->This's not web services!!!");
}
}else{
logWarning(scanURL.url+dir.fullPath+"notFound web services!!!!");
}

图4-代码

0x3测试

去网上随便找一个测试站点,该站点/pptx/路径下存在web services的wsdl列表。

图5-测试站点

为了方便测试,我们新建一个test策略,策略包含我们写的脚本。

图6-新建test策略

扫描选择我们的新建的策略

图7-测试扫描设置

扫描结果中发现,已经找到web services
图8-测试扫描结果

后面我在这个代码基础上泄露发现SVN泄露的脚本,大家想让AWVS发现更多漏洞,可以自己尝试去写写。

0x4AWVS脚本编写资料

如果想了解更多编写脚本的资料。可以下载以下推荐的资料,若你有更好,欢淫共享感激不尽。

官方SDK文档

1
https://www.acunetix.com/resources/sdk/

官方开发工具包

工具包里有一个文档,和3个脚本例子。大家可以参考一下。

1
http://www.acunetix.com/download/tools/WVSSDK.zip

解密的扫描脚本

大家可能发现在/data/script/文件夹下的所有脚本都加密了,我们无法查看源码。这对于我们想学习编写脚本的童鞋很是不利。这里给大家发个福利:〇〇木一大神解密AWVS 10.5的script文件夹下所有脚本。

1
https://github.com/c0ny1/awvs_script_decode

百度云下载(base64)

1
dXJs77yaaHR0cHM6Ly9wYW4uYmFpZHUuY29tL3MvMXNscjRIUHogcHdk77yaYjNtbw==