y0usef: 1 Walkthrough

สวัสดีครับผู้อ่านทุกท่าน วันนี้ผู้เขียนเลือก y0usef: 1 จาก Vulnhub (https://www.vulnhub.com/entry/y0usef-1,624/) ซึ่งเป็นเครื่องใหม่แกะกล่อง มาเล่นและเขียน Walkthrough ให้อ่านกันเพลินๆ ครับ โดยเป้าหมาย Lab y0usef: 1 นี้คือการอ่าน flag ทั้ง 2 อันภายในเครื่องนี้ครับ

Port & Service Scanning
nmap -sV 192.168.56.122 -oA y0usef

พบ service ที่กำลังทำงานอยู่ดังนี้
Port 22 => ssh
Port 80 => http
เข้า Website ที่ port 80 พบหน้าเว็บ Sorry, the site under construction soon, it run

Web Related Reconnaissance
ผู้เขียนได้ทดลองใช้ Wordlist หลาย Wordlist ในการ Brute-Force พาธ และพบพาธ /administration จาก raft-large-directories.txt
gobuster dir -u 192.168.56.122 -w ‘/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt’

gobuster dir -u 192.168.56.122 -w ‘/usr/share/seclists/Discovery/Web-Content/raft-large-directories.txt’

ผู้เขียน Brute-Force พาธหลัง /administration พบว่ามีพาธ logout, include, upload และ users
gobuster dir -u 192.168.56.122/adminstration -w ‘/usr/share/seclists/Discovery/Web-Content/raft-large-directories.txt’

ผู้เขียนเข้าไปที่พาธ /administration และพบหน้า Forbidden

ผู้เขียน Intercept Proxy และเพิ่ม X-Forwarded-For (XFF) header ลงใน Request และพบว่าสามารถเข้าถึงหน้าเว็บไซต์ที่ซ่อนไว้ได้


ผู้เขียนทดลอง Login ด้วย Weak Credential และพบว่าสามารถ Login ได้ด้วย Username:admin และ Password: admin โดยยังต้องเพิ่ม X-Forwarded-For (XFF) header ลงใน Request



Upload Reverse Shell
ผู้เขียนเข้าใช้งานฟังก์ชัน Upload file เพื่ออับโหลด Reverse Shell

เมื่อทำการ Upload Reverse Shell พบว่าไม่สามารถ Upload Reverse Shell ได้โดยตรง

ผู้เขียนจึงอับโหลดไฟล์รูปปกติ และ Intercept Proxy เพื่อแก้ไข Content ภายในไฟล์ เป็น Reverse Shell และแก้ไข filename เป็น shell.php


ผู้เขียนพบว่ามีการแสดงพาธของไฟล์ที่อับโหลด คือ files/1610518247shell.php

ผู้เขียนเปิด nc รอรับ Reverse Shell และเข้าสู่พาธไฟล์ที่อับโหลด



Local flag
เมื่อได้ Shell แล้วผู้เขียนจึงหา User Flag ภายในเครื่อง
find / -name “user.txt” 2>/dev/null

cat /home/user.txt

ผู้เขียนสังเกตว่า flag แรกนั้นเป็น base64 จึงนำไป Decode และพบว่าเป็น Username และ Password สำหรับ Login เข้าสู่ ssh

Privilege Escalation
ผู้เขียนจึงลองนำ Username และ Password มา Login เข้าสู่ ssh

ผู้เขียนลองเช็คดูว่าด้วย User yousef สามารถรันคำสั่งอะไรได้บ้างด้วย User อื่น และพบ (ALL : ALL) ALL
sudo -l

(ALL : ALL) ALL คือ RunAsUsers: ALL, RunAsGroup: ALL, Commands: ALL
sudo -ll

ผู้เขียนจึงใช้คำสั่ง sudo su พบว่าสามารถกลายเป็น root ได้เลย

Root Flag
เมื่อเป็น root ได้แล้วผู้เขียนจึงหา Root Flag ภายในเครื่อง
find / -name “root.txt” 2>/dev/null

cat /root/root.txt

ผู้เขียนลองนำ Root Flag ไป Decode base64 และพบข้อความแสดงความยินดีและ
feedback content me twitter @y0usef_11

จบไปแล้วครับกับ y0usef:1 Walkthrough สำหรับข้อนี้เป็นข้อที่ไม่มีความซับซ้อน ตรงไปตรงมา ตรงกับ Description ใน Vulnhub ที่บอกว่าอยู่ในระดับ Easy ครับ
eEQgSGFwcHkgSGFja2luZyAgeEQg