堵上NFine SubmitForm漏洞
NFine一个隐藏的漏洞(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;
堵上NFine SubmitForm漏洞的更多相关文章
- kali上部署dvwa漏洞测试平台
kali上部署dvwa漏洞测试平台 一.获取dvwa安装包并解压 二.赋予dvwa文件夹相应权限 三.配置Mysql数据库 四.启动apache2和mysql服务 五.在网页配置dvwa 六.登陆到D ...
- 渗透测试学习 十五、 文件上传&&解析漏洞
大纲:文件解析漏洞 上传本地验证绕过 上传服务器验证绕过 文件解析漏洞 解析漏洞主要说的是一些特殊文件被IIS.Apache.Nginx在某些情况下解释成脚本文件格式的漏洞. IIS 5.x/6.0解 ...
- Java上传截断漏洞的解决方案
文件上传漏洞解决方案 1. 最有效的,将文件上传目录直接设置为不可执行,对于Linux而言,撤销其目录的'x'权限:实际中很多大型网站的上传应用都会放置在独立的存储上作为静态文件处理,一是方便使用缓存 ...
- .net网站发布后的没有权限及被上传asp漏洞等问题
前一阶段网站移到阿里云上,发现在线支付出现了问题,也接收不到银行返回的支付信息. 检查了源代码,发现是和支付有关的加密文件位置不对了,以前是放在e盘,现在新的是放在d盘,位置的信息是写死在代码中的.找 ...
- shopex后台上传模板漏洞
看到有人找这个拿SHELL的方法.就本地搭建试了下.很简单的. 首先是WIN下.需要WIN主机IIS解析漏洞. 进入后台.点页面管理.点模板列表.默认模板是紫气东来(ShopEx4.8).点编辑模板. ...
- Ubuntu上glibc CVE-2015-7547漏洞的POC验证和修复
Ubuntu上查看Glibc版本 $ldd --version ldd (Ubuntu GLIBC 2.21-0ubuntu4) 2.21 Ubuntu上查看使用Glibc的相关程序 sudo lso ...
- ueditor的上传文件漏洞(c#)
项目中使用了ueditor,安全测试发现一个漏洞,涉及漏洞的文件名字为UploadHandler.cs,其中有一个方法: private bool CheckFileType(string filen ...
- 文件上传Upload 漏洞挖掘思路
1:尽可能多的找出网站存在的上传点2:尝试使用如上各种绕过方法3:尝试 geshell4:无法上传webshel的情况下: 尝试上传html等,或可造成存储XSS漏洞 上传点构造XSS等,结合上传后的 ...
- Linux实战笔记__Ubuntu20.04上搭建Vulhub漏洞环境
安装python3和pip3 安装docker 安装docker-compose 上传解压vulhub-master.zip 启动漏洞环境 进入某漏洞目录,执行docker-compose up -d ...
随机推荐
- [ZJOI2015]地震后的幻想乡(期望+dp)
题目描述 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任务是尽快让幻想 ...
- 杨辉三角 II
题目描述 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] 贴出代码 class ...
- hdu 3374 String Problem(kmp+最小表示法)
Problem Description Give you a string with length N, you can generate N strings by left shifts. For ...
- Linux网络那点事(CentOS、Ubuntu、Kali)
跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 在Ubuntu18.04中,传统的配置/etc/network/interfa ...
- Python数据结构之实现队列
再学习数据结构队列的时候,我不想讲太多!一切言语不如几张图来的实在! 这是第一张图,第二图是讲队列满的情况: 分析了数据结构中的队列是什么之后,我们开始写代码,代码Code如下: #coding:ut ...
- 【CF375D】Tree and Queries
题目大意:给定一棵 N 个节点的有根树,1 号节点为根节点,每个节点有一个颜色.有 M 个询问,每次询问以 i 为根的子树中颜色大于等于 K 的有多少种. 题解:子树询问直接 dfs 序转化成序列问题 ...
- NLog类库使用探索——编程配置
以编程的方式配置,这是我项目中的,我都不知道为什么使用编程.直接配置不很好吗,估计他也没有研究.直接上步骤和代码: 创建一个LoggingConfiguration对象,用来保存配置信息 至少创建一个 ...
- c++ sort
老是搞混 return bool eg. bool cmp(node a,node b) { if (a.score==b.score) ; else return a.score>b.scor ...
- fiddler接口测试,js代码修改日志展示(埋点用)
fiddler 通过fiddler 发送接口信息: http://blog.csdn.net/java2013liu/article/details/53380381 rules--automatic ...
- IO 多路复用介绍
IO多路复用 概念说明 在进行解释之前,首先要说明几个概念: 用户空间和内核空间 进程切换 进程的阻塞 文件描述符 缓存 I/O 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系 ...