一次地级市hw的.net代码审计
background
之前的一次打过这个系统 然后发现与之前打的系统是一样的 之前怎么打进去的呢?是别人iis短文件名泄露拿的源码审的洞。至于poc啊,我也没有啊,报告里也没写全这个poc。但是好在有路径,但是数据包我是真看不懂,一堆啥玩意啊,他报告里也没写,就标了个漏洞点的函数。那只能我自己试试了,然后我才知道,虽然能直接上aspx的木马,是解释型语言,但是这玩意同样要编码,直接是看不到源码的,得反编译一下。从来没接触过,只能试试,用的ilspy。
路由追踪
web页面的触发点和路径已经有了 现在就是不知道需要提交什么样的参数
打开对应的asmx页面
发现啥也没有 东西都在app_code里面去了 然后类名也有了 直接反编译这个dll 找到对应的类
点开这个箭头里面有一大堆类
找到了 然后发现这里是走了DESDeCode
直接进到CsSubDes里去看 这里就是常规的DES解密 秘钥都有了 然后就手扣报告里的数据拿去解密
需要解密出来的结果是900 因为最终要走SubUpLoadImage实现文件上传
死活解不出来 其实是我只放了key却忽略了iv 这里的key和iv是一样的 我上面代码里标出来了 然后就解决了数据加密的问题
然后就是上shell
很明显了 内容base64编码一下 然后路径 文件名称 路径就是./
结果洞修了 废了 试了下解析漏洞 畸形文件名啥的都不行 开发还有有点东西啊 文件名过滤了?这些字符 这个点八成是打不了了
洞肯定还有 只不过我懒得看了 主要是也看不懂 这是关键 本来是懒得看的 但是写到这里有感觉还是可以再看看的 于是有了下面的内容
找上传
找到了一个上传的
构造数据的时候发现不行 仔细一看他跟上面的不是一个口子 就是?op=的值不一样
这边的数据采用了新的算法 挂不得说之前方法构造的数据不一样了
跟一下算法 又是个AES但是这里的keys是字节啊 不是字符串啊 怎么办?
我哪懂这个啊 直接和GPT斗智斗勇 说实话 感觉GPT真的是越来越蠢了 真的改了好久才整出来 一下子keys没用上 一下子IV没用上
from Crypto.Cipher import DES |
构造数据之后发现还不行 仔细一看这里还过了个函数 并且需要结果为ok
跟进去 啥也看不懂啊 数据库?查询?我这里还要指定库名。
我试着放一下sql语句 压根不行啊 他这里有限制 老早就过滤了 在最外层 就算能够执行语句了 怎么办我也没思路 于是放弃
峰回路转
还是之前的接口 发现另一个口子 其实跟上面的是一样的 不用管下面数据库 文件能写入不就完事了吗 于是写文件 然后发现base64解码错误 后面感觉应该是+的原因 把base64整体url编码一下再AES 就OK了 出货