SQL注入分析---(原理、危害、防御、应急响应)

2024-05-08 03:44

本文主要是介绍SQL注入分析---(原理、危害、防御、应急响应),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、攻击原理

漏洞成因可以归结为以下两个原因叠加造成的:1)程序编写者在处理应用程序和数据库交互时,使用字符串拼接的方式构造SQL语句;2)未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL语句中。

2、危害影响

1、攻击者可能利用SQL注入漏洞篡改网页数据,窃取用户数据,植入WebShell,甚至可能获取业务系统服务器账号权限等。

3、防御方法

1.使用参数检查的方式,拦截带有SQL语法的参数传入应用程序

2.使用预编译的处理方式处理拼接了用户参数的SQL语句(推荐!)

3.在参数即将进入数据库执行之前,对SQL语句的语义进行完整性检查,确认语义没有发生变化

4.在出现SQL注入漏洞时,要在出现问题的参数拼接进SQL语句前进行过滤或者校验,不要依赖程序最开始处防护代码

4、研判思路

1、判断是否为规则误报

 1)基于漏洞特征检测:查看是否在请求中包含明文或转义/转码后的数据库执行语句,比如:select、where等

 2)排除业务导致的误报:需要排除部分业务系统不规范导致的误报情况,比如:业务请求中包含select等字段时的误报

2、判断是否为恶意行为

 1)需要确认是否为分析和研究人员的测试行为;

 2)需要排除是否为内网已授权漏洞扫描器的扫描行为

3、判断是否攻击成功

 1)如果来源IP为内网,则说明内网已存在失陷服务器,可以认为攻击成功,该告警的处置优先级高;

 2)如果来源IP为外网,返回值中包含攻击者已执行成功/获取到有效信息,则认为是攻击成功。

5、应急响应-事中处置

1、已失陷主机

 1)隔离和处置失陷机器:及时联系机器负责人,对感染的机器采取断网操作,并且修改相关账户的口令,下载杀毒软件或者专杀软件进行清除;

 2)内部通告和培训:及时进行内部通告和培训,增强企业员工安全意识,对不明邮件附件和不明站点可疑连接谨慎点击访问,从正规渠道下载程序,不安装来自不明来源的应用程序;

 3)端口限制:根据业务情况,在不影响的情况下可选择在安全策略中限制如下端口,3306(MYSQL)、1521(ORACLE)、1433(SQL SERVER)、5432(PG)、6379(REDIS)、9200(ES)

 4)漏洞修补:对存在漏洞的主机进行安全漏洞修复,及时对设备系统进行安全更新和应用安全补丁更新

2、已失陷账户

 1)修改密码:建议采用数字、符号及大小写字母混合的方式,设置8位以上的密码;

 2)账户封禁

 3)账户权限收回

3、外部攻击遏制

 1)封禁IP:在防火墙上配置IP黑名单,封堵攻击源主机

6、应急响应-事后加固

 1)更新网络安全管理措施:根据该事件中暴露的问题,针对性修订完善网络安全管理制度,做好攻击预警和处置,同时对攻击事件进行复盘,并更新网络安全突发事件应急预案;

 2)加强网络安全隐患修补:在消除该事件攻击影响的情况下,开展网络安全隐患排查和修补。例如,在权限管理方面,重点排查弱口令、账户权限、口令更新和共用等问题;在漏洞修补方面,及时更新系统、软件、硬件等漏洞补丁;

 3)自动化封禁:使用SOAR或其他自动化手段将此类告警外网源IP在第一时间进行边界防火墙的封禁;

 4)保持网络安全设备特征库更新:日常运维过程中需要保持特征库为最新版本

这篇关于SQL注入分析---(原理、危害、防御、应急响应)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/969216

相关文章

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r