介绍一下如何利用路径遍历进行攻击及如何防范
如果应用程序使用用户可控制的数据,以危险的方式访问位于应用服务器或其它后端文件系统的文件或目录,就会出现路径遍历
String rurl = request.getParameter(“rurl”);
BufferedWriter utput2 = new BufferedWriter(new FileWriter(new File(“/home/chenyz/”+rurl)));
攻击者可以将路径遍历序列放入文件名内,向上回溯,从而访问服务器上的任何文件,路径遍历序列叫“点-点-斜线”(..)
http://***/go.action?file=....etcpasswd
避开过滤
第一种是过滤文件名参数中是否存在任何路径遍历序列(..)
如果程序尝试删除(..)来净化用户输入,可以用
….// …./ …./ ….\
进行URL编码
点–>%2e 反斜杠–>%2f 正斜杠–>%5c
进行16为Unicode编码
点–>%u002e 反斜杠–>%u2215 正斜杠–>%u2216
进行双倍URL编码
点–>%252e 反斜杠–>%u252f 正斜杠–>%u255c
进行超长UTF-8 Unicode编码
点–>%c0%2e %e0$40%ae %c0ae
反斜杠–>%c0af %e0%80af %c0%af
正斜杠–>%c0%5c %c0%80%5c
预防路径遍历的方法:
1.对用户提交的文件名进行相关解码与规范化
2.程序使用一个硬编码,被允许访问的文件类型列表
3.使用getCanonicalPath方法检查访问的文件是否位于应用程序指定的起始位置
String rurl = request.getParameter(“rurl”);
BufferedWriter utput2 = new BufferedWriter(new FileWriter(new File(“/home/chenyz/”+rurl)));
攻击者可以将路径遍历序列放入文件名内,向上回溯,从而访问服务器上的任何文件,路径遍历序列叫“点-点-斜线”(..)
http://***/go.action?file=....etcpasswd
避开过滤
第一种是过滤文件名参数中是否存在任何路径遍历序列(..)
如果程序尝试删除(..)来净化用户输入,可以用
….// …./ …./ ….\
进行URL编码
点–>%2e 反斜杠–>%2f 正斜杠–>%5c
进行16为Unicode编码
点–>%u002e 反斜杠–>%u2215 正斜杠–>%u2216
进行双倍URL编码
点–>%252e 反斜杠–>%u252f 正斜杠–>%u255c
进行超长UTF-8 Unicode编码
点–>%c0%2e %e0$40%ae %c0ae
反斜杠–>%c0af %e0%80af %c0%af
正斜杠–>%c0%5c %c0%80%5c
预防路径遍历的方法:
1.对用户提交的文件名进行相关解码与规范化
2.程序使用一个硬编码,被允许访问的文件类型列表
3.使用getCanonicalPath方法检查访问的文件是否位于应用程序指定的起始位置
【介绍一下如何利用路径遍历进行攻击及如何防范】相关文章
4. 如何利用社交媒体找工作?
8. 如何防范网络陷阱
本文来源:https://www.mianshiwenti.com/a12085.html
进入下载页面
﹝介绍一下如何利用路径遍历进行攻击及如何防范﹞相关内容
- 介绍一下ASP中一下五个对象
- 请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty
- 介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
- ruby如何进行集成操作?Ruby能进行多重继承吗?
- HSRP的含义以及如何工作
- EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
- EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
- SQL注入攻击的种类有哪些
- 渗透攻击的测试步骤
- 什么是跨站脚本攻击