121人参与 • 2024-08-04 • 企业安全
2023年hvv中爆出来的洞了,但是有一些漏洞点修复了,刚好地市级的攻防演练中遇到了一个,想着把可能出现问题的点全部审计一下,顺便熟悉一下.net代码审计。ps:感兴趣的师傅们可以自行根据poc搜索源码。
好吧,当我没说,下载dnspy反编译即可,但是首先要找到web逻辑代码才能开始审计,因为这套oa是使用了mvc开发模式,简单介绍一下mvc,其实就是model,controller,view,其中的view是视图也就是html等展示给用户看的东西,model是模型也就是控制数据库的代码。controller是控制器负责执行代码的逻辑,也就是我们需要审计的地方了。
然后找到controller就是web的主要逻辑了。
首先可以随便点入一个controller,发现filescontroller继承自topvisionapi。
然后我们发现isauthoritycheck()这个函数用于判断权限。
首先看到第一行代码getbyvalue这个函数,其实request.properties["ms_httpcontext"]).request[value]就是获取http请求中的某个参数,而value就是调用传过来的参数,在这里是token,那么这段代码就是获取http中的token参数。
然后if判断了token是不是空值然后再判断token参数的值是不是等于"zxh",如果登录则直接返回一个userinfo对象。
然后回到filescontroller的身份判断,发现只判断了isauthoritycheck返回是否为null,所以只需要让token参数是zxh的时候,那么就可以绕过身份校验了。
还是 filescontroller 这个控制器 downloadrptfile方法。这时我们已经绕过了身份认证,所以只需要看之后代码即可。requestfilename就是我们传递的http参数,
然后跟进代码。并未发现任何过滤../的行为,直接传递给getbinaryfile函数
getbinaryfile函数如下。
结果证明: (读取文件内容会以base64返回)
发现getcurrentuserlist方法查询了所有用户信息。并且返回给前台。
<userinfo>是c#中的泛型,这里是用来查询数据库的。可以看到遍历了dicuserlist这个数组。这个数组就是初始化的用户信息数组了。
直接访问:
发现deletefile2方法是一个删除文件方法。这里也没有发现过滤../以及过滤删除文件的后缀名。
虽然是有限制了文件路径,但是全然没有过滤../,而且filename参数也是完全可控的。所以这里其实是存在任意文件删除漏洞的。
ps: 这里就不放验证截图了,感兴趣的师傅们可以自行本地验证。
uploadfile2方法中获取了各种参数,然后传入uploadfile2
跟进该方法。pathtype就是限制文件上传到哪个文件夹的。
pathtype详解:
fs参数是我们传递的byte数组也就是文件的内容。
startpoint等于0就好这样才能创建一个新的文件,datasize则是数组的长度。
漏洞验证:
inventorycontroller的getproductinv方法,直接从参数获取boxnoname未经过过滤直接通过string.format拼接至sql语句中,导致了sql注入。
验证:直接sqlmap即可
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论