NewHand的第一次.NET审计

渗透技巧 2年前 (2023) admin
507 0 0

NewHand的第一次.NET审计

一、前言

前段时间观摩学习了朋友的公众号

https://mp.weixin.qq.com/s/A_gO1Uae1G-JnfoOODyAdA
D0ubt,AdminTony,公众号:川云安全团队记一次.net审计

是在网上下了个源码来练手。

二、过程

根据说明进行数据库添加和安装。

这里我们可以先了解一下aspx网站的构成。一般asp.net是使用C#,VB.NET,Jscript.net来开发,其中应重点查看的代码通常是.cs、.dll文件,.cs是类文件,dll是cs文件编译后的程序集,.ashx是一般处理程序,主要用于写web handler,可以理解成不会显示的aspx页面,.aspx文件只是做显示,通常代码是一些html代码。核心代码在bin目录下的dll文件中。

这里我直接把bin目录拖入dnspy中(dnspy是反编译工具,用于调试.net 程序)。

NewHand的第一次.NET审计

作为新手,本次审计的目标就2个。找sql注入和文件上传。

2.1 sql注入挖掘

随便找个查询功能抓包,找到根据页面路径对应的dll文件

NewHand的第一次.NET审计


在源码里寻找疑似过滤的类,看到这个checksql.filter就很明显。

NewHand的第一次.NET审计

跟进去一看,过滤的也差不多了。

NewHand的第一次.NET审计

接下来思路也很简单,就是全局找没有调用checksql类的查询页面。

NewHand的第一次.NET审计

然后跟着sqlserver profiler进行跟踪。

NewHand的第一次.NET审计

dnspy没有全局查找的功能,可以全部导出到Visual Studio里面进行全局搜索select。

接下来就是一段漫长的过程。。。。。

好不容易发现1处没有使用过滤类的查询,可惜还有参数化第二道防线。

NewHand的第一次.NET审计

继续寻找,终于找到一处作者疏忽的地方。当this.ViewState[“Search”]不为null的时候,给text值追加上this.ViewState[“Search”]的值,而这里是没有做过滤的。

NewHand的第一次.NET审计
NewHand的第一次.NET审计

再看它的存储过程,使用的是SqlDataAdapter。SqlDataAdapter和一般的Sqlcommand不同在于SqlDataAdapter可以调用多个SQL命令,而普通的SqlCommand只能操作一个SQL命令。如果给SqlDataAdapter参数的sql语句不做处理的话,就能出现Sql注入问题。

NewHand的第一次.NET审计

成功实现注入。

NewHand的第一次.NET审计
NewHand的第一次.NET审计

又多看了一下,使用SqlDataAdapter都是调用的GetTable()方法,于是全局搜索该方法。果然找出多个类似的sql注入。

NewHand的第一次.NET审计

对照页面比对了下,问题都出在”高级搜索”的功能。

NewHand的第一次.NET审计

2.2 文件上传挖掘

弱口令进了后台,上传文件发现没有过滤后缀,本来以为稳了,结果查看图片路径是如下这种形式。

NewHand的第一次.NET审计

所有上传点均尝试后路径都一样。没办法,那就浅看一下源码中是如何实现上传逻辑的。

上传后的文件名以当前的日期时间外加1000-9999的随机数。

NewHand的第一次.NET审计
NewHand的第一次.NET审计

然后拼接上传后缀名。

NewHand的第一次.NET审计

上传后缀名这里有过滤函数,但是整个上传函数里面并没有调用。

NewHand的第一次.NET审计

最后上传后读取使用Security类的EncryptString加密方式。

NewHand的第一次.NET审计

跟进后还以为加密用的是对称加密,skey是默认硬编码。结果细看之下发现加密方式很简单,就是skey+明文路径然后作base64的编码。

NewHand的第一次.NET审计

这下看得纯纯有点无语,把key和路径拼接在一起再做base64,那不跟没加密一样吗?简单一个base64就能解出路径。(一开始就能搞定结果绕了这么大一圈)

NewHand的第一次.NET审计

上面只是后台上传,毕竟还有个登录后台的限制。该源码还有前台功能,看下前台上传是否逻辑一致。

前台上传是先将图片内容转成base64形式的数据流,重新在服务器上生成文件然后固定添加jpg后缀。那这样前台就莫得搞头了。

NewHand的第一次.NET审计
NewHand的第一次.NET审计

三、总结

1.sql注入只存在于后台。aspx.net的注入除了常规的SqlCommand查询语句外,还有调用SqlDataAdapter时可能存在注入。

2.上传的问题也只有后台存在,利用条件有限制,不过这个路径加密相当于没加。

3.该厂商旗下产品类型较多,在网上搜索相关产品还是有好几百个。猜测这一系列产品后台运用逻辑大致相同,于是简单验证了几个,果然是能通用的。

希望看了这篇文章后对各位的渗透日站有所帮助。

原文始发于微信公众号(雁行安全团队):NewHand的第一次.NET审计

版权声明:admin 发表于 2023年2月22日 下午3:01。
转载请注明:NewHand的第一次.NET审计 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...