易车电子商务专员手册

Similar documents
R D B M S O R D B M S R D B M S / O R D B M S R D B M S O R D B M S 4 O R D B M S R D B M 3. ORACLE Server O R A C L E U N I X Windows NT w w

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S

目錄

untitled

目錄 C ontents Chapter MTA Chapter Chapter

习题1

Microsoft Word - 10 练坤梅.doc

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

SQL Server SQL Server SQL Mail Windows NT

基于UML建模的管理管理信息系统项目案例导航——VB篇

不 知 肉 味 的 用 法 相 同? (A) 長 煙 一 空, 皓 月 千 里 (B) 五 臟 六 腑 裡, 像 熨 斗 熨 過, 無 一 處 不 伏 貼 (C) 兩 片 頑 鐵, 到 他 手 裡, 便 有 了 五 音 十 二 律 似 的 (D) 吾 觀 三 代 以 下, 世 衰 道 微 12. 文

untitled

untitled

untitled

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

PowerPoint Presentation

0SQL SQL SQL SQL SQL 3 SQL DBMS Oracle DBMS DBMS DBMS DBMS RDBMS R DBMS 2 DBMS RDBMS R SQL SQL SQL SQL SELECT au_fname,au_ lname FROM authors ORDER BY

ebook46-23

1. 概 述 1.1 扫 描 对 象 序 号 1 IP 地 址 域 名 1.2 漏 洞 等 级 分 布 风 险 类 型 数 量 高 风 险 1 中 风 险 5 低 风 险 4 信 息 类 4 7% 29% 高 风 险 36% 中 风 险 低 风

数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护

目錄... ivv...vii Chapter DETECT

sql> startup mount 改变数据库的归档模式 sql> alter database archivelog # 打开数据库 sql> alter database open 禁止归档模式 sql> shutdown immediate sql>startup mount sql> al

PowerPoint Presentation

天津天狮学院关于修订2014级本科培养方案的指导意见

DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( ) SQL ( ) DB2 SQL DB2 DB2 SQL DB2 DB2 SQL DB2 ( DB2 ) DB2 DB2 DB2 SQL DB2 (1) SQL (2) S

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

一步一步教你搞网站同步镜像!|动易Cms

Oracle 4

幻灯片 1

untitled

回滚段探究

穨ac3-4.PDF

渗透测试攻击技术之 SQL 注入攻击 亿诚测试 培训教材 Jerry 出品 邮箱

untitled

untitled

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

PowerPoint 演示文稿

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

ebook10-5

教 学 目 标 描 述 主 要 数 据 库 对 象 创 建 表 描 述 列 定 义 时 可 用 的 数 据 类 型 改 变 表 的 定 义 删 除 改 名 和 截 断 表 描 述 每 个 DML 语 句 插 入 行 到 表 中 更 新 表 中 的 行 从 表 中 删 除 行 描 述 约 束 创 建

未命名

A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内

3 Driver do Microsoft Access (*.mdb) hisdata IFIX 1.4

使用SQL Developer

目 录 1 镜 像 环 境 及 使 用 说 明 镜 像 环 境 说 明 镜 像 安 装 说 明 服 务 器 安 全 狗 网 站 安 全 狗 安 全 狗 服 云 MYSQL 数 据 库 密 码 软 件

Oracle高级复制冲突解决机制的研究

Oracle Database 10g: SQL (OCE) 的第一堂課

ChinaBI企业会员服务- BI企业

四川省普通高等学校

untitled

Microsoft Word 電腦軟體設計.doc

01 SQL Server SQL Server 2008 SQL Server 6-1 SSIS SQL Server ( master ) ( msdb ) SQL Server ( master ) master 6-1 DTS sysadmin 6-1 sysa

RUN_PC連載_8_.doc

ASP.NET实现下拉框二级联动组件

劇情大綱 這是有關一對兄妹的故事 不過 所有的情節 必需先從一隻山羊說起 邱興傳 阿傳 在一次部隊的演習中撿到了一隻山羊 沒有烙印記號也 沒人招領 所以退伍時決定把羊帶回家 他攔了一台空的小貨車 央求對方 載他和羊到火車站去 也就在半路上 山羊講話了 山羊說 牠是鬼 卻被一個假裝是鬼的人給騙了 才逼

System Global Area, Oracle Background process Oracle, Server Process user process, user process : SQL*PLUS SYSTEM SQL> select name from v$datafile; NA

ebook45-5

浙江师范大学2014年度毕业生就业质量报告

目 录 监 管 资 讯 2016 年 全 国 保 险 监 管 工 作 会 议 召 开...3 协 会 动 态 赤 峰 保 险 行 业 协 会 召 开 数 据 统 计 和 信 息 宣 传 总 结 表 彰 会 议...5 赤 峰 市 保 险 行 业 协 会 秘 书 处 召 开 2015 年 度 述 职

同 时, 采 取 提 供 新 闻 线 索 和 素 材 安 排 专 访 等 方 式 主 动 为 新 闻 媒 体 服 务, 为 采 访 报 道 活 动 创 造 便 利 条 件 建 设 网 络 信 息 发 布 平 台 2013 年 9 月 开 通 中 央 纪 委 监 察 部 网 站,2015 年 1 月

大陸教育部等6個部門公佈「現代職業教育體系建設規劃 ( 年)」規劃到2015年初步形成現代職業教育體系框架,到2020年基本建成「中國」特色現代職業教育體系

资 讯 速 递 台 基 于 大 数 据 的 学 校 督 导 评 估 系 统 建 设 上 海 市 闵 行 区 人 民 政 府 教 育 督 导 室 ( 摘 要 ) 闵 行 教 育 在 深 化 教 育 改 革 探 索 管 办 评 分 离 的 背 景 下, 把 教 育 督 导 评 估 系 统 建 设 作 为

時間軸上的竹蓮記憶 學務主任 黃雅彙 我不是竹蓮國小的畢業校友 但對於身為新竹人的我來 說 仔細回想起來 似乎和竹蓮有著一種特別的緣分 對竹蓮國小最初的印象是在小學的時候 猶記得年幼的 我經過一段時日的啦啦隊舞蹈訓練後 老師便帶著我們從學 校步行到竹蓮國小來參加比賽 一踏入竹蓮校門 映入眼簾 的是黑

B1

Microsoft Word - 临政办发6.doc

公務員服務法第13條相關解釋彙整表

B1

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

基于ECO的UML模型驱动的数据库应用开发1.doc

Microsoft Word - Web Dynpro For ABAP跟踪测试工具简介 _2_.doc

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2

FileMaker 15 ODBC 和 JDBC 指南

目 录 简 介.3 ` 体 系 结 构...4 数 据 层...5 数 据 连 接 器...6 Tableau Server 组 件...7 网 关 / 负 载 平 衡 器...8 客 户 端 :Web 浏 览 器 和 移 动 应 用 程 序...8 客 户 端 :Tableau Desktop..

2005 3

目录

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持

2 2 3 DLight CPU I/O DLight Oracle Solaris (DTrace) C/C++ Solaris DLight DTrace DLight DLight DLight C C++ Fortran CPU I/O DLight AM

季刊9web.indd

PPBSalesDB.doc

PowerPoint Presentation

掘 金 安 全 数 据 腾 讯 安 全 数 据 运 营 实 践 江 虎 (xti9er)

oracle-Ess-05.pdf

提纲 1 2 OS Examples for 3

《捕捉儿童敏感期》

2 國 文 考 科 試 題 解 析 命 題 出 處 與 南 一 版 第 五 冊 第 二 課 幽 夢 影 選 課 程 內 涵 同 試 題 解 析 某 君 講 信 用, 重 然 諾, 行 事 穩 健, 工 作 負 責 較 符 合 謹 飭 友 謹 飭 友 指 的 是 言 行 謹 慎 而 有 節 制 的 朋

untitled

29 碳 酸 钙 D3 片 ( 别 名 维 生 素 D3 碳 酸 钙 ) 吉 林 省 第 一 批 低 价 药 30 炔 诺 酮 滴 丸 吉 林 省 第 一 批 低 价 药 31 去 氯 羟 嗪 片 吉 林 省 第 一 批 低 价 药 32 茶 苯 海 明 片 吉 林 省 第 一 批 低 价 药 33

untitled

untitled

穨飲食與養老_決定版_.PDF

UFO-用友电子表软件

epub83-1

Microsoft Word 養生與保健_中山大學_講義


萬里社區老人健康照護手冊

Microsoft Word - 強制汽車責任保險承保及理賠作業處理辦法 doc

Microsoft Word - 06.Understanding of Pregnancy and Birth.doc

(➂)11. 炎 炎 夏 日, 即 使 下 起 滂 沱 大 雨, 都 消 除 不 了 令 人 心 煩 的 暑 氣 這 句 話 主 要 想 表 達 什 麼? ➀ 夏 日 裡 經 常 下 著 滂 沱 大 雨, 令 人 心 煩 ➁ 下 著 滂 沱 大 雨 的 日 子, 可 以 消 除 暑 氣 ➂ 夏 日

範本檔

Transcription:

揭开 SQL 注入的神秘面纱 IT 运维中心数据库管理部宋沄剑 2015.5.7

1. APP 将表格发送给用户. 2. 攻击者将带有 SQL 注入的参数 发送给 WEB 服务器. 3. APP 利用用户输入的数据构建 SQL 串. 4. APP 将 SQL 发送给 DB. 5. DB 执行了被注入的 SQL, 返 回结果给 APP. 6. APP 将数据返回给用户. 攻击者 Form User Pass or 1=1-- Firewall Web Server DB Server

SQL 注入? 可信部分 http://www.mysite.com/widget?id= 1 SELECT * FROM Widget WHERE ID = 1 不可信部分

It's not just for SQL

议程 什么是 SQL 注入 SQL 注入的种类 SQL 注入工具如何防范 SQL 注入

什么是 SQL 注入 SQL 注入是一种代码注入技术, 用于攻击基于数据库的应用, 基本原理是将 SQL 语句插入到参数位置执行 SQL 注入通过应用软件的安全漏洞 ( 比如说用户输入的特殊字符没有被转义 或用户输入不是强类型导致意外执行 ) 本质是用户输入作为 SQL 命令被执行

SQL 注入的危害 在数据库层面可以执行权限范围内的任意操作 绕过身份验证机制 读取本不应该读取的信息 ( 传说中的开房库 )( CSDN 明文存用户密码 ) 修改数据库 数据丢失 数据库拒绝服务 ( 由于没有经济利益, 通常黑客不会这么做 ) 入侵数据库所在服务器 ( 通过 xp_cmdshell 提权 ) 损害公司或者产品形象

SQL 注入的现实例子 - 请假条

请假条 - 防注入方法 1- 强类型 ( 参数化 )

请假条 - 防注入方法 2- 特殊字符过滤

议程 什么是 SQL 注入 SQL 注入的种类 SQL 注入工具如何防范 SQL 注入

SELECT 语句注入点 常见 SQL 注入点 SELECT columns FROM table WHERE expression ORDER BY expression 注入点最可能位置 WHERE 之后 ORDER BY 之后 表名称和列名称位置

Insert 语句注入点 插入语句 INSERT INTO table (col1, col2,...) VALUES (val1, val2,...) 要求 插入列数必须和值一致 值数据类型必须和指定列一致 手段 : 不断加输入值, 直道不再报错 foo )-- foo, 1)-- foo, 1, 1)--

Update 注入点 Update 语句 UPDATE table SET col1=val1, col2=val2,... WHERE expression 注入点 SET 子句 WHERE 子句 请小心 Where 子句注入, 黑客在尝试过程就可能导致 : OR 1=1 将会是灾难

基于批处理的 SQL 注入 par=1; SQL query;--

基于 Union 的注入 (Union-Based Injection) 将 Select 合并为一个结果 SELECT cols FROM table WHERE expr UNION SELECT cols2 FROM table2 WHERE expr2 允许攻击者读取任意表 foo UNION SELECT number FROM cc-- 要求 结果集必须是同样的列数和同样数据类型 攻击者必须知道表名称 DB 返回的列名是第一个查询的列名称

基于 Union 的注入 (Union-Based Injection) 使用 NULL 找到列数量 UNION SELECT NULL-- UNION SELECT NULL, NULL-- UNION SELECT NULL, NULL, NULL-- 使用 Order By 找到列数量 ORDER BY 1-- ORDER BY 2-- ORDER BY 3-- 找到哪一列是字符串类型列 UNION SELECT a, NULL, NULL UNION SELECT NULL, a, NULL-- UNION SELECT NULL, NULL, a --

基于 Union 的注入 (Union-Based Injection) col1=1 UNION ALL SELECT query--

基于错误的注入 (Error-Based Injection) http://localhost:12587/default.aspx?id=2 or x=1 永远不要将数据库错误信息在生产环境中返回!!!500 类错误重定向!

推理注入 基于布尔的注入和基于时间的注入统称为推理注入 这是由于应用程序可能不返回对应数据, 所以需要借助这种比较麻烦的办法 确定页面是否可注入 http://site/blog?message=5 AND 1=1 http://site/blog?message=5 AND 1=2 注入方式取决于想象力

盲目注入 (Blind-Based Injection) 注入真假条件, 根据返回内容的不同猜测结果 涉及大量的尝试, 人工完成非常耗时, 通常由工具进行注入 开多线程容易对服务器有损耗 ( 一次某台易车 DB 被注入就是因为 CPU 报警后发现有人开大量线程注入 )

盲目注入 (Blind-Based Injection) 根据输入条件返回内容完全不同!

盲目注入 (Blind-Based Injection) 如何使用? 第一位为 A, 有返回值 前 2 位为 Ad, 有返回值

基于时间的注入 (Time-based Injection) 在上述注入方式都无法奏效时, 考虑使用基于时间的注入 基于时间的注入有时也被称为深度盲注 基本原理 : SELECT * FROM products WHERE id=1; WAIT FOR DELAY '00:00:15 SELECT * FROM products WHERE id=1; IF SYSTEM_USER='sa' WAIT FOR DELAY '00:00:15'

议程 什么是 SQL 注入 SQL 注入的种类 SQL 注入工具如何防范 SQL 注入

注入工具 SQLMAP 介绍 SqlMap http://sqlmap.org SQLMap 是一个基于 Python 的开源测试工具, 用于自动化检测和数据库控制工具 使用说明 : https://github.com/sqlmapproject/sqlmap/wiki/usage

SQLMap 基本注入方式介绍 帮助 :sqlmap.py --help (Script guy 必备技能 ) 基本 Get 方式注入 sqlmap.py -u http://127.0.0.1/xx.aspx?category=1 基本 Post 方式注入 sqlmap.py --data "username=xyz&password=xyz" -u http://127.0.0.1/xx.aspx 表单注入 sqlmap.py --forms -u "http://localhost:12587/post.aspx"

SQLMap 获取一些信息 当前用户 :--current-user 当前数据库 :--current-db 是否为管理员 :--is-dba 数据库中所有用户 :--users 列出所有数据库 :--dbs 列出所有表 :--tables 获取所有列 :--columns 限制只扫描某库 :-D database_name 限制只扫描某表 :-T TableName

SQL 注入方式选择 --technique B: Boolean-based blind E: Error-based U: Union query-based S: Stacked queries T: Time-based blind Q: Inline queries 默认是所有线程选择 --threads 5

议程 什么是 SQL 注入 SQL 注入的种类 SQL 注入工具如何防范 SQL 注入

防范手段 - 简单检测 输入参数用单引号 程序报错, 则说明可注入 程序未报错, 则查看返回结果是否有变化输入参数用两个单引号 数据库中通常 等同于一个 如果错误消失, 则说明可注入

防范手段 - 减少 Surface Area 数据库严禁暴漏在公网中 ( 例 : 某银行信用卡系统 ) 应用程序从网络端限制不应该的请求

减少 Surface Area? 不仅仅是 Web 应用程序端 任何录入数据库系统的数据 ( 扫码枪 移动端 摄像头 物联网数据采集装置等等 ) 都需要考虑对此进行防范

防范手段 - 用户输入过滤 1 不要相信用户输入的数据, 不要拼接数据到最终执行的 SQL 中 需要转义的字符 输入字符 解释 ; 查询分隔符 ' 字符串分隔符 -- 备注 /*... */ 多行备注 xp_ 扩展存储过程, 例如 : xp_cmdshell. 例如 : private string SafeSqlLiteral(string inputsql) { return inputsql.replace("'", "''"); } 并不稳妥, 比如 where password=1 or 1=1, 没有特殊符号

防范手段 - 用户输入过滤 2 但有些业务可能需要特殊符号, 比如出版社 O Reilly 按照业务范围对输入值范围进行过滤 ( 年龄在 0 到 100, 登录名中是否包含空格, 等等 ) 很多 SQL 注入攻击依赖于长 SQL, 对输入长度进行限制

一个漫画 这是你儿子学校来的电话, 我们的计算机有一点毛病 天呐, 他又破坏什么了吗? 以某种方式吧 你真的给你儿子起名叫 Robert );drop table students;-- 是的, 我们叫他小名 :bobby tables 好吧, 我们丢了一年的学生记录 我希望你学会过滤一下你的数据库输入参数

防范手段 - 参数化查询 参数化查询可以防范 SQL 注入,C# 中参数化 command.parameters.addwithvalue("@lastname", "John"); 对应 SQL Server 执行片段 : EXEC sp_executesql N'SELECT * FROM dbo.member WHERE lastname LIKE @lastname', N'@lastname varchar(15)', John 注 :@lastname 仅仅是一个容器和占位符,SQL Server 知道该位置是数据, 由于语句已经被预编译, 只有在运行时才会将参数替换进去, 所以无法将参数中的内容当作 SQL 执行 如果不用这种方式,SQL Server 则通过 EXEC 调用 参数化查询有可能对性能产生影响, 但大多数情况利大于弊端

防范手段 - 权限 基本原则 : 不应赋予多于所需权限的权限应用程序连接数据库帐号的正确姿势 数据库的 DataReader 组 数据库的 DataWriter 组 Grant Exec to [ 用户名 ] 拒绝 SA 作为生产环境应用程序帐号 不幸的是,90% 以上的传统企业是这么做的

防止 SQL 注入扫描表 & 数据库名称 所需在用户库禁用的应用程序用户权限 DENY SELECT ON sys.sysobjects TO [ 用户名 ] 当前用户必须添加到 Master 库中, 还需要在 Master 库中禁用的权限 DENY SELECT ON information_schema.tables TO [ 用户名 ] DENY SELECT ON sys.sysobjects TO [ 用户名 ]

防止 SQL 注入扫描库名称效果 ( 禁用前 )

防止 SQL 注入扫描库名称效果 ( 禁用后 ) 只能扫描到当前库, 以及两个系统库

防止 SQL 注入扫描表名称效果 ( 禁用前 )

防止 SQL 注入扫描表名称效果 ( 禁用后 ) 无法获取任何表信息

更激进的防范措施 具有成本! 需要考虑 Trade-Off 可以利用 SQL TRACE 或扩展事件对 SQL 报错进行记录 (DEMO) 监控执行语句, 对可疑语句进行捕捉 ;--

企业客服热线 :4000-716-719 谢谢! 易车网部门 2013.1.16