WEB漏洞—SQL注入之SQL注入漏洞

目录

SQL注入

什么是SQL注入漏洞

SQL注入原理

SQL注入本质:

两个条件:

注入过程:

SQL注入危害

SQL注入示例

直接将前台动态参数拼接入SQL语句中。攻击者可以构造出恶意的SQI语句进行其他操作

判断一个HTTP请求是否存在SQL注入的方式

经典:

数据库函数:

特殊符号:

SQL注入分类

注入类型

SQL注入分类:

数字型注入:

字符型注入

搜索型注入

造成SQL注入原因:

(1)动态字符串构建引起

后台存在的问题

错误处理不当:

不安全的数据库配置:

SQL注入过程:

自动化注入工具:

(1)、SQL注入工具:

(2)、ASP\JSP注入工具:

(3)、PHP 注入工具

常用SQL注入工具:

BSQL Hacker

The Mole

Pangolin

Sqlmap

Havii

Safe3 SQL Injector

SQL Poizon

手工注入过程

寻找SQL注入点:

GET方法

POST方法

其它注入点数据

总结

只要后台接收前端输入的数据,并且未对数据进行过滤处理,最后直接进入到数据库中,从而都能构成威胁。

SQL注入

什么是SQL注入漏洞

攻击者利用Web应用程序对用户输入验证上的疏忽,在输入的数据中包含对某些数据库系统有特殊意义的符号或命令,让攻击者有机会直接对后台数据库系统下达指令,进而实现对后台数据库乃至整个应用系统的入侵。

SQL注入原理

SQL注入攻击的本质,服务端没有过滤用户输入的 恶意数据,直接把用户输入的数据当成SQL语句执行,从而影响数据库安全和平台安全

SQL注入本质:

对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分执行

两个条件:

用户能够控制输入

原本程序要执行的SQL语句,拼接了用户输入的恶意数据;

注入过程:

SQL注入危害

绕过登陆验证:使用万能密码登录网站后台等。

获取敏感数据:获取网站管理员账户、密码等。

文件系统操作:列目录、读取、写入文件等

注册表操作:读取、写入、删除注册表等;

执行系统命令:远程执行命令;

SQL注入示例

直接将前台动态参数拼接入SQL语句中。攻击者可以构造出恶意的SQI语句进行其他操作

SELECT username, password FROM users WHERE username='+username+"AND elord(密码)='" + password +';

通过在用户名处传入下列参数进行万能密码登录

' or 1=1 #
SELECT username, password FROM users WHERE username='textvalue' or 1=1 #'elord(密码)='textvalue2';
  • 输入字符:

formusr=' or 1=1 - -

formpwd=anything

  • 实际的查询代码
SELECT *FROM users WHERE username = ' ' or 1=1 - -AND password='anvthing

判断一个HTTP请求是否存在SQL注入的方式

经典:

and 1=1 | and 2>1 | or 1=1 | 1<1

数据库函数:

and sleep (4)=1 | and length(user())>3

特殊符号:

单引号(')、双引号(")

SQL注入分类

注入类型

  • SQL注入: 攻击者把SQL命令插入到Web表单的输入域或页面请求的查字符串,欺骗数据库服务器执行恶意的SQL命令
  • 命令注入:后端未过滤掉恶意数据,代码当做系统命令执行
  • 密码注入:一般出现在不安全的使用某些函数(例如文件包含、反序列漏洞)
  • DAP注入:LDAP(轻量级目录访问协议),用于访问网络中的目录服务,常用在Activeirectory,企业管理目录。用户提交的输入不经验证插入LDAP搜索过滤器中,攻击者通过提交专门设计的输入修改过滤器的结构,以检索数据或执行未授权操作。
  • XML注入:①、XXE漏洞:引用外部实体时,通过构造恶意内容,导致读取任意文件、护行系统命令、探测内网端口、攻击内网网站等危害。②、XPath注入:与SQL注入类似,XPath解析器本身对URL、表单中提交的代码内容未作严格限制,导致恶意代码可以直接解析执行
  • JSON注入:轻量级的数据交换格式,主要利用特殊字符注入JSON中造成解析失败

SQL注入分类:

数字型注入:

  • 输入的参数为整数,如ID、年龄、页码等,如果存在注入型漏洞,则为 数字型注入
http://www.testweb.com/user.php?id=8
  • 存在数字型注入测试方法
http://www.testweb.com/user.php?id=8//返回错误,未对单引号做处理
http://www.testweb.com/user.php?id=8 and 1= 1//运行正常
http://www.testweb.com/user.php?id=8 and 1= 2//运行异常

字符型注入

  • 输入的参数为字符串
  • 与数组型注入的区别在于:字符型注入一般要使用单引号来闭合
http://www.testweb.com/test.php?user=admin
  • 存在字符型注入测试方法
http://www.testweb.com/user.php?user=admin'//返回错误

http://www.testweb.com/user.php?user=admin'and1'=1//运行正常

http://www.testweb.com/user.php?user=admin'and 1'=2//运行异常

搜索型注入

  • 这类注入主要是指在进行数据搜索时没过滤搜索参数般在链接地址中有“keyword=关键字”,有的不显示的链接地址,而是直接通过搜索框表单提
  • 此类注入点提交的 SQL 语句,其原形大致为:select *from 表名 where 字段 like ’%关键字%‘
  • 当我们提交注入参数为“keyword='and[查询条件] and ’%'='则向数据库提交的SQL语句为:
select * from 表名 where 字段 like '%'and [查询条件] and '%'='%'

造成SQL注入原因:

(1)动态字符串构建引起

  • 不正确的处理转义字符(宽字节注入)
  • 不正确的处理类型(报错泄露信息)
  • 不正确的处理联合查询
  • 不正确的处理错误(报错泄露信息)
  • 不正确的处理多次提交(二次注入)

后台存在的问题

后台无过滤或者编码用户数据

数据库可以拼接用户传递的恶意代码

错误处理不当:

详细的内部错误消息显示给用户或攻击者

错误信息可以直接给攻击者提供下一步攻击帮助

不安全的数据库配置:

默认账户:①、SQLServer“sa”作为数据库系统管理员账户 ②、 MySQL使用“root”和“anonymous”用户账户③、Oracle则在创建数据库时通常默认会创建SYS、SYSTEMS DBSNMP和OUTLN账户

权限:①、问题:系统和数据库管理员在安装数据库服务器时允许以roots SYSTEM或Administrator特权系统用户账户身份执行操作。②、正确方法:应该始终以普通用户身份运行服务器上的服务,降低用户权限,将用户权限只限干本服务

SQL注入过程:

自动化注入工具:

(1)、SQL注入工具:

Sqlmap Havij Sqlid

(2)、ASP\JSP注入工具:

NBSI 阿D注入软件 明小子注入软件

(3)、PHP 注入工具

穿山甲注入软件 海洋顶端注入软件

常用SQL注入工具:

BSQL Hacker

由Portcullis Labs开发,BSQL Hacker是一种自动化SQL注入框架,支持SQL盲注,定时盲注、深度盲注和错误识别盲注。

The Mole

Mole是一个开源工具,能够绕过一些使用普通过滤规则的IPS/IDS系统。通过Union和Boolean查询技术,Mole能够通过一个脆弱的URL或网站的一串字符就能侦查和实施注入。Mole的命令行工具支持攻击MySQL、SQL Server、Postgres和Oracle数据库。

Pangolin

与web安全漏洞扫描器ISky工具出自同一家公司--NOSEC,Pangolin是一个完整的SQL注入测试工具,有一个用户友好的GUI,能够攻击几乎市场上所有的数据库。Pangolin通常被白帽社区用作渗透测试工具。

Sqlmap

号称自动化SQL注入和数据库接管工具,Sglmap是开源工具,支持使用五中SQL注入按术攻击数据库,如果用户拥有DBMS账户、IP地址端口和数据库名称,则可以实施直接攻击。可通过内置的字典攻击用户名密码哈希值。

Havii

Havii是在全球黑帽中非常流行的一个工具,由伊朗开发者开发,Havii在波斯语里是胡萝卜的意思(编者按:暗指男根)。Havij可攻击MySQL、Oracle、PostgreSQL、MSAccess和Sybase,攻击成功率号称有95%。

Safe3 SQL Injector

Safe3 SQLInjector是简单易用的自动化注入工具,可以自动侦测SQL注入漏并进行攻击,直至最后接管数据库。Safe3 SQL还能自动识别数据库类型,并选择最佳的SQL注入方法。

SQL Poizon

Safe3 SQL Injector是简单易用的自动化注入工具,可以自动侦测SQL注入漏洞并进行攻击,直至最后接管数据库。Safe3 SQL还能自动识别数据库类型,并选择最佳的SQL注入方法。

步骤1Havii获取数据库类型与信息

Havij获取数据库cms内的表

步骤2.Havii获取网站管理员账号与密码

步骤3CMD5值破译哈希值

步骤4登陆后台

步骤5篡改文章或主页

步骤6管理数据库

手工注入过程

(1)判断是否存在注入点;

(2)判断字段长度;

(3)判断字段回显位置;

(4)判断数据库信息;

(5)查找数据库名;

(6)查找数据库表:

(7)查找数据库表中所有字段以及字段值:

(8)猜解账号密码:

(9)登陆管理员后台

寻找SQL注入点:

GET方法

  • GET是一种请求服务器的HTTP方法。
  • 使用该方法时,信息包含在URL中
  • 点击一个链接时,一般会使用该方法。

GET请求方法,格式:

?text =valuel&cat=value2&num=value3...

修改方法:

  • 浏览器的导航栏中直接修改即可操纵这些参数
  • HackBar插件

POST方法

  • POST是一种用于向Web服务器发送信息的HTTP方法。
  • 数据信息无法URL中看到
  • 可以发送字节大的数据

修改POST包方法

  • 浏览器修改扩展 (Hackbar)
  • 代理服务器 (Burpsuite)

其它注入点数据

Cookie

Host

User-Agent

总结

只要后台接收前端输入的数据,并且未对数据进行过滤处理,最后直接进入到数据库中,从而都能构成威胁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值