记一次红队攻防中.Net代码审计与防守方的对抗过程

admin 2024年7月18日23:23:29评论20 views字数 1313阅读4分22秒阅读模式

记一次红队攻防中.Net代码审计与防守方的对抗过程

 Part1 前言 

大家好,我是ABC_123。最近在复习整理之前自己审过的一些代码,找到了几年前红队评估项目中审计的一个.Net代码的案例,我平时很少看.NET的代码,于是就拿出代码重新学习总结了一下,整个审计过程比较简单。

 Part2 研究过程 

大致过程如下:目标网站的资产存在一个XXX系统,通过信息收集找到了该系统的供应商。对供应商官网的子域名进行了收集,其中一个子域名搭建的这套系统的测试站点。经过目录扫描,测试站点存在一个网站的备份文件可以直接下载,于是得到了该系统的源代码。

  • 反编译工具的使用

可选择的.NET反编译工具主要有四个:dnSpy(于2020年左右停止更新)、ILSpy、dotPeek(JetBrains发布)、dnSpyx(非官方更新版)。选择一个自己用的顺手的反编译工具对*.Web.dll文件进行反编译,并导出所有反编译后的代码。我也将反编译结果对比了一下,以下是dnSpyx的反编译结果:

记一次红队攻防中.Net代码审计与防守方的对抗过程

以下是ILSpy的反编译结果:

记一次红队攻防中.Net代码审计与防守方的对抗过程

以下是dotpeek的反编译结果:

记一次红队攻防中.Net代码审计与防守方的对抗过程

  • 审计上传漏洞

将反编译的代码导入Rider64(IntelliJ IDEA公司出品的),使用IDE进行代码审计、搜索关键字更方便一些。全局搜索”上传”关键字,挨个查看有可能实现了上传功能的.Net类。

记一次红队攻防中.Net代码审计与防守方的对抗过程

最终发现了如下代码,有可能存在上传漏洞,[HttpPost]提示该请求只支持POST请求形式:

记一次红队攻防中.Net代码审计与防守方的对抗过程

构造上传数据包如下,最终通过; filename;;;; 的方式结合.cer扩展名绕过了WAF。

记一次红队攻防中.Net代码审计与防守方的对抗过程

  • 禁止脚本执行问题解决

等到第二天起来的时候,访问webshell发现提示“HTTP 错误403.1 - Forbidden”,该目录不允许运行可执行文件,也就意味着webshell在当前目录无法执行。经过判断,猜测蓝队防守方做了加固,在webshell所在文件夹下放置了web.config文件,更改了默认配置,使脚本在当前目录下不能执行。

记一次红队攻防中.Net代码审计与防守方的对抗过程

接下来想了解决办法,我们可以找一处任意文件删除漏洞,将web.config文件删掉,从而使web.config文件失去作用,使Webshell可以继续执行。搜索delete关键字挨个查看,找到了一处任意文件删除漏洞,关键代码是System.IO.File.Delete(path),[HttpPost]提示该请求只支持POST形式:

记一次红队攻防中.Net代码审计与防守方的对抗过程

最终按照代码拼接成如下数据包,通过....跳转,成功将web.config文件删掉:

记一次红队攻防中.Net代码审计与防守方的对抗过程

终于webshell又可以正常执行了,后续我们在当前目录放置了一个可以允许脚本执行的web.config文件,防止蓝队防守发现,在内网也做了新的权限维持。

  • 任意文件读取漏洞

如果担心任意文件删除漏洞会影响业务,可以提前审计一个任意文件读取漏洞,查看一下web.config文件的内容,判断一下删除该文件是否会对业务产生影响,或者是提前与甲方沟通好。

记一次红队攻防中.Net代码审计与防守方的对抗过程

 Part3 总结 

1.  任意文件删除漏洞的审计也是有价值的,在本次案例中得到了印证。

2.  如果担心删除文件会影响业务,可以审计一个文件读取漏洞,查看一下文件内容,具体评估一下风险。

 

原文始发于微信公众号(哈拉少安全小队):记一次红队攻防中.Net代码审计与防守方的对抗过程

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月18日23:23:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次红队攻防中.Net代码审计与防守方的对抗过程https://cn-sec.com/archives/2971746.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息