SQL注入 漏洞 入门
0x00 SQL注入 概述
-
当web应用向后台数据库传递Sql语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的Sql语句,直接输入数据库引擎执行,获取或修改数据库中的数据。
-
例如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。
SQL注入 产生原因
SQL注入的产生原因通常表现在以下几方面
-
不当的类型处理;
-
不安全的数据库配置
-
不合理的查询集处理;
-
不当的错误处理;
-
转义字符处理不合适;
-
多个提交处理不当。
0x01 SQL注入 原理
-
用户能控制输入的内容
-
web应用把用户输入的内容,在没经过过滤或者严格过滤的情况下带入到数据库中执行
0x02 SQL注入 分类
SQL注入点根据不同维度可分为:
- 根据 请求方式 分类:
-
GET方式请求注入
-
POST方式请求注入
- 根据 注入点参数 分类
-
整数型注入
-
字符型注入
-
搜索型注入
- 根据SQL注入点反馈类型 分类 (重点 )
-
union类型 → 联合查询
-
基于错误显示 → 报错注入
-
布尔类型 → 布尔盲注
-
基于时间 → 时间盲注
-
其他类型 → 宽字节注入,header注入,base64,url注入,二次注入,堆叠注入等等
- 根据Web应用的数据库类型分类(数据库样式扩充)
-
SQL:MySQL,SQLServer,Oracle,Access
-
NoSQL:mongodb
0x04 SQL注入 危害
-
获取网站数据库存储的数据
-
获取服务器的控制权限
-
获取网站的控制权限
-
网页挂马
0x05 SQL注入 防御
-
严格过滤转义特殊字符
-
强制转换整型
-
屏蔽报错信息
-
站库分离
-
最小化数据库权限
-
统一编码
-
PDO预处理
0x05 万能密码
-
所谓万能密码(logon inject)就是绕过登录验证直接进入管理员后台的密码,这种类型的密码可以通用到很多存在此漏洞的站 所以称之为万能。
-
常见万能密码有:
ASP/ASPX | PHP |
---|---|
'.).or.('.a.'='.a | admin' / |
or 1=1-- | 'or 1=1/ |
'or 1=1-- | "or "a"="a |
...... | ......- |
万能密码的危害
万能密码主要危害是可以在不知道用户密码的情况下,登录到仼意用户,包括管理员用户 。还会直接或间接造成:
-
造成网站数据丢失
-
造成网页被篡改
-
造成网页被挂马
0x06手工注入
手工注入 ( Manual Injection)
SQL注入有很多自动化工具,但是因为自动化工具不足以应对复杂情况,所以需要手动注入。
手工注入和自动化注入区别
自动化注入 是通过使用已经编写好的脚本或者工具进行SQL注入操作,因针对简单环境工具或脚本已经足够注入使用,在注入过程中可以通过工具上的功能模块较方边的进行SQL注入操作。
在什么情况下会使用手工注入
-
在Web存在较复杂的情况下
-
自动化工具和脚本无法成功的进行SQL注入的情况下
手工注入流程
-
判断是否有注入漏洞,识别注入点类型
-
获取数据库中的信息
(1) 获取数据库基本信息(数据库版本、数据库类型、查寻列数等)
(2) 获取数据库名
(3) 获取表名
(4) 获取列名
(5) 获取用户数据
-
破解加密数据 (数据解密)
-
以下内容为注入后配合其他漏洞可能产生的影响:
1. 提升权限 (利用数据库提权上升到系统权限提升)
2. 内网渗透