某测试端口的.net-Web-Demo-功能到GetShell
2022-03-20 23:17:19
0x00 前言
项目中碰到了一个端口存在目录遍历,比较运气的是泄漏了ASP.NET的obj目录,最终找到了Web功能模块的DLL,实现了未授权的文件上传GetShell。
0x01 过程
在发现了这个端口存在目录遍历的时候,尝试访问页面发现了当前目录是一个CSharp的工程项目。可以看到比较清晰的目录结构。
1 | 2019/5/20 19:33 <dir> bin |
如果直接访问FileUpload.aspx并不能得到除了物理路径之外有效的信息。
如果了解ASP.NET的项目目录结构,就会知道,obj和bin是csharp项目的两个重要的配置目录,可能包含了项目的编译后链接库文件,或者pdb等信息。
1.ASP.NET 的某些基本目录结构
目录 | 说明 |
---|---|
obj | obj 目录包括项目运行需要引用的一些类、方法和接口 |
bin | bin 目录是项目程序目录,包括运行时配置文件等等 |
直接访问bin,这里被限制了访问。
而访问obj目录,就找到了一个FileUpload.dll。与FileUpload.aspx同名。那么就大概率是他的动态链接库,csharp的文件可以直接反编译看到源码,这样我们直接审计存不存在漏洞。
2.dnSpy反编译加审计
通过导入dnSpy,直接看到功能模块源码,在FileUpload类,看到三个可控的参数ExtName、ExtName、DicName。
在关键代码第51行,第54行,也可以看到直接构造文件上传表单,在text5的目录下,直接保存文件,整个过程也没有鉴权,可以直接未授权构造文件上传。
而ExtName传入给text2,最后是我们可控的文件后缀名,最终可以直接上传aspx马。
3.测试
这里直接构造了请求表单。
1 | <html> |
成功。
0x02 总结
这里其实挺简单的。就是简单的信息收集到简单的代码审计,到getshell,主要记录下ASP.NET的目录信息泄露。