STCMS V3.3 SQL注入0DAY漏洞
作者:admin 日期:2010-05-28
PHPCMS2008 100527版本网站管理系统下载任意文件漏洞
作者:admin 日期:2010-05-28
Phpcms是一款基于 PHP+Mysql 架构的网站内容管理系统,也是一个开源的 PHP 开发平台。Phpcms 采用模块化方式开发,功能易用便于扩展,可面向大中型站点提供重量级网站建设解决方案。3年来,凭借 Phpcms 团队长期积累的丰富的Web开发及数据库经验和勇于创新追求完美的设计理念,使得 Phpcms 得到了近10万网站的认可,并且越来越多地被应用到大中型商业网站
phpcms2008sp4 下载任意文件漏洞发布后,27号官方的补丁是这样的:
down.php
if(preg_match('/\.php/i',$f) || strpos($f, ":\\")) showmessage('地址有误'); //12行
Cute Editor在线编辑器本地包含漏洞 xday
作者:admin 日期:2010-05-28
一、漏洞描述:
CuteEditor for ASP.NET是建立在Html基础之上,最简单易用、功能最强大的所见即所得Asp.net在线编辑器。 CuteEditor可以帮助Asp.net开发者轻松的对原来文本框(Textarea)中的内容(包括文字、图片等Html内容)进行编辑,更重要得是这些内容编辑的实现是所见即所得方式。 CuteEditor还集成了文件(包括图片、文档等)上传、媒体(包括视频、声音等)文件直接插入等对你来说非常实用的功能模块。
但是在 Load.ashx 文件中,未对 file 参数进行处理,可以加载任意文件。
二、官方地址:
http://cutesoft.net/
CuteEditor for ASP.NET是建立在Html基础之上,最简单易用、功能最强大的所见即所得Asp.net在线编辑器。 CuteEditor可以帮助Asp.net开发者轻松的对原来文本框(Textarea)中的内容(包括文字、图片等Html内容)进行编辑,更重要得是这些内容编辑的实现是所见即所得方式。 CuteEditor还集成了文件(包括图片、文档等)上传、媒体(包括视频、声音等)文件直接插入等对你来说非常实用的功能模块。
但是在 Load.ashx 文件中,未对 file 参数进行处理,可以加载任意文件。
二、官方地址:
http://cutesoft.net/
PHPCMS网站管理系统SQL注入漏洞及任意删除文件漏洞
作者:admin 日期:2010-05-24
红黑vip提权教程和饭客vip2010入侵教程全套
作者:admin 日期:2010-05-24
e107内容管理系统usersettings.php页面存在SQL注入漏洞
作者:admin 日期:2010-05-20
BBSMAX论坛程序登陆任意用户,取得用户密码信息漏洞
作者:admin 日期:2010-05-20
BBSMAX 是国内发展最早的基于.net技术构建的bbs,在leobbs独步天下、微软.net刚刚诞生的时 候,BBSMAX就开始发展了(当时名为 nowboard),历经多年发展,从个人开发到团队开发,从业余开发到全职开发,BBSMAX经历了质的蜕变。
在文件 register.aspx.cs 中protected void Page_Load(object sender, EventArgs e){ string str = string.Empty; str = base._Request.Get("active", Method.Get); if (!string.IsNullOrEmpty(str)) { if (BOBase<UserBO>.Instance.ActivingUser(str)) //激活用户 { base.ShowSuccess("恭喜!您的账号" + base.My.Username + "已成功激活。", BbsRouter.GetUrl("default")); }在激活用户的过程代码如下:public bool ActivingUser(string activeSerial){ int userID = 0; userID = this.GetUserIdByActiveSerial(activeSerial); User user = null; if (userID > 0) { user = BOBase<UserBO>.Instance.GetUser(userID); } if (user != null) { DaoBase<UserDao>.Instance.ActivingUsers(new int[] { userID }, true); DaoBase<UserDao>.Instance.ValidateUserEmail(userID, user.Email); user.EmailValidated = true; this.SetUserLogin(user, null, user.Password, false); return true; } return false;}对传入的字符串进行解密,取得用户ID,然后根据ID直接登陆。解密代码如下:public int GetUserIdByActiveSerial(string serial){ Regex regex = new EmailActiveCodeRegex(); string s = ""; if (!string.IsNullOrEmpty(serial)) { try { serial = SecurityUtil.DesDecode(serial); } catch { return 0; } if (!string.IsNullOrEmpty(serial) && regex.IsMatch(serial)) { DateTime time; int num; GroupCollection groups = regex.Match(serial).Groups; string str = groups[1].Value; s = groups[2].Value; if (!DateTime.TryParse(s, out time)) { return 0; } TimeSpan span = (TimeSpan) (DateTimeUtil.Now - time); double totalHours = span.TotalHours; int.TryParse(str, out num); return num; } } return 0;}是先通过SecurityUtil.DesDecode 解密我们传入的str后,再用正则取得用户ID。问题主要出在解密代码那里。我们来看一下:public static string DesDecode(string data){ byte[] buffer3; byte[] bytes = Encoding.ASCII.GetBytes("!bbsmax!"); byte[] rgbIV = Encoding.ASCII.GetBytes("!zzbird!"); try { buffer3 = Convert.FromBase64String(data); } catch { return null; } DESCryptoServiceProvider provider = new DESCryptoServiceProvider(); MemoryStream stream = new MemoryStream(buffer3); CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(bytes, rgbIV), CryptoStreamMode.Read); StreamReader reader = new StreamReader(stream2); return reader.ReadToEnd();}通过FromBase64String 转换,然后对转换后的字符串进行3DES解密,但问题就是出在这里。3DES的密码居然是固定在程序里的。因此,我们可直接复制他的解密程序来构造我们的 active 字符串,从而达到登陆任意用户账号的目的。取得用户密码信息的原理也是一样,BBSMAX的Cookie信息也是通过那个函数进入加解密,我们通过解密用户登陆后的Cookie后,取得用户密码。
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://bbs.bbsmax.com/products_release/list-1.html
在文件 register.aspx.cs 中protected void Page_Load(object sender, EventArgs e){ string str = string.Empty; str = base._Request.Get("active", Method.Get); if (!string.IsNullOrEmpty(str)) { if (BOBase<UserBO>.Instance.ActivingUser(str)) //激活用户 { base.ShowSuccess("恭喜!您的账号" + base.My.Username + "已成功激活。", BbsRouter.GetUrl("default")); }在激活用户的过程代码如下:public bool ActivingUser(string activeSerial){ int userID = 0; userID = this.GetUserIdByActiveSerial(activeSerial); User user = null; if (userID > 0) { user = BOBase<UserBO>.Instance.GetUser(userID); } if (user != null) { DaoBase<UserDao>.Instance.ActivingUsers(new int[] { userID }, true); DaoBase<UserDao>.Instance.ValidateUserEmail(userID, user.Email); user.EmailValidated = true; this.SetUserLogin(user, null, user.Password, false); return true; } return false;}对传入的字符串进行解密,取得用户ID,然后根据ID直接登陆。解密代码如下:public int GetUserIdByActiveSerial(string serial){ Regex regex = new EmailActiveCodeRegex(); string s = ""; if (!string.IsNullOrEmpty(serial)) { try { serial = SecurityUtil.DesDecode(serial); } catch { return 0; } if (!string.IsNullOrEmpty(serial) && regex.IsMatch(serial)) { DateTime time; int num; GroupCollection groups = regex.Match(serial).Groups; string str = groups[1].Value; s = groups[2].Value; if (!DateTime.TryParse(s, out time)) { return 0; } TimeSpan span = (TimeSpan) (DateTimeUtil.Now - time); double totalHours = span.TotalHours; int.TryParse(str, out num); return num; } } return 0;}是先通过SecurityUtil.DesDecode 解密我们传入的str后,再用正则取得用户ID。问题主要出在解密代码那里。我们来看一下:public static string DesDecode(string data){ byte[] buffer3; byte[] bytes = Encoding.ASCII.GetBytes("!bbsmax!"); byte[] rgbIV = Encoding.ASCII.GetBytes("!zzbird!"); try { buffer3 = Convert.FromBase64String(data); } catch { return null; } DESCryptoServiceProvider provider = new DESCryptoServiceProvider(); MemoryStream stream = new MemoryStream(buffer3); CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(bytes, rgbIV), CryptoStreamMode.Read); StreamReader reader = new StreamReader(stream2); return reader.ReadToEnd();}通过FromBase64String 转换,然后对转换后的字符串进行3DES解密,但问题就是出在这里。3DES的密码居然是固定在程序里的。因此,我们可直接复制他的解密程序来构造我们的 active 字符串,从而达到登陆任意用户账号的目的。取得用户密码信息的原理也是一样,BBSMAX的Cookie信息也是通过那个函数进入加解密,我们通过解密用户登陆后的Cookie后,取得用户密码。
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://bbs.bbsmax.com/products_release/list-1.html
Bitrac个人博客系统上传漏洞
作者:admin 日期:2010-05-20
Bitrac 正式版本,Bitrac 是基于 ASP.NET 2.0 + SQLite 的单用户博客程序,内置 URLRewrite 和页面压缩功能,支持 MetaWeblogAPI,自写的 HTML 模板引擎,方便修改风格,完全的可视化编辑环境。
首先说一下Bitrac在线升级顺序。在后台请求 升级Control.ashxAutomat string sCode = SiteFun.RandomStr(9); _AdmStat.SetLockFile(sCode); 在网站Errors目录随机生成一个*.lock 文件,同时文件名记录在Autoset.Cookie + "_Lock" Cookie里。再转到升级处理页面。Automat.ashx处理页面根据读取Cookie值,再当前网站的*.lock文件对比,不相同的为没有权限,相同的进行升级,升级完成后删除*.lock 文件和Cookie。但这里就存在一个问题,就是Cookie我们可以伪造,而*.lock默认和正常升级都是不会存在的。因此,我们可以伪造Autoset.Cookie + "_Lock"为空,即可进行正常升级,再结合他的手动升级功能,我们可以伪造升级包进行上传任意文件或执行数据库操作。相关代码:Automat.ashx.cs//权限验证if (!Autoexe.ChkSiteLockCookie()) { response.Write("你没有权限访问此页面"); }///检查Cookiepublic static bool ChkSiteLockCookie(){ bool flag = false; string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(GetSiteLockFileName()); HttpCookie cookie = HttpContext.Current.Request.Cookies[Autoset.Cookie + "_Lock"]; if (cookie != null) { flag = cookie.Value == fileNameWithoutExtension; } return flag;}//手动升级if (str7 == "Hado") { response.Write("<p style=\"color:blue;\"><b>博客手动升级程序</b></p><p>当前版本:" + Autoexe.GetCurVersion() + "</p>"); if (request.Files["hdFile"] == null) { response.Write("<br /><br /><br /><p><a href=\"Automat.ashx?act=Hand\">上传文件不能为空,点击返回手动升级程序</a></p>"); } else { response.Write("<p><textarea id=\"autoInfo\" cols=\"59\" rows=\"10\" wrap=\"virtual\" readonly=\"readonly\" style=\"font-size: 12px; font-family: Tahoma;\"></textarea></p>"); response.Write("<script>function insAutoInfo(txt) { document.getElementById('autoInfo').value += txt; }</script>"); request.Files["hdFile"].SaveAs(Path.Combine(Path.Combine(Autoset.Router, "Errors"), "HandAutomat.cab")); response.Write("<script>insAutoInfo(' ............... 升级包上传完成')</script>"); response.Write(@"<script>insAutoInfo('\r\n')</script>"); if (Autoexe.AutoInstallFile("HandAutomat")) { response.Write("<script>insAutoInfo(' ............... 升级包安装完成')</script>"); response.Write(@"<script>insAutoInfo('\r\n')</script>"); } else { response.Write("<script>insAutoInfo(' ......... 升级包安装安装失败')</script>"); } response.Write("<p><a href=\"Automat.ashx?act=Hand\">点击返回手动升级程序,继续升级</a></p>"); response.Write("<p><a href=\"Automat.ashx?act=Exit\">关闭手动升级程序并重新开启站点</a></p>"); } goto Label_048C; }还要说明一点,他提供的手动升级包是使用 GZipStream 进行压缩同解压。
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://blog.loveyuki.com/Article/Bitrac-Pub-Download.aspx
首先说一下Bitrac在线升级顺序。在后台请求 升级Control.ashxAutomat string sCode = SiteFun.RandomStr(9); _AdmStat.SetLockFile(sCode); 在网站Errors目录随机生成一个*.lock 文件,同时文件名记录在Autoset.Cookie + "_Lock" Cookie里。再转到升级处理页面。Automat.ashx处理页面根据读取Cookie值,再当前网站的*.lock文件对比,不相同的为没有权限,相同的进行升级,升级完成后删除*.lock 文件和Cookie。但这里就存在一个问题,就是Cookie我们可以伪造,而*.lock默认和正常升级都是不会存在的。因此,我们可以伪造Autoset.Cookie + "_Lock"为空,即可进行正常升级,再结合他的手动升级功能,我们可以伪造升级包进行上传任意文件或执行数据库操作。相关代码:Automat.ashx.cs//权限验证if (!Autoexe.ChkSiteLockCookie()) { response.Write("你没有权限访问此页面"); }///检查Cookiepublic static bool ChkSiteLockCookie(){ bool flag = false; string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(GetSiteLockFileName()); HttpCookie cookie = HttpContext.Current.Request.Cookies[Autoset.Cookie + "_Lock"]; if (cookie != null) { flag = cookie.Value == fileNameWithoutExtension; } return flag;}//手动升级if (str7 == "Hado") { response.Write("<p style=\"color:blue;\"><b>博客手动升级程序</b></p><p>当前版本:" + Autoexe.GetCurVersion() + "</p>"); if (request.Files["hdFile"] == null) { response.Write("<br /><br /><br /><p><a href=\"Automat.ashx?act=Hand\">上传文件不能为空,点击返回手动升级程序</a></p>"); } else { response.Write("<p><textarea id=\"autoInfo\" cols=\"59\" rows=\"10\" wrap=\"virtual\" readonly=\"readonly\" style=\"font-size: 12px; font-family: Tahoma;\"></textarea></p>"); response.Write("<script>function insAutoInfo(txt) { document.getElementById('autoInfo').value += txt; }</script>"); request.Files["hdFile"].SaveAs(Path.Combine(Path.Combine(Autoset.Router, "Errors"), "HandAutomat.cab")); response.Write("<script>insAutoInfo(' ............... 升级包上传完成')</script>"); response.Write(@"<script>insAutoInfo('\r\n')</script>"); if (Autoexe.AutoInstallFile("HandAutomat")) { response.Write("<script>insAutoInfo(' ............... 升级包安装完成')</script>"); response.Write(@"<script>insAutoInfo('\r\n')</script>"); } else { response.Write("<script>insAutoInfo(' ......... 升级包安装安装失败')</script>"); } response.Write("<p><a href=\"Automat.ashx?act=Hand\">点击返回手动升级程序,继续升级</a></p>"); response.Write("<p><a href=\"Automat.ashx?act=Exit\">关闭手动升级程序并重新开启站点</a></p>"); } goto Label_048C; }还要说明一点,他提供的手动升级包是使用 GZipStream 进行压缩同解压。
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://blog.loveyuki.com/Article/Bitrac-Pub-Download.aspx







