事情是这样,在一次渗透项目中发现了目标 OA 的一个弱口令,登入系统后找到了一处上传点。但在上传木马 GetShell 的时候遇到了大坑,相同的操作、JDK 版本、burpsuite 甚至连 burp 配置都一样我和同事同时测试却是两个截然不同的结果(同事按照我的思路 getshell 了,我还在冷风中摇曳像只傻狗)遂记录下来。
因为是开源 OA 先从源码简单分析下漏洞原理
定位到编辑资料上传头像处
if (this.Fup.HasFile){FileExtension[] fileEx = new FileExtension[]{FileExtension.GIF,FileExtension.JPG,FileExtension.PNG,FileExtension.BMP};if (FileSystemManager.IsAllowedExtension(this.Fup, fileEx)){string userName = sys_UserInfo.UserName;string text = base.Server.MapPath("~/Files/common/");string text2 = userName + Path.GetExtension(this.Fup.FileName);text += text2;this.Fup.PostedFile.SaveAs(text);sys_UserInfo.PerPic = text2;this.Fup.Dispose();}}
判断文件合法性的方法
public static bool IsAllowedExtension(FileUpload fileUpload_0, FileExtension[] fileEx){int contentLength = fileUpload_0.PostedFile.ContentLength;byte[] buffer = new byte[contentLength];fileUpload_0.PostedFile.InputStream.Read(buffer, 0, contentLength);MemoryStream memoryStream = new MemoryStream(buffer);BinaryReader binaryReader = new BinaryReader(memoryStream);string text = "";try{text = binaryReader.ReadByte().ToString();text += binaryReader.ReadByte().ToString();}catch{}binaryReader.Close();memoryStream.Close();bool result;for (int i = 0; i < fileEx.Length; i++){FileExtension fileExtension = fileEx;if (int.Parse(text) == (int)fileExtension){result = true;return result;}}result = false;return result;}
其中 FileExtension 为枚举类型,白名单
public enum FileExtension{JPG = 255216,GIF = 7173,BMP = 6677,PNG = 13780}
取文件内容前两个字节的十进制依次和 FileExtension 里定义的枚举值作比较相同则上传文件。很经典的问题这里判断文件合法性的操作并没有判断文件后缀,而只看文件头。故我们可以制作上传图片马绕过或给木马加上图片的文件头:木马内容十六进制前两个字节添加任意一个枚举值。如 JPG 255216 换为十六进制就是FF D8,GIF 7173 转换为十六进制就是47 49copy normal.jpg/b + shell.aspx/a shell.jpg
我一般习惯生成正常图片后缀的图片马,再使用 burp 抓包把图片后缀改为脚本后缀,免得遇到前端验证等的一些情况(别和我讲什么禁用 JS)
坑点就在改包的过程!下图是原始的包的文件名和文件内容的 HEX 形式
然后在 RAW 包选中 jpg,修改为 aspx 再次查看
可以看到图片文件头的几个字节全都变为了ef bf bd(破案万岁),原来的白名单文件头没了故上传 GetShell 不成功。
最后通过和同事控制变量法最终得出结论:
我不适合挖洞电脑字符集可能有问题。
关于这个 UTF-8 字符可以看这篇文章你应该记住的一个 UTF-8 字符「EF BF BD」
解决方法是直接在原始包的 HEX 选中指定字节进行编辑
所以条条道路通罗马,求知欲和细心是最重要的。
作者:0x7b,文章来源:https://www.0x7b.cn/posts/1008/
PS:红队技术、渗透教程、安全工具、POC/EXP等干货分享,欢迎扫码加入我的知识星球。
点击上方,关注公众号
如文章对你有帮助,请支持点下“赞”“在看”
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……




还没有评论,来说两句吧...