记一次对某收费协同办公系统的审计(.Net审计)

  • 概述
    这系统是二、三月份的时候朋友发我的,叫我审计一下,大概看了一下漏洞挺多的,引擎搜索了一下发现没人报出来,但应该不少人知道了,以为只是一个小型的系统,但没想到关键字一查有1W多个,算中型了,由于是收费的系统,不好透露,怕厂商警告,这里简单分享一下漏洞点,原理,审计的思路,小白解说,第一次写文章,没啥技术含量,可能写的并不是很好希望大佬们给指点一下哈哈,废话不多说,进入正题。
  • 任意文件删除
    在Ajax/upload.ashx中,可以看到没啥其他代码,直接简单粗暴引用了DLL文件程序。

    我们这里直接跟进bin目录下的DLL文件,用ILSpy反汇编出来,看看有那些功能项

    然后直接中奖,其中的Name值,没有任何过滤,直接通过context.Request["name"]取值,然后判断文件是否存在,存在则直接删除,并且没有做任何的权限限制,导致我们可以直接前台传值引用,造成任意文件删除。
  • Sql注入,任意文件下载。
    在Ajax/upload.ashx中,这里文件下载,是通过查询数据库,判断文件是否存在,如果存在就下载,但是str的传值,没有经过任何过滤,通过context.Request["trueFileName"]传值进去,我们只需要根据action构造出相应的类,然后传入值即可造成Sql注入。

    构造trueFileName=1' and (select @@version)>0--,成功返回数据库版本,顺便报错绝对路径,然后根据绝对路径,删除任意文件。

    这里也应该可以构造MSSQL语句,把字符串../../../../+你要的文件,写入数据库中的FileSaveName,然后自定义这里dataSource.Rows[0]["FileSaveName"]返回的值,从而造成任意文件下载,不过有点麻烦,这里就不贴出来了(学艺不精,辣鸡小白)。
  • Sql注入(2)
    在Ajax/upload.ashx中,str通过context.Request.QueryString["FID"]传值,然后赋值到Sql语句里面,跟上面一样,造成Sql注入,这里就不多说啥了,确实漏洞多,换个点继续撸,上传类粗略的看完他类。
  • Sql注入(3)
    在Ajax/AjaxMethod.ashx中,通过context.Request["Name"];获取值,然后bool flag5 = !(new CreatePageManager().GetEmpByName(text2) == "0");,接着跟进一下
    public string GetEmpByName(string empname)
    {
      return new CreatePageDao().GetEmpByName(empname);
    }
    在接着跟进一下
    public string GetEmpByName(string LoginUser)
    {
      string result = string.Empty;
      string sqlStr = string.Format("SELECT count(*) FROM bfEMP WHERE upper(LoginUser)='{0}'", LoginUser.ToUpper());
      DataTable dataSource = this.GetDataSource(sqlStr);
      bool flag = dataSource != null && dataSource.Rows.Count > 0;
      if (flag)
      {
          result = dataSource.Rows[0][0].ToString();
      }
      return result;
    }
    我们根据代码构造action,然后传入name值,这里拐了几个弯,但是.NET的程序算起来,利用ILSpay溯源跟踪还是蛮容易的,单击就可以自动追踪到类的位置,其他地方Sql注入也还有,挺多的,但是不想看了,因为这个开发有问题,很多地方都是直接传进去,只有少数地方使用了参数化传值,大部分地方都是直接使用sql字符串拼接,也不验证数据类型,我看着代码都心累,其他还有一些漏洞,但是
  • 密码重置sql注入(4)
    在目录下的initpwd.aspx文件中,本来想看看又没有密码重置漏洞,但一看没找到啥,也可能是我技术不太行,又找到个注入,这里的string text15 = cookieValue;是通过GetCookieValue取值,然后直接使用Sql字符串进行拼接,然后跟到GetCookieValue
    public static string GetCookieValue(string key)
    {
      bool flag = HttpContext.Current != null;
      string result;
      if (flag)
      {
          HttpCookie httpCookie = HttpContext.Current.Request.Cookies["UserCookie"];
          try
          {
              string text = "";
              bool flag2 = httpCookie != null;
              if (flag2)
              {
                  Hashtable hashtable = JsonConvert.DeserializeObject(httpCookie.Value, typeof(Hashtable)) as Hashtable;
                  bool flag3 = hashtable != null && hashtable.ContainsKey(key);
                  if (flag3)
                  {
                      text = hashtable[key].ToString();
                  }
              }
              result = text;
              return result;
          }
          catch (Exception ex)
          {
              UserCookie.WriteLog("cookie err:" + ex.Message, "ddSaas");
              result = "";
              return result;
          }
      }
      result = "";
      return result;
    }
    
    发现是通过Json的形式,在客服端保存的cookie,取值的时候是直接取值的,我们只需要修改cookie中的值,就可以造成sql注入,这里应该可以直接构造Sql语句,使返回为为真,然后任意重置用户的账号密码。

本文来源于: https://xz.aliyun.com/t/9438

相关推荐

58集团白盒代码审计系统建设实践2:深入理解SAST

背景 源代码安全检测是安全开发流程(SDL)中非常重要的一部分,在58集团的CI/CD流程中每天有数千次量级的构建及发布,白盒检测的自动化能力显得极为重要。企业级的白盒代码审计系统就不仅仅面临漏洞发现的需求,也需要适应企业CI/CD流程。由

cs bypass卡巴斯基内存查杀 2

cs bypass卡巴斯基内存查杀 上次看到yansu大佬写了一篇cs bypass卡巴斯基内存查杀,这次正好有时间我也不要脸的跟跟风,所以同样发在先知社区 yansu大佬是通过对cs的特征进行bypass,这次让我们换一种思路,尝试从另一

浅谈XSS

XSS漏洞 绕过推荐 XSS绕过可以看看该文章:XSS过滤绕过速查表 0.介绍 跨站攻击,即Cross Site Script Execution(通常简写为XSS),是前端的漏洞,产生在浏览器一端的漏洞。它是指攻击者在网页中嵌入客户端脚本

记一次刨根问底的HTTP包WAF绕过

记一次刨根问底的HTTP包WAF绕过 一:具体的包 POST /sql/post.php HTTP/1.1 Host: 192.168.1.72 Cache-Control: max-age=0 Upgrade-Insecure-Reque

CVE-2021-21975&CVE-2021-21983 VMware vRealize SSRF、任意文件上传漏洞分析

CVE-2021-21975 漏洞复现 漏洞分析 位于casa/WEB-INF/classes/com/vmware/ops/casa/api/ClusterDefinitionController.class有一个路由/nodes/thu

ThinkPHP3.2.3 反序列化&sql注入漏洞分析

ThinkPHP3.2.3 反序列化&sql注入漏洞分析 环境 php5.6.9 thinkphp3.2.3 漏洞分析 首先全局搜索 __destruct,这里的 $this->img 可控,可以利用其来调用 其他类的destroy() 方

网络层ICMP隧道研究

网络层ICMP隧道研究 [TOC] ICMP隧道概念 介绍:ICMP协议常用于我们判断网络是否可达的ping命令,它不同于其他通讯协议的地方在于:它在进行通讯时不需要开放端口,并且计算机防火墙不会屏蔽ping数据包,实现不受限制的网络访问。

test

测试

大数据框架Hue命令执行技巧

目前大数据是一个流行趋势,多数企业采用开源大数据框架来处理复杂的大体量数据,大数据管理平台Hue 是一个Web应用,用来简化用户和Hadoop集群的交互,技术架构从总体上来讲采用的是B/S架构,该web应用的后台采用python编程语言编写

Cisco RV345路由器高危漏洞研究分享

0x0 前言 思科公司是全球领先的网络解决方案供应商。依靠自身的技术和对网络经济模式的深刻理解,思科成 为了网络应用的成功实践者之⼀。 0x1 简介 关键点:upload.cgi中的fileparam参数,可以参考:https://www.

Fuzz Server With AFL

Problem 因为个人偏爱AFL,习惯用AFL做模糊测试,发现一些CVE,但是一直苦于AFL的工作方式,由于AFL只能够从stdin/file获取输入,变异。 而网络应用多是socket或者其他network相关的通信方式,而且默认情况下