WEB常见漏洞与挖掘技巧研究 广东动易网络——吴建亮 Jannock@wooyun
目录 WEB常见漏洞及案例分析 WEB常见漏洞挖掘技巧 新型WEB防火墙可行性分析 Q/A
WEB常见漏洞及案例分析 SQL注入 XSS/CSRF 文件上传 任意文件下载 越权问题 其它
SQL注入 产生SQL注入的主要原因是SQL语句的拼接
近一个月,我在乌云上提交的SQL注入类型 具体可以看一下: http://www.wooyun.org/whitehats/Jannock SQL注入是最常见,所以也是我在乌云上提交得最多的一种漏洞。 而这些注入漏洞中,大部分是完全没有安全意识(防注意识)而造成的。 只有少数才是因为编码过滤或比较隐蔽而造成的注入。 从另一个角度来说,目前大家对SQL注入还是不够重视,或者是开发 人员对SQL注入的了解还不够深刻。
案例:经典的万能密码 网站万能密码相信大家都不陌生。 但有没有想到这万能密码会出现在某安全公司的内部网站上? 不过安全公司不重视安全,出现低级的安全漏洞,在乌云上也不见少数。
第一次发现时,直接是 用户名:admin’ or ‘’=‘ 密码:任意 进入后台。 报告给官方后,官方的处理方式是直接加一个防火墙了事。(这种情况在乌云遇到过 几次,可能是不太重视的原因。)
防注与绕过从来就是一对天敌,一个通用的防火墙很难针对任何一处都做到安全, 只想跟厂商说一句,防注,参数化难道真那么难?代码过滤一下比加一道防火墙困难么? 绕过技巧:在firebug 下,把用户名的 input 改成 textarea ,为绕过输入特殊字符作准备
其实就是回车绕过防火墙规则的检测
再次成功进入后台。。
SQL注入关键字 参数化查询 过滤(白名单) 编码(绕过防注、过滤) MySQL宽字节(绕过addshalshes) 二次注入(任何输入都是有害) 容错处理(暴错注入) 最小权限(目前,非常多root,见乌云)
XSS/CSRF 跨站脚本、跨站请求伪造 造成的危害不可少看 实战中大部分无法突破的往往都是从XSS开始, XSS会给你带来不少惊喜。 案例:跨站脚本拿下某团购网
跨站脚本拿下某团购网 某次授权检测一团购网,就是那种十分简单的团购网站,前台功能不多,基本都是静态或者是伪静态,无从入手。然后看到有一个链接到论坛的一个团购心得版块,于是想到,能不能XSS呢。 于是在论坛发一个贴,带上跨站脚本。
数分钟过后,脚本返回了某管理员的cookie信息,后台路径居然也记录在cookie那里去了,这就是跨站脚本带来的惊喜。
后面就顺利了,直接欺骗进入后台,扫描后台可以拿SHELL的地方,直接获得SHELL
XSS/CSRF关键字 编码(不需要支持HTML的地方编码输出) 过滤(过滤有危害的脚本) HttpOnly (防止cookie被盗取) Token(生成表单同时生成token,提交时验证token) 验证码(重要操作可以加入) 检查referer
文件上传 常见案例情况 1)无防范(直接任意文件上传) 2)客户端检查 3)服务端只检查MIME 4)服务端保存原文件名 5)服务端保存路径由客户端传送 6)上传检查逻辑错误
简单找了一下乌云上的一些案例 http://www.wooyun.org/bugs/wooyun-2010-02706 服务端只检查MIME HDwiki文件上传导致远程代码执行漏洞 http://www.wooyun.org/bugs/wooyun-2012-06775 客户端检查 对36氪的一次渗透测试 http://www.wooyun.org/bugs/wooyun-2012-06870 支付宝某频道任意文件上传漏洞 http://www.wooyun.org/bugs/wooyun-2012-07463 腾讯某分站任意文件上传漏洞 http://www.wooyun.org/bugs/wooyun-2012-07914 服务端保存路径由客户端传送 http://www.wooyun.org/bugs/wooyun-2012-06517 江民病毒上报分站真能上传(病毒) http://www.wooyun.org/bugs/wooyun-2012-06749 上传检查逻辑错误 再暴用友ICC网站客服系统任意文件上传漏洞
文件上传关键字 服务端 文件后辍白名单 文件名注意“;”(IIS6解释漏洞) 文件名注意多“.”(某些apache版本解释漏洞,如 x.php.jpg) 保存路径注意 “.asp”目录 (IIS6解释漏洞) 截断 (常见于asp)
在开发中,由于比较多的情况是上传文件后辍由客户来配置,为了防配置错误或后台拿Shell等情况,所以很多时候为了安全问题,隐藏文件真实路径,这样即使上传了可执行的脚本类型,但找不到真实的上传路径,也是徒劳无功。 但这样往往又会引起“任意文件下载”漏洞。
任意文件下载 以读取方式输出文件内容,有可能存在任意文件下载漏洞。 常见的情况有两种 1)直接传路径 2)数据库储存路径
直接传路径型任意文件下载案例 http://www.wooyun.org/bugs/wooyun-2012-07326 腾讯某子站文件包含后续引发任意文件下载 http://dnfcity.qq.com/servlet/download?filename=WEB-INF/classes/hetaimall-config.properties http://www.wooyun.org/bugs/wooyun-2012-07696 腾讯某子站任意文件下载 http://tap.3g.qq.com:8080/picview?b=idpic&filename=../../../.../../.. /../../../etc/passwd%00.png http://www.wooyun.org/bugs/wooyun-2012-06912 淘宝网招聘频道任意文件下载 http://job.taobao.com/zhaopin/downLoadFile.do?path=school&key=attachments/../../.../../../ etc/passwd%00&genFileName=132000301eba4605f4c82b137babd890ed1c40593.zip
数据库储存路径型任意文件下载案例 http://www.wooyun.org/bugs/wooyun-2012-07709 支付宝某子站任意文件下载漏洞
任意文件下载关键字 注意“..”字符(确保操作是在指定目录下,防止转跳到别的目录) 文件类型 (确保下载的文件类型正确) 路径截断(常见于jsp,asp)
越权问题 越权操作一般是查看,修改或删除别人的信息,当然还有其它更大的危害,常见于后台的情况比较多。 前台一般越权问题常见于信息泄漏,如订单数据泄漏等,开发中比较常见的安全问题。
乌云越权案例: 通过修改地址中的ID,越权操作别人的信息 http://www.wooyun.org/bugs/wooyun-2010-05255 凡客诚品订单泄漏漏洞 http://www.wooyun.org/bugs/wooyun-2012-04853 搜狐招聘查看任意用户简历 http://www.wooyun.org/bugs/wooyun-2012-05390 丁香人才任意简历查看越权 http://www.wooyun.org/bugs/wooyun-2011-03276 京东商城我的投诉查看信息越权 http://www.wooyun.org/bugs/wooyun-2011-01399 起点中文网网络收藏夹越权
越权问题关键字 信息ID+用户ID (查看,修改,删除等操作,必须带上用户ID,检查用户是否有这个权限操作)
如想了解更多开发中要注意的安全问题,可以下载《动易安全开发手册》 基于.NET 2.0 的网站系统开发注意到的安全问题。 下载地址: http://www.powereasy.net/Soft/documents/6419.html
WEB常见漏洞挖掘技巧 白盒测试(代码审计) 黑盒测试(功能测试、Google Hacker、工具扫描) 基于漏洞库的漏洞挖掘
白盒测试 常用工具 1、源代码阅读/搜索工具 2、WEB测试环境 由于开发.net的关系,个人习惯Vs2010
在代码审计方面,很多大牛也发表过很多相关的技术文章,印象中最深刻是那篇《高级PHP应用程序漏洞审核技术》确实能够快速得找到常见漏洞,不过要找更深层的漏洞,必须了解程序的整体架构,每一个小地方都有可能引起安全问题。 由于时间关系,下面主要分享一下,SQL注入审计常用方法
SQL注入代码审计关键字 SQL注入 1、搜索 order by、in(、like 2、深入搜索 select update delete 3、注意SQL拼接的地方,进入的变量是否有过滤处理(如果应用程序有统一的变量处理,也可以逆向查找能绕过的变量,如编码的地方: 关键decode、 stripcslashes等 ) 乌云案例 http://www.wooyun.org/bugs/wooyun-2011-01725 DiscuzX1.5 有权限SQL注入BUG http://www.wooyun.org/bugs/wooyun-2011-02330 Discuz! X2 SQL注射漏洞
案例1、记事狗SQL注入 记事狗微博系统是一套创新的互动社区系统,其以微博为核心,兼有轻博、SNS和BBS 特点,既可用来独立建站也可通过Ucenter与已有网站无缝整合,通过微博评论模块、 关注转发机制打通全站的信息流、关系流,可大幅度提高网站用户活跃度和参与度, 是新时代网站运营不可或缺的系统。 同样,搜 索 select ,注意SQL拼接的地方 modules\ajax\member.mod.php
由于记事狗也加上IDS,但显然,默认规则是比较弱,依然可以盲注 ajax.php?mod=member&code=sel&province=1 and ascii(substr((select password from mysql.user limit 0,1),1,1))<60
案例2、supesite 6.x-7.0 注入 SupeSite是一套拥有独立的内容管理(CMS)功能,并集成了Web2.0社区个人门户系统X-Space ,拥有强大的聚合功能的社区门户系统。 SupeSite可以实现对站内的论坛(Discuz!)、 个人空间(X-Space)信息进行内容聚合。任何站长,都可以通过SupeSite, 轻松构建一个面向Web2.0的社区门户。 搜索UPDATE ,注意进入SQL的参数 viewcomment.php 注意参数 rates ,直接的SQL语句拼接。
从代码可以看出存在注入,利用: 打开一篇资讯评论的地方 http://www.site.com/index.php?action-viewcomment-itemid-1-php-1
提交评论,程序即暴错,可以利用暴错注入来获取想要的数据。
黑盒测试 常用工具 1、浏览器 (Firefox) 2、FireBUG+Firecookie 3、Google
黑盒测试也是前面所介绍的漏洞注意的关键字和经验所形成的条件反应。 检查一个功能是否存在安全问题,通常都是通过非正常方式提交非法参数,根据返回的信息来判断问题是否存在。如注入的地方常常提交“ ‘ ”。 fireBug是一个很好的工具,可以直观地编辑HTML元素,绕过客户客的验证等,还可以通过查询网络请求,看是否存在Ajax的请求,经验告诉我们,Ajax比较容易出现漏洞。
乌云案例: http://www.wooyun.org/bugs/wooyun-2012-08178 腾讯某频道root注入 案例中就是修改日志时,发现存在ajax请求,再修改请求中的参数,发现了注入的存在。
Google Hacker 再说一下Google Hacker Google Hacker在百度百科的介绍 http://baike.baidu.com/view/433742.htm 很多人问我,我的google搜索是不是还有其它技巧,其实也是和上面百科介绍的差不多,也是常 用 site:xxxx.com inurl:admin filetype:php intitle:管理 如搜上传 site:xxx.com inurl:upload / site:xxx.com intitle:上传 等 不过还有一点百科好像没有提到,就是当有很多结果时,我想排除一部分搜索结果。 可以用 “ - ”
像搜索: site:qq.com filetype:php 会有很多微博的,我想排除这些结果。
可以这样搜: site:qq.com filetype:php -t. 出来的结果就没有了微博的内容了。
基于漏洞库的漏洞挖掘 这个容易理解,通过对漏洞库的学习和了解,可以挖掘更多同类型的漏洞,像乌云的漏洞库。 乌云案例: http://www.wooyun.org/tags/支付安全
乌云案例: http://www.wooyun.org/search.php?q=密码修改
还有 ThinkPHP 远程代码执行 Struts2 框架远程命令执行 等。。。 在这里感谢乌云为互联网安全研究者提供一个公益、学习、交流和研究的平台。
新型WEB防火墙可行性分析 我们再看这个图,有个问题,对于这样的大站,在上线之前或者平时,相信 也有很多人用各种漏洞扫描工具扫描,为什么工具不能扫描出这种相对明显 的“数字/字符型”的注入点呢?
我们回看这些注入的地方,发现大部分注入点都是Ajax请求,一般来说,我们了解的漏洞扫描工具都是以爬虫式的偏列页面的地址,但对于这种Ajax或者是Javascript触发的请求,漏洞扫描工具就显得无力了。 弱点:知道漏洞类型,但不知道有那些请求
我们再回看注入案例中的WEB防火墙,简单的换行就能绕过检查规则? 为什么呢?
传统WEB防火墙,只能针对规则拦截,即针对参数中是否存在某些危险关键字,如:select from,union select 等。但他不知道这个请求是否存在漏洞,什么漏洞? 所以存在过虑不完整,存在绕过,更多的是存在误判,严重影响应用程序的使用。 弱点:知道请求,但不知道漏洞类型
传统WEB漏洞扫描工具 新型WEB防火墙 传统WEB防火墙 于是,我们想,能不能把两个工具的结合,组成新型的WEB防火墙呢?
猜想: 在WEB第一次请求时,分析出各请求参数是否存在漏洞?漏洞类型是什么?如何处理? 如: 数字型SQL注入 =》强制转换类型 字符型SQL注入=》根据数据库类型,转换”’”为“\’”或者“‘’” 跨站脚本=》直接编码
新型的WEB防火墙也可以结合各漏洞库,识别应用程序进行拦截防御。 上面只是一个猜想,具体能不能实现,就由各防火墙专家来思考。
Q/A
感谢 WooYun.org