1、计算机时代 2023年 第12期0 引言网络系统漏洞及各类网络安全问题极大地妨碍了信息系统的正常运行,以致阻碍了人们通过网络获取服务的进程,给计算机的使用带来风险。建设有序、安全的网络环境对研究者是一个实际的挑战。漏洞检测是重要的网络安全技术,通过对信息系统的漏洞检测,可及时掌握信息系统的漏洞和问题,在黑客攻击之前做好加固和防范,这是主动的防御措施,可有效提升信息系统的网络安全性1。SQL注入是一种将SQL代码插入或添加到应用(用户)的输入参数中的攻击,之后再将这些参数传递给后台的SQL服务器加以解析并执行,凡是构造SQL语句的步骤均存在被潜在攻击的风险2。SQL注入漏洞常年占据各类漏洞排行榜
2、前列。如果代码和应用程序存在SQL注入漏洞,攻击者可通过SQL注入访问后端数据库内容、远程执行系统命令,在某些情况下甚至可以控制托管数据库的服务器。根据注入点的不同,SQL注入可分为数字类型的注入、字符串类型的注入、搜索类型的注入等;根据提交方式的不同,SQL注入可分为GET型注入、POST型注入、COOKIE注入、HTTP头注入等3。针对SQL注入安全漏洞的检测和防御是网络安全研究领域的热点之一。目前常见的SQL注入漏洞检测工具包含Sqlmap、The Mole、Pangolin、Sqlsus等软件。1 Sqlmap开源软件介绍Sqlmap软件是一款自动化的SQL注入漏洞检测工具,可用于测试
3、各种数据库注入漏洞,甚至可利用SQL注入漏洞,获取数据库服务器权限。作为国内外著名的渗透测试工具,其由Python写成,具有开源且不断更新的特点,备受业界关注4,5。它支持MySQL、Oracle、PostgreSQL、Microsoft SQL Server、MicrosoftAccess、IBM DB2、SQLite、Firebird 等 30 余种数据库的检测,支持枚举用户、密码、哈希、权限、角色、数据DOI:10.16644/33-1094/tp.2023.12.042Sqlmap在SQL注入漏洞检测中的应用冯红娟(国家图书馆,北京 100081)摘要:网络安全工作日益受到重视,其中S
4、QL注入漏洞检测与修复是当前网络安全领域的一个重要研究方向。文章基于Sqlmap软件对数据库注入漏洞检测展开研究,从Sqlmap安装及使用角度进行详细分析,并提出SQL注入漏洞的防御及加固建议。关键词:Sqlmap软件;SQL注入;数据库注入;漏洞检测;BurpSuite软件中图分类号:TP309文献标识码:A文章编号:1006-8228(2023)12-194-04Application of Sqlmap in SQL injection vulnerability detectionFeng Hongjuan(National Library of China,Beijing 10008
5、1,China)Abstract:Network security has been paid more and more attention,in which SQL injection vulnerability detection and repair is animportant research direction.Based on Sqlmap software,the detection of database injection vulnerabilities is studied,the installationand use of Sqlmap are analyzed i
6、n detail,and suggestions for the defense and reinforcement of SQL injection vulnerabilities areput forward.Key words:Sqlmap software;SQL injection;database injection;vulnerability detection;BurpSuite software收稿日期:2023-08-04作者简介:冯红娟(1983-),女,山东省青州市人,硕士,副研究馆员,主要研究方向:数字资源整合与服务,系统网络安全。194Computer Era No
7、.12 2023库、数据表和列。Sqlmap软件可安装在Windows和Linux操作系统上。因为Sqlmap软件基于Python环境研发,所以第一步需安装配置 Python 环境。第二步,下载并安装Sqlmap。在Sqlmap官网https:/sqlmap.org/,下载最新版Sqlmap安装包,之后进行解压缩即完成安装。本文选用Sqlmap1.7.3,并对基于Sqlmap软件探测MySQL数据库注入漏洞展开详细研究。2 利用Sqlmap软件对SQL注入漏洞进行检测2.1 GET型漏洞检测62.1.1 指定测试目标使用 Sqlmap软件检测 GET型漏洞,实施 SQL注入时,首先需要指定测试
8、目标,也就是检测的链接。使用-u参数进行检测(u即URL的简写),示例:sqlmap.py-u URL地址当检测目标是多个网络链接时,可以将多个链接存储在一个txt文件里,如test.txt,使用-m参数进行检测(m为multiple的简写),示例:sqlmap.py-m test.txt。2.1.2 指定测试目标的爬取深度为收集更多的潜在的可能存在漏洞的链接,可以指定 Sqlmap 的检测深度,使用参数-crawl。示例:Python.py-u URL地址-crawl=5。2.1.3 指定测试等级、测试风险Sqlmap提供了level、risk参数,用来在检测过程中指定测试等级和测试风险。其
9、中,-level用于指定测试等级,可选1-5,默认为1。当参数大于等于2时,会检测cookie,当参数大于等于3时,会检测user-agent和referer;-risk用于指定测试风险,可选0-3,默认为1,会检测大部分的测试语句,2会增加基于事件的测试语句;3会增加or语句进行检测。2.1.4 指定SQL注入技术Sqlmap支持六种SQL注入技术,分别是:基于布尔类型的盲注(boolean-based blind,参数为B);基于时间的盲注(time-based blind,参数为T);基于报错的盲注(error-based,参数为 E);联合查询注入(UNIONquery-based,参
10、数为U);堆查询注入(stacked queries,参数为S)及内联查询注入(Inline queries,参数为Q)。若不指定注入技术,Sqlmap 实施注入时会依次使用以上技术。若对某系统比较熟悉,也可使用参数-technique,指定Sqlmap选用哪种注入方式进行检测,以加快检测进度。示例:sqlmap.py-u URL地址-technique=B。2.1.5 进一步探测数据库信息对于未检测到SQL注入漏洞的情况,Sqlmap软件操作界面会给予提示“all tested parameters do notappear to be injectable”。如软件检测结果提示为“SQLi
11、njectionvulnerabilityhasalreadybeendetected against*”(*即为测试链接),则表明测试目标已被探测到存在SQL注入漏洞,如图1所示。图1Sqlmap探测到数据库漏洞的示意图针对存在数据库注入漏洞的目标,可进一步探测数据库的各类详细信息7,具体包括如下信息:查询数据库用户,使用参数-users,示例:sqlmap.py-u URL地址-users-crawl=3。查询所有数据库,使用参数-dbs,示例:sqlmap.py-u URL地址-dbs-crawl=3。查询数据库用户密码的哈希值,使用参数-passwords,示 例:sqlmap.py-
12、uURL 地 址-passwords-crawl=3,如图2所示,依次枚举用户及密码哈希值,查询到该库root密码为弱口令。根据数据库名,查询数据库表,使用参数-tables,示例:sqlmap.py-u URL地址-tables-D 库名-crawl=3,如图3所示,查询到某库下有5个表,依次枚举5个数据表的名称。根据数据库名、表名,查询所有列名,使用-columns,示例:sqlmap.py-u URL地址-columns-T 表名-D 库名-crawl=3。查询某表所有列的内容,使用-dump allcolumns,示例:sqlmap.py-u URL 地址-dump allcolumn
13、s-T 表名-D 库名-crawl=3。查询指定列的内容,使-cump-C,示例:195计算机时代 2023年 第12期sqlmap.py-u URL 地址-dump-C 列名-T 表名-D 库名-crawl=3。图2查询数据库用户密码哈希值示意图图3查询数据库中表名示意图2.2 POST型漏洞检测SQL注入漏洞除了存在于GET请求中,有时还存在于POST请求中,称为POST型漏洞。针对POST型漏洞,无法直接通过Sqlmap-u进行探测,一般需结合BurpSuite软件,通过BurpSuite抓包,查看请求、获取日志文件,之后借助Sqlmap进行SQL注入探测。2.2.1 安装JDK,安装B
14、urpSuiteBurpSuite软件是一款Web应用程序渗透测试集成平台,包含截包分析、暴力破解、修改包数据、扫描网站等功能8-9。BurpSuite软件由Java语言编写,运行时,依赖Java环境,它通过拦截HTTP、HTTPS协议的流量,以中间人的方式对客户端情况、服务器端返回信息,进行处理,以实现安全检测的目的10。安装BurpSuite 软件,首先需要安装 Java 环境,之后安装BurpSuite安装包。2.2.2 设置BurpSuite代理正常情况使用浏览器访问网站是直接访问,如果需 要 对 请 求 进 行 拦 截,则 需 将 浏 览 器 请 求 传 往BurpSuite,所以需
15、要先设置BurpSuite代理11-12。将浏览 器 的 代 理 服 务 器 设 置 为 BurpSuite,即 默 认 的127.0.0.1:8080。以火狐浏览器为例,首先下载安装浏览器,之后下载安装插件FoxyProxy Standard(下载地址:https:/proxy- 插件按钮,选择相应情景模式。针对HTTPS链接,还需要下载安装CA Certificate证书。2.2.3 通过BurpSuite抓包,获取日志文件BurpSuite 安装成功并完成代理设置后,打开BurpSuite 程序,在栏目“代理”(Proxy)下的“截断”(Intercept)页面,选择拦截请求(Inter
16、cept is on),之后对包含POST请求的网站页面进行操作,可在HTTP历史记录(HTTP history)下查看到相应的POST请求日志,如图 4 所示,可选中一项 POST 请求或者多项图4BurpSuite软件获取POST请求日志示意图196Computer Era No.12 2023POST请求,点击鼠标右键进行保存,如保存为test.txt日志文件,完成日志文件的获取。2.2.4 对日志文件通过sqlmap进行检测Sqlmap提供了参数-r,用于对HTTP请求的日志文件进行检测,r是英文字母request(请求)的首字母。若请求是HTTPS,检测时需要增加参数“-force-
17、SSL”。示例1:检测test.txt日志文件。sqlmap.py-r test.txt示例2:使用快速模式检测日志文件。sqlmap.py-r test.txt-batch示例3:检测日志文件,选用测试等级为5进行快速检测(测试等级越高,检测所需时间越长)。sqlmap.py-r test.txt-level=5-batch3 SQL注入防御及安全加固策略为有效应对SQL注入攻击带来的网络安全威胁,提升系统网站的安全性,建议从以下方面进行考虑。3.1 对网站特殊字符进行过滤将拼接参数修改成预编译的方式,将SQL语句和用户提供的输入数据分开处理。针对服务器端脚本生成的客户端页面,提交的表单或发
18、出的连接请求中包含的变量,必须进行检查13,过滤其中包含的特殊字符,或对字符进行转义处理。严格定义应用程序可接受的数据类型(如:字符串、字母、数字、字符等),验证输入中是否存在不正确的字符。采用这样一种基本思路:使用肯定的定义而非否定的定义;不要向最终用户显示提供可用于策划攻击的信息(如表名);定义受允许的字符集。3.2 加强对应用数据库的权限管理通过对数据库权限的细粒度管理,提升系统安全性,防范SQL注入攻击。如:严禁使用DBA权限作为应用所使用的链接账户,用户角色应遵循最小权限原则。应用所使用的用户关闭执行系统命令、查询系统表功能。当前用户权限完全控制在此应用所使用的数据表范围内。3.3
19、采用加密技术保护数据库中的敏感数据针对数据库中存放的敏感数据,可考虑使用功能强大的加密算法。如针对验证用户身份的口令,不建议存储数据本身,仅存储数据哈希或其他算法加密后的数据。这样攻击者即使查看到存储这些数据的表,也需要对口令哈希进行破解,才能获取真口令,增加攻击者破解口令的难度,提升敏感数据的安全性。3.4 定期对系统进行漏洞检测及安全加固管理员可选用本文推荐的Sqlmap软件或其他检测工具对系统进行渗透测试、漏洞检测,分析网站存在的风险隐患,及时进行漏洞修复、安全加固,加强对系统和数据库日志的监测,化被动为主动,提升网络安全主体意识和工作责任心,加强对信息系统的安全管理。4 小结SQL注入
20、攻击作为一种常见的Web攻击方式,对各机构的网站与信息系统安全工作提出极大挑战。只有从SQL注入漏洞检测、防御、安全加固等多方面采取切实有效措施,才能降低乃至消除SQL注入攻击带来的威胁,避免数据泄露、网页篡改等网络安全事件的发生,保障网站及信息系统的安全性和稳定性。参考文献(References):1 国家电网有限公司.常见网络安全漏洞修复指南M.北京:中国电力出出版社,2018:1-16.2 美Justin Clarke著,施宏斌,叶愫译.SQL 注入攻击与防御M.北京:清华大学出版社,2010:5.3 白鑫玉.SQL 注入攻击检测技术研究D.北京:北京交通大学,2021.4 sqlmap
21、:automatic SQL injection and database takeover toolEB/OL.https:/sqlmap.org/.2023-05-15.5 陈小兵,赵春,姜海,等.sqlmap从入门到精通M.北京:北京大学出版社,2019:1-4,127-136.6 朱振方,张鹏.从实践中学习 sqlmap 数据库注入测试M.北京:机械工业出版社,2022:20-46.7 王琦,白淼.渗透工具SqlMap GET注入使用及原理分析J.计算机安全,2013(6):73-76.8 BurpSuite 超详细安装教程EB/OL.https:/ 渗透利器BurpSuite基本介绍EB/OL.https:/ 网络安全工具-BurpSuiteEB/OL.https:/ BurpSuite-代理和浏览器设置EB/OL.https:/ BurpSuite 配 置 代 理 EB/OL.https:/ sql 注入攻击的防范措施有哪些EB/OL.https:/