133
⽹络安全 第七章 WEB应用漏洞攻防 黄 玮

nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

  • Upload
    others

  • View
    20

  • Download
    0

Embed Size (px)

Citation preview

Page 1: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

络安全

第七章 WEB应用漏洞攻防

黄 玮

WEB应用程序漏洞原理基于Web应用程序服务模型

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序服务模型

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输有关的安全问题

切罪恶都是源于恶意输数据

bull 不要相信任何来自客户端的提交数据 mdash客户端的任何数据校验都是纸老虎

ndash客户端的数据校验机制防君不防客

bull 数据和指令代码必须严格区分 mdash缓冲区溢出时的机器指令运在可执堆栈上

mdashSQL注时执任意SQL语句

mdashXSS时执任何客户端脚本代码(JSFlash AS) mdash件上传时上传服务端脚本代码在服务器端执

任意代码

1未验证的用户输-示例

bull 设计输 mdashViewServleturl=httpbackendhostimagesbggif

bull 恶意输 mdashViewServleturl=httpweblogicconsole

mdashViewServleturl=fileetcpasswd mdashViewServleturl=etcpasswd

bull 通过这个简单的应用程序可以间接实现件枚举和后台程序扫描

6

1未验证的用户输-描述(12)

bull 攻击者可以篡改HTTP request的任何个部分 mdashurl

mdash请求字符串 mdashHTTP头

mdashCookies

mdash表单域 mdash隐藏域

7

1未验证的用户输-描述(22)

bull 常见的输篡改攻击包括 mdash强制浏览 mdash命令注

mdash跨站点脚本攻击

mdash缓冲区溢出攻击 mdash格式化字符串攻击

mdashSQL注 mdashCookie毒化

mdash隐藏域控制

8

输篡改攻击的成因

bull 可能的原因 mdash只在客户端进输验证

mdash过滤时未进规范化 ndash 过滤后引新漏洞

bull 导致其他的漏洞

9

1未验证的用户输-具演示

10

1未验证的用户输-解决案(13)

bull 所有的用户输需要在服务器端进集中的统验证 mdash请求参数

mdashCookies mdashHTTP请求头

bull 代码复查

bull 不要ldquo滥用rdquo隐藏域 mdash存储在Session中或从每次请求中获取参数值

11

1未验证的用户输-解决案(23)

bull 请求参数需要严格的验证其类型 mdash数据类型(string integer real etchellip)

mdash最小和最长度 mdash是否允许null

mdash参数是否是必需的

mdash数字的取值范围 mdash特定模式(正则表达式)

ndash 白名单机制

12

1未验证的用户输-解决案(33)

bull 服务器返回给客户端的重要参数赋值使用HMAC进参数签名

bull 千万不要使用MD5SHA-XXX之类的摘要算法对参数进摘要计算也不要使用基于ldquo秘密盐值rdquo的MD5SHA-XXX之类的摘要算法对参数进摘要计算

bull 对客户端提交的请求校验关键逻辑代码中的参数旦消息完整性签名校验失败说明客户端尝试篡改请求参数攻击代码逻辑直接跳过后续业务逻辑代码给客户端返回统的错误信息

13

Hash长度扩展攻击

2缓冲区溢出-描述(12)

bull 应用程序的缓冲区中存在过量的输数据溢出的数据中包含恶意指令且恶意指令被精确填充到可执堆栈(内存)中进导致恶意代码被执

bull 般情况下Web应用程序不存在缓冲区溢出漏洞

bull Java Web应用程序不存在缓冲区溢出风险 ndash OutOfMemoryError

ndash CVE-2011-0311

ndash CVE-2009-109914

2缓冲区溢出-描述(22)

bull PHP Web应用程序不存在缓冲区溢出风险 mdash CVE-2011-3268

mdash CVE-2008-5557

mdash CVE-2008-2050

mdash CVE-2007-1399

mdash CVE-2007-1381

mdash PHP的缓冲区溢出相关漏洞历史1997~20118 共计76个

bull 其他语编写的Web应用程序呢 mdash后台应用系统

mdash本地代码

15

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 2: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

WEB应用程序漏洞原理基于Web应用程序服务模型

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序服务模型

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输有关的安全问题

切罪恶都是源于恶意输数据

bull 不要相信任何来自客户端的提交数据 mdash客户端的任何数据校验都是纸老虎

ndash客户端的数据校验机制防君不防客

bull 数据和指令代码必须严格区分 mdash缓冲区溢出时的机器指令运在可执堆栈上

mdashSQL注时执任意SQL语句

mdashXSS时执任何客户端脚本代码(JSFlash AS) mdash件上传时上传服务端脚本代码在服务器端执

任意代码

1未验证的用户输-示例

bull 设计输 mdashViewServleturl=httpbackendhostimagesbggif

bull 恶意输 mdashViewServleturl=httpweblogicconsole

mdashViewServleturl=fileetcpasswd mdashViewServleturl=etcpasswd

bull 通过这个简单的应用程序可以间接实现件枚举和后台程序扫描

6

1未验证的用户输-描述(12)

bull 攻击者可以篡改HTTP request的任何个部分 mdashurl

mdash请求字符串 mdashHTTP头

mdashCookies

mdash表单域 mdash隐藏域

7

1未验证的用户输-描述(22)

bull 常见的输篡改攻击包括 mdash强制浏览 mdash命令注

mdash跨站点脚本攻击

mdash缓冲区溢出攻击 mdash格式化字符串攻击

mdashSQL注 mdashCookie毒化

mdash隐藏域控制

8

输篡改攻击的成因

bull 可能的原因 mdash只在客户端进输验证

mdash过滤时未进规范化 ndash 过滤后引新漏洞

bull 导致其他的漏洞

9

1未验证的用户输-具演示

10

1未验证的用户输-解决案(13)

bull 所有的用户输需要在服务器端进集中的统验证 mdash请求参数

mdashCookies mdashHTTP请求头

bull 代码复查

bull 不要ldquo滥用rdquo隐藏域 mdash存储在Session中或从每次请求中获取参数值

11

1未验证的用户输-解决案(23)

bull 请求参数需要严格的验证其类型 mdash数据类型(string integer real etchellip)

mdash最小和最长度 mdash是否允许null

mdash参数是否是必需的

mdash数字的取值范围 mdash特定模式(正则表达式)

ndash 白名单机制

12

1未验证的用户输-解决案(33)

bull 服务器返回给客户端的重要参数赋值使用HMAC进参数签名

bull 千万不要使用MD5SHA-XXX之类的摘要算法对参数进摘要计算也不要使用基于ldquo秘密盐值rdquo的MD5SHA-XXX之类的摘要算法对参数进摘要计算

bull 对客户端提交的请求校验关键逻辑代码中的参数旦消息完整性签名校验失败说明客户端尝试篡改请求参数攻击代码逻辑直接跳过后续业务逻辑代码给客户端返回统的错误信息

13

Hash长度扩展攻击

2缓冲区溢出-描述(12)

bull 应用程序的缓冲区中存在过量的输数据溢出的数据中包含恶意指令且恶意指令被精确填充到可执堆栈(内存)中进导致恶意代码被执

bull 般情况下Web应用程序不存在缓冲区溢出漏洞

bull Java Web应用程序不存在缓冲区溢出风险 ndash OutOfMemoryError

ndash CVE-2011-0311

ndash CVE-2009-109914

2缓冲区溢出-描述(22)

bull PHP Web应用程序不存在缓冲区溢出风险 mdash CVE-2011-3268

mdash CVE-2008-5557

mdash CVE-2008-2050

mdash CVE-2007-1399

mdash CVE-2007-1381

mdash PHP的缓冲区溢出相关漏洞历史1997~20118 共计76个

bull 其他语编写的Web应用程序呢 mdash后台应用系统

mdash本地代码

15

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 3: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序服务模型

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输有关的安全问题

切罪恶都是源于恶意输数据

bull 不要相信任何来自客户端的提交数据 mdash客户端的任何数据校验都是纸老虎

ndash客户端的数据校验机制防君不防客

bull 数据和指令代码必须严格区分 mdash缓冲区溢出时的机器指令运在可执堆栈上

mdashSQL注时执任意SQL语句

mdashXSS时执任何客户端脚本代码(JSFlash AS) mdash件上传时上传服务端脚本代码在服务器端执

任意代码

1未验证的用户输-示例

bull 设计输 mdashViewServleturl=httpbackendhostimagesbggif

bull 恶意输 mdashViewServleturl=httpweblogicconsole

mdashViewServleturl=fileetcpasswd mdashViewServleturl=etcpasswd

bull 通过这个简单的应用程序可以间接实现件枚举和后台程序扫描

6

1未验证的用户输-描述(12)

bull 攻击者可以篡改HTTP request的任何个部分 mdashurl

mdash请求字符串 mdashHTTP头

mdashCookies

mdash表单域 mdash隐藏域

7

1未验证的用户输-描述(22)

bull 常见的输篡改攻击包括 mdash强制浏览 mdash命令注

mdash跨站点脚本攻击

mdash缓冲区溢出攻击 mdash格式化字符串攻击

mdashSQL注 mdashCookie毒化

mdash隐藏域控制

8

输篡改攻击的成因

bull 可能的原因 mdash只在客户端进输验证

mdash过滤时未进规范化 ndash 过滤后引新漏洞

bull 导致其他的漏洞

9

1未验证的用户输-具演示

10

1未验证的用户输-解决案(13)

bull 所有的用户输需要在服务器端进集中的统验证 mdash请求参数

mdashCookies mdashHTTP请求头

bull 代码复查

bull 不要ldquo滥用rdquo隐藏域 mdash存储在Session中或从每次请求中获取参数值

11

1未验证的用户输-解决案(23)

bull 请求参数需要严格的验证其类型 mdash数据类型(string integer real etchellip)

mdash最小和最长度 mdash是否允许null

mdash参数是否是必需的

mdash数字的取值范围 mdash特定模式(正则表达式)

ndash 白名单机制

12

1未验证的用户输-解决案(33)

bull 服务器返回给客户端的重要参数赋值使用HMAC进参数签名

bull 千万不要使用MD5SHA-XXX之类的摘要算法对参数进摘要计算也不要使用基于ldquo秘密盐值rdquo的MD5SHA-XXX之类的摘要算法对参数进摘要计算

bull 对客户端提交的请求校验关键逻辑代码中的参数旦消息完整性签名校验失败说明客户端尝试篡改请求参数攻击代码逻辑直接跳过后续业务逻辑代码给客户端返回统的错误信息

13

Hash长度扩展攻击

2缓冲区溢出-描述(12)

bull 应用程序的缓冲区中存在过量的输数据溢出的数据中包含恶意指令且恶意指令被精确填充到可执堆栈(内存)中进导致恶意代码被执

bull 般情况下Web应用程序不存在缓冲区溢出漏洞

bull Java Web应用程序不存在缓冲区溢出风险 ndash OutOfMemoryError

ndash CVE-2011-0311

ndash CVE-2009-109914

2缓冲区溢出-描述(22)

bull PHP Web应用程序不存在缓冲区溢出风险 mdash CVE-2011-3268

mdash CVE-2008-5557

mdash CVE-2008-2050

mdash CVE-2007-1399

mdash CVE-2007-1381

mdash PHP的缓冲区溢出相关漏洞历史1997~20118 共计76个

bull 其他语编写的Web应用程序呢 mdash后台应用系统

mdash本地代码

15

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 4: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输有关的安全问题

切罪恶都是源于恶意输数据

bull 不要相信任何来自客户端的提交数据 mdash客户端的任何数据校验都是纸老虎

ndash客户端的数据校验机制防君不防客

bull 数据和指令代码必须严格区分 mdash缓冲区溢出时的机器指令运在可执堆栈上

mdashSQL注时执任意SQL语句

mdashXSS时执任何客户端脚本代码(JSFlash AS) mdash件上传时上传服务端脚本代码在服务器端执

任意代码

1未验证的用户输-示例

bull 设计输 mdashViewServleturl=httpbackendhostimagesbggif

bull 恶意输 mdashViewServleturl=httpweblogicconsole

mdashViewServleturl=fileetcpasswd mdashViewServleturl=etcpasswd

bull 通过这个简单的应用程序可以间接实现件枚举和后台程序扫描

6

1未验证的用户输-描述(12)

bull 攻击者可以篡改HTTP request的任何个部分 mdashurl

mdash请求字符串 mdashHTTP头

mdashCookies

mdash表单域 mdash隐藏域

7

1未验证的用户输-描述(22)

bull 常见的输篡改攻击包括 mdash强制浏览 mdash命令注

mdash跨站点脚本攻击

mdash缓冲区溢出攻击 mdash格式化字符串攻击

mdashSQL注 mdashCookie毒化

mdash隐藏域控制

8

输篡改攻击的成因

bull 可能的原因 mdash只在客户端进输验证

mdash过滤时未进规范化 ndash 过滤后引新漏洞

bull 导致其他的漏洞

9

1未验证的用户输-具演示

10

1未验证的用户输-解决案(13)

bull 所有的用户输需要在服务器端进集中的统验证 mdash请求参数

mdashCookies mdashHTTP请求头

bull 代码复查

bull 不要ldquo滥用rdquo隐藏域 mdash存储在Session中或从每次请求中获取参数值

11

1未验证的用户输-解决案(23)

bull 请求参数需要严格的验证其类型 mdash数据类型(string integer real etchellip)

mdash最小和最长度 mdash是否允许null

mdash参数是否是必需的

mdash数字的取值范围 mdash特定模式(正则表达式)

ndash 白名单机制

12

1未验证的用户输-解决案(33)

bull 服务器返回给客户端的重要参数赋值使用HMAC进参数签名

bull 千万不要使用MD5SHA-XXX之类的摘要算法对参数进摘要计算也不要使用基于ldquo秘密盐值rdquo的MD5SHA-XXX之类的摘要算法对参数进摘要计算

bull 对客户端提交的请求校验关键逻辑代码中的参数旦消息完整性签名校验失败说明客户端尝试篡改请求参数攻击代码逻辑直接跳过后续业务逻辑代码给客户端返回统的错误信息

13

Hash长度扩展攻击

2缓冲区溢出-描述(12)

bull 应用程序的缓冲区中存在过量的输数据溢出的数据中包含恶意指令且恶意指令被精确填充到可执堆栈(内存)中进导致恶意代码被执

bull 般情况下Web应用程序不存在缓冲区溢出漏洞

bull Java Web应用程序不存在缓冲区溢出风险 ndash OutOfMemoryError

ndash CVE-2011-0311

ndash CVE-2009-109914

2缓冲区溢出-描述(22)

bull PHP Web应用程序不存在缓冲区溢出风险 mdash CVE-2011-3268

mdash CVE-2008-5557

mdash CVE-2008-2050

mdash CVE-2007-1399

mdash CVE-2007-1381

mdash PHP的缓冲区溢出相关漏洞历史1997~20118 共计76个

bull 其他语编写的Web应用程序呢 mdash后台应用系统

mdash本地代码

15

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 5: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

切罪恶都是源于恶意输数据

bull 不要相信任何来自客户端的提交数据 mdash客户端的任何数据校验都是纸老虎

ndash客户端的数据校验机制防君不防客

bull 数据和指令代码必须严格区分 mdash缓冲区溢出时的机器指令运在可执堆栈上

mdashSQL注时执任意SQL语句

mdashXSS时执任何客户端脚本代码(JSFlash AS) mdash件上传时上传服务端脚本代码在服务器端执

任意代码

1未验证的用户输-示例

bull 设计输 mdashViewServleturl=httpbackendhostimagesbggif

bull 恶意输 mdashViewServleturl=httpweblogicconsole

mdashViewServleturl=fileetcpasswd mdashViewServleturl=etcpasswd

bull 通过这个简单的应用程序可以间接实现件枚举和后台程序扫描

6

1未验证的用户输-描述(12)

bull 攻击者可以篡改HTTP request的任何个部分 mdashurl

mdash请求字符串 mdashHTTP头

mdashCookies

mdash表单域 mdash隐藏域

7

1未验证的用户输-描述(22)

bull 常见的输篡改攻击包括 mdash强制浏览 mdash命令注

mdash跨站点脚本攻击

mdash缓冲区溢出攻击 mdash格式化字符串攻击

mdashSQL注 mdashCookie毒化

mdash隐藏域控制

8

输篡改攻击的成因

bull 可能的原因 mdash只在客户端进输验证

mdash过滤时未进规范化 ndash 过滤后引新漏洞

bull 导致其他的漏洞

9

1未验证的用户输-具演示

10

1未验证的用户输-解决案(13)

bull 所有的用户输需要在服务器端进集中的统验证 mdash请求参数

mdashCookies mdashHTTP请求头

bull 代码复查

bull 不要ldquo滥用rdquo隐藏域 mdash存储在Session中或从每次请求中获取参数值

11

1未验证的用户输-解决案(23)

bull 请求参数需要严格的验证其类型 mdash数据类型(string integer real etchellip)

mdash最小和最长度 mdash是否允许null

mdash参数是否是必需的

mdash数字的取值范围 mdash特定模式(正则表达式)

ndash 白名单机制

12

1未验证的用户输-解决案(33)

bull 服务器返回给客户端的重要参数赋值使用HMAC进参数签名

bull 千万不要使用MD5SHA-XXX之类的摘要算法对参数进摘要计算也不要使用基于ldquo秘密盐值rdquo的MD5SHA-XXX之类的摘要算法对参数进摘要计算

bull 对客户端提交的请求校验关键逻辑代码中的参数旦消息完整性签名校验失败说明客户端尝试篡改请求参数攻击代码逻辑直接跳过后续业务逻辑代码给客户端返回统的错误信息

13

Hash长度扩展攻击

2缓冲区溢出-描述(12)

bull 应用程序的缓冲区中存在过量的输数据溢出的数据中包含恶意指令且恶意指令被精确填充到可执堆栈(内存)中进导致恶意代码被执

bull 般情况下Web应用程序不存在缓冲区溢出漏洞

bull Java Web应用程序不存在缓冲区溢出风险 ndash OutOfMemoryError

ndash CVE-2011-0311

ndash CVE-2009-109914

2缓冲区溢出-描述(22)

bull PHP Web应用程序不存在缓冲区溢出风险 mdash CVE-2011-3268

mdash CVE-2008-5557

mdash CVE-2008-2050

mdash CVE-2007-1399

mdash CVE-2007-1381

mdash PHP的缓冲区溢出相关漏洞历史1997~20118 共计76个

bull 其他语编写的Web应用程序呢 mdash后台应用系统

mdash本地代码

15

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 6: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

1未验证的用户输-示例

bull 设计输 mdashViewServleturl=httpbackendhostimagesbggif

bull 恶意输 mdashViewServleturl=httpweblogicconsole

mdashViewServleturl=fileetcpasswd mdashViewServleturl=etcpasswd

bull 通过这个简单的应用程序可以间接实现件枚举和后台程序扫描

6

1未验证的用户输-描述(12)

bull 攻击者可以篡改HTTP request的任何个部分 mdashurl

mdash请求字符串 mdashHTTP头

mdashCookies

mdash表单域 mdash隐藏域

7

1未验证的用户输-描述(22)

bull 常见的输篡改攻击包括 mdash强制浏览 mdash命令注

mdash跨站点脚本攻击

mdash缓冲区溢出攻击 mdash格式化字符串攻击

mdashSQL注 mdashCookie毒化

mdash隐藏域控制

8

输篡改攻击的成因

bull 可能的原因 mdash只在客户端进输验证

mdash过滤时未进规范化 ndash 过滤后引新漏洞

bull 导致其他的漏洞

9

1未验证的用户输-具演示

10

1未验证的用户输-解决案(13)

bull 所有的用户输需要在服务器端进集中的统验证 mdash请求参数

mdashCookies mdashHTTP请求头

bull 代码复查

bull 不要ldquo滥用rdquo隐藏域 mdash存储在Session中或从每次请求中获取参数值

11

1未验证的用户输-解决案(23)

bull 请求参数需要严格的验证其类型 mdash数据类型(string integer real etchellip)

mdash最小和最长度 mdash是否允许null

mdash参数是否是必需的

mdash数字的取值范围 mdash特定模式(正则表达式)

ndash 白名单机制

12

1未验证的用户输-解决案(33)

bull 服务器返回给客户端的重要参数赋值使用HMAC进参数签名

bull 千万不要使用MD5SHA-XXX之类的摘要算法对参数进摘要计算也不要使用基于ldquo秘密盐值rdquo的MD5SHA-XXX之类的摘要算法对参数进摘要计算

bull 对客户端提交的请求校验关键逻辑代码中的参数旦消息完整性签名校验失败说明客户端尝试篡改请求参数攻击代码逻辑直接跳过后续业务逻辑代码给客户端返回统的错误信息

13

Hash长度扩展攻击

2缓冲区溢出-描述(12)

bull 应用程序的缓冲区中存在过量的输数据溢出的数据中包含恶意指令且恶意指令被精确填充到可执堆栈(内存)中进导致恶意代码被执

bull 般情况下Web应用程序不存在缓冲区溢出漏洞

bull Java Web应用程序不存在缓冲区溢出风险 ndash OutOfMemoryError

ndash CVE-2011-0311

ndash CVE-2009-109914

2缓冲区溢出-描述(22)

bull PHP Web应用程序不存在缓冲区溢出风险 mdash CVE-2011-3268

mdash CVE-2008-5557

mdash CVE-2008-2050

mdash CVE-2007-1399

mdash CVE-2007-1381

mdash PHP的缓冲区溢出相关漏洞历史1997~20118 共计76个

bull 其他语编写的Web应用程序呢 mdash后台应用系统

mdash本地代码

15

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 7: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

1未验证的用户输-描述(12)

bull 攻击者可以篡改HTTP request的任何个部分 mdashurl

mdash请求字符串 mdashHTTP头

mdashCookies

mdash表单域 mdash隐藏域

7

1未验证的用户输-描述(22)

bull 常见的输篡改攻击包括 mdash强制浏览 mdash命令注

mdash跨站点脚本攻击

mdash缓冲区溢出攻击 mdash格式化字符串攻击

mdashSQL注 mdashCookie毒化

mdash隐藏域控制

8

输篡改攻击的成因

bull 可能的原因 mdash只在客户端进输验证

mdash过滤时未进规范化 ndash 过滤后引新漏洞

bull 导致其他的漏洞

9

1未验证的用户输-具演示

10

1未验证的用户输-解决案(13)

bull 所有的用户输需要在服务器端进集中的统验证 mdash请求参数

mdashCookies mdashHTTP请求头

bull 代码复查

bull 不要ldquo滥用rdquo隐藏域 mdash存储在Session中或从每次请求中获取参数值

11

1未验证的用户输-解决案(23)

bull 请求参数需要严格的验证其类型 mdash数据类型(string integer real etchellip)

mdash最小和最长度 mdash是否允许null

mdash参数是否是必需的

mdash数字的取值范围 mdash特定模式(正则表达式)

ndash 白名单机制

12

1未验证的用户输-解决案(33)

bull 服务器返回给客户端的重要参数赋值使用HMAC进参数签名

bull 千万不要使用MD5SHA-XXX之类的摘要算法对参数进摘要计算也不要使用基于ldquo秘密盐值rdquo的MD5SHA-XXX之类的摘要算法对参数进摘要计算

bull 对客户端提交的请求校验关键逻辑代码中的参数旦消息完整性签名校验失败说明客户端尝试篡改请求参数攻击代码逻辑直接跳过后续业务逻辑代码给客户端返回统的错误信息

13

Hash长度扩展攻击

2缓冲区溢出-描述(12)

bull 应用程序的缓冲区中存在过量的输数据溢出的数据中包含恶意指令且恶意指令被精确填充到可执堆栈(内存)中进导致恶意代码被执

bull 般情况下Web应用程序不存在缓冲区溢出漏洞

bull Java Web应用程序不存在缓冲区溢出风险 ndash OutOfMemoryError

ndash CVE-2011-0311

ndash CVE-2009-109914

2缓冲区溢出-描述(22)

bull PHP Web应用程序不存在缓冲区溢出风险 mdash CVE-2011-3268

mdash CVE-2008-5557

mdash CVE-2008-2050

mdash CVE-2007-1399

mdash CVE-2007-1381

mdash PHP的缓冲区溢出相关漏洞历史1997~20118 共计76个

bull 其他语编写的Web应用程序呢 mdash后台应用系统

mdash本地代码

15

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 8: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

1未验证的用户输-描述(22)

bull 常见的输篡改攻击包括 mdash强制浏览 mdash命令注

mdash跨站点脚本攻击

mdash缓冲区溢出攻击 mdash格式化字符串攻击

mdashSQL注 mdashCookie毒化

mdash隐藏域控制

8

输篡改攻击的成因

bull 可能的原因 mdash只在客户端进输验证

mdash过滤时未进规范化 ndash 过滤后引新漏洞

bull 导致其他的漏洞

9

1未验证的用户输-具演示

10

1未验证的用户输-解决案(13)

bull 所有的用户输需要在服务器端进集中的统验证 mdash请求参数

mdashCookies mdashHTTP请求头

bull 代码复查

bull 不要ldquo滥用rdquo隐藏域 mdash存储在Session中或从每次请求中获取参数值

11

1未验证的用户输-解决案(23)

bull 请求参数需要严格的验证其类型 mdash数据类型(string integer real etchellip)

mdash最小和最长度 mdash是否允许null

mdash参数是否是必需的

mdash数字的取值范围 mdash特定模式(正则表达式)

ndash 白名单机制

12

1未验证的用户输-解决案(33)

bull 服务器返回给客户端的重要参数赋值使用HMAC进参数签名

bull 千万不要使用MD5SHA-XXX之类的摘要算法对参数进摘要计算也不要使用基于ldquo秘密盐值rdquo的MD5SHA-XXX之类的摘要算法对参数进摘要计算

bull 对客户端提交的请求校验关键逻辑代码中的参数旦消息完整性签名校验失败说明客户端尝试篡改请求参数攻击代码逻辑直接跳过后续业务逻辑代码给客户端返回统的错误信息

13

Hash长度扩展攻击

2缓冲区溢出-描述(12)

bull 应用程序的缓冲区中存在过量的输数据溢出的数据中包含恶意指令且恶意指令被精确填充到可执堆栈(内存)中进导致恶意代码被执

bull 般情况下Web应用程序不存在缓冲区溢出漏洞

bull Java Web应用程序不存在缓冲区溢出风险 ndash OutOfMemoryError

ndash CVE-2011-0311

ndash CVE-2009-109914

2缓冲区溢出-描述(22)

bull PHP Web应用程序不存在缓冲区溢出风险 mdash CVE-2011-3268

mdash CVE-2008-5557

mdash CVE-2008-2050

mdash CVE-2007-1399

mdash CVE-2007-1381

mdash PHP的缓冲区溢出相关漏洞历史1997~20118 共计76个

bull 其他语编写的Web应用程序呢 mdash后台应用系统

mdash本地代码

15

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 9: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

输篡改攻击的成因

bull 可能的原因 mdash只在客户端进输验证

mdash过滤时未进规范化 ndash 过滤后引新漏洞

bull 导致其他的漏洞

9

1未验证的用户输-具演示

10

1未验证的用户输-解决案(13)

bull 所有的用户输需要在服务器端进集中的统验证 mdash请求参数

mdashCookies mdashHTTP请求头

bull 代码复查

bull 不要ldquo滥用rdquo隐藏域 mdash存储在Session中或从每次请求中获取参数值

11

1未验证的用户输-解决案(23)

bull 请求参数需要严格的验证其类型 mdash数据类型(string integer real etchellip)

mdash最小和最长度 mdash是否允许null

mdash参数是否是必需的

mdash数字的取值范围 mdash特定模式(正则表达式)

ndash 白名单机制

12

1未验证的用户输-解决案(33)

bull 服务器返回给客户端的重要参数赋值使用HMAC进参数签名

bull 千万不要使用MD5SHA-XXX之类的摘要算法对参数进摘要计算也不要使用基于ldquo秘密盐值rdquo的MD5SHA-XXX之类的摘要算法对参数进摘要计算

bull 对客户端提交的请求校验关键逻辑代码中的参数旦消息完整性签名校验失败说明客户端尝试篡改请求参数攻击代码逻辑直接跳过后续业务逻辑代码给客户端返回统的错误信息

13

Hash长度扩展攻击

2缓冲区溢出-描述(12)

bull 应用程序的缓冲区中存在过量的输数据溢出的数据中包含恶意指令且恶意指令被精确填充到可执堆栈(内存)中进导致恶意代码被执

bull 般情况下Web应用程序不存在缓冲区溢出漏洞

bull Java Web应用程序不存在缓冲区溢出风险 ndash OutOfMemoryError

ndash CVE-2011-0311

ndash CVE-2009-109914

2缓冲区溢出-描述(22)

bull PHP Web应用程序不存在缓冲区溢出风险 mdash CVE-2011-3268

mdash CVE-2008-5557

mdash CVE-2008-2050

mdash CVE-2007-1399

mdash CVE-2007-1381

mdash PHP的缓冲区溢出相关漏洞历史1997~20118 共计76个

bull 其他语编写的Web应用程序呢 mdash后台应用系统

mdash本地代码

15

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 10: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

1未验证的用户输-具演示

10

1未验证的用户输-解决案(13)

bull 所有的用户输需要在服务器端进集中的统验证 mdash请求参数

mdashCookies mdashHTTP请求头

bull 代码复查

bull 不要ldquo滥用rdquo隐藏域 mdash存储在Session中或从每次请求中获取参数值

11

1未验证的用户输-解决案(23)

bull 请求参数需要严格的验证其类型 mdash数据类型(string integer real etchellip)

mdash最小和最长度 mdash是否允许null

mdash参数是否是必需的

mdash数字的取值范围 mdash特定模式(正则表达式)

ndash 白名单机制

12

1未验证的用户输-解决案(33)

bull 服务器返回给客户端的重要参数赋值使用HMAC进参数签名

bull 千万不要使用MD5SHA-XXX之类的摘要算法对参数进摘要计算也不要使用基于ldquo秘密盐值rdquo的MD5SHA-XXX之类的摘要算法对参数进摘要计算

bull 对客户端提交的请求校验关键逻辑代码中的参数旦消息完整性签名校验失败说明客户端尝试篡改请求参数攻击代码逻辑直接跳过后续业务逻辑代码给客户端返回统的错误信息

13

Hash长度扩展攻击

2缓冲区溢出-描述(12)

bull 应用程序的缓冲区中存在过量的输数据溢出的数据中包含恶意指令且恶意指令被精确填充到可执堆栈(内存)中进导致恶意代码被执

bull 般情况下Web应用程序不存在缓冲区溢出漏洞

bull Java Web应用程序不存在缓冲区溢出风险 ndash OutOfMemoryError

ndash CVE-2011-0311

ndash CVE-2009-109914

2缓冲区溢出-描述(22)

bull PHP Web应用程序不存在缓冲区溢出风险 mdash CVE-2011-3268

mdash CVE-2008-5557

mdash CVE-2008-2050

mdash CVE-2007-1399

mdash CVE-2007-1381

mdash PHP的缓冲区溢出相关漏洞历史1997~20118 共计76个

bull 其他语编写的Web应用程序呢 mdash后台应用系统

mdash本地代码

15

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 11: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

1未验证的用户输-解决案(13)

bull 所有的用户输需要在服务器端进集中的统验证 mdash请求参数

mdashCookies mdashHTTP请求头

bull 代码复查

bull 不要ldquo滥用rdquo隐藏域 mdash存储在Session中或从每次请求中获取参数值

11

1未验证的用户输-解决案(23)

bull 请求参数需要严格的验证其类型 mdash数据类型(string integer real etchellip)

mdash最小和最长度 mdash是否允许null

mdash参数是否是必需的

mdash数字的取值范围 mdash特定模式(正则表达式)

ndash 白名单机制

12

1未验证的用户输-解决案(33)

bull 服务器返回给客户端的重要参数赋值使用HMAC进参数签名

bull 千万不要使用MD5SHA-XXX之类的摘要算法对参数进摘要计算也不要使用基于ldquo秘密盐值rdquo的MD5SHA-XXX之类的摘要算法对参数进摘要计算

bull 对客户端提交的请求校验关键逻辑代码中的参数旦消息完整性签名校验失败说明客户端尝试篡改请求参数攻击代码逻辑直接跳过后续业务逻辑代码给客户端返回统的错误信息

13

Hash长度扩展攻击

2缓冲区溢出-描述(12)

bull 应用程序的缓冲区中存在过量的输数据溢出的数据中包含恶意指令且恶意指令被精确填充到可执堆栈(内存)中进导致恶意代码被执

bull 般情况下Web应用程序不存在缓冲区溢出漏洞

bull Java Web应用程序不存在缓冲区溢出风险 ndash OutOfMemoryError

ndash CVE-2011-0311

ndash CVE-2009-109914

2缓冲区溢出-描述(22)

bull PHP Web应用程序不存在缓冲区溢出风险 mdash CVE-2011-3268

mdash CVE-2008-5557

mdash CVE-2008-2050

mdash CVE-2007-1399

mdash CVE-2007-1381

mdash PHP的缓冲区溢出相关漏洞历史1997~20118 共计76个

bull 其他语编写的Web应用程序呢 mdash后台应用系统

mdash本地代码

15

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 12: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

1未验证的用户输-解决案(23)

bull 请求参数需要严格的验证其类型 mdash数据类型(string integer real etchellip)

mdash最小和最长度 mdash是否允许null

mdash参数是否是必需的

mdash数字的取值范围 mdash特定模式(正则表达式)

ndash 白名单机制

12

1未验证的用户输-解决案(33)

bull 服务器返回给客户端的重要参数赋值使用HMAC进参数签名

bull 千万不要使用MD5SHA-XXX之类的摘要算法对参数进摘要计算也不要使用基于ldquo秘密盐值rdquo的MD5SHA-XXX之类的摘要算法对参数进摘要计算

bull 对客户端提交的请求校验关键逻辑代码中的参数旦消息完整性签名校验失败说明客户端尝试篡改请求参数攻击代码逻辑直接跳过后续业务逻辑代码给客户端返回统的错误信息

13

Hash长度扩展攻击

2缓冲区溢出-描述(12)

bull 应用程序的缓冲区中存在过量的输数据溢出的数据中包含恶意指令且恶意指令被精确填充到可执堆栈(内存)中进导致恶意代码被执

bull 般情况下Web应用程序不存在缓冲区溢出漏洞

bull Java Web应用程序不存在缓冲区溢出风险 ndash OutOfMemoryError

ndash CVE-2011-0311

ndash CVE-2009-109914

2缓冲区溢出-描述(22)

bull PHP Web应用程序不存在缓冲区溢出风险 mdash CVE-2011-3268

mdash CVE-2008-5557

mdash CVE-2008-2050

mdash CVE-2007-1399

mdash CVE-2007-1381

mdash PHP的缓冲区溢出相关漏洞历史1997~20118 共计76个

bull 其他语编写的Web应用程序呢 mdash后台应用系统

mdash本地代码

15

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 13: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

1未验证的用户输-解决案(33)

bull 服务器返回给客户端的重要参数赋值使用HMAC进参数签名

bull 千万不要使用MD5SHA-XXX之类的摘要算法对参数进摘要计算也不要使用基于ldquo秘密盐值rdquo的MD5SHA-XXX之类的摘要算法对参数进摘要计算

bull 对客户端提交的请求校验关键逻辑代码中的参数旦消息完整性签名校验失败说明客户端尝试篡改请求参数攻击代码逻辑直接跳过后续业务逻辑代码给客户端返回统的错误信息

13

Hash长度扩展攻击

2缓冲区溢出-描述(12)

bull 应用程序的缓冲区中存在过量的输数据溢出的数据中包含恶意指令且恶意指令被精确填充到可执堆栈(内存)中进导致恶意代码被执

bull 般情况下Web应用程序不存在缓冲区溢出漏洞

bull Java Web应用程序不存在缓冲区溢出风险 ndash OutOfMemoryError

ndash CVE-2011-0311

ndash CVE-2009-109914

2缓冲区溢出-描述(22)

bull PHP Web应用程序不存在缓冲区溢出风险 mdash CVE-2011-3268

mdash CVE-2008-5557

mdash CVE-2008-2050

mdash CVE-2007-1399

mdash CVE-2007-1381

mdash PHP的缓冲区溢出相关漏洞历史1997~20118 共计76个

bull 其他语编写的Web应用程序呢 mdash后台应用系统

mdash本地代码

15

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 14: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

2缓冲区溢出-描述(12)

bull 应用程序的缓冲区中存在过量的输数据溢出的数据中包含恶意指令且恶意指令被精确填充到可执堆栈(内存)中进导致恶意代码被执

bull 般情况下Web应用程序不存在缓冲区溢出漏洞

bull Java Web应用程序不存在缓冲区溢出风险 ndash OutOfMemoryError

ndash CVE-2011-0311

ndash CVE-2009-109914

2缓冲区溢出-描述(22)

bull PHP Web应用程序不存在缓冲区溢出风险 mdash CVE-2011-3268

mdash CVE-2008-5557

mdash CVE-2008-2050

mdash CVE-2007-1399

mdash CVE-2007-1381

mdash PHP的缓冲区溢出相关漏洞历史1997~20118 共计76个

bull 其他语编写的Web应用程序呢 mdash后台应用系统

mdash本地代码

15

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 15: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

2缓冲区溢出-描述(22)

bull PHP Web应用程序不存在缓冲区溢出风险 mdash CVE-2011-3268

mdash CVE-2008-5557

mdash CVE-2008-2050

mdash CVE-2007-1399

mdash CVE-2007-1381

mdash PHP的缓冲区溢出相关漏洞历史1997~20118 共计76个

bull 其他语编写的Web应用程序呢 mdash后台应用系统

mdash本地代码

15

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 16: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

2缓冲区溢出-解决措施

bull 避免使用本地代码

bull 避免直接调用本地应用程序

bull 及时更新应用运环境 mdashJava虚拟机的安全更新补丁 mdashPHP语的安全更新补丁

bull 限制Web应用程序的运权限 mdash沙盒技术

16

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 17: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

后台相关的安全问题

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 18: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

3注缺陷-示例

bull 登录模块使用了如下的SQL查询语句 mdashselect from users where user= + username +

and password= + hashedPassword +

bull 很容易被以下的用户输破解登录功能 mdashusernamelt任何存在的用户名gt or 1=1 mdashpassword任何可以通过验证规则的密码

bull 拼接后形成的SQL查询语句 mdashselect from users where user=admin or 1=1 and

password=secret

18

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 19: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

3注缺陷-描述

bull 在任何存在解释器的地都可能存在 mdash脚本语例如PerlPython和JavaScript mdashShell脚本语(执系统应用程序) mdash通过系统调用访问操作系统

mdash数据库系统SQL注

mdash目录遍历(eg etcpasswd)

bull 典型缺陷 mdashRuntimeexec() system() exec()

mdash拼接字符串的SQL mdash件输和输出流操作

19

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 20: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

3注缺陷-操作提示

bull SQL注提示 mdash必须先确定目标数据库类型版本 mdash边准备好相应数据库的ldquo册rdquo

ndash 通常cheatsheet以

bull 操作系统命令注提示 mdash必须先确定目标操作系统类型版本应用软件配

置信息 mdash边准备好相应操作系统的ldquo册rdquo

ndash 操作系统命令 ndash 敏感件路径全

20

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 21: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

创意所不在的SQL注(13)

bull 史上最车牌

21

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 22: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

创意所不在的SQL注(23)

bull 维条形码

bull 维条形码

22

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 23: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

创意所不在的SQL注(33)

23

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 24: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

3注缺陷-解决案(12)

bull 在任何时候避免直接使用外部的解释器使用编程语提供的API库 mdash避免使用Runtimeexec()通过JavaMail API来发

邮件

bull 在将数据发送给后台程序时对数据进编码 mdashSQL语句中的单引号 注释符 mdashLDAP语句中的逗号括号等

24

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 25: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

3注缺陷-解决案(22)

bull 更好的解决办法 mdashJava 使用JDBC驱动的PreparedStatements

mdashPHP 使用预编译SQL语句

bull 以受限制的系统权限运Web应用程序 mdash沙盒技术

bull 所有的外部调用的输出返回代码值和错误代码值都需要检查

25

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 26: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

输出相关的安全问题

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 27: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

4跨站点脚本(XSS)-示例

bull Web应用程序直接将请求中的参数ldquo回显rdquo在用户的浏览器中

bull URL中请求参数的回显 mdash正常的URL httpvictimorgvictimjspkind=simple

mdash被注JS代码后的URLhttpvictimorgvictimjspkind=simple name=kindgtltscriptgtalert(test)ltscriptgtltinput type=hidden

27

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 28: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

4著名公司的XSS漏洞

bull IBM mdashXSS演示代码(2007年6月首次发现目前IBM已

修复该漏洞) ndash httpwww-1ibmcomsupportdocviewwss

uid=swg21233077amploc=gtltbody20onload=alert(IbmIsNotPerfect)locationreplace(httpwwwyahoocn)20x=en_US

28

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 29: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

4著名公司的XSS漏洞

bull TOM mdashXSS演示代码

ndash httpsearchtomcommphpw=3Cscript3Eeval(StringfromCharCode(971081011141164034847977256283203428431279346529250311862151833258211603633936716210408997104111111256283203434415911510111684105109101111117116401021171109911610511111040411231081119997116105111110461141011121089799101403410411611611258474711911911946121971041111114699110344112541))3Cscript3Eampmimetype=wma

29

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 30: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

4著名公司的XSS漏洞

bull Sogou mdashXSS演示代码

ndash httpwwwsogoucomwebquery=3CIFRAME+WIDTH3D400+HEIGHT3D400+SRC3D22HTTP3A2F2FWWWYAHOOCN22223E3C2FIFRAME3Eampnum=10amppid=58009401ampduppid=1

30

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 31: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

4跨站点脚本(XSS)-描述

bull 攻击者将恶意脚本代码发送到终端用户的浏览器 mdashWeb应用程序的输出直接回显到用户的浏览器

未经过检查 mdash浏览器信任Web应用程序的代码

bull 恶意脚本可以 mdash访问cookie会话令牌或其他通过用户浏览器获

得的敏感信息 mdash重写HTML页面

31

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 32: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

4跨站点脚本(XSS)-描述

bull 2种基本策略 mdash持久化的(可自动触发)例如恶意代码存储到

数据库中通过论坛发帖访客留等

mdash反射型(诱骗点击型)例如错误消息搜索引擎

bull 危害示例 mdash会话劫持 mdash钓鱼攻击 mdashDDoS攻击 mdash远程信息获取如端扫描用户浏览历史信息枚举

32

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 33: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

4跨站点脚本(XSS)-操作提示

bull 确定好攻击向量的目标浏览器 mdash很多XSS攻击只能在特定浏览器平台上触发

bull 边准备好 mdashJavascript语法册 mdashHTML册

mdashCSS册

mdashFlash ActionScript册 mdash浏览器技术档

ndash 浏览器相关特性速查

33

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 34: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

创意所不在的XSS

bull 维码

34

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 35: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

4跨站点脚本(XSS)-解决案

bull 输校验

bull 编码所有的展现层输出(HTMLEncode或JSTL的coutStruts的ltbeanwritegt标签等)

bull 对输进长度限制或截短

35

lt amplt gt ampgt

( amp40 ) amp41

amp35 amp amp38

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 36: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

4跨站点脚本(XSS)-解决案

bull 如果你的应用程序需要显示用户提交HTML内容你应该过滤ltscriptgt标签要确保用户不能提交恶意脚本代码

36

以上解决案是远远不够的可以参考MySpace的Samy蠕的攻击代码

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 37: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

5不恰当的错误处理-示例

bull 错误的用户名

bull 错误的用户令

37

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 38: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

5不恰当的错误处理-描述

bull 程序的错误消息会暴露程序的些实现细节

bull 示例 mdash堆栈调试信息数据库错误消息错误代码

mdashJSP编译错误信息包含物理路径信息

mdash不致的错误消息(例如拒绝访问或没有找到) mdash错误导致的服务器宕机(DoS)

bull 用户错误输回显到页面时没有进过滤或转义导致的XSS攻击

38

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 39: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

5不恰当的错误处理-解决案

bull 定义套清晰和致的错误处理机制 mdash简明扼要的易于用户理解的错误消息(例如不同的错误

消息对应个错误代码id)

mdash为系统管理员记录重要信息(关联错误代码id)

mdash不要暴露出任何对攻击者有用的信息(程序的调试信息和异常时堆栈信息等)

bull 当需要显示用户的错误输时定要编码(过滤或转义)用户的错误输

bull 修改默认的错误页面(404401等)

bull 执代码复查39

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 40: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

Web应用程序设计实现的安全问题

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 41: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

6脆弱的访问控制-示例

bull 档软件的下载链接地址保护 mdashhttpvictimorgdocs1doc mdashhttpvictimorgdocsdownloaddoid=1

bull Web应用程序的后台管理地址 mdashhttpvictimorgadmin mdashhttpvictimorgconsolelogin

bull 后台操作未执用户身份认证 mdashhttpvictimorgusersdeleteUserdouserid=001 mdashhttpvictimorgusersaddUserdouserid=001

41

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 42: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

6脆弱的访问控制-描述

bull 内容或程序功能未能有效的保护以限制只允许合法用户的访问

bull 典型案例 mdash不安全的id mdash强制浏览(直接在浏览器的地址栏中输URL)

mdash目录遍历 mdash件访问权限

mdash客户端缓存

42

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 43: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

6脆弱的访问控制-描述

bull 可能的原因 mdash认证只发在用户登录时

mdash仅对URL进鉴权不是对内容进鉴权 mdash未采取集中式的授权管理是分散授权管理

43

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 44: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

6脆弱的访问控制-解决案

bull 对每个需要保护的请求进检查不仅是在用户第次请求时进检查

bull 避免使用自开发的访问控制是使用J2EE提供的CMS或者其他的些安全框架如Acegi mdash采用声明式非硬编码的访问控制

mdash集中化访问控制非分散访问控制

44

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 45: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

6脆弱的访问控制-解决案(13)

bull 注意J2EE容器默认允许所有URL的访问

bull (可选)扩展基于实例的访问控制

bull 防客户端缓存重要内容设置HTTP请求头和meta标签

bull 在服务器端使用操作系统提供的访问控制保护件的未经授权的访问

45

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 46: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

6脆弱的访问控制-解决案(23)

bull 业务模型的访问控制授权建模 mdash访问控制权限划分的三角形基本法则

bull 平权限访问 mdash属主权限检查

bull 提升权限访问 mdash使用ACL

46

Alice Bob

administrator

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 47: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

6脆弱的访问控制-解决案(33)

bull 属主权限检查

bull 使用ACL

47

主体 客体

alice srvwwwupload1docbob srvwwwupload2doc

主体 客体

alice useraliceviewphp useraliceaddphp

bob userbobviewphp

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 48: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

7脆弱认证和会话管理-示例

bull 未采用Session cookie是在URL中编码已通过认证的用户名和密码 mdashhttpshostadminlistjsp

password=0c6ccf51b817885eampusername=11335984ea80882d

bull 上面的这个URL很容易被次XSS攻击截获到

48

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 49: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

7脆弱认证和会话管理-描述

bull 脆弱的认证和会话管理

bull 典型案例 mdash简单易猜解的用户名和用户令

mdash存在缺陷的身份管理功能例如密码修改功能忘记密码和账户更新功能

mdash主动会话劫持假冒已通过身份认证的合法用户

bull HTTP协议的会话管理依赖于应用程序的实现 mdash使用jsessionid的URL重写

mdash(Session) cookies

49

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 50: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

7脆弱认证和会话管理-解决案

bull 使用强认证机制 mdash密码策略(密码强度使用更改存储控制)

mdash安全传输(SSL) mdash小实现ldquo找回密码rdquo功能

mdash移除默认用户

bull Session机制需要注意的问题 mdashcookie必须是ldquo安全rdquo的(例如readonly机制)

mdashSession id必须是ldquo不可预测rdquo的

bull 尽量使用应用程序服务器提供的安全机制不是实现自的安全机制

50

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 51: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

基础平台的安全问题

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 52: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

8不安全的存储-示例

bull 日常备份策略 mdash程序的备份采用可擦写的设备如移动硬盘U

盘等

mdash使用UltraEdit等编辑器编辑件后未删除编辑器自动成的bak备份件导致源代码泄露

bull 数据未加密存储 mdash用户令等机密数据以明形式存储在数据库中

52

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 53: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

8不安全的存储-描述

bull 敏感重要的数据应该采取安全的存储式

bull 典型案例 mdash没有加密存储关键数据

mdash密钥证书和密码等采用了不安全的存储介质

mdash弱随机数字发器 mdash弱加密算法

mdash未采用安全的密钥交换机制

53

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 54: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

8不安全的存储-解决案

bull 仅存储那些必须存储的数据 mdash要求用户每次重新输

mdash存储Hash值不是加密值

bull 不允许对后台应用程序的直接访问 mdash数据库访问 mdash件系统访问

bull 不要在Web应用程序服务器所在的根目录存储重要件

bull 不要使用自的加密算法使用原库54

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 55: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

9不安全的配置管理-描述

bull Web应用程序的运环境包括 mdash 应用程序服务器(如TomcatWebSphere和WebLogic等)和Web服务

器(如IISApache等)

mdash 后台系统(数据库服务器目录服务器邮件服务器等) mdash 操作系统和基础络架构

bull 最常见的配置漏洞 mdash 未及时更新安全补丁(操作系统应用程序等) mdash 不必要的默认备份示例件

mdash 开放具有管理权限的服务

mdash 默认的用户账户和默认令

mdash 配置不当的SSL证书

bull 开发者和管理者(部署员)之间缺乏沟通55

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 56: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

9不安全的配置管理-解决案

bull 为每个服务器配置创建个安全基准 mdash 配置所有的安全机制(补丁更新策略访问控制策略密码策略等)

mdash 关闭所有不使用的服务

mdash 创建用户角权限和账户包括禁用所有默认账户或修改默认令

mdash 日志和警告系统

bull (半)自动化配置过程 mdash使用项目批量构建具(如Ant)和Ghost

bull 保持更新 mdash保持Web应用程序的运环境的安全补丁的更新 mdash更新安全配置基准

mdash定期执内部和外部的漏洞扫描具

56

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 57: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

10拒绝服务攻击-示例

bull 应用程序从后台的内容管理系统获取了量的信息

bull 次前台的请求导致了对后台数据库的多次操作请求

57

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 58: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

10拒绝服务攻击-描述

bull Web应用程序非常容易遭受拒绝服务攻击这是由于Web应用程序本身法区分正常的请求通信和恶意的通信数据

bull 容易产量的攻击负载

58

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 59: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

10拒绝服务攻击-典型案例

bull 有限的资源特别容易成为DoS攻击的目标 mdash带宽

mdash数据库连接

mdash磁盘容量

mdashCPU资源 mdash内存

mdash最并发线程数 可用件句柄

bull 特定于用户的DoS mdash用户并发访问控制锁

mdash用户密码更改

bull 未处理的程序异常59

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 60: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

10拒绝服务攻击-解决案

bull 避免可能会导致资源密集性消耗的请求 mdashCPU频繁的请求JDBC连接

mdash内存或磁盘容量数据量的POST和过量的HttpSession数据

mdash匿名用户访问的限制

bull 在负载的情况下测试应用程序的性能

bull 利用缓存服务器或限制数据库连接

bull 小使用ldquo锁rdquo机制

60

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 61: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Web应用程序 进后台

平台 应用程序服务器

操作系统 络

输出

又是输相关的问题

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 62: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

11跨站点请求伪造-示例(12)

bull 利用站点已验证通过的用户会话(需获取用户的登录凭证) mdashhttpvictimorgaddFrienddo

friend=attackergmailcom

bull 当个已经登录victimorg的用户打开个包含有XSS攻击代码的页面(或者通过个隐藏的iframe)并且该XSS代码执上述的URL请求则该用户就会执addFriend这个操作

bull 结果用户在不知情的情况下添加了攻击者作为自的好友

62

教育博客CSRF漏洞演示

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 63: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

11跨站点请求伪造-示例(22)

bull 新浪微博2011年6月28日晚间的规模XSS+CSRF蠕事件 mdash事件时间线16分钟

ndash 2014开始有量带V的认证用户中招转发蠕 ndash 20302ktcn中的病毒页面法访问 ndash 2032新浪微博中hellosamy用户法访问 ndash 2102新浪漏洞修补完毕

mdash感染数32961

bull 病毒作者使用的用户名是为了向世界上第个XSS+CSRF蠕作者samy致敬

63

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 64: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

11跨站点请求伪造-描述

bull 从名称上来看类似跨站点攻击但实质上完全不同 mdashXSS是滥用用户对Web站点的信任

mdashCSRF是滥用Web站点对其授权用户的信任

bull 伪装成来自受信任站点的合法用户 mdash有时也被称为会话劫持攻击

bull 典型案例 mdash 诱骗用户访问个图片源标记为恶意请求链接的页面从触发个

异步的恶意远程调用

mdash 接受受信任并且通过验证的用户的输但并不检查数据的来源地址

64

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 65: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

11跨站点请求伪造-与XSS的联系

bull 跨站点请求伪造通常伴随XSS漏洞利用过程

bull 先有XSS再有CSRF mdash借助XSS漏洞获得在用户浏览器执脚本的机会

bull 没有XSS样可以有CSRF mdash借助已通过站认证和获得授权的用户浏览器会

ndash 假借用户的合法cookie mdash个URL即可触发次CSRF

ndash httpvictimorgdeluserphpid=admin

65

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 66: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

11跨站点请求伪造-解决案

bull 使用GET法进查询操作 mdash便用户加收藏夹 mdash可以通过电邮件的式发送链接地址给其他用

bull 使用POST法进更新操作 mdash不能被用户加收藏夹或通过电邮件告知

mdash不能被随意的重新提交 mdash增加XSS攻击的难度

66

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 67: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

11跨站点请求伪造-解决案

bull 在链接中使用时间戳和加密(防简单重放)

bull 在关键应用处使用CAPTCHA机制 mdash次性令

mdash图片验证码

bull 构造不可预测性

67

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 68: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

12 PHP的件包含漏洞(14)

bull 漏洞代码实例

mdash当phpini中register_globals =on时 ndash 攻击者通过构造 $server_root 作为请求参数

动态控制件包含指令

bull 漏洞代码实例

mdash攻击者通过构造URL请求参数中的filename字段动态控制件包含指令 ndash httptestcomtestphpfilename=etcpasswd

68

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 69: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

12 PHP的件包含漏洞(24)

bull 原理 mdashPHP代码的件包含指令中含有动态变量参数

该参数会被攻击者恶意控制实现动态包含任意件

mdash当动态包含服务器的本地件时导致本地件包含漏洞

mdash当动态包含远程第三件时导致远程件包含漏洞

69

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 70: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

12 PHP的件包含漏洞(34)

70

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 71: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

12 PHP的件包含漏洞(44)

bull 解决案建议 mdash严格检查变量是否已经初始化 mdash输参数过滤

ndash 服务器端验证 mdash严格检查include类的件包含函数中的参数是否外

界可控 ndash 源代码检查

71

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 72: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

13 件上传漏洞

bull 允许用户上传件可能会让客 mdash在页中嵌恶意代码

ndash 页马控制客户端(站用户)

ndash XSS漏洞 CSRF漏洞 构造钓鱼页面hellip

mdash上传webshell ndash 控制服务器

bull 件上传漏洞原理 mdash接下来会通过PHP代码实例进讲解

72

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 73: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

件上传过程抓包截图

73

$contentType = $_FILES[userfile][type]$filename = $_FILES[userfile][name]

客户端提交的任何变量都可能被伪造

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 74: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

件上传漏洞PHP代码剖析

74

如果上传件名为 testphpdoc呢如果是testphp00doc呢

根据PHP官的档说明该值完全可以被伪造客只需修改浏览器的post请求头即可绕过这段代码检查进上传任意类型的件

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 75: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

有意思的NULL字符截断问题

bull 何为NULL字符 mdash00

mdashASCII码为0

bull PHP官在2010年12月9日PHP 534版本正式修复了该漏洞 mdashCVE-2006-7243

mdash用了4年时间修补个漏洞 mdashPHP 534之前版本仍然受此漏洞影响

bull 不仅仅是PHP语受此漏洞影响

75

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 76: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

判断件类型的安全实践(13)

bull 读取件头标识 mdashPNG(8 bytes)89 50 4E 47 0D 0A 1A 0A

mdashGIF(6 bytes)47 49 46 38 39 61 (GIF89a)

76

JPGJPEG

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 77: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

判断件类型的安全实践(23)

bull 件头标识指纹匹配够安全吗

mdashNo

bull 对于GIF图片 mdash补充使用getimagesize()

ndash 限制上传的GIF图片分辨率

77

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 78: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

判断件类型的安全实践(33)

bull 对于其他类型件 mdash禁用上传目录的脚本执权限

ndash 例如apache可以使用htaccess ltDirectory uploadgt Allowoverride All ltDirectorygt ltLocation uploadgt Options None Options +IncludesNoExec -ExecCGI RemoveHandler php phtml php3 php4 php5 RemoveType php phtml php3 php4 php5 php_flag engine off php_admin_flag engine off AddType textplain html htm shtml php ltLocationgt

78

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 79: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

继续件上传漏洞

bull 即使 mdash检查是否判断了上传件类型及后缀

mdash定义上传件类型白名单 mdash件上传目录禁脚本解析

bull 仍然推荐 mdash定义件名白名单

mdash上传后件统重命名

ndash 杜绝XSS漏洞 件包含漏洞 字符编码漏洞 hellip

79

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 80: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

14 字符编码漏洞mdashmdash为什么要了解字符编码漏洞

bull 在某些东国家里这种攻击越来越普遍

bull 很多程序员对这种攻击还不了解

bull 通过分析受字符集漏洞影响的各类Web应用程序我们可以更深的了解和修正此类安全问题

80

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 81: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

字节流和数据的本质

81

UTF-8编码

Unicode编码 (little-endian)

Unicode编码 (big-endian)

GBK编码

GBK编码

BOMByte Order MarkmdashmdashWindows记事本惹的祸

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 82: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

常见的字符编码式

bull SBCS (Single Byte Character Set) mdashiso8859-1

bull MBCS (Multi Byte Character Set) mdashvariable-width encoding (GBKGB2312UTF-8) mdashGBK编码表

bull DBCS (Double Byte Character Set) mdashfixed-width encoding (很少见)

bull Unicode (Wide Character Set) mdashhttpenwikipediaorgwikiUnicode mdashUTF-8是针对Unicode的种可变长度字符编码

82

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 83: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

字符集处理过程中可能出现的安全问题(13)

bull 上下层使用的字符集不致导致数据的意义出现问题 mdashWeb应用各层之间都需要对数据做出适当的解释

mdash理解不致就会出现问题

bull IE字符集自动识别导致XSS mdashIE会采用ldquo智能rdquo识别技术去识别字符集编码

ndash 根据HTTP Header头里的指定 ndash 根据HTML头部数据自选择

ndash Meta头里指定的Charset

ndash IE 8 Strip-meta tag攻击

83

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 84: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

字符集处理过程中可能出现的安全问题(23)

bull 错误的进UTF-8解码

bull 对于非法数据的处理理解上不致 mdash替换成或者其他的字符

mdash直接抛弃

mdash截断 mdash这种处理式都可能带来安全问题

84

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 85: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

字符集处理过程中可能出现的安全问题(33)

bull 某些字符集天的缺陷 mdash如GB2312BIG5等字符集低位包含某些元字符 mdash [ | lt gt ` hellip mdash这样程序即使对字符集完全处理正确在处理字节流时

很可能吃掉上面的这些元字符从造成元字符过滤的匹配失败(bypass filter )

85

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 86: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

个MBCS处理的漏洞list

bull Hotmail XSS httpwwwsecurityfocuscomarchive1450723

bull Yahoo webmail xss mdash Yahoo修复过在html属性里出现的字符集问题 mdash 字符集问题不只出现在html属性同样存在于cssjs等地 mdash Yahoo的Filter基于语法分析语法分析的时候为非MBCS字符集 mdash Filter没有处理好在css里的非法字符导致MBCS环境下的xss mdash Exploit

ndash ltstylegt x background url(httpwwwgooglecnchr)background

url(httpcolorredwwwgooglecn) ltstylegt ltdiv id=xgtcodzltdivgt

86

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 87: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

个UTF-7处理的漏洞list

bull Microsoft Internet Information Services UTF-7 XSS Vulnerability [MS06-053]

bull Apache2 Undefined Charset UTF-7 XSS Vulnerability

bull XSS with UTF-7 in Google

87

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 88: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

字符集处理过程漏洞的利用

bull 钓鱼

bull 逃避杀毒软件查杀

bull 规避各种过滤规则 mdashXSS过滤绕过 mdashSQL Injection过滤绕过

mdashPHP magic_code机制绕过

88

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 89: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

字符集问题的安全防护

bull 用正确的字符集编码理解数据

bull 理解上下层之间处理数据的式

bull 尽量使用相对安全的编码UTF-8

bull 处理好非法数据

89

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 90: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

UTF-8就安全了吗

bull Apache Tomcat Directory Traversal Vulnerability mdash类似于2000年IIS 50的Unicode漏洞 mdashc0aec0ae被解析成

mdashCVE-2008-2938 mdash影响Tomcat 6018之前所有版本

bull 应用程序解析不当样导致漏洞

90

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 91: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

15 第三程序漏洞

bull 2009年discuz站点批量被事件中的教训 mdashWeb内容引用代码包含需谨慎

ndash 第三站告链接 ltimg src= httpmalware-script gt

ndash 第三站脚本API ltscript src= httpmalware-scriptgtltscriptgt

ndash 第三站页面嵌 ltiframegtltdivgtltscriptgt

bull Java的Struts 2x框架漏洞 mdashHTTP GET参数中的同名参数处理缺陷

91

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 92: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

2009年discuz站点批量被事件(12)

bull 事件过程还原 mdash2009年1月8日1138分 部分使用Discuz搭建论坛的站长发现

论坛首页出现 Hacked by ring04h just for fun 的提示 mdash2009年1月8日1154分 官安全部门发现站点 http

customerdiscuznet 域名被劫持 mdash2009年1月8日1155分 被劫持域名的重新定向作完成 mdash2009年1月8日1215分 官论坛已经发放代码清除产品包

92

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 93: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

2009年discuz站点批量被事件(22)

bull 事件原因分析 mdash站长登录Discuz后台首页后 Discuz系统将自动

输出类似如下的代码

mdash攻击者挟持Discuz后台信息通知系统域名并在newsphp里面写恶意代码

93

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 94: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Java的Struts 2x框架漏洞分析(14)

bull HTTP Parameter Pollution处理缺陷 mdashhttpwwwexamplecomapptestaaaction

id=cccampid=aaa mdashAction中定义了

ndash private String id public String getid() return id public void setid(String id) thisid = id

94

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 95: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Java的Struts 2x框架漏洞分析(24)

bull Action会取到id的值为ldquoccc aaardquo注意中间是有空格的

bull 这种数据是由struts2把两个参数合并成的但是如果我们requestgetParameter(id)拿到的值却只是第个(值为ccc)

95

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 96: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Java的Struts 2x框架漏洞分析(34)

bull 以下是问题代码的片段

bull String id = requestgetParameter(ldquoid) if(id=nullampamp idindexOf()gt-1)

hellipSQL注检测代码

业务逻辑代码

String sql = select book_namebook_content from books if (id = null) sql += where book_id like + id +

96

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 97: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Java的Struts 2x框架漏洞分析(44)

bull 漏洞利用代码 mdashhttpwwwexamplecomapptest

findUserByIdaction id=aaaaaampid=a union select namepass from user where ltgt

bull 解释 mdash上述代码直接绕过了拦截器的判断因为拦截器

获取的requestgetParameter(id)是第个参数的值aaaaa单引号成功逃避检测

97

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 98: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Web应用程序漏洞Top 10 in 2010

98

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 99: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Web应用程序漏洞Top 10 in 2013

99

httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 100: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

再谈谈平台相关的漏洞

bull Tomcat 4x泄漏件源代码漏洞

bull nginx件类型错误解析漏洞

bull 平台相关弱令空令 mdashFTP SSH 远程桌面 hellip

bull PHP语和解析器漏洞

bull 特定浏览器上的ldquo诡异rdquo漏洞

100

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 101: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Tomcat 4x泄漏件源代码漏洞演示

bull 源代码泄漏缺陷

101

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 102: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

nginx件类型错误解析漏洞(13)

bull nginx默认以CGI的式支持PHP执 mdash配置件中支持正则表达式

bull CGI式的PHP解释执环境核是环境变量的正确配置

102

[HTTP_HOST][HTTP_CONNECTION][HTTP_USER_AGENT][HTTP_ACCEPT][PATH][SERVER_SIGNATURE][SERVER_SOFTWARE]

[SERVER_NAME][SERVER_ADDR][SERVER_PORT][REMOTE_ADDR][DOCUMENT_ROOT][SERVER_ADMIN][REMOTE_PORT]

[GATEWAY_INTERFACE][SERVER_PROTOCOL][REQUEST_METHOD][QUERY_STRING][REQUEST_URI]

[SCRIPT_NAME][SCRIPT_FILENAME][PATH_INFO][PATH_TRANSLATED][PHP_SELF]

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 103: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

nginx件类型错误解析漏洞(23)

bull 假设目标站点存在以下资源 mdashhttpvictimorgcnssjpg

bull 攻击者通过以下URL进访问 mdashhttpvictimorgcnssjpgcnssphp

bull 如果nginx配置件中 mdashcgifix_pathinfo=1 (默认配置)

bull 此时的nginx CGI环境变量设置情况为

103

[SCRIPT_FILENAME]=scriptscnssjpg[PATH_INFO]=cnssphp

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 104: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

nginx件类型错误解析漏洞(33)

bull httpvictimorgcnssjpg HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100530 GMT Content-Type imagejpg Content-Length 18Last-Modified Thu 20 May 2010 062634 GMT Connection keep-aliveKeep-Alive timeout=20 Accept-Ranges bytes

bull httpvictimorgcnssjpgcnssphp HTTP11 200 OKServer nginx0632 Date Thu 20 May 2010 100649 GMT Content-Type texthtmlTransfer-Encoding chunked Connection keep-aliveKeep-Alive timeout=20 X-Powered-By PHP526

104

成功实现以PHP来解析任意类型件

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 105: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

平台相关弱令空令

bull防御森严的络和系统往往都是被弱令空令轻易击溃

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 106: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

PHP语和解析器漏洞

bull PHP官的bug统计

bull CVE的漏洞数据统计

106

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 107: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

特定浏览器上的诡异漏洞(12)

bull 你能读懂下面这个URL吗 mdashhttplightlztaobaocom

r=687474703A6E3576312E636F6D5Cttaobaocomaaspid=30760

mdashhttplightlztaobaocomr=httpn5v1comttaobaocomaaspid=30760

bull httpn5v1comttaobaocomaaspid=30760

107

解码之

用户点击后跳转到这个址

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 108: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

特定浏览器上的诡异漏洞(22)

bull httpn5v1comttaobaocomaaspid=30760

108

智能纠错

遵循标准

bull httpn5v1comttaobaocomaaspid=30760

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 109: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

优秀的程序员

兴趣时刻充满好奇要学习

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 110: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

蹩脚的程序员

110

不能以计算机和程序设计为乐

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 111: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

111

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 112: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

案例讲解

bull 案例某型门户站的渗透纪实

bull 案例某个电脑的渗透纪实

112

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 113: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

案例某型门户站的渗透纪实

bull 零扫描 mdashGoogle Hacking

bull 拓扑扫描 mdash域名扫描 主机扫描 服务扫描 hellip

bull 确定渗透发点

bull 渗透过程中的细节问题

bull 总结报告

113

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 114: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

案例某个电脑的渗透纪实

bull 社会程学钓鱼案例 mdash邮箱的SMTP认证漏洞

mdash用户安全意识弱

mdash所有应用和络服务都使用单令

ndash 单个令泄露整个身份认证防护体系瘫痪

114

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 115: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

案例启示

bull 如果没有漏洞(弱点)攻击法得

bull 安全防护的桶原理 mdash任何个络与系统的安全短板都能成为渗透的跳板和

bull 永远不要忽视的因素

115

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 116: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

本章内容提要

bull 络与系统渗透基本原理

bull 络与系统渗透案例讲解

bull 渗透测试具

bull 实验讲解

116

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 117: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

渗透测试具简介

bull 具分类 mdash自动化程度 ndash 全自动化 ndash 半自动化 ndash 测试

mdash攻击性 ndash 漏洞扫描 ndash 漏洞利用

mdash测试法 ndash 主动测试 ndash 被动测试

117

mdash测试对象 mdash络应用服务

mdashWEB应用SMTPIMAPhelliphellip

mdash操作系统 mdash本地应用服务

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 118: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

自动化具or测试

bull 自动化具 mdash优势通用性节省测试时间保证测试的覆盖率 mdash不针对性不强误检率通常较容易触发安全设备

(防墙IDS等)的报警

bull 测试 mdash优势针对性强准确性欺骗性更强 mdash不检测效率低费时费

118

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 119: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

再次重申知法守法

119

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 120: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

再次重申知法守法

120

刑法修正案(七)在刑法第285条中增加两款(第款第三款)

违反国家规定侵前款规定以外的计算机信息系统或者采其他技术段获取该计算机信息系统中存储处理或者传输的数据或者对该计算机信息系统实施法控制情节严重的处三年以下有期徒刑或者拘役并处或者单处罚情节特别严重的处三年以上七年以下有期徒刑并处罚

提供专门于侵法控制计算机信息系统的程序具或者明知他实施侵法控制计算机信息系统的违法犯罪为为其提供程序具情节严重的依照前款的规定处罚

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 121: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Web渗透具mdashmdash测试

bull Firefox的渗透测试相关扩展 mdashFirebug mdashTamperData mdashFireForce mdashHackBar mdashLive HTTP Headers mdashGroundSpeed mdashXHTML Mobile Profile + wml browser + Modify Headers

121

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 122: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Firebug

bull 调试具 mdashHTML CSS Javascript mdash络通信数据

bull 编辑具 mdash所见即所得编辑 mdash编辑效果即时效

bull 逆向具 mdash反查页面元素对应代码

ndash HTMLXPATHCSS PATH

122

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 123: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

TamperData

bull 实时拦截HTTP请求数据

bull 实时编辑HTTP请求数据 mdash编辑

mdash基于规则的自动替换

bull 内置常用渗透测试攻击向量 mdash可以自编辑维护

123

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 124: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Fireforce

bull 基于字典的Web表单认证暴破解 mdashGET

mdashPOST

mdash不支持CAPTCHA机制

124

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 125: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

HackBar

bull SQL注 mdash内置多种编码式支持

ndash 数据库编码相关函数 ndash 攻击向量混淆相关函数

bull XSS mdash内置多种编码式支持

ndash 攻击向量混淆相关函数

125

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 126: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

Live HTTP Headers

bull HTTP通信数据抓包 mdash支持自定义过滤规则

bull HTTP通信抓包数据重放 mdash支持编辑后重放

mdashGET POST

126

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 127: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

GroundSpeed

bull Web表单认证傻瓜破解辅助 mdash自动显示所有表单元素

mdash快速编辑任意表单元素

ndash 节点元素属性的编辑删除

127

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 128: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

移动Web应用渗透

bull XHTML Mobile Profile mdash增加桌面版Firefox的移动站点页面支持

ndash 增加applicationvndwapxhtml+xml识别和支持 bull wml browser

mdash告诉Web站点当前浏览器支持WML页面渲染 bull Modify Headers

mdash自定义规则自动替换HTTP请求头 ndash 篡改User-Agent伪装任意浏览器客户端

128

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 129: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

实验讲解

bull 实验Web漏洞利用 mdash基于WebGoat

mdash基于定制开发的弱点应用程序

bull 实验系统漏洞利用 mdash基于Metasploit(观看录像)

129

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 130: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

参考献(13)

bull 件类型头标识指纹库 httpwwwgarykesslernetlibraryfile_sigshtml

bull Web漏洞知识库 by 扫啊科技 httpwwwsaoatechcomknowledgehtml

bull Advanced SQL Injection httpwwwowasporgimages774Advanced_SQL_Injectionppt

bull OWASP Testing Guide v3 httpswwwowasporgimages556OWASP_Testing_Guide_v3pdf

bull OWASP Top Ten Project httpswwwowasporgindexphpCategoryOWASP_Top_Ten_Project

130

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 131: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

参考献(23)

bull Web安全思维导图 httphuangweimeworksWebSecInDepth20html

bull nginx件类型错误解析漏洞 httpwww80seccomnginx-securithtml

bull CVE漏洞统计信息 httpwwwcvedetailscom

bull MySpace Samy蠕技术分析 httpnamblapopulartechhtml

bull 社会程学案例剖析 by 冷漠 httpwwwlengmonetpost404

bull 新浪微博被攻击完整技术分析 httpsitedoubancomwidgetnotes2313210note158756925

131

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 132: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

参考献(33)

bull 关于 Discuz 后台信息通知系统域名被劫持 部分站点受到影响的说明 httpwwwdiscuznetthread-1184256-1-1html

bull 渗透测试标执准PTES httpwwwpentest-standardorgindexphpMain_Page

bull How Hackers Target and Hack Your Site httpresourcesinfosecinstitutecomhacking-a-wordpress-site

132

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133

Page 133: nsLecture0x07...1.未验证的用户输 -解决 案(3/3) • 服务器返回给客户端的重要参数、赋值使用 HMAC进 参数签名 • 千万不要使用MD5、SHA-XXX之类的摘要算法对参数进

课后思考题

bull XSS与CSRF有什么区别与联系

bull SQL注的全面防御案应如何设计

bull 件上传漏洞如何测试全面防御案应如何设计

bull 调研主流WEB应用开发框架在代码层面做了哪些常见漏洞类型的防御具体是如何实现的历史版本中出现过哪些防御机制被突破的例

133