“内网漫游”-web
经常在wooyun看到“漫游内网”之类的漏洞,那么这样的漏洞一般是怎么产生的呢?
Demo1:未经校验的url重定向
import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class wooyun extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.sendRedirect(request.getParameter("url")); }}
当请求里面带有url=xxxx内网ip的时候server会把请求重定向到对应的地址(请求转发不行,因为转发只能在本应用内)。
Demo2:文件下载问题
不得不说某个木JJ的黑阔非常的贱。迅雷等下载工具都流行用一个叫做“离线下载”的功能不得不说某个木JJ的黑阔非常的贱。迅雷等下载工具都流行用一个叫做“离线下载”的功能(这里说的只是一个想法,不代表迅雷有这个问题),这个功能实际上是一个文件下载代理。当客户端下载一个文件的时候可以同时在服务器端建立一个“离线任务”。这个离线任务其实就是在服务器上下载目标文件,一旦在服务器上下载完成后就把资源共享给本地客户端这样用户可以享受到服务器的高速带宽,下载速度自然就噌噌噌的了。这里其实也存在一个逻辑问题,当服务器拿到目标地址为内网ip的且不进行处理继续下载的话,假如建立一个离线任务地址是:http://192.168.xxx.xxx,云端会访问内网的这个URL,并且下载页面返回结果,就算不返回结果通常也可以通过看返回的状态判定。
比如:
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class wooyun extends HttpServlet { private static final long serialVersionUID = 1L; public String download(String url){ String t = "",s = ""; try { BufferedReader br = new BufferedReader(new InputStreamReader(new URL(url).openConnection().getInputStream(),"GBK")); while((t=br.readLine())!=null){ s+=t+"/n"; } } catch (Exception e) { e.printStackTrace(); } return s; } public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); out.println(download(request.getParameter("url"))); out.flush(); out.close(); }}
请求会经过服务器发送到内网其他服务器:
如何防御:
1、限定demo1的跳转地址
2、处理下载请求时忽略内网IP
3、在请求或响应的包装类(HttpServletRequestWrapper、HttpServletResponseWrapper)做好危险请求处理
4、加强开发者的安全意识,做好内网安全工作
思维扩撒:
可以枚举内网所有端口和ip进行内网信息刺探,寻求如Struts2、Tomcat等突破口。。。
>更多相关文章
- 11-15不看后悔!程序员防御XSS的无奈
- 11-10揭秘Web黑客3种注入点判断方法
- 11-10黑客Web脚本注入攻击深度剖析
- 10-21全球无线网络面临黑客攻击风险 WiFi曝安全漏洞
- 02-24iPhone再爆安全漏洞 黑客1分钟可盗照片及加密信息
- 02-22互联网金融风险 警示网站漏洞或成“致命点”
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 12-05亚马逊推出新一代基础模型 任意模态生成大模
- 12-05OpenAI拓展欧洲业务 将在苏黎世设立办公室
- 12-05微软质疑美国联邦贸易委员会泄露信息 督促其
- 12-05联交所取消宝宝树上市地位 宝宝树:不会对公
- 12-04企业微信致歉:文档打开异常已完成修复
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御