如何编程读取svg文件中的对象_浅谈无 webshell下的文件上传漏洞

记录一个老生常谈的漏洞—文件上传漏洞。其实这个漏洞各位师傅的骚操作很多,大部分都是通过文件上传功能点(或者某些富文本编辑器之类)上传的webshell,当然有些情况下可能不是很顺利,但是通过各种姿势进行绕过系统的检测能够完成上传的都不在今天的讨论之内。也就是在现在会遇到的比较多的情况,系统严格校验,无法上传webshell,如何进行漏洞挖掘?

01

html

有些系统黑名单了N多文件格式后缀,但是除了.html,这个时候可以构造html payload ,一般在论坛发布附件、资质认证(例如开发者认证)、上传简历附件等场景。

(1)html->>xss

-----------------------------21957609327038Content-Disposition: form-data; name="file"; filename="xss.html"Content-Type: image/jpeg <svg onload="alert(1)"/>html>-----------------------------21957609327038--

(2)html ->>csrf

尤其可以绕过验证referer的网站

(3)html ->>钓鱼

具体操作就不赘述了。

02

xml

和上面类似,对于可以上传.xml 的也可以进一步利用,XXE一般都不行,可以尝试下XSS。

confirm(document.domain)]]>           

然后浏览器访问https://xx.com/upload/xss.xml ,可以看到弹窗效果。

1dc60a0d81db250acb31c276d8f07a85.png

03

xlsx

常规操作XXE,另外也可考虑xss(特殊场景:例如批量导入商品信息、批量导入人员信息等处,若没有对excel单元格里面的数据做转义或过滤)。

04

svg

可以尝试xss:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" onload="alert(1)">svg>

05

csv

csv命令注入,插入公式:

SUM(1+1)*cmd|' /C calc'!A0

5cd5183683d6b77af939dae59d3cb3da.png

06

pdf

上传pdf里面可以嵌入一些交互对象,因此可以利用xss。adobe acrobat 里面通过创建交互对象,动作选择javascript

app.alert('1');

24c500d348ce6676644be0ce0030d6b3.png

用浏览器打开pdf ,除火狐浏览器外,chrome和IE会触发xss

7fb769bc3bc6bb686f3409d258c95fdc.png

07

mp4和avi

主要利用了FFmpeg HLS playlist 漏洞,如果服务器使用的是FFmpeg 对媒体解码时,会执行恶意代码来读取本地文件。这部分可以参考https://paper.seebug.org/338/ 分析的文章。

08

swf

构造xss漏洞,例如

http://xxx.com/xss.swf?js=alert(document.domain);

09

zip

(1)可尝试任意文件读取漏洞,通过生成软链接,然后压缩成file.zip:

ln -s /etc/passwd linkzip --symlinks file.zip link

上传到服务器后,应用服务进行解压返回文件内容,就会读取/etc/passwd 内容后返回。

(2)尝试目录穿越漏洞

错误之处还望各位师傅斧正~

4354ffd982e10e33dbbb879ce8f01c22.png

我知道你肯定直接滑到了最后~f48dd6e2a77e2607be1e3c386790669b.png

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`mpimg.imread()`函数默认是无法直接读取SVG格式的矢量图像文件的,因为SVG文件本质上是一种基于XML语言的文本文件,而不是像PNG或JPEG这样的二进制图像文件。因此,如果要读取SVG格式的矢量图像文件,需要使用其他的方式进行解析和读取。 一种常用的方式是使用`svglib`库将SVG文件转换为PDF格式,然后再使用`matplotlib`库的`PdfPages`对象读取PDF文件。具体步骤如下: 1. 安装`svglib`库 ```python pip install svglib ``` 2. 使用`svglib`库将SVG文件转换为PDF文件 ```python from svglib.svglib import svg2pdf # 将SVG文件转换为PDF文件 svg2pdf('image.svg', 'image.pdf') ``` 其,`image.svg`是要转换的SVG文件的路径,`image.pdf`是转换后的PDF文件的路径。 3. 使用`matplotlib`库的`PdfPages`对象读取PDF文件,并显示图像 ```python import matplotlib.pyplot as plt # 打开PDF文件 with plt.rc_context({'axes.edgecolor':'orange', 'xtick.color':'red', 'ytick.color':'green', 'figure.facecolor':'grey'}): with PdfPages('image.pdf') as pdf: # 读取PDF文件的所有页面并显示 for page in pdf.pages: plt.figure(figsize=(8.5, 11)) plt.imshow(page.grab().numpy()) plt.axis('off') plt.show() ``` 在这个示例,我们使用`PdfPages`对象打开转换后的PDF文件,并循环读取PDF文件的所有页面并显示出来。需要注意的是,由于PDF文件的页面大小可能与实际图像大小不同,因此需要根据需要进行调整。在这个示例,我们使用`plt.figure(figsize=(8.5, 11))`将页面大小设置为8.5英寸×11英寸,以确保图像能够正确显示。 需要注意的是,由于SVG文件和PDF文件是矢量图像文件,因此在显示时不会出现像素失真等问题,可以保证图像的清晰度和质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值