记一次注入绕过之绕了个寂寞

admin 2021年11月9日18:20:50评论51 views字数 2135阅读7分7秒阅读模式
前面就不先多说了,主要是记录一个从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%20unIon%20%28select%29fromand%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 usernamefrom 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绕过的文章,但是这里又没有注入,等以后有机会再写吧。


记一次注入绕过之绕了个寂寞
“阅读原文”体验免费靶场!

原文始发于微信公众号(合天网安实验室):记一次注入绕过之绕了个寂寞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年11月9日18:20:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次注入绕过之绕了个寂寞https://cn-sec.com/archives/623803.html

发表评论

匿名网友 填写信息