架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 1719|回复: 1

使用 SQLMAP 渗透工具 SQL 注入测试

[复制链接]
发表于 2023-6-17 11:10:55 | 显示全部楼层 |阅读模式
需求:使用 sqlmap 开源渗透测试工具来测试网站接口是否存在注入风险。SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。简单来说,就是后端接口通过请求的参数来拼接执行 SQL 语句

回顾:

EF 6 执行原生 SQL 语句,参数注入问题
https://www.itsvse.com/thread-10610-1-1.html

EF Core 系列(五)执行 SQL 语句或者视图、存储过程
https://www.itsvse.com/thread-9565-1-1.html

c#参数化Parameters利用sp_executesql执行sql语句
https://www.itsvse.com/thread-3111-1-1.html

SQL注入天书 - ASP注入漏洞全接触
https://www.itsvse.com/thread-2305-1-1.html

sqlmap 是一种开源渗透测试工具,可自动执行检测和利用 SQL 注入漏洞以及接管数据库服务器的过程。它配备了强大的检测引擎、终极渗透测试器的许多利基功能,以及范围广泛的开关,包括数据库指纹识别、从数据库中获取数据、访问底层文件系统以及通过输出在操作系统上执行命令带外连接。

sqlmap 开箱即用,适用于任何平台上的Python 2.6、2.7和3.x版

sqlmap 环境搭建

Python 下载:https://www.python.org/ftp/python/3.11.4/python-3.11.4-amd64.exe

QQ截图20230617095736.jpg

SQLMAP 开源地址:https://github.com/sqlmapproject/sqlmap
SQLMAP 命令文档:https://github.com/sqlmapproject/sqlmap/wiki/Usage

首先,电脑需要安装 Python(略),然后使用 git 命令将源码下载下来,命令如下:

QQ截图20230617095712.jpg

Options(选项):

-h, --help          显示基本帮助信息-----Show basic help message and exit
-hh                 显示高级帮助信息-----Show advanced help message and exit
--version           查看版本号-----------Show program's version number and exit
-v VERBOSE          详细等级(0-6,默认1)--Verbosity level: 0-6 (default 1)

Target(目标):

以下至少需要设置一个选项,才能确定目标url,即:SQLMap操作命令中需要包含以下至少一个选项,才能正常使用

-d DIRECT           直接连接到数据库-------------------Connection string for direct database connection
-u URL, --url=URL   测试的目标url---------------------Target URL (e.g. "http://www.site.com/vuln.php?id=1")
-l LOGFILE          从Burp等代理的日志文件中解析目标----Parse target(s) from Burp or WebScarab proxy log file
-x SITEMAPURL       从远程站点地图(.xml)文件中解析目标--Parse target(s) from remote sitemap(.xml) file
-m BULKFILE         扫描文本文件中设置的多个目标--------Scan multiple targets given in a textual file
-r REQUESTFILE      从文件中加载HTTP请求---------------Load HTTP request from a file
-g GOOGLEDORK       处理Google dork的结果作为目标url---Process Google dork results as target URLs
-c CONFIGFILE       从ini配置文件加载选项--------------Load options from a configuration INI file

Request(请求):

以下选项用来指定连接目标url的方式

--method=METHOD     强制使用给定的HTTP方法------------------Force usage of given HTTP method (e.g. PUT)
--data=DATA         使用POST方法发送数据串------------------Data string to be sent through POST
--param-del=PARA..  设置分隔参数值的符号--------------------Character used for splitting parameter values
--cookie=COOKIE     指定HTTP Cookie值----------------------HTTP Cookie header value
--cookie-del=COO..  设置分隔cookie值的字符------------------Character used for splitting cookie values

使用 Sqlmap 对一个注入点进行测试时,可以使用 -v x 参数指定回显信息的复杂度,x范围为[0~6],共有 7 个等级,默认为 1。

0:只显示python错误以及严重的信息。
1:同时显示基本信息和警告信息。(默认)
2:同时显示debug信息。
3:同时显示注入的payload。
4:同时显示HTTP请求。
5:同时显示HTTP响应头。
6:同时显示HTTP响应页面。

ASP.NET Core 注入环境搭建

使用 ASP.NET Core 新建一个 web 项目,写一个存在注入的接口,源码如下:


测试接口:

QQ截图20230617105713.jpg

常用渗透测试

枚举DBMS数据库

并且使用 SQL Server Profile 对执行 SQL 进行抓包,如下图:

QQ截图20230617101026.jpg

select * from [Users] where [Username] = 'itsvse' UNION ALL SELECT NULL,NULL,CHAR(113)+CHAR(98)+CHAR(122)+CHAR(118)+CHAR(113)+(SELECT name FROM master..sysdatabases FOR JSON AUTO, INCLUDE_NULL_VALUES)+CHAR(113)+CHAR(113)+CHAR(118)+CHAR(120)+CHAR(113)-- yHIm'

QQ截图20230617110252.jpg

枚举指定数据库的表

命令如下:

QQ截图20230617110458.jpg

对于复杂的 HTTP 请求,可以通过 -r 参数(从文件加载 HTTP 请求,使用 Burp Suite 工具抓包 HTTP 请求)来执行命令,从文本文件加载原始 HTTP 请求。这样您就可以跳过许多其他选项的使用(例如 cookie 的设置、发布的数据等)。

sqlmap 很强大,更多高级的功能请查阅文档。(完)




上一篇:EF 6 执行原生 SQL 语句,参数注入问题
下一篇:【转】MySQL 进阶:optimize table 命令
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2023-6-17 11:21:41 | 显示全部楼层
改成如下,将不存在 sql 注入风险:

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-11-8 00:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表