目录

一、漏洞扫描注意问题

误报和漏报

漏扫对目标系统的影响

1、Web 漏洞的漏洞验证

2、SQL

01- SQL注入原理与概念

SQL 注入的手法选择

SQL 注入漏洞的判断

*SQL 注入流程

DVWA中SQL注入探讨

技巧:

利用联合查询获取cas后台管理员账号密码

1. 基础知识

2. 判断列数

表名

获取字段内容

 


一、漏洞扫描注意问题

误报和漏报

误报:原来漏洞不存在,但是报告漏洞存在。

漏报:原来漏洞存在,但是未报告。

 

误报和漏报都是客观存在的,使用的漏洞库里的脚本去匹配系统返回的信息。

解决方法:手工验证。

 

结构化查询语言(Structured Query Language ,SQL),是⼀种特殊的编程语言,用于数据库的标准数

据查询。作为关系型数据库系统的标准语言。

注:不过各种通的数据库系统在其实践过程中都对SQL 规范做某些编改和扩充。所以,实际上不同数据库

系统之间的SQL 不能完全相互通

 

漏扫对目标系统的影响

 

无论是哪种类型的扫描都会对目标系统造成伤害。(切记在扫描的是时候要取得同意)

 

1、Web 漏洞的漏洞验证

核心思路:

由于Web 漏洞发生在Web 服务器上,整个Web 服务的通信是HTTP协议,所以,漏洞验证过程就是观察漏洞扫描工具发送的HTTP 请求包与响应包。请求包中包含漏扫工具提交请求的测试数据,主要关注:请求页面、请求参数、相应包中包含服务器的响应信息,也是漏洞存在的证明。

2、SQL

 

SQL注入(SQL injection)是一种常见的WEB 安全漏洞。攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击。

 

01- SQL注入原理与概念

漏洞原理:

程序员在处理程序和数据交互时,使用字符串拼接的方式构造SQL语句。

未对用户可控参数进行足够的过滤,便将参数内容拼接到SQL语句中。

 

注入点可能存在的位置:

根据SQL注入漏洞原理,Web 应用获取用户输入的地方,只要带入数据库查询,都有存在SQL注入的可能。

这些地方通常包括:

  • GET 数据
  • Post 数据
  • Cookie 数据
  • Http头部 (头部中的其他字段)

......

漏洞危害:

☻ 攻击者可以利用SQL 注入漏洞,可以获取数据库中的多种信息(例:管理员账号、密码),从而脱取数据库中的内容(脱库)。

☻ 在特别的情况下还可以修改数据库内容、插入内容到数据库或者删除数据库的内容。

☻ 如果数据库权限分配存在问题,或者数据库本身存在缺陷,攻击者可以利用SQL 注入漏洞读写文件,读取敏感文件或上传恶意文件。

☻ 利用数据库提权直接获取webshell 或者服务器权限。

SQL 注入漏洞的分类

根据不同的标准,SQL注入漏洞可以有不同的分类。

从数据类型分类,SQL注入分为两大基本类。

 

☻ 数字型

拼接到SQL 语句中的参数,是以数字出现的,即参数两边没得单双引号。

 

☻ 字符型

拼接到SQL 语句中的参数,是以文本出现的,即参数两边有单双引号。

 

☻  注入手法:(SQLmap)

  联合查询(Union Query SQL Injection)

报错注入(Error-Based SQL Injection)

布尔盲注()

延时注入()

  堆叠查询()

 

SQL 注入的手法选择

据库中的内容是否回显在网页中

 

SQL 注入漏洞的判断

1. id 参数+1、-1 判断是否有回显?

?id=4

?id=3

?id=5

当变化 id 参数的值的时候,数据库中的内容回显在网页中。

2. 添加单引号【'】,判断数据库是否有报错

?id=5

?id=5'

 

3. 根据报错信息判断输入的数据是字符型还是数字型?

字符型就意味着参数左右两边有引号(单引号和双引号)

数字型就意味着数字参数左右两边没有引号。

关于引号的闭合

【?id=5' and 1=10000 --+】

 

4. 是否会回显报错信息?

考虑报错注入

 

5. 判断是否有布尔类型状态?

【?id=5' and 1=1 --+】

【?id=5' and 1=2 --+】

 

6. 判断是否有延时?

【?id=5' and sleep(5)--+】

 

*SQL 注入流程

数据库的名字--- 》》表的名字 ---》》字段(列)的名字---》》 字段内容

 

DVWA中SQL注入探讨

LOW 初级 代码审计

存在SQL注入漏洞

 

 

 

 

技巧:

 

 

 

 

 

 

利用联合查询获取cas后台管理员账号密码

1. 基础知识

union select

保证两个 select 语句查询的虚拟表具有相同的列数。

【弱化】相同的列,具有相同的数据类型。

跨库跨表查询。

2. 判断列数

 ?id=5' order by 1 --+ 正常

?id=5' order by 2 --+ 正常

?id=5' order by 3 --+ 错误

说明:程序中的 SQL 语句有 2

提示报错 说明只有15

 

数据库的名字

?id=35 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,database(),12,13,14,15

表名

 

 

:cms_article,

cms_category,

cms_file,cms_friendlink,

cms_message,

cms_notice,

cms_page,cms_users

获取字段名

注 :userid,  username,  password

获取字段内容

 

 

更多推荐

数据库安全 --漏洞扫描注意问题/SQL注入漏洞