前面就不先多说了,主要是记录一个从0到0.5再到0的过程,记一个思路和思考过程吧。
项目碰到,xray扫描出来存在注入,目标存在waf。现在绕过waf,如果没绕过默认什么也不返回,
类似下图
(1)判断数据库版本
Get请求,既然打算硬绕,先来头铁上硬的。第一步,判断数据库类型,我喜欢用这些方法。
(1)根据网站的搭建做初步判断(比如iis习惯用mssql等。)
(2)根据网站的sql异常报错判断
(3)根据工具的报错提示(比如sqlmap,虽然waf拦截,但是有些payload可能不拦截,或许会报出来数据库的信息)
(4)其他地方的信息泄露
(5)全端口扫描,根据端口进行判断
拿到数据库的信息以后,我们就开始判断是什么类型的注入了。
(2)判断注入的类型
比如这里,说了mysql异常。这里可以简单判断一下,看着这个类型,大概率是在order by ,limit
类型的注入了。然后就看是字符型还是数字型的注入了。这个比较简单,一般waf也
不会拦截,最多加个url编码一般就过了判断出来了。就不截图了,这里我判断出来
是数字型的注入。有个小技巧,这里报错会提示的,我们可以选择报错注入来试试。
(这里有个坑,我开始凭借经验判断出来是limit 或者order by类型的,总所周知那就不会存在预
编译。所以没考虑预编译导致踩坑了大量时间)
(3)判断拦截的参数
这种就任其发挥了,我一般喜欢把一条完整的注入语句插入进去。不用多想,百分百
被拦截,然后开始从头添加参数,看看到哪里被拦截到了。过程不详细截图了,就
记录一下我这里fuzz出来的被拦截的规则(其实之前有字典的,换了电脑搞不见
了,人麻了,只有重新来,XDM要注意保存好以前的劳动心血)fuzee有点少,
因为基本是手工针对的一些简单绕过,没有做太多是后头有原因的。
fuzz的payload
%20and%201--+
%20and%201#
%20or%201#
%20or%201--+
union%20select--+
union%20select%20f--+
unIon%20sElEct%20
unIon%20%28select%29from
and%20if(1=0,1,%20sleep(10))%20--+
procedure%20analyse%281,1%29
%20and%20sleep%281%29
%20and%20benchmark%281000000, md5%28'1'%29%29,'2'%29--+
拦截绕过
第一处探测出来需要的规则,是union slect+任意字符(空格除外)会拦截
(类似union%20select%20【不管跟什么都拦截】),这里通过fuzz,发现select添加括号改为
(select)绕过了waf
第二处探测出来的规则是sleep,benchmark被Ban了。这一块先不管,做时间盲注用的函数ban了绕过姿势也多。实在不
行还可以试试bool,内容有点多就先不忙fuzz。
这里绕过了,既然我们猜测可能是limit类型的注入,就继续绕payload{union select username
from users}麻了,这waf有点垃圾,直接过完了。但是还是报错了。抽根烟冷静一下,或许是存
在order by所以不能用union呢,虽然报错对不上,但是奇葩开发确实多,有些自己写异常的。
那就更换payload,换一个order by 下的
其他的地方先不管吧,改改sqlmap的tarper先泡一下,看看payload,毫无疑问,又失败了,那继续
手工测试着先。ps(sqlmap探测的时候,可能这tamper用不上,所以还需要自己再
改改前面的,这里就不多说了)上面截图有些时候%20的空格没加上,所以不要太纠结截图中的payloa
迷茫 特别迷茫,当然也有可能是我们一开始猜测错了,不是oder by的。但是如果是其他的union
可能是能打的。再试试其他的把。试一下盲注。还是没有
这时候开始怀疑人生了。是不是忽略漏了一点东西,从新来判断一下这里究竟能不能注入。
ps:一开始判断能注入的原因不是因为工具报错了,而是插入了字符串,而后端也报错了,java的站,没有做强制类型转换的话,大概率是可以尝试注入的,如果是报错了String转换为int失败就直接放弃。所以到这里还是觉得,能带入字符串,所以存在注入。而没有考虑预编译的原因是一开始觉得在limit注入,预编译是不能处理的。
这时候我添加了一个字符串开头的带入page,爆了错误说未定义的变量,人更加迷茫了,我这里定义了什么龟龟。
查询了很多无果,就说了这里变量未定义。先放一下把,继续看。传入了一个正常的数字开头,就爆了在这个东西。擦,这个解析有点奇怪
试一下 1+1 1-1一类的payload
麻了,大概率是被预编译了,带进去了。不信邪,在kali试试这种是否被预编译直接带进去了。
被预编译了,还开始fuzz了半天。结果等于0。所以说这是一次失败的注入探测。但是整个发现的过程,还是记录一下提醒自己。才开始本来以为是有的,打算好好写一篇waf绕过的文章,但是这里又没有注入,等以后有机会再写吧。
戳“阅读原文”体验免费靶场! 原文始发于微信公众号(合天网安实验室):记一次注入绕过之绕了个寂寞
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论