尝试FUZZ测试文件上传靶场的黑名单
使用工具:
Burp suite v2023.10.3.1
使用靶场环境:
upload-labs
第三关
黑名单与白名单
首先FUZZ(模糊)测试之前,先要整明白什么是黑白名单。
黑名单:进行某些特征的匹配过滤,不允许匹配上的通过,匹配不上的可以通过。
白名单:进行某些特征的匹配过滤,允许匹配上的通过,匹配不上的不允许通过。
比如的upload-labs
文件上传靶场的第4关就有黑白名单。
但是,上传目录下的上传后的文件,无法判断黑白名单。
为什么无法分清呢?
举个栗子:
在不知道黑白名单的情况下进行上传,.mp3无法上传,但是.mp4可以上传,我们可以看见,接下来套用黑白名单解释为什么分不清,黑名单:我过滤了.mp3因此.mp4可以上传。白名单:我只允许.mp4的文件上传,这个.mp3的文件,不符合不允许上传。看到了吗,这两个都可以解释过滤的这个代码。因此无法分清。
那么怎么分清这个环境究竟是黑还是白呢?
还是看upload-labs
文件上传靶场的第4关
先创建1.php文件,发现无法上传。
接下里创建了一个文件,名字叫做1.ashjkfhakljnkjbvkjbnakjndjkfa
,进行上传。然后进行查看:
那么先猜一下,这个究竟是黑名单过滤还是白名单过滤?
白名单吗?为什么?是因为他上传成功了,而1.php没有上传成功吗?
仔细看白名单是允许匹配上的某些后缀名的通过。
那么.ashjkfhakljnkjbvkjbnakjndjkfa
这个后缀名程序员怎么会允许他通过呢?
如果真是白名单,只能说明,程序员真的定义了这么一串无意义的,随便敲的后缀名是白名单。
因此这个环境是黑名单过滤。
黑名单过滤需要绕过这些特征就不会被过滤,白名单需要拥有这些特征才能不被过滤。
FUZZ测试
当你判读了某个文件上传点,它是黑名单过滤,你就需要尝试哪些后缀不在这个名单内。
根据我的上一篇文章,发现只需要选中后缀名这个值,就可以进行爆破。
这个就叫做 FUZZ 即模糊测试。
找到POST报文,发送到Intruder模块上,并选择后缀名进行测试:
导入字典:
开始进行测试。
在查看结果时发现,根据报文长度的这些的后缀名有些可以进行上传。
进行尝试,将数据包发送到repeater模块上
查看结果,文件被服务器解析: