漏洞成因
主要是开发人员在构建代码时,没有对输入边界进行安全考虑,导致攻击者可以通过合法的输入点提交一些精心构造的语句,从而欺骗后台数据库对其执行,导致数据库信息泄漏的一种漏洞。
防范措施
代码层面
1.对输入进行严格的转义和过滤
2.使用预处理和参数化(Parameterized )
网路层面
1.通过WAF设备启用防SQL Inject注入策略(或类似防护系统)
2.云端防护(360网站卫士,阿里云盾等)
攻击流程
第一步:注入点探测
自动方式:使用web漏洞扫描工具,自动进行注入点发现
手动方式:手工构造sql inject测试语句进行注入点发现
第二步:信息获取
通过注入点取期望得到的数据。
1.环境信息:数据库类型,数据库版本,操作系统版本,用户信息等。
2.数据库信息:数据库名称,数据库表,表字段,字段内容(加密内容破解)
第三步:获取权限
获取操作系统权限: 通过数据库执行shell,上传木马
注入步骤
-
判断是否存在注入点
-
判断注入点类型
数字型
select username,password from user where username !='flag' and id = 'x' limit 1;
1 正