CC: Pen Testing – Write Up – Fr – TryHackMe

Task 1 Introduction

L’idée derrière cette salle est de fournir une introduction à divers outils et concepts couramment rencontrés dans les tests d’intrusion.

Cette salle suppose que vous avez des connaissances de base sur Linux et les réseaux. Cette salle n’est pas non plus censée être un « tout pour finir » pour les tests d’intrusion.

Les tâches dans cette salle peuvent être accomplies dans n’importe quel ordre; cependant, si vous débutez dans les tests d’intrusion, il est recommandé de remplir les deux premières sections avant de faire quoi que ce soit d’autre.

 

Task 2 [Section 1 - Network Utilities] - nmap

nmap est l’un des outils les plus importants d’un arsenal du pentesteur. Il permet à un pentesteur de voir quels ports sont ouverts et des informations sur les services exécutés sur ces ports. Cette tâche se concentrera sur vous montrer les différents drapeaux de nmap. Les questions de début peuvent être complétées en utilisant la page de manuel nmap; Les dernières questions vous demanderont de déployer la machine.

  • What does nmap stand for?

Network Mapper

  • How do you specify which port(s) to scan?

-p

  • How do you do a « ping scan »(just tests if the host(s) is up)?

-sN

  • What is the flag for a UDP scan? 

-sU

  • How do you run default scripts?

-sC

  • How do you enable « aggressive mode »(Enables OS detection, version detection, script scanning, and traceroute)

-A

  • What flag enables OS detection

-O

  • How do you get the versions of services running on the target machine    

-sV

  • How many ports are open on the machine?    

1

  • What service is running on the machine?    

apache

  • What is the version of the service?

2.4.18

  • What is the output of the http-title script(included in default scripts)

Apache2 Ubuntu Default Page: It works

Task 3 [Section 1 - Network Utilities] - Netcat

  • How do you listen for connections?

-l

  • How do you enable verbose mode(allows you to see who connected to you)?

-v

  • How do you specify a port to listen on

-p

  • How do you specify which program to execute after you connect to a host(One of the most infamous)?

-e

  • How do you connect to udp ports

-u

Task 4 [Section 2 - Web Enumeration] - gobuster

L’un des principaux problèmes des tests de pénétration Web est de ne pas savoir où se trouve quelque chose. La reconnaissance de base peut vous dire où se trouvent certains fichiers et répertoires ; cependant, certaines des choses les plus cachées sont souvent cachées aux yeux des utilisateurs. C’est là qu’intervient gobuster, l’idée derrière gobuster est qu’il essaie de trouver des répertoires valides à partir d’une liste de mots de répertoires possibles. gobuster peut également être utilisé pour valider des sous-domaines en utilisant la même méthode.

Les questions de début de cette tâche utilisent la page de manuel de gobuster, tandis que les dernières questions utiliseront une machine virtuelle.
Si votre système d’exploitation ne fournit pas la page de manuel gobuster, veuillez utiliser gobuster –help

  • How do you specify directory/file brute forcing mode?

dir

  • How do you specify dns bruteforcing mode?    

dns

  • What flag sets extensions to be used?

Example: if the php extension is set, and the word is « admin » then gobuster will test admin.php against the webserver

-x

  • What flag sets a wordlist to be used?

-w

  • How do you set the Username for basic authentication(If the directory requires a username/password)?

-U

  • How do you set the password for basic authentication?

-P

  • How do you set which status codes gobuster will interpret as valid?
    • Example: 200,400,404,204

-s

  • How do you skip ssl certificate verification?

-k

  • How do you specify a User-Agent?

-a

  • How do you specify a HTTP header?

-H

  • What flag sets the URL to bruteforce?

-u

Deploy the machine

No answer needed

  • What is the name of the hidden directory

secret

nmap -T5 -p- 10.10.126.218

gobuster dir -u http://10.10.126.218 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

  • What is the name of the hidden file with the extension xxa password

gobuster dir -u http://10.10.126.218 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x xxa

Task 5 [Section 2 - Web Enumeration] - nikto

Nikto est un outil d’analyse Web populaire qui permet aux utilisateurs de trouver des vulnérabilités Web courantes. Il est couramment utilisé pour vérifier les CVE courants tels que shellshock, et pour obtenir des informations générales sur le serveur Web que vous énumérez.

  • How do you specify which host to use?   

-h

  • What flag disables ssl?

-nossl

  • How do you force ssl?

-ssl

  • How do you specify authentication(username + pass)?

-id

  • How do you select which plugin to use?

-plugins

  • Which plugin checks if you can enumerate apache users?   

apacheusers

nikto -list-plugins | grep apache

  • How do you update the plugin list    

-update

  • How do you list all possible plugins to use

-list-plugins

Task 6 [Section 3 - Metasploit]: Intro

Metasploit est l’un des frameworks de test d’intrusion les plus populaires. Il contient une grande base de données de presque tous les principaux CVE, que vous pouvez facilement utiliser contre une machine. Le but de cette section est de passer en revue certaines des fonctionnalités majeures de metasploit, et à la fin il y aura une machine que vous devrez exploiter.

Task 7 [Section 3 Metasploit]: Setting Up

Une fois que vous avez installé metasploit via le programme d’installation ou vos dépôts de distributions, vous aurez de nombreuses nouvelles commandes à votre disposition. Cette section se concentrera principalement sur la commande msfconsole.

L’exécution de cette commande vous présentera une invite « msf5 » qui vous permettra d’entrer des commandes. Toutes les tâches peuvent être traitées avec la commande « help« .

  • What command allows you to search modules?

search

  • How do you select a module?    

use

  • How do you display information about a specific module?

info

  • How do you list options that you can set?

options

  • What command lets you view advanced options for a specific module?    

advanced

  • How do you show options in a specific category

show

Task 8 [Section 3 - Metasploit]: - Selecting a module

Une fois que vous avez trouvé le module pour la machine spécifique que vous souhaitez exploiter, vous devez le sélectionner et définir les options appropriées. Cette tâche vous guidera à travers la sélection et la configuration des options pour l’un des modules metasploit les plus populaires « eternalblue« . Toutes les commandes de base qui pourraient être exécutées avant de sélectionner un module peuvent également être exécutées lorsqu’un module est sélectionné.

  •  How do you select the eternalblue module?

use exploit/windows/smb/ms17_010_eternalblue

  • What option allows you to select the target host(s)?

RHOSTS

  • How do you set the target port?

RPORT

  • What command allows you to set options?

set

  • How would you set SMBPass to « username »?

set smbpass username

  • How would you set the SMBUser to « password »?

set smbuser password

  • What option sets the architecture to be exploited?

arch

  • What option sets the payload to be sent to the target machine?

payload

  • Once you’ve finished setting all the required options, how do you run the exploit?

exploit

  • What flag do you set if you want the exploit to run in the background?

-j

  • How do you list all current sessions?

sessions

  • What flag allows you to go into interactive mode with a session(« drops you either into a meterpreter or regular shell »)

-i

Task 9 [Section 3 - Metasploit]: meterpreter

Une fois que vous avez exécuté l’exploit, idéalement, il vous donnera l’une des deux choses suivantes, un shell de commande normal ou un shell meterpreter. Meterpreter est le propre « centre de contrôle » de metasploits où vous pouvez faire diverses choses pour interagir avec la machine. Une liste des commandes commonmeterpreter et leurs utilisations peut être trouvée ici

Remarque: les shells réguliers peuvent généralement être mis à niveau vers des shells meterpreter en utilisant le module post/multi/manage/shell_to_meterpreter

  • What command allows you to download files from the machine?

download

  • What command allows you to upload files to the machine?

upload

  • How do you list all running processes?

ps

  • How do you change processes on the victim host(Ideally it will allow you to change users and gain the perms associated with that user)

migrate

  • What command lists files in the current directory on the remote machine?

ls

  • How do you execute a command on the remote host?

execute

  • What command starts an interactive shell on the remote host?

shell

  • How do you find files on the target host(Similar function to the linux command « find »)

search

  • How do you get the output of a file on the remote host?

cat

  • How do you put a meterpreter shell into « background mode »(allows you to run other msf modules while also keeping the meterpreter shell as a session)?

background

Task 10 [Section 3 - Metasploit]: Final Walkthrough

  • Select the module that needs to be exploited

use exploit/multi/http/nostromo_code_exec

  • What variable do you need to set, to select the remote host

rhosts

  • How do you set the port to 80

set rport 80

  • How do you set listening address(Your machine)

lhost

  • Exploit the machine!
  • What is the name of the secret directory in the /var/nostromo/htdocs directory?

s3cretd1r

  • What are the contents of the file inside of the directory?

Woohoo!

Les commandes peuvent mettre du temps pour arriver, il faut se montrer patient.

Task 11 [Section 4 - Hash Cracking]: Intro

Souvent, lors d’un pentestt, vous aurez accès à une base de données. Lorsque vous examinez la base de données, vous trouverez souvent une table des utilisateurs, qui contient les noms d’utilisateur et souvent des mots de passe hachés. Il est souvent nécessaire de savoir comment craquer les mots de passe hachés pour obtenir l’authentification sur un site Web (ou si vous avez de la chance, un mot de passe haché peut fonctionner pour ssh!).

Task 13 [Section 4 - Hash Cracking]: hashcat

Hashcat est un autre des outils de craquage de hachage les plus populaires. Il est réputé pour sa polyvalence et sa rapidité. Hashcat n’a pas de détection automatique pour les hashtypes, à la place il a des modes. Par exemple, si vous essayiez de casser un hachage md5, le « mode » serait 0, tandis que si vous essayiez de craquer un hachage sha1, le mode serait 100.

Une liste complète de tous les modes peut être trouvée ici.

  • What flag sets the mode.

-m

  • What flag sets the « attack mode »

-a

  • What is the attack mode number for Brute-force  

3

  • What is the mode number for SHA3-512    

17600

  • Crack This Hash:56ab24c15b72a457069c5ea42fcfc640
    • Type: MD5

.\hashcat64.exe -m 0   -a 0 .\hash2.txt .\rockyou.txt

  • Crack this hash:
    • Type: MD4

4bc9ae2b9236c2ad02d81491dcb51d5f

Task 14 [Section 4 - Hash Cracking]: John The Ripper

John The Ripper (jtr) est l’un des meilleurs outils de hachage disponibles. Il prend en charge de nombreux formats de hachage et est extrêmement facile à utiliser, tout en ayant de nombreuses options de personnalisation.

Remarque : il existe plusieurs variantes de jtr. Pour cette tâche, la version préinstallée sur kali sera utilisée

Note 2: Tous les hachages peuvent être craqués avec rockyou.txt

  • What flag let’s you specify which wordlist to use? 

–wordlist

  • What flag lets you specify which hash format(Ex: MD5,SHA1 etc.) to use?    

–format

  • How do you specify which rule to use?

–rules

  • Crack this hash: 5d41402abc4b2a76b9719d911017c592
    • Type: MD5

hello

echo ‘5d41402abc4b2a76b9719d911017c592’ > hash

john hash –format=Raw-MD5 –wordlist=/usr/share/wordlists/rockyou.txt

  • Crack this hash:  5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
    • Type: SHA1

echo ‘5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8’ > hash2

john hash2 –format=Raw-SHA1 –wordlist=/usr/share/wordlists/rockyou.txt

Task 15 [Section 5 - SQL Injection]: Intro

L’injection SQL est l’art de modifier une requête SQL afin que vous puissiez accéder à la base de données de la cible. Cette technique est souvent utilisée pour obtenir les données des utilisateurs telles que les mots de passe, les e-mails, etc. L’injection SQL est l’une des vulnérabilités Web les plus courantes, et en tant que telle, il vaut la peine de vérifier

  • How do you specify which url to check?

-u

  • What about which google dork to use?

-g

  • How do you select(lol) which parameter to use?(Example: in the url http://ex.com?test=1 the parameter would be test.)

-p

  • What flag sets which database is in the target host’s backend?(Example: If the flag is set to mysql then sqlmap will only test mysql injections).

–dmbs

  • How do you select the level of depth sqlmap should use(Higher = more accurate and more tests in general).

–level

  • How do you dump the table entries of the database?

–dump

  • Which flag sets which db to enumerate?

-D

  • Which flag sets which table to enumerate?

-T

  • Which flag sets which column to enumerate?

-c

  • How do you ask sqlmap to try to get an interactive os-shell?

–os-shell

  • What flag dumps all data from every table

–dump-all

Task 17 [Section 5 - SQL Injection]: A Note on Manual SQL Injection

Parfois, vous ne pourrez pas utiliser sqlmap. Cela peut être dû à diverses raisons, par exemple si la cible a configuré un pare-feu ou une limite de demandes. Dans ce cas, il vaut la peine de savoir comment effectuer une injection SQL manuelle de base, ne serait-ce que pour confirmer qu’il y a une injection SQL. Une liste des moyens de vérifier l’injection SQL peut être trouvée ici.

Remarque : Comme il existe différentes manières de vérifier l’injection SQL, et qu’il serait difficile de transmettre correctement comment tester SQLI dans chaque situation, il n’y aura pas de questions pour cette tâche.

Task 18 [Section 5 - SQL Injection]: Vulnerable Web Application

Pour montrer comment utiliser sqlmap pour vérifier les vulnérabilités et les données de table de vidage, je vais vous guider à travers un exemple d’application Web. Déployez la machine et commençons!

Remarque: Cette tâche utilisera sqlmap, mais vous pouvez essayer de l’exploiter manuellement. Il génère la requête SQL complète à chaque tentative, vous pouvez donc savoir ce que mysql essaie de faire!

Définissez l’URL sur l’adresse IP de la machine et exécutez la commande

  • How many types of sqli is the site vulnerable to?

get some information about the target

nmap -T5 -p- 10.10.112.5

Accès à la page web

Il faut essayer de voir si le champ msg est vulnérable à l’injection SQL en mettant ce caractère :  ‘

À la vue de l’erreur que l’on obtient (You have an error in your SQL syntax;) on peut penser que le champ msg est vulnérable. On va capture cette séquence avec BurpSuite et on va enregistrer la requête pour l’utiliser avec sqlmap.

Après avoir enregistré la séquence avec le nom sql.req, on lance sqlmap avec cette commande : 

sqlmap -r sql.req

  • How many types of sqli is the site vulnerable to?

3

  • Dump the database.

sqlmap -r sql.req –dbms=MySQL –dump

  • What is the name of the database?    

tests

  • How many tables are in the database?

2

  • What is the value of the flag?

found_me

Task 19 [Section 6 - Samba]: Intro

La plupart des techniques et outils de pentesting que vous avez vus jusqu’à présent peuvent être utilisés à la fois sous Windows et Linux. Cependant, l’une des choses que vous trouverez le plus souvent lorsque vous pentestez des machines Windows est  samba, et cela vaut la peine de créer une section dédiée à son énumération.

Remarque : Samba est également multiplateforme, mais cette section sera principalement axée sur l’énumération Windows ; certaines des techniques que vous voyez ici s’appliquent également à Linux.

Task 20 [Section 6 - Samba]: smbmap

Poursuivant la tendance des outils ayant « map » dans le nom étant extrêmement populaire, smbmap est l’un des meilleurs moyens d’énumérer  samba. smbmap permet aux pentesteurs d’exécuter des commandes (avec les autorisations appropriées), de télécharger et de télécharger des fichiers, et dans l’ensemble, il est tout simplement incroyablement utile pour l’énumération smb.

  • How do you set the username to authenticate with?

-u

  • What about the password?    

-p

  • How do you set the host?

-H

  • What flag runs a command on the server(assuming you have permissions that is)?

-x

  • How do you specify the share to enumerate?

-s

  • How do you set which domain to enumerate?

-d

  • What flag downloads a file?

–download

  • What about uploading one?

–upload

  • Given the username « admin », the password « password », and the ip « 10.10.10.10 », how would you run ipconfig on that machine

smbmap -u « admin » -p « password » -H 10.10.10.10 -x ipconfig

Task 21 [Section 6 - Samba]: smbclient

smbclient vous permet de faire la plupart des choses que vous pouvez faire avec smbmap, et il vous offre également une invite interactive.

  • How do you specify which domain(workgroup) to use when connecting to the host?

-W

  • How do you specify the ip address of the host?

-I

  • How do you specify the ip address of the host?

-c « ipconfig »

  • How do you specify the username to authenticate with?

-u

  • How do you specify the password to authenticate with?

-p

  • What flag is set to tell smbclient to not use a password?

-N

  • While in the interactive prompt, how would you download the file test, assuming it was in the current directory?

get test

  • In the interactive prompt, how would you upload your /etc/hosts file

put /etc/hosts

Task 22 [Section 6 - Samba]: A note about impacket

Impacket est une collection de scripts Windows extrêmement utiles. Cela vaut la peine de le mentionner ici, car il a de nombreux scripts disponibles qui utilisent  samba pour énumérer et même obtenir un accès shell aux machines Windows. Tous les scripts peuvent être trouvés ici.

Task 23 [Miscellaneous]: A note on privilege escalation

L’escalade de privilèges est un sujet si vaste qu’il serait impossible de lui rendre justice dans ce type de salle. Cependant, c’est un sujet nécessaire qui doit être couvert, donc plutôt que de faire une tâche avec des questions, je vais vous fournir à tous quelques ressources.

General:

https://github.com/swisskyrepo/PayloadsAllTheThings (A bunch of tools and payloads for every stage of pentesting)

Linux:

https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/ (a bit old but still worth looking at)

https://github.com/rebootuser/LinEnum (One of the most popular priv esc scripts)

https://github.com/diego-treitos/linux-smart-enumeration/blob/master/lse.sh (Another popular script)

https://github.com/mzet-/linux-exploit-suggester (A Script that’s dedicated to searching for kernel exploits)

https://gtfobins.github.io (I can not overstate the usefulness of this for priv esc, if a common binary has special permissions, you can use this site to see how to get root perms with it.)

Windows:

https://www.fuzzysecurity.com/tutorials/16.html  (Dictates some very useful commands and methods to enumerate the host and gain intel)

https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerUp (A bit old but still an incredibly useful script)

https://github.com/411Hall/JAWS (A general enumeration script)

Task 24 [Section 7 - Final Exam]: Good Luck 😀

On va commencer par énumérer l’adresse IP avec NMAP 

nmap -T5 -p- 10.10.235.134

 

Enumération de la page web avec Gobuster:

gobuster dir -u http://10.10.235.134/secret -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,txt,html

Une fois le répertoire cachée trouvé, on recommence l’énumération du site web mais uniquement sur le /secret :

gobuster dir -u http://10.10.235.134/secret -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,txt,html

On trouve le fichier secret.txt, donc on va sur la page web en question voir de quoi il s’agit :

On a un hash : 046385855FC9580393853D8E81F240B66FE9A7B8 que l’on va déchiffrer via l’outil hash-identifier de Kali

C’est sha-1 

Il est possible d’utiliser 3 méthodes pour casser le hash.

Méthode 1 : hashes.com

Méthode 2 : Hashcat

.\hashcat64.exe -m 100  .\hash2.txt .\rockyou.txt

Méthode 3 : JohnTheRipper

john hash –format=raw-sha1

Une fois casser, on peut se connecter en ssh:

Pour terminer, il faut faire une des commandes à faire lors d’une escalade de privilège : 

sudo -l

0 0 votes
Évaluation de l'article
S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
View all comments