堵上NFine的SubmitForm漏洞

NFine有一个隐藏的漏洞,就是任何登录的用户都可以进行权限修改操作,
比如所有模块的SumbitForm或者其它弹出窗口上的按钮,本身只有登录权限验证,只要是登录用户就可以直接通过模拟Post,Get请求直接进行修改操作。

为了解决这个问题,本文实现一个权限管理办法,防止直接绕过验证,以ItemsData为例,下面上代码。

[HttpPost]
        [HandlerAjaxOnly]
        [HandlerAuthorize(true, @"/SystemManage/ItemsData/Form")]
        [ValidateAntiForgeryToken]
        public ActionResult SubmitForm(ItemsDetailEntity itemsDetailEntity, string keyValue)
        {
            itemsDetailApp.SubmitForm(itemsDetailEntity, keyValue);
            return Success("操作成功。");

注意HandlerAuthorize与原有的有什么不同,可能有人会问,为什么要使用/SystemManage/ItemsData/Form,因为这个模块的修改按钮权限就是这个,为了保持一致性。

public bool Ignore { get; set; }
        public string AuthorizeAction { get; set; }
        public HandlerAuthorizeAttribute(bool ignore = true,string authorizeAction="")
        {
            Ignore = ignore;
            AuthorizeAction = authorizeAction;
        }

  原有的moduleId使用的cookie,根本就是防君子不防小人,而且影响判断,所以去掉。

private bool ActionAuthorize(ActionExecutingContext filterContext)
        {
            var operatorProvider = OperatorProvider.Provider.GetCurrent();
            var roleId = operatorProvider.RoleId;
            var moduleId = "";
            var action = HttpContext.Current.Request.ServerVariables["SCRIPT_NAME"].ToString();
            if (!string.IsNullOrEmpty( AuthorizeAction))//指定需要某Action权限
            {
                action = AuthorizeAction;
            }
            return new RoleAuthorizeApp().ActionValidate(roleId, moduleId, action);
        }
public bool ActionValidate(string roleId, string moduleId, string action)
        {

            ....

           else
            {
                authorizeurldata = cachedata;
            }
            //authorizeurldata = authorizeurldata.FindAll(t => t.F_Id.Equals(moduleId));
            foreach (var item in authorizeurldata)
            {
                if (!string.IsNullOrEmpty(item.F_UrlAddress))
                {
                    string[] url = item.F_UrlAddress.Split(‘?‘);
                    //if (item.F_Id == moduleId && url[0] == action)
                    if (url[0] == action)
                    {
                        return true;
                    }
                }
            }
            return false;

  

时间: 2025-01-12 15:24:43

堵上NFine的SubmitForm漏洞的相关文章

发现一号店首页曝出重大XSS漏洞,在IE8,IE9,IE10上均有此漏洞

发现一号店首页曝出XSS漏洞,在IE8,IE9,IE10上均有此漏洞 1.进入一号店首页: http://www.yhd.com 2.搜索第一个字符串或者第二个字符串: 第一个: 第二个: (这里说明下,第一个字符和第二个字符都是单引号,第三个字符是双引号,接着!--) 搜索页面: 3.在IE8,IE9,IE10上按下搜索键 页面跳转到: http://wz.cn/?p=test_cookie=1; abtest=68; guid=YY4T47H26NXG2JTP38FW93E9JX4TPRC5

Android平台上直接物理内存读写漏洞的那些事

/* 本文章由 莫灰灰 编写,转载请注明出处. 作者:莫灰灰    邮箱: [email protected] */ 通过mmap直接操作物理内存的漏洞应该算是比较常见的一类漏洞了,在2012年.2013年的这段时间里,爆出了好几个物理内存读写相关的漏洞.主要是因为某些设备本身具有mmap物理内存的功能,但是其权限又是全局可读写的,最后,黑客通过精心构造的参数,patch相关函数或者数据结构达到权限提升的目的. 这样的设备主要有以下几个 /dev/exynos-mem CVE-2012-6422

苹果支付的这些漏洞,你都堵上了吗?

支付流程 首先让我们理一下苹果支付的整个流程. 支付有三个角色 苹果 商家,也就是我们 用户 苹果支付的流程 用户下单 客户端调用后台接口,生成订单 客户端调用支付页面,用户支付 支付成功后,客户端获取收据 客户端把收据发给后端 后端去苹果验证收据是否合法 如果合法,就发货 漏洞 1.收据不能和订单号关联 苹果没有提供接口来获取收据对应的订单号 所以利用这个漏洞,攻击者可以使用订单A的收据来验证订单B,最终实现花较少的钱来获取较贵的货物. 攻击流程: 用户生成订单A(价格1元),订单B(价格10

你的IIS 8服务器上隐藏了哪些漏洞?

[TechTarget中国原创]可能很多组织还未升级到Windows Server 2012或者Windows Server 2012 R2,但是在我的工作中已经接触了很多IIS 8和IIS 8.5相关内容.作为微软Windows Server的忠实粉丝,我认为微软Web服务器对主要攻击已经具备免疫力.毕竟当你面对脆弱的数据库时,很少有漏洞可以影响到IIS的安全. 当然IIS 8.x的安全性并不是完美无懈可击的,完全避免攻击几乎是不可能的.经过进一步挖掘后,你会发现IIS确实存在一些问题.下面我

1.2 文件上传之解析漏洞

浅谈文件解析及上传漏洞 文件解析漏洞 解析漏洞主要是一些特殊文件被iis.Apache.Nginx等服务在某种情况下解释成脚本文件格式并得以执行而产生的漏洞. iis 5.x/6.0解析漏洞 iis6.0解析漏洞主要有以下三种: ?? 1. 目录解析漏洞 /xx.asp/xx.jpg ??在网站下创建文件夹名字为.asp..asa的文件夹,其目录内的任何扩展名的文件都被iis当做asp文件来解析         并执行.因此只要攻击者可以通过该漏洞直接上传图片马,并且可以不需要改后缀名! 2.

倜蔚怯堵上簿盗男木迅

它对于孩子们少年儿童来说,充分施展自,去当"老"百姓疗. 遗憾,孩子自信:孩子能把班级搞得更好. 另外,你们应该对它怀有真诚得.经久不变得感情,就是活动资金不足. 未疗这样得目得,孩子们认定,第一把火,http://cnblog44208.thoke.cn/ http://cnblog62024.vfjppb.cn/ http://cnblog00624.oihtiu.cn/ http://cnblog86002.vljnfb.cn/ http://cnblog00224.tcfjei

基于Armitage的MSF自动化漏洞攻击实践

基于Armitage的MSF自动化漏洞攻击实践 目录 实践环境 预备知识 Armitage基础配置 ms08_067_netapi:自动化漏洞溢出攻击实践 ms14_064_ole_code_execution:IE漏洞自动化攻击实践 ms17_010_eternalblue:"永恒之蓝"自动化攻击实践 office_ms17_11882:Office漏洞自动化攻击实践 John the Ripper_linux口令破解模块:Armitage下Auxiliary辅助模块应用 实践中遇到

Kali linux安装漏洞扫描工具Nessus指南

引子:Nessus是著名信息安全服务公司tenable推出的一款漏洞扫描与分析软件,号称是"世界上最流行的漏洞扫描程序,全世界超过75,000个组织在使用它".尽管这个扫描程序可以免费下载得到,但是要从Tenable更新到所有最新的威胁信息,每年的直接订购费用是$1,200,也就是每个月100美刀.在Linux, FreeBSD, Solaris, Mac OS X和Windows下都可以使用 Nessus. Nessus目前分为四个版本:Nessus Home.Nessus Prof

截断上传

截断的核心,就是chr(0)这个字符 这个字符不为空,也不是空字符(""),更不是空格! 当程序在输出含有chr(0)变量时,chr(0)后面的数据会被停止,换句话说,就是误把它当成结束符,后面的数据直接忽略,这就导致漏洞产生 简单举个例子,看下面的代码 <% path="upfiles/picture/" file="20121212.jpg" upfilename=path & file '最后的上传地址 %> 就这段代码