网站备案怎么做超链接最强wordpress主题

web/2025/9/26 1:34:47/文章来源:
网站备案怎么做超链接,最强wordpress主题,wordpress随机注册,社交网站 模板点击上方蓝字 关注我吧引言文件下载是比较常见的业务。常见的接口格式为/download?fileNamexxx.png,整个过程若没过滤目录穿越符号…/或者未对下载的路径进行处理限制。当传入的filename参数为../../etc/passwd即可穿越路径达到任意文件下载的效果。有些接口在尝试获取某一文件… 点击上方蓝字 关注我吧引言文件下载是比较常见的业务。常见的接口格式为/download?fileNamexxx.png,整个过程若没过滤目录穿越符号…/或者未对下载的路径进行处理限制。当传入的filename参数为../../etc/passwd即可穿越路径达到任意文件下载的效果。有些接口在尝试获取某一文件时路径是/file/test.jpg通过解析URI中的内容来得到对应的文件名test.jpg然后完成相关的下载操作。此时如果尝试访问/file/../../test.jpg相关的中间件或者开发框架在解析路由时会做相关的处理。那么此时是否可以进行目录穿越的实际利用呢以下是实际项目中遇到的URI中任意文件下载实例URI中任意文件下载实例自定义Servlet相关业务为用户上传文件的下载主要通过Servlet进行交互以下是相关的实现。servlet的具体映射servlet-mapping servlet-nameUserfilesDownloadServletservlet-name url-pattern/userfiles/*url-patternservlet-mapping下载业务具体实现如下public class UserfilesDownloadServlet extends HttpServlet { private static final long serialVersionUID 1L; private Logger logger LoggerFactory.getLogger(getClass()); public void fileOutputStream(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String filepath req.getRequestURI(); int index filepath.indexOf(Global.USERFILES_BASE_URL); if(index 0) { filepath filepath.substring(index Global.USERFILES_BASE_URL.length()); } try { filepath UriUtils.decode(filepath, UTF-8); } catch (UnsupportedEncodingException e1) { logger.error(String.format(解释文件路径失败URL地址为%s, filepath), e1); } File file new File(Global.getUserfilesBaseDir() Global.USERFILES_BASE_URL filepath); try { FileCopyUtils.copy(new FileInputStream(file), resp.getOutputStream()); resp.setHeader(Content-Type, application/octet-stream); return; } catch (FileNotFoundException e) { req.setAttribute(exception, new FileNotFoundException(请求的文件不存在)); req.getRequestDispatcher(/WEB-INF/views/error/404.jsp).forward(req, resp); } }......}这里使用了springframework的FileCopyUtils.copy()方法具体实现如下主要是对File对象进行相应的处理将读取的文件内容复制到response内容中public static int copy(File in, File out) throws IOException { Assert.notNull(in, No input File specified); Assert.notNull(out, No output File specified); return copy((InputStream)(new BufferedInputStream(new FileInputStream(in))), (OutputStream)(new BufferedOutputStream(new FileOutputStream(out)))); }最后通过设置response header返回文件内容具体效果如下其中下载的文件名filepath是通过req.getRequestURI()来获取的。该方法是不会对URI中的../或者;等特殊字符进行规范化处理的。同时在获取到对应的filepath后直接进行路径拼接然后进行文件读取整个过程未限定下载的文件目录范围也并未过滤../和/等敏感关键字存在任意文件下载风险。但是这里场景比较特殊相关参数的获取是在URI中获取的能否深入利用还有待商榷。当前项目的upload目录位置如下:这里尝试访问../WEB-INF/web.xml(回到upload上级目录WebContent),成功完成目录穿越读取到对应的web.xml配置信息中间件在进行解析时会对URI中的../进行相关处理从而得到相关的servlet,tomcat解析时已经对../进行处理了处理上面的访问方式其实跟直接访问/userfiles/WEB-INF/web.xml是一样的若此时如果想读取/etc/passwd就需要写入更多的目录穿越符../,此时tomcat处理完../后已经不在/userfiles/*这个servlet映射范围内了那么此时会抛出相关的异常并不能进一步获取更多的敏感信息。尝试扩大漏洞的危害读取更多的敏感文件。首先要让tomcat不处理../../filepath UriUtils.decode(filepath, UTF-8);尝试进行编码请求发现触发400 Invalid URI错误因为tomcat会对URI路径信息进行解码并进行检测当遇到斜杠的URL(即%2F)时出于安全的考虑会返回400状态码else if (metaChar %) { char res (char)Integer.parseInt(str .substring(strPos 1, strPos 3), 16); if ((noSlash) (res /)) { throw new IllegalArgumentException(sm.getString(uDecoder.noSlash)); } dec.append(res); strPos 3; } } return dec.toString();在URL中有一个保留字符分号;主要作为参数分隔符进行使用有时候是请求中传递的参数太多了所以使用分号;将参数对(keyvalue)连接起来作为一个请求参数进行传递。tomcat在对;进行处理时同样的也会对进行截断并当成参数处理在URI编码的基础上加上;再次访问经过一系列处理获取到的路径为/upload/;/../../../../../../../../etc/passwd,此时返回的是404状态码应该是在进行文件读取的时候找不到名为;的目录触发了FileNotFoundException异常try { FileCopyUtils.copy(new FileInputStream(file), resp.getOutputStream()); resp.setHeader(Content-Type, application/octet-stream); return; } catch (FileNotFoundException e) { req.setAttribute(exception, new FileNotFoundException(请求的文件不存在)); req.getRequestDispatcher(/WEB-INF/views/error/404.jsp).forward(req, resp); }刚好结合网站的其他业务可以进行目录创建在upload下创建名为;的目录名此时访问/userfiles/upload/;%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd即可获取到相关的敏感文件PathVariable注解PathVariable注解是spring3.0的一个新功能,可以接收请求路径中占位符的值并将URL中占位符参数{xxx} 绑定到控制器处理方法的入参中。该功能在SpringMVC向REST 、目标挺进发展过程中具有十分重要的意义。例如下面的例子获取id 1的订单信息RequestMapping(/Order/{id})public String getOrderDetails(PathVariable(id) Integer id){ //......}除此之外PathVariable同样可以用于实现文件的下载例如下面的例子RequestMapping(/file/get/{filename:.}) public ResponseEntitybyte[] download(HttpServletRequest request, PathVariable(value filename) String fileName) throws IOException { String uploadRoot /var/work/download; File file new File(uploadRoot URLDecoder.decode(File.separator fileName, UTF-8)); byte[] body null; InputStream is new FileInputStream(file); body new byte[is.available()]; is.read(body); HttpHeaders headers new HttpHeaders(); headers.add(Content-Disposition, attchement;filename file.getName()); HttpStatus statusCode HttpStatus.OK; ResponseEntitybyte[] entity new ResponseEntity(body, headers, statusCode); return entity; }具体效果如下,例如这里尝试获取上传的test.png图片这里将URL中占位符参数filename跟初始路径/var/work/download进行拼接然后下载对应的文件。这里对应的文件名用户可控未限定下载的文件目录范围同时并未过滤../和/等敏感关键字存在任意文件下载风险。但是这里参数的位置在URI中能否利用还需要进一步探究。正常来说直接使用../../../尝试目录穿越即可下载/etc/passwd等敏感文件实际上中间件在进行解析时会对URI中的../行相关处理从而得到相关的servlet,以tomcat为例实际上解析时已经对../进行处理了占位符参数filename并不能获取到../来进行目录穿越。这里因为处理后URI为/file/etc/passwd没找到对应的映射所以返回了404状态码:同样的尝试对/进行URL编码tomcat源码会对URI路径信息进行解码并进行检测当遇到斜杠的URL(即%2F)时出于安全的考虑会返回400状态码(抛出Invalid URI: noSlash异常)tomcat源码中相关处理流程如下else if (metaChar %) { char res (char)Integer.parseInt(str .substring(strPos 1, strPos 3), 16); if ((noSlash) (res /)) { throw new IllegalArgumentException(sm.getString(uDecoder.noSlash)); } dec.append(res); strPos 3; } } return dec.toString();这里可以使用双重URL编码绕过中间件的处理对/进行URL双重编码后返回404状态码说明已经绕过noSlash异常了中间件后就是Spring的处理过程查看Spring的解析过程主要通过getPathWithinServletMapping方法获取路由:public String getPathWithinServletMapping(HttpServletRequest request) { String pathWithinApp this.getPathWithinApplication(request); String servletPath this.getServletPath(request); String sanitizedPathWithinApp this.getSanitizedPath(pathWithinApp);getPathWithinApplication方法中会使用 getRequestUri 来获取对应路由:public String getRequestUri(HttpServletRequest request) { String uri (String)request.getAttribute(javax.servlet.include.request_uri); if (uri null) { uri request.getRequestURI(); } return this.decodeAndCleanUriString(request, uri); }随即在decodeAndCleanUriString对URI进行格式化处理,首先对分号进行处理然后进行URI解码最后进行返回:private String decodeAndCleanUriString(HttpServletRequest request, String uri){ uri this.removeSemicolonContent(uri); uri this.decodeRequestString(request, uri); uri this.getSanitizedPath(uri); return uri;}也就是说Spring本身会对URI进行一次解码处理。例如/file/get/..%252fetc/passwd经过tomcatspring处理后会变成/file/get%2fetc/passwd。再回到案例代码这里应该是考虑到了中文传输的问题在前端用js对URL进行编码后再发送请求这时候开发可能忽略了Spring自身的一次解码操作在对应的接口再次进行了一次解码File file  new File(uploadRoot  URLDecoder.decode(File.separator  fileName, UTF-8));那么也就是说使用双重URL编码的方式处理../进行请求即可在Spring以及接口自身的URLDecode获得漏洞利用需要的../../从而成功进行目录穿越读取到/etc/passwd内容拓展延伸因为涉及到URI部分的解析参与的有中间件、spring、人工的解码等一系列处理。那么如果在上面案例的基础上集成shiro框架。那相关的利用poc又是如何呢案例一的;可能需要编码成%3b。这里就有点CVE-2020-13933的味道了,但是高版本shiro对编码的;进行了处理怎么继续利用还是值得思考的。点分享点收藏点点赞点在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81922.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

seo网站推广培训云南网站的设计公司简介

无服务器不是什么新事物,但是可以说,仍然有很多关于它的炒作,以及它将如何改变一切,以及未来将如何成为无服务器。 除了云提供商提供的无服务器/功能之外,还有越来越多的无服务器项目正在我们的路上,目的是…

一个网站通常包含多个网页吗重庆专业网站推广平台

NeRF in the Wild: Neural Radiance Fields for Unconstrained Photo Collections(野外的 NERF: 用于无约束照片采集的神经辐射场) Abstract 我们提出了一种基于学习的方法来合成新的视图的复杂场景使用只有非结构化的收集野生照片。我们建立在神经辐射场(neRF)的…

印刷 网站源码手机和电脑网站分开做

作为一个新兴的 Layer1 公链,Aptos 自诞生之日起的理想便是 “A Layer 1 for everyone” 当 Web3 深陷熊市阴影之时,Aptos 奋力为开发者找到了全新的技术路径,正有 200 项目正在开发,并且已有大量 DeFi 项目落实部署工作&#xff…

电商网站建设源代码山东省住房和城乡建设网站

1.背景 KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考《【转载】利用签名驱动漏洞加载未签名驱动》)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。 2.驱动信息 驱动名称spee…

图库网站源码湖南衡阳网站建设

给社区发邮件步骤 UEFI订阅邮件列表 开发者订阅邮箱 develedk2.groups.io | Home 点击Join This Group,按照步骤填写自己邮箱地址(该地址是edk2,发送邮件到该邮箱的地址) 自己邮箱确认就可以自动收到邮件了 比如:

信息类网站免费制作app平台

转载自 BATJ面试必会|Jvm 虚拟机篇 目录 一、运行时数据区域 程序计数器 Java 虚拟机栈 本地方法栈 堆 方法区 运行时常量池 直接内存 二、垃圾收集 判断一个对象是否可被回收 引用类型 垃圾收集算法 垃圾收集器 三、内存分配与回收策略 Minor GC 和 Full GC 内存…

闵行网站建设外包常州天宁区做网站公司

activity跳转的过渡效果,很漂亮,很全 注意,切换方法overridePendingTransition只能在startActivity和finish方法之后调用。第一个参数为第一个Activity离开时的动画,第二参数为所进入的Activity的动画效果淡入淡出效果overridePen…

建筑设计网站issuu邮件营销 wordpress

学习目标 redis 概念下载安装命令操作 1. 数据结构持久化操作使用Java客户端操作redis Redis 前言(从百度上抄的, 看看了解一下, 懒得排版了) 1. 概念: redis是一款高性能的NOSQL系列的非关系型数据库1.1.什么是NOSQLNoSQL(NoSQL Not Only SQL),意即…

仿牌外贸网站推广seo有什么作用

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进, 代码获取、问题探讨及文章转载可私信。 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。 🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!…

普通网站尚品本色木门网站是哪个公司做的

java解法-贪心 /*跳跃游戏II 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处:0 < j < nums[i]i j < n 返…

相亲网站怎么做元氏网站建设

引用自&#xff1a;http://www.cnblogs.com/wu8685/archive/2010/12/21/1912347.html 递归算法时间复杂度的计算方程式一个递归方程&#xff1a; 在引入递归树之前可以考虑一个例子&#xff1a; T(n) 2T(n/2) n2 迭代2次可以得&#xff1a; T(n) n2 2(2T(n/4) (n/2) 2) 还…

海口网站制作网站网站备案号官网

Linux-CentOS7&#xff08;无图形界面版&#xff09;部署Stable Diffusion webui 全过程 前置要求 git的版本不能是CentOS默认的版本&#xff08;1.8&#xff09;&#xff0c;版本太老&#xff0c;在后面安装过程会失败。去github上下载最新的git源码包 安装成功显示版本号 …

学装修设计师多少学费广州seo推广培训

forEach 遍历数组中的元素为每个元素执行回调无返回值 const a [1,2,3] const b a.forEach((num,index) > {// 执行 num、index 相关的代码 })// b undefined map 遍历数组中的元素 通过对每个元素调用函数&#xff0c;将每个元素 “ 映射&#xff08;map) ” 到一个…

gzip网站优化济南网站制作哪家专业

文章目录 一、类类型转换1.构造函数构造2.类型转换函数 一、类类型转换 数据类型转换在程序编译时或在程序运行实现 基本类型 ←→ 基本类型 基本类型 ←→ 类类型 类类型 ←→ 类类型 类对象的类型转换可由两种方式说明&#xff1a; 构造函数 转换函数 称为用户定义的类型转…

网站积分方案seo外链网站源码

文章目录 蓝桥杯* 最大公约数欧拉函数模版* 线性筛法 求欧拉函数* 快速幂 a^k%p扩展欧几里得算法 蓝桥杯 * 最大公约数 两个整数的最大公约数等于其中较小的那个数和两数的差的最大公约数。通过不断地用较小的数替换较大的数&#xff0c;并用两数的差替换较小的数&#xff0c;…

网站服务器是主机吗一个空间放2个网站

二叉树的遍历&#xff08;堆栈&#xff09; 如何理解用堆栈方式代替递归去遍历二叉树&#xff0c;关键点在于了解每个结点输出时的顺序&#xff0c;以及理解前序中序后序是如何遍历的&#xff0c;这点很重要&#xff0c;可以自己画一个树图&#xff0c;熟练写出遍历的结果 以…

哈尔滨建设工程交易中心网站网络规划师

轻轻松松&#xff0c;一键获取3000个外链 http://report.loganrockmarketing.com/backlinker/idx.html 打开以上网址&#xff1a; 在方框里输入你要推广的网址&#xff08;不要加前面的http://) 然后点击start/continue backlinking按钮 接下来&#xff0c;坐享其成吧。转载于:…

vps网站建站助手wordpress数据库无法访问

机缘 实际上在之前的文章之中我已经介绍过自己与csdn的缘分了&#xff0c;当初对算法十分的痴迷&#xff0c;也很希望能够将自己的一些理解写在csdn上&#xff0c;所以就开始了在csdn上的写作。 收获 在创作过程中最大的收获还是对过去所学的知识的总结吧&#xff0c;可惜的就…

免费申请com网站网站开发主流方法

SweetAlert2是一款功能强大的纯Js模态消息对话框插件。SweetAlert2用于替代浏览器默认的弹出对话框&#xff0c;它提供各种参数和方法&#xff0c;支持嵌入图片&#xff0c;背景&#xff0c;HTML标签等&#xff0c;并提供5种内置的情景类&#xff0c;功能非常强大。SweetAlert2…