利用Cross-site Script进入内网的攻击方式

最近在研究的一种利用cross-site scripting进入企业或者个人内网的攻击方式,流程如下:

1.黑客在一个有xss漏洞的internet网站上注入javascript代码,这段代码能在网页被访问时自动在后台执行,用AJAX中常用到的XMLHTTP Get Request得到内网信息,用XMLHTTP Post Request发送信息到黑客的站点。

2.一个内网用户访问这个被注入的internet网站,因为该internet网站服务器同时也在企业内网中,于是XMLHTTP Get Request使用当前用户的身份,访问到内网的网站。成功返回后在使用XMLHTTP Post Request发送信息到黑客的站点。

3.黑客站点收到Post Request后对数据进行解析,并保存。

而该攻击对内网(intranet)十分有效的另外一点是因为IE的默认设置,默认情况下Intranet的Security Level是‘中低’,而且

Internet Options -> Security Settings -> Miscellaneous -> Access data source across domains 的默认选项是‘Prompt’

也就是所当js脚本在后台做跨站点数据传送的时候,前台用户只会说到一个提示框。

而firefox2中则默认禁止了跨站点数据传送,所以这种攻击无法在firefox2中实现。

Sample Code 下载

SPI Dynamics 利用该方法写了一个扫描内网的脚本,能够将内网信息一览无遗:

http://www.spidynamics.com/spilabs/education/articles/JS-portscan.html

病毒关闭卡巴斯基的三种方式

和著名的病毒AV终结者做了两天艰苦的斗争,终于把它小子给灭了,不过说句老实话,还真是一个让人抓狂的病毒,尤其是它对付杀毒软件的本事。
本文以卡巴斯基为例,讲述本人亲身经历的病毒关闭卡巴斯基的三种方式。

1. 关闭包含“卡巴斯基”的窗口。

原理:用其它进程监视窗口名称,如何包含“卡巴斯基”则关闭之。

解决:进入安全模式,用SRENG等工具清理启动文件、服务、驱动。有些比较强大的病毒连安全模式都帮你禁了,需要先把病毒手工删了,比如AV终结者

2. 映像劫持卡巴斯基启动文件。

表现症状为点击kvp.exe显示系统找不到该文件,或根本不能通过点击kvp.exe来启动卡巴斯基。

原理:通过修改注册表项,达到我想运行QQ.exe,结果运行的却是FlashGet.exe

解决:打开注册表,HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options 下删除被劫持的杀毒软件程序名

3. 倒转时光20年来狙击卡巴斯基

因为这样的话卡巴斯基开机启动就会报“授权文件激活日期错误”。

原理:病毒把系统时间改到20年以前了。

解决:把时间改回来重启系统就可以了。不过如果重启后病毒又把时间改回去就需要用狠一点的办法。然后装好卡巴斯基,灭了病毒后在把这个设置改回来。

Crawlfish Project

Crawlfish Project is a security tools project.

Author: ericfish all right reserved.

关于:
* 一个安全工具集的项目。

开发环境
* .net framework 2.0

项目进展:

2007-8-28 CrawlFish Beta2 发布
下载:http://crawlfish.googlecode.com/files/CrawlFishInstallBeta2.msi
更新:
1.Cryptor
2.Auditor
3.Javascript Supported

2007-4-17 CrawlFish Beta1 发布
下载:http://crawlfish.googlecode.com/files/CrawlFish-r080.zip
更新:
1. HTTP Editor
2. Spider

SQL injection and Command injection

以前画过一张Phishing的流程图,最近找到一张日文的SQL injection流程示意图,把它按照自己的理解(因为本人基本上不会日文)翻译成英文。

可以看到很多Command Injection其实是借助了SQL Injection的漏洞,攻击database只是入侵内部网络的第一步而已。

更多内容推荐去OWASP看看:

http://www.owasp.org/index.php/SQL_Injection

http://www.owasp.org/index.php/Command_Injection

生日攻击

在一本讲代码安全的书里面看到一个很有意思的问题:

如果房间里有183个人,那么其中某个人和你的生日相同的概率是50%。然而,如果希望找到其中任意两个人生日相同的概率为50%,则房间里需要多少人呢?

答案是23。计算公式参看这里

这个就是生日悖论,结果要比我主观猜想的要小得多。也就是说你走进一个22人的教室,要其中一个人和你的生日相同的概率很小,但要其中任意两个生日相同的概率则很高。

转到代码安全中的哈希加密,情况转换成两段不同的字符(人),用哈希加密可能得到相同的密码(生日),而生日悖论的结果说明只要不关心是哪两个字符,找到两个匹配的难度会降低很多。

利用该理论来破解密码的方法就叫做“生日攻击”。

QuickTime Movie 的安全漏洞

12月1日,MySpace遭到蠕虫的攻击,有人在QuickTime Movie中嵌入XSS代码,更改页面,用假的登录菜单骗密码,然后盗取用户身份发送色情链接的即时消息。

这次攻击的最大特点是他的注入代码不是从网站直接输入,而是嵌入在视频文件中,然后通过上传视频来运行和传播。而QuickTime的这个HREF Track的功能本来只是给视频增加链接的功能,不想也可以被用来嵌入javascript,成为安全隐患。

关于QuickTime的漏洞可以参看这里:

http://www.gnucitizen.org/blog/backdooring-quicktime-movies/

总结一句就是,花哨的功能总是安全的隐患。

十大Web 2.0攻击向量

转一篇对web 2.0网站很有用的安全相关的文章


[来源:思归呓语]


Plip提到了一篇名为《Top 10 Web 2.0 Attack Vectors》的文章,对十大Web 2.0攻击向量做了综述:

1. AJAX中之跨站脚本攻击
例子, Yamanner蠕虫利用了Yahoo Mail的AJAX的跨站脚本漏洞,Samy蠕虫利用了MySpace.com的跨站脚本漏洞。

2. XML 中毒(poisoning)
攻击者可以通过复制节点进行DOS攻击,或者生成不合法的XML导致服务器端逻辑的中断。攻击者也可以操纵外部实体,导致打开任何文件或TCP连接端口。XML数据定义的中毒也可以导致运行流程的改变,助攻击者获取机密信息。

3. 运行恶意的AJAX编码
AJAX编码可以在不为用户所知的情形下运行,假如用户先登录一个机密网站,机密网站返回一个会话cookie,然后用户在没有退出机密网站的情形下,访问攻击者的网站,攻击者网页上的AJAX编码可以(通过这个会话cookie?)去访问机密网站上的网页,从而窃取用户的机密信息。(注:这里的解释有点含糊,理论上讲,浏览器不会把一个网站的会话cookie传给另外一个网站的,即文中的这句“When the browser makes an AJAX call to any Web site it replays cookies for each request. ”,不完全对)

4. RSS / Atom 注入
攻击者可以在RSS feeds里注入Javascript脚本,如果服务器端没有过滤掉这些脚本的话,在浏览器端会造成问题。

5. WSDL扫描和枚举
WSDL提供了Web服务所用的技术,以及外露的方法,调用的模式等信息。假如Web服务对不必要的方法没有禁止的话,攻击者可以通过WSDL扫描找到潜在的攻击点。

6. 客户端AJAX编码中的数据验证
假如开发人员只依赖客户端验证,不在服务器端重新验证的话,会导致SQL注入,LDAP注入等等。

7. Web服务路由问题
Web服务安全协议使用WS-Routing服务,假如任何中转站被攻占,SOAP消息可以被截获。

8. SOAP消息的参数操作
类似于SQL注入,假如对SOAP消息里节点的数据不做验证的话。

9. SOAP消息的XPATH注入
类似于SQL注入,假如对数据不做验证而直接做XPATH查询的话。

10. 对RIA胖客户端二进制文件操作
因为Rich Internet Applications的组件是下载到浏览器本地的,攻击者可以对二进制文件进行逆向工程,反编译编码,通过改动文件,跳过认证逻辑 。

英雄Samy

一个很有趣的AJAX网站漏洞攻击案例:

19 岁的洛杉矶软件开发员“Samy”编写了一段代码放在自己的MySpace简介里,令他获得了逾100万网上“好友”,直至MySpace使该程序失效。这段JavaScript代码自动将每一个查看Samy个人简介的用户加Samy为好友。

而在通常情况下,列为好友需要得到该用户的同意,但他写的蠕虫使用Ajax技术,在得到用户身份后用Ajax自动调用后台批准请求。

接着,该蠕虫会打开该用户自己的简介,把恶意代码复制进去,并把Samy添加到任何人的英雄列表中,还附上一句话:“但Samy是我最敬佩的英雄”。同样,任何查看该用户简介的人也会被感染。5小时内,Samy的名声和“人气”迅速扩大到100万MySpace会员。

此时,该网站的管理员才发觉大量活动,被迫将MySpace关闭数小时,以清除该蠕虫病毒。

Samy的个人网站,看得出他自己颇为得意:”I’ll never get caught. I’m Popular.”

Samy自己贴出的蠕虫源代码,和漏洞分析。

在Samy的代码中使用下面的方法通过MySpace网站对Cross-site Script的关键字检查:

background:url(‘javanscript:eval(document.all.mycode.expr)’)

alert(eval(‘document.body.inne’ + ‘rHTML’));

代理和监听

网络上有很多提供免费的代理地址的网站,比如:http://www.proxy4free.com/


国外的代理通常可以帮助我们绕过GFW访问到一些原本无法访问的网站,但其中有不少安全隐患,在使用代理的时候,不要在访问非https加密的网站时输入个人的隐私信息,因为代理软件可以很轻松记录下你所有的输入。


比如这个叫Achilles(网址: http://packetstormsecurity.nl/filedesc/achilles-0-27.zip.html)的软件,它是一个代理服务器,在一个HTTP会话中扮演着“中间人”(man-in-the-middle)的角色。一个典型的HTTP代理服务器将在客户浏览器和web服务器间转发数据包,但Achilles却载取发向任一方的HTTP会话数据,并且在转发数据前可以让用户修改这些数据。


你也可以用C#自己写一个HTTP代理的软件


比代理更厉害的是监听软件,它能够主动的侦测局域网内的网络流量,并对内容进行解析。



监听软件的目的可以有两个:


1. 比较正面的作用是可以通过网络监视,对网络故障进行快速定位。


2. 比较反面的作用是针对未加密的账号,口令等敏感内容进行截获。


介绍两个监听软件:


WinDump: 通过Dos下命令行操作,比较不方便,但功能很强大。


Iris Network Traffic Analyzer: 强大的图形化界面,使用简易,功能很全,建议在公司的局域网内不要使用,容易把网管给招来。

JavaScript 真的很不安全

AJAX让javascript再次大行其道,但JavaScript 真的很不安全。


基于JavaScript的浏览器攻击层出不穷,news.com.com上报道的新的漏洞


客户端的js脚本能够在客户端扫描你的机器和内网。然后用Ajax技术将结果发回服务器端。而你所做的只是在浏览网页,你根本不知道后台的javascript在做写什么。


SPI Dynamic的一个该漏洞的测试页面


想要完全剔除这样的漏洞很难,因为它使用的都是常用的js函数,如果禁用这些函数,那么一大批在线的网站都会受影响。


所以Ajax就安全而论,是祸不是福。