### 简要描述: Zoomla!逐浪CMS软件由上海逐一软件科技有限公司、江西逐浪软件科技有限公司联袂打造,其旗下华夏互联hx008.com开发团队,是华中排名第一的IDC服务商,拥有近十年的网站开发服务经验,一直以来致力于高端的WEB开发,也是国内领先的TOP外包合作商。 作为国产CMS的领先企业和国内首家推出的基于微软公司.NET平台的高端网站内核内容管理系统,Zoomla!逐浪CMS具备八大模块、近百项功能,深得业界好评。 在.NET平台开发的CMS行业,Zoomla!逐浪CMS与四川风讯CMS、北京百榕科技、佛山动易软件等公司,引领国产CMS行业的潮流,已成为业界事实标准。 截止2012年1月10日,Zoomla!逐浪CMS累计被下载次数达到千万人次,其中与CSDN、ChinaZ中国站长站、华军软件、天空下载等网站合作分流下载,并通过展会光盘赠送、邮件投递、程序员聚会现场发布等方式传达,更为Zoomla!逐浪CMS软件积累了较高的用户群体。 建网站,选逐浪。 易上手,功能棒。 质量好,服务善。 高性能,最划算。 关键是下载量 是千万 千万次。。。。。。。。 ### 详细说明: 系统版本:Zoomla!CMS2_x2.4 问题文件:/Plugins/WebUploader/RemoteImg.aspx 辅助文件:http://damotools.apphb.com/getimg.aspx (测试写的小shell具体shell的作用可以访问该地址下载查看 内容也可以是一句话 ) ``` protected void GetPic_Btn_Click(object sender, EventArgs e) { ...略 for (int i = 0; i < array.Length; i++) { string text2 = array[i].ToLower().Replace(" ", ""); if (string.IsNullOrEmpty(text2) || (!text2.Contains("http") && !text2.Contains("https"))) { function.WriteErrMsg("错误:" + text2); } else { string text3 = str +...
### 简要描述: Zoomla!逐浪CMS软件由上海逐一软件科技有限公司、江西逐浪软件科技有限公司联袂打造,其旗下华夏互联hx008.com开发团队,是华中排名第一的IDC服务商,拥有近十年的网站开发服务经验,一直以来致力于高端的WEB开发,也是国内领先的TOP外包合作商。 作为国产CMS的领先企业和国内首家推出的基于微软公司.NET平台的高端网站内核内容管理系统,Zoomla!逐浪CMS具备八大模块、近百项功能,深得业界好评。 在.NET平台开发的CMS行业,Zoomla!逐浪CMS与四川风讯CMS、北京百榕科技、佛山动易软件等公司,引领国产CMS行业的潮流,已成为业界事实标准。 截止2012年1月10日,Zoomla!逐浪CMS累计被下载次数达到千万人次,其中与CSDN、ChinaZ中国站长站、华军软件、天空下载等网站合作分流下载,并通过展会光盘赠送、邮件投递、程序员聚会现场发布等方式传达,更为Zoomla!逐浪CMS软件积累了较高的用户群体。 建网站,选逐浪。 易上手,功能棒。 质量好,服务善。 高性能,最划算。 关键是下载量 是千万 千万次。。。。。。。。 ### 详细说明: 系统版本:Zoomla!CMS2_x2.4 问题文件:/Plugins/WebUploader/RemoteImg.aspx 辅助文件:http://damotools.apphb.com/getimg.aspx (测试写的小shell具体shell的作用可以访问该地址下载查看 内容也可以是一句话 ) ``` protected void GetPic_Btn_Click(object sender, EventArgs e) { ...略 for (int i = 0; i < array.Length; i++) { string text2 = array[i].ToLower().Replace(" ", ""); if (string.IsNullOrEmpty(text2) || (!text2.Contains("http") && !text2.Contains("https"))) { function.WriteErrMsg("错误:" + text2); } else { string text3 = str + this.RemoveChar(Plugins_WebUploader_RemoteImg.GetFNameFromUrl(text2), 1); /*这个时候text3为文件保存路径,文件名称为 url最后的文件名 例如 http://baidu.com/123.aspx 那么文件名称为123.aspx*/ Plugins_WebUploader_RemoteImg.DownloadFile(text3, text2, 0, "temp"); text = text + text3 + "|"; } } 略... } ``` 跟踪这个方法Plugins_WebUploader_RemoteImg.DownloadFile ``` public static void DownloadFile(string vpath, string url, int begin = 0, string flag = "temp") { string path = function.VToP(vpath); int num = 0; string value = "0"; if (File.Exists(path)) { SafeC.DelFile(function.PToV(vpath)); } string directoryName = Path.GetDirectoryName(path); if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } FileStream fileStream = new FileStream(path, FileMode.Create); try { HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);/*创建web请求*/ HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();/*获取响应结果*/ long contentLength = httpWebResponse.ContentLength;/*获取响应数据长度*/ long num2 = contentLength / 100L; Stream responseStream = httpWebResponse.GetResponseStream(); byte[] buffer = new byte[1024]; int num3; while ((num3 = responseStream.Read(buffer, 0, 1024)) > 0)/*循环读取流中的数据*/ { fileStream.Write(buffer, 0, num3);/*写入数据*/ num += num3; if (!((long)num / num2).ToString().Equals(value)) { value = ((long)num / num2).ToString(); } } responseStream.Close(); } catch (Exception ex) { throw new Exception(ex.Message); } finally { fileStream.Close(); } } ``` 利用方式: 打开 :url+/Plugins/WebUploader/RemoteImg.aspx 然后在内容框中输入上面的shell远程地址点击确定即可 如图: [<img src="https://images.seebug.org/upload/201507/05161220094a774bb89ec9759172432f2139c863.png" alt="dddddddddddd1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201507/05161220094a774bb89ec9759172432f2139c863.png) 确定后可能会得到下面的两种结果 第一种为: [<img src="https://images.seebug.org/upload/201507/05161439795b1f13ae8d1768bad403c1f9cb1e62.png" alt="逐浪getshell上传错误.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201507/05161439795b1f13ae8d1768bad403c1f9cb1e62.png) 第二种: [<img src="https://images.seebug.org/upload/201507/051614544e325583af4da88df40ac332b55f1bdc.png" alt="写入一个自写的shell.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201507/051614544e325583af4da88df40ac332b55f1bdc.png) 以上两种均已经成功 得到shell地址为: /UploadFiles/2015/07/getimg.aspx?u=Damo 文件目录根据日期形成,文件名称请看上面我给代码加的注释。?u=Damo 为了避免百度收录或者别人利用 这里加了一个简单的验证而已 ### 漏洞证明: 官方Demo: 一句话地址:http://demo.zoomla.cn/wooyun.aspx 密码wooyun 如图: [<img src="https://images.seebug.org/upload/201507/05161551e9130642128436d48817b766111f144d.png" alt="逐浪一句话.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201507/05161551e9130642128436d48817b766111f144d.png) 官网一句话:http://zoomla.cn/wooyun.aspx 密码wooyun [<img src="https://images.seebug.org/upload/201507/051617296e20b9d02c5814bef2394a678d659d26.png" alt="官网一句话f.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201507/051617296e20b9d02c5814bef2394a678d659d26.png) 案例:详见官网case