网络攻防实验报告
——XSS攻击
何为XSS攻击?
XSS即Cross-site scripting跨站脚本,它是一种经常在web应用中出现的漏洞,攻击者可以使用该漏洞注入一些恶意代码以实现对受害者的攻击。
一、实验环境
SEEDUbuntu12.04
VMware Workstation 10.0.1
Elgg web application
Firefox with LiveHTTPHeaders extension
二、实验一
Part-1
(一)实验步骤
1.开启apache服务器
sudo service apache2 start
2.访问Elgg并以alice身份登入
3.修改alice的profile并注入script
4.alice退出,samy身份登入并访问alice的profile
Part-2
实验内容:使用脚本文件而不是直接注入代码
1.配置DNS即修改/etc/hosts文件
2.配置Apache server,在/etc/apache2/site-available/default中添加如下代码:
3.在/www目录下添加Example目录并在此目录下添加如下文件:
4.访问www.example.com以测验是否可正常访问
5.访问Elgg,以samy身份登入并修改samy的profile,在Location中添加如下代码:
6.访问Elgg,以alice身份登入并访问samy的profile
四、实验二
实验内容:注入恶意代码来实现显示受害者的Cookies
实验步骤:
1.访问Elgg以alice身份登入,并修改Alice的profile, 添加如下代码:
2.访问Elgg以samy身份登入,并访问alice的profile
五、实验三
1、实验内容:窃取受害者的cookies
2、实验步骤:
Step-1:从SEEDLABS下载tcp server,编译并运行,此时本机的5555端口接受的数据会被tcp server获取
Step-2:访问Elgg,以alice身份登入并修改她的profile,在Location项中添加如下代码:
Step-3:访问Elgg,以samy身份登入并访问alice的profile
此时会发现tcp server已获取cookie并输出到了命令行
六、实验四
1.实验内容:使用窃取的Cookies进行会话劫持
会话劫持的具体任务是:当某个user访问alice的profile时,攻击者就会获取此user的cookie以及__elgg_ts,__elgg_token,然后在本地利用窃取的内容发起会话,将charlie加为该user的好友,这里假设user为samy.
2.实验步骤:
Step-1:以alice身份登入Elgg并在profile的Location项中添加如下代码:
Step-2:访问Elgg以samy身份登入系统
Step-3:启动监听程序,以获取受害者的cookie,__elgg_ts,elgg_token.(注后面两个参数在每次与服务器交互后都不同).
Step-4:samy访问alice的profile
这时监听程序获取到cookie,__elgg_ts,__elgg_token:
攻击者开始发起攻击,系统CentOS6.3
Step-5:修改/etc/hosts文件,如下:
Step-6:使用Live HTTP headers观察Elgg中添加好友时的HTTP请求头的各部分内容
Step-7:编写java代码,发送伪造的添加好友的HTTP请求
Step-8:编译并运行此java文件以发起攻击:
根据结果发现:Http返回码为200,内容是html文档
Step-9:查看samy的好友信息,发现此时charlie已经成为他的好友了.
攻击之前:
攻击之后:
任务完成。
七、实验五
1.实验内容:写一个非自繁殖的XSS蠕虫,其在受害者本地浏览器中伪造Http请求,发送给服务器以实现修改受害者的profile同时添加samy为受害者的好友。
2.实验步骤:
Step-1:首先使用Live HTTP headers查看Elgg用户在修改自己的profile时发送的http请求的具体格式,如下:
Step-2:使用Ajax编写js脚本文件以实现修改受害者的profile.如下:
Step-3:以boby身份登入Elgg并修改其profile,在Location项中添加如下代码:
注:www.example.com配置如下:
1.修改/etc/hosts
2.修改/etc/apache2/site-available/default
3.在/var/www下新建Example项目
Step-4:以charlie身份登入Elgg,查看自己的profile
Step-5:访问boby的profile,再次查看charlie的profile
由上图可看出,受害者的所有原有的profile信息都丢了,只剩下了攻击者留下的about me信息。如果想修改其他部分可以修改上面的JS脚本中content内容,当然还要满足Elgg的格式要求。
如果想同时让受害者添加samy为好友,可以参考上面的格式,以及上一个实验的内容展开。只需在上面的JS脚本中添加加samy的好友的代码即可.
Done!!
八、实验六
1.实验内容:编写一个可自繁殖的XSS蠕虫
实验要求可以使用两种方式,但使用ID Approach是必须的,但我几经尝试后都没成功,所以我使用第二种方法即Src Approach实现这个可自繁殖的XSS蠕虫.
2.实验步骤:
Step-1:编写实现此蠕虫的JS脚本文件xss_worm.js
Step-2:以Boby身份登入Elgg,并修改其profile,在Location项中添加:
Step-3:以charlie身份访问Elgg,并访问boby的profile
这是查看charlie的profile:
Step-4:以alice身份登入Elgg,并访问charlie的profile:
咦,怎么没有什么内容??
此时在以charlie身份登入Elgg,访问自己的profile,点击一次Edit profile,再点击save,然后退出,再以alice登入,访问charlie的profile:
好吧,现在有了,这是为什么?我也不知!!
此时查看alice的profile:
已被修改!
好吧,只能说并未百分百的完成这个Task.
九、实验七
1、实验内容:激活Elgg中的反XSS策略
2、实验步骤:
Step-1:以admin身份登入Elgg
Step-2:点击Plugins,激活HTMLawed 1.8
Step-3:登入Elgg,访问任一个受害者的profile
我以boby身份登入Elgg,访问了boby的profile,如下:
我也访问了alice的profile,同样没有什么现象发生.
Step-4:解除text.php、tagcloud.php等文件中的htmlspecialchars方法调用的注释.
text.php:
tagcloud.php:
......
Step-5:访问任一个受害者的profile
以boby(xss worm的制造者)身份登入Elgg,访问他的profile,发现他的profile中Location项中的js代码消失了.
在访问charlie(受害者)的profile,如下:
蠕虫代码被显示了出来。
Done!
以上是所有的XSS攻击的全部Task.
具体实验要求访问http://www.cis.syr.edu/~wedu/seed/Labs_12.04/Web/Web_XSS_Elgg/