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

Web攻防-XSS跨站文件类型功能逻辑SVGPDFSWFHTMLXMLPMessageLocalStorage

知识点:
1、Web攻防-XSS跨站-文件类型-html&pdf&swf&svg&xml
2、Web攻防-XSS跨站-功能逻辑-postMessage&localStorage

一、演示案例-WEB攻防-XSS跨站-文件类型触发XSS-SVG&PDF&SWF&HTML&XML等

1、SVG-XSS

SVG(Scalable Vector Graphics)是一种基于XML的二维矢量图格式,和我们平常用的jpg/png等图片格式所不同的是SVG图像在放大或改变尺寸的情况下其图形质量不会有所损失,并且我们可以使用任何的文本编辑器打开SVG图片并且编辑它,目前主流的浏览器都已经支持SVG图片的渲染。

<svg xmlns="http://www.w3.org/2000/svg" version="1.1"><circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" /><script>alert(1)</script>
</svg>

在这里插入图片描述
在这里插入图片描述
通过文件上传功能上传一个SVG文件(该文件已经提前植入XSS代码),然后在访问这个上传后的svg地址即可触发上图效果

2、PDF-XSS

制作工具:迅捷PDF编辑器试用版

(最好网上找破解版,然后导入其他正常的pdf,在正常的pdf插入js动作)

1、创建PDF,加入动作JS

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、通过文件上传获取直链
在这里插入图片描述
3、直链地址访问后被触发
在这里插入图片描述

利用python创建一个含有XSS的PDF文件

from PyPDF2 import PdfReader, PdfWriter
# 创建一个新的 PDF 文档
output_pdf = PdfWriter()
# 添加一个新页面
page = output_pdf.add_blank_page(width=72, height=72)
# 添加js代码
output_pdf.add_js("app.alert('123');")
# 将新页面写入到新 PDF 文档中
with open("xss.pdf", "wb") as f:output_pdf.write(f)

使用python3运行这个python文件即可在当前目录下生成一个XSS.pdf文件,用浏览器打开这个pdf即可触发js代码
在这里插入图片描述
参考地址:https://www.bmabk.com/index.php/post/151955.html

和正常PDF绑定from PyPDF2 import PdfReader, PdfWriter
# 打开原始 22.PDF 文件
input_pdf = PdfReader("22.pdf")
# 创建一个新的 PDF 文档
output_pdf = PdfWriter()
# 将现有的 PDF 页面复制到新文档
for i in range(len(input_pdf.pages)):output_pdf.add_page(input_pdf.pages[i])
# 添加 javaScript 代码
output_pdf.add_js("app.alert('123');")
# 将新 PDF 文档写入到文件中
with open("xssplus.pdf", "wb") as f:output_pdf.write(f)提前准备好一个22.pdf文件,与当前py脚本放在同一个目录下,运行该py脚本即可在当前目录下生成一个xssplus.pdf

在这里插入图片描述
在这里插入图片描述

3、SWF-XSS

制作工具:Adobe Flash Professional CS6

1、新建swf文件(SWF文件是Flash动画文件格式)
在这里插入图片描述

在这里插入图片描述
2、F9进入代码区域
在这里插入图片描述
在这里插入图片描述
3、属性发布设置解析(root指当前swf文件)

//取m参数
var m=_root.m;
//调用html中Javascript中的m参数值
flash.external.ExternalInterface.call(m);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
触发:?m=alert(/xss/)
在这里插入图片描述

实战中如何利用

1.通过文件上传自己制作的swf文件然后去访问执行
在这里插入图片描述
在这里插入图片描述
2、找到目标上存在的swf文件进行反编译后搜索关键字找xss漏洞
反编译项目:JPEXS Free Flash Decompiler
在这里插入图片描述
JPEXS Free Flash Decompiler工具打开这个swf文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试swf文件xss安全性:
1、反编译swf文件
2、查找触发危险函数
3、找可控参数访问触发
xss一是指执行恶意js,那么为什么说flash xss呢?是因为flash有可以调用js的函数,也就是可以和js通信,因此这些函数如果使用不当就会造成xss。常见的可触发xss的危险函数有:getURL,navigateToURL,ExternalInterface.call(最多),htmlText,loadMovie等等
在这里插入图片描述

4、HTML-XSS

单纯在HTML代码中写XSS代码即可
<script>alert(123)</script>

在这里插入图片描述
在这里插入图片描述

5、XML-XSS

XML文件本身不能执行JavaScript 代码,XML中可以加载外部的资源方式来触发XSS

流程:通过文件上传上传x.xml文件,得到x.xml文件路径,然后在上传一个xss.xml文件,代码中指向x.xml文件的路径,浏览器访问xss.xml就会触发x.xml中的xss

创建一个x.xml文件,内容如下:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html><body>
<script>alert(/xss/);</script>
</body></html>
</xsl:template>
</xsl:stylesheet>

在这里插入图片描述
然后对其进行引用:

创建一个xss.xml文件,内容如下:
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="http://127.0.0.1/x.xml"?>
<test></test>

在这里插入图片描述
在这里插入图片描述

二、演示案例-WEB攻防-XSS跨站-功能逻辑触发XSS-PostMessage&LocalStorage

1、PostMessage XSS

一个用于在网页间安全地发送消息的浏览器API。它允许不同的窗口(例如,来自同一域名下的不同页面或者不同域名下的跨域页面)进行通信,而无需通过服务器。通常情况下,它用于实现跨文档消息传递(Cross-Document Messaging),这在一些复杂的网页应用和浏览器插件中非常有用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安全原因:当发送参数可控且接收方处理不当时,将导致XSS

在这里插入图片描述
在这里插入图片描述

模拟漏洞挖掘场景

打开http://192.168.1.4:82/60/receive.html
分析源码
在这里插入图片描述
在这里插入图片描述

根据页面源码写一个xss.html文件上传上去来控制msg触发XSS

黑盒挖掘

如何去挖这种隐藏比较深的漏洞,这里强推一个国外白帽写的谷歌浏览器插件:
https://github.com/fransr/postMessage-tracker安装之后,只要是当前页面创建了message事件监听,这个插件就会定位到其代码。

白盒挖掘

找代码中此操作类函数及关键字分析
复盘:https://mp.weixin.qq.com/s/M5YIkJEoHZK6_I7nK6aj5w

2、localStorage型xss(存储型Xss升级版)

Web应用使用localStorage在用户浏览器中存储数据。localStorage允许网页在本地存储键值对,这些数据可以在浏览器关闭后仍然保留,并且在同一域名下的不同页面之间共享。当应用程序从localStorage中读取数据并将其显示在页面上时,如果没有对数据进行充分的验证和过滤,攻击者就有可能通过修改localStorage中的数据来注入恶意脚本实现XSS
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安全原因:当localStorage可控且有页面有操作其数据,将导致XSS

黑盒挖掘:寻找输入点(如表单、搜索框、评论区等),构造测试用例找页面调用

白盒挖掘:查找与localStorage相关的代码段分析数据存储及数据读取

挖掘:先看目标应用localStorage

1、先找能控制的键名键值(怎么找)
在这里插入图片描述
在这里插入图片描述
2、再找对键名键值做输出操作(怎么找)
在这里插入图片描述

在这里插入图片描述
或者也可以从js里搜索userData关键字找谁调用了这个值
在这里插入图片描述

http://www.lryc.cn/news/571114.html

相关文章:

  • Jeston orin nano利用SDK Manager安装ubuntu系统
  • 【Mac 上离线安装 ADB 工具】
  • iOS即时通讯发送图片消息内存暴涨优化
  • OpenCV CUDA模块设备层-----用于CUDA 纹理内存(Texture Memory)的封装类cv::cudev::Texture
  • 《计算机网络·自顶向下方法》第 2 章 应用层
  • 六.架构设计之存储高性能——缓存
  • K8S 专栏 —— namespace和Label篇
  • Gödel Rescheduler:适用于云原生系统的全局最优重调度框架
  • 实现汽车焊装线设备互联:DeviceNet与Modbus TCP协议转换网关
  • 10.C S编程错误分析
  • 数字电路研究的是直流信号还是交流信号
  • 远程桌面连接 - 允许电脑从网络外部访问计算机
  • 当 GitLab 服务器网络配置发生变化,如何修改
  • 【Unity笔记】Unity URP 渲染中的灯光数量设置— 场景、使用方法与渲染原理详解
  • 黑龙江亿林数据 - 服务器托管
  • 无人机数据处理系统设计与难点
  • Uniapp插件改造指南:如何让vue-plugin支持HarmonyOS5原生能力?
  • Uniapp 页面路由配置(pages.json)完全指南
  • Attention Backend的认识
  • Node.js 简介(附电子学习资料)
  • LangChain 与 Milvus 的碰撞:全文检索技术实践
  • 苍穹外卖--基于Spring Cache缓存套餐
  • 在Kibana上新增Elasticsearch生命周期管理
  • FairyGUI学习
  • 网上开户系统解析与开发实践
  • Solana 一键冷分仓机制解析:如何低成本实现代币控盘打散?
  • JVM(3)——垃圾回收器
  • 【Java】脱离 JVM 约束 GraalVM + Liberica NIK + Spring + Docker 将 Java 编译为平台二进制可执行文件
  • 实现回显服务器(Echo)基于Tcp
  • 计算机网络期末速成 网络层 判断及单选题