代码审计——SQL注入详解

news2024/11/16 9:37:10

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓

    • 01 漏洞描述
    • 02 审计要点
    • 03 漏洞特征
    • 04 漏洞案例
    • 05 修复方案

01 漏洞描述

当应用程序将用户输入的内容,拼接到SQL语句中,一起提交给数据库执行时,就会产生SQL注入威胁。攻击者通过控制部分SQL语句,可以查询数据库中任何需要的数据,利用数据库的一些特性,甚至可以直接获取数据库服务器的系统权限。

简单来说就是用户输入的内容拼接到SQL语句中,当当前数据库权限为低权限时可以进行查数据,如果时高权限就可以根据数据库特点写文件、执行命令获取数据库服务器权限等。

在这里插入图片描述

02 审计要点

SQL注入漏洞发生的根本原因是"用户可控的"、”未经净化“的数据直接拼接至SQL语句中进行执行。“用户可控数据”可能来源于http请求、数据库、Http Header或cookie等。

当判断代码中是否存在SQL注入漏洞时,可从以下4点进行判断:

1、参数是否用户可控?如参数的来源是来自于用户输入的http请求,某功能点为检索功能,检索的关键字需要用户自行输入等。

2、是否使用了预编译?预编译是指在将数据传入SQL语句前明确指定传输数据的类型,以执行必要的转换。

在Java中预编译的调用方式为prepareStatement。在mybatis框架中,使用#{}进行预编译,在ibatis框架中使用#param#进行预编译。

3、是否存在SQL语句拼接?尤其注意某些特殊的查询难免用到SQL语句拼接,遇到这种情况,就需要检查拼接是否有可能导致注入。

4、是否存在全局参数过滤器?检查过滤器的配置,是否所有的SQL查询请求都经过过滤器处理,过滤器的过滤规则是否符合安全要求?

03 漏洞特征

SQL注入产生的根本原因就是将“未经净化”的数据“拼接”进入SQL语句中,然后提交进入数据库获得执行结果。

若参数可控,那么就可确定漏洞的存在,若参数不可控,那么拼接参数的SQL语句编写方式也会存在风险,属于不规范的编码,可进行风险提示。

Java

如下代码是根据用户名查询用户收支情况的一条数据库查询语句,存在SQL注入安全风险,其中user_name参数来自未经任何处理的HTTP请求:

String query = "SELECT account_balance FROM user_data WHERE user_name = ‘"
     + request.getParameter("customerName")+"’"; 
try {
    Statement statement = connection.createStatement();
    ResultSet results = statement.executeQuery( query );
}

攻击者通过控制http请求中的customerName参数值来对Web服务器进行SQL注入攻击。

Java(jdbc)

HttpServletRequest request, HttpServletResponse response) {
JdbcConnection conn = new JdbcConnection();
final String sql = "select * from product where pname like '%"
		+ request.getParameter("pname") + "%'";
conn.execqueryResultSet(sql);

Java(ibatis)

<select id="unsafe" resultMap="myResultMap">
select * from table where name like '%$value$%'
</select> 
UnSafeBean b = (UnSafeBean)sqlMap.queryForObject("value", request.getParameter("name"));

PHP

$sql = "select * from product where pname like '%"
		.$_REQUEST["pname"] . "%'";
mysqli_query($link,$sql);

04 漏洞案例

在这里插入图片描述

在代码中搜索“select”或“from”或者“where”等字符,搜索出所有的与数据库操作相关的代码,查看是否存在拼接参数的情况。

在这里插入图片描述

搜索“from",分析SQL语句,对于拼凑SQL,疑似SQL注入的地方提高警惕。

在这里插入图片描述


查找相应类的相应方法调用,确定传入的id参数未经转义或任何过滤处理,可确定此处存在SQL注入。搭建环境,爆破用户名成功验证SQL注入漏洞真实存在,如下图所示:

在这里插入图片描述

05 修复方案

SQL注入产生的根本原因就是将“未经净化”的数据“拼接”进入SQL语句中,然后提交进入数据库获得执行结果。修复可以从以下几个方面去考虑:

1、对用户输入的特殊字符进行严格过滤,如’、”、<、>、/、*、;、+、-、&、|、(、)、and、or、select、union。

2、使用参数化查询(PreparedStatement),避免将未经过滤的输入直接拼接到SQL查询语句中。

3、Web应用中用于连接数据库的用户与数据库的系统管理员用户的权限有严格的区分(如不能执行drop等),并设置Web应用中用于连接数据库的用户不允许操作其他数据库。

4、设置Web应用中用于连接数据库的用户对Web目录不允许有写权限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/655576.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录训练营Day60|84. 柱状图中最大的矩形

84. 柱状图中最大的矩形 class Solution {public int largestRectangleArea(int[] heights) {int res0;// 数组扩容&#xff0c;在头和尾各加入一个元素int [] newHeights new int[heights.length 2];newHeights[0] 0;newHeights[newHeights.length - 1] 0;for (int index…

Docker desktop 怎么切换docker源

点击setting&#xff0c;点击docker Engine 进行编辑 {"registry-mirrors":["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://4jup2u41.mirror.aliyuncs.com","https://docker.mirrors.ustc.edu.cn&q…

校园预付费管理系统与水电计量设备仪表的实际应用 安科瑞 许敏

摘要&#xff1a;论文设计了适用于学生公寓的自助式预付费控电控水管理系统&#xff0c;采用多种智能功能&#xff0c;可以监测和显示漏电现象&#xff0c;通过短路、跳线、零线接地等方式防范和记录用户的偷电行为&#xff0c;通过报警和拉闸防止事故的发生。该系统采用先进的…

霍夫变换原理

文章目录 霍夫变换原理当点都在y轴上时&#xff0c;用ykxb形式是无法求出参数空间中的交点&#xff0c;也就是累计都一样。所以就用极坐标来表示参数空间。公式求证过程 霍夫变换原理 当点都在y轴上时&#xff0c;用ykxb形式是无法求出参数空间中的交点&#xff0c;也就是累计都…

linux服务器安装nodejs

注意&#xff1a; 本文针对的是有linux操作基础&#xff0c; 会使用vim的基本操作的同学。故有些很基础的东西没有赘述&#xff0c;如果是纯小白的同学&#xff0c;看起来可能会感觉缺失一些东西。 1.nodejs官网下载自己需要的版本的node node版本选择下载地址 我使用的是14.…

图像边缘检测原理

文章目录 图像边缘检测原理1:2:3:基本边缘检测算子 图像边缘检测原理 1: 图像的边缘指的是图像中像素灰度值突然发生变化的区域&#xff0c;如果将图像的每一行像素和每一列像素都描述成一个关于灰度值的函数&#xff0c;那么图像的边缘对应在灰度值函数中是函数值突然变大的…

Autoware 安装(踩坑指南)

Autoware 安装&#xff08;踩坑指南&#xff09; 【Autoware】2小时安装Autoware1.13&#xff08;保姆级教程&#xff09; Autoware入门学习&#xff08;二&#xff09;——Ubuntu18.04下的源码安装和配置 上面的两篇博客安装都异常顺利&#xff0c;甚至没有一点报错&#xff0…

AMEYA360代理线:艾睿红外热成像仪数据机房监测应用

数据信息时代&#xff0c;数据机房是企业重要的区域。近日某购物平台发生的数据机房宕机事故&#xff0c;引发关注。机房设备温度异常&#xff0c;使得系统崩溃&#xff0c;经济损失超亿元。红外热成像仪作为一种非接触式、精准度高、可视化的温度测量工具&#xff0c;为数据机…

【MyBatis 神级框架】从入门到进阶

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 1. 什么是 MyBatis 1.1 为什么要学MaBatis&am…

TikTok正测试AI聊天机器人Tako

该功能可以“从根本上改变应用程序中的搜索和导航” 原文链接&#xff1a;TikTok tests AI chatbot called Tako – The Verge TikTok正在测试一个名为Tako的AI聊天机器人&#xff0c;根据与The Verge共享的功能截图&#xff0c;它可以根据人们的问题推荐视频。 如果TikTok最…

总结:公有云产品之CDN

一、介绍 由于公司经常提供CDN相关概念&#xff0c;本文特地总结下。 二、产品说明 百度云的内容分发网络CDN是一款基于互联网的分布式服务平台&#xff0c;可以加速网络上的内容分发和传输&#xff0c;提高网络的稳定性和访问速度。 CDN主要通过将网站的静态和动态资源缓存…

读书笔记-《ON JAVA 中文版》-摘要17[第十七章 文件]

文章目录 第十七章 文件1. 文件和目录路径1.1 选取路径部分片段1.2 路径分析1.3 Paths的增减修改 2. 目录3. 文件系统4. 路径监听5. 文件查找6. 文件读写7. 本章小结 第十七章 文件 在丑陋的 Java I/O 编程方式诞生多年以后&#xff0c;Java终于简化了文件读写的基本操作。 在 …

手机APP测试流程规范模板

一、流程图 二、测试周期 9.25-10.5 1、测试资源 测试任务开始前&#xff0c;检查各项测试资源。 1.1、产品功能需求文档 1&#xff09;产品原型图 2&#xff09;产品效果图 3&#xff09;行为统计分析定义文档 4&#xff09;测试设备&#xff08;Android4.1-Android4.…

OWASP 之跨站脚本xss基础技能

OWASP 之跨站脚本xss基础技能 一.XSS概述二.漏洞危害三.XSS漏洞绕过方法1.手工测试XSS步骤2.常见xss3.绕过方法 四.xss防御方法a.CSP内容安全策略b.HttpOnlyc.输入输出检查d.使用防御函数 五.pikachu靶场1.反射型XSS&#xff08;get&#xff09;2.反射型XSS&#xff08;post&am…

PS如何把多张图片拼接到一张?

现在有多张图片如下 &#xff0c;如何拼接成为1张呢&#xff1f; 打开ps&#xff0c;在ps里面点击文件->自动->联系表。 在弹出来的联系表对话框中&#xff0c;点击选取&#xff0c;选择要拼接的图片。 选择好图片之后&#xff0c;设置宽度高度&#xff0c;宽度的话&…

List Label 28.003 2023 Crack

列表和标签 28.003 在 Web 报表设计器中添加新的图表类型&#xff0c;并支持 Embarcadero RAD Studio 11.3。 6月 16&#xff0c; 2023 - 16&#xff1a;38 新版本 特征 .NET 所有可用的 NuGet 包现在都有一个特殊的企业包和 ID&#xff0c;以确保包都来自一个包源&#xff0c;…

GeneGPT:用领域工具增强大型语言模型,以改善对生物医学信息的访问

文章目录 一、论文关键信息二、主要内容1. Motivations2. 解决方案关键3. 实验和结果 三、总结与讨论 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、论文关键信息 论文标题&#xff1a;GeneGPT: Augmenting Large Language Models with Domain …

代码审计——垂直越权详解

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 漏洞描述02 审计要点03 漏洞特征04 漏洞案例05 修复方案 01 漏洞描述 垂直越权&#xff0c;也称权限提升&#xff0c;是一种“基于URL的访问控制”设计缺陷引起的漏洞。 由于Web应用程序没有做权…

2023开放原子全球开源峰会——Intel专题探访

浩瀚宇宙&#xff0c;有光&#xff0c;朝着未来之境&#xff1b;万物之始&#xff0c;有道&#xff0c;启示智慧共荣&#xff1b;在多维赋能的时空里&#xff0c;见微知著&#xff0c;开放共享 &#xff0c;包罗万象&#xff1b;在抵达终点的路途中&#xff0c;彼此陪伴&#x…

《Java核心卷1》怎么样?读1,2章草记 | 第12版

文章目录 《Java核心技术卷 一》第一章 概述第二章 Java编程环境 图书推荐 《Java核心技术卷 一》 第一章 概述 前言&#xff1a;本书与一些”0基础入门“的书定位感觉是不太一样的&#xff0c;可能就像书名所说&#xff0c;是”核心技术“叭。书中经常将Java语言与 c 进行对比…