Bank — Hack The Box

Datafarm
5 min readAug 31, 2022

สวัสดีครับ วันนี้กลับมาพบกันอีกครั้งกับแล็บ Hack The Box ที่น่าสนใจเกี่ยวมือใหม่ที่กำลังหาแล็บของทาง Hack The Box ที่ได้ Retired ไปแล้ว และมีระดับไม่ยาก แถมออกจะค่อนไปทางง่ายด้วยซ้ำ ซึ่งวันนี้แล็บที่ผมจะมาแนะนำคือ Bank หรือเจ้าหมูน้อยนั่นเอง

โดยแล็บนี้จะเป็นเครื่อง OS แบบ Linux ที่เกี่ยวกับกับการ Enumeration ในพาธต่าง ๆ รวมถึงการอัปโหลดไฟล์ และทำการ Reverse Shell โดยเราจะเริ่มจากวิธีการพื้นฐานง่าย ๆ กันก่อนเลยครับ

Reconnaissance

Port Scanning

เราจะเริ่มจากการทำ Port Scanning เพื่อดูว่าเครื่องนี้มีการเปิดใช้งานพอร์ตและเซอร์วิสอะไรบ้างที่มีการเปิดใช้งานอยู่ เราจะใช้เครื่องมือที่ชื่อว่า Nmap ในการสแกนพอร์ตและเซอร์วิสต่าง ๆ โดยใช้คำสั่งดังนี้

“sudo nmap -sSVC -Pn 10.10.10.29”

  • sS คือการสแกนแบบ TCP SYN Scan
  • sV คือการสแกนพอร์ตและเซอร์วิสที่ใช้งานอยู่ ณ ขณะนั้น
  • sC คือ User Default Script
  • Pn คือ Skip Host Discovery

เมื่อเราทำ Port Scanning เรียบร้อยแล้ว จะพบว่ามีพอร์ตเปิดใช้งานทั้งหมด 3 พอร์ตคือ 22 (SSH), 53 (DNS) และ 80 (HTTP) โดยเซอร์วิสที่พอร์ต 80 (HTTP) ใช้งานคือ Apache/2.4.7 (Ubuntu)

Enumeration

เราไปดูที่ “http://10.10.10.29:80” จะพบว่าเป็นหน้า Apache2 Ubuntu Default Page จากนั้นได้ลองทำการ brute-force พาธต่าง ๆ แต่ไม่พบพาธใด ๆ

ผมได้ทำการเพิ่ม hostname ให้ไอพีดังกล่าวที่ไฟล์ “/etc/hosts” โดยใช้ hostname ที่ชื่อว่า “bank.htb”

จากนั้นเมื่อเราเข้าไปดูที่ “http://bank.htb” จะพบว่ามีการ redirect มาที่หน้า “login.php”

เรามาลองทำการใช้วิธี SQL Injection ด้วยวิธีต่าง ๆ จะพบว่าไม่สามารถทำการ SQL Injection ได้

ถ้าไม่ได้เรามาทำการ enumeration เพิ่มกันดีกว่า โดยผมใช้เครื่องมือที่ชื่อว่า dirsearch ในการ brute-force พาธต่าง ๆ (โดยสามารถใช้เครื่องมือต่าง ๆ แทน dirsearch ได้เช่นกันครับ เช่น ffuf, wfuzz, gobuster หรือ feroxbuster ก็ได้ครับผม) เมื่อเราทำการ brute-force พาธเรียบร้อยแล้ว เราจะพบกับพาธที่มีชื่อว่า “/balance-transfer”

เมื่อเข้าไปที่พาธ “/balance-transfer” แล้วเราจะพบกับไฟล์ “.acc” ที่มีเยอะมากโอ้พระเจ้า !

ผมได้ทำการลองโหลดไฟล์ “.acc” มาไฟล์นึง แล้วมาทำการเปิดดูพบว่า เนื้อหาข้างในเป็นรายละเอียดเกี่ยวกับข้อมูลสำคัญต่าง ๆ ของบุคคลที่มีเป็นตัวอักษรภาษาอังกฤษ เมื่อนำไปใช้งานจะไม่สามารถใช้งานได้

จากนั้นลองทำการเลื่อนลงมาเรื่อย ๆ เราจะพบกับไฟล์นึงที่มีขนาดของไฟล์ต่างจากไฟล์อื่น

เมื่อนำไฟล์ที่ดาวน์โหลดแล้วมาทำการเปิดดูพบว่าเป็นข้อมูลส่วนบุคคลของคนชื่อ “Christos Christopoulos”

เมื่อนำอีเมลและรหัสผ่านมาทำการเข้าสู่ระบบจะพบว่าสามารถเข้าสู่ระบบได้ และจะนำมาที่ส่วนของ “Dashboard”

จากนั้นลองกดไปที่เมนู “Support” จะพบว่ามีพื้นที่สำหรับการแจ้งปัญหาที่พบ โดยมีปุ่มสำหรับการอัปโหลดไฟล์ด้วยเช่นกัน

ผมได้ลองทำการสร้าง payload ของไฟล์ PHP ที่ใช้สำหรับการใช้งาน shell บนเว็บโดยใช้คำสั่ง “<?php system($_GET[‘cmd’]); ?>”

เมื่อทำการอัปโหลดจะพบว่าไม่สามารถอัปโหลดไฟล์ที่เป็นชนิด PHP ได้โดยตรง

ผมลองทำการเปลี่ยนนามสกุลไฟล์เป็นแบบ “Double Extension” คือ “upload_shell.php.jpg” โดยทำการเพิ่ม Signature ของรูปภาพชนิด JPG ลงไปเพิ่มเติม เพื่อให้เซิร์ฟเวอร์มองว่าไฟล์นี้เป็นไฟล์รูปภาพชนิด JPG

เมื่อทำการอัปโหลดพบว่าจะสามารถอัปโหลดได้สำเร็จ

แต่เมื่อได้ลองทำการเปิดไฟล์ภาพดังกล่าวจะพบว่า payload ของไฟล์ PHP นั้นไม่ทำงาน

จากนั้นลองทำการ View Source หน้าดังกล่าวพบว่ามีข้อความในคอมเม้นที่ว่า “I added the file extension .htb to execute as php for debugging purposes only” เป็นเหมือนคำใบ้ว่าไฟล์ที่มีนามสกุล “.htb” สามารถ execute ด้วย PHP ได้

ผมได้ลองทำการเปลี่ยนนามสกุลไฟล์จาก “.php” เป็น “.htb”

เมื่อทำการอัปโหลดจะพบว่าสามารถอัปโหลดได้สำเร็จ

เมื่อทำการเปิดไฟล์ดังกล่าวจะพบว่าสามารถรันคำสั่ง payload ที่เราใส่ลงไปได้ โดยผมลองใช้งานคำสั่ง “id” ดังภาพ

จากนั้นเรามาลองสร้าง payload สำหรับการ Reverse Shell ผ่านเว็บ “revshells.com” กันดีกว่า โดย payload ที่ผมใช้คือ python3 สำหรับการ Reverse Shell

ก่อนทำการใส่คำสั่งลงบนเว็บ เรามาทำการใช้เครื่องมือ netcat ในการเปิดพอร์ตรอรับการฟังกันก่อน โดยพอร์ตที่เปิดรับต้องสอดคล้องกับพอร์ตที่สร้าง payload ขึ้นด้วยครับ

เมื่อทำการเปิดพอร์ตรอรับเรียบร้อยแล้ว ผมได้นำ payload ที่ทำการสร้างขึ้นมาทำการรันบนไฟล์ “.htb” ที่เราอัปโหลดลงไว้ข้างต้น

เมื่อมาดูที่ฝั่งที่เราใช้เครื่องมือ netcat เปิดพอร์ตรอแล้วจะพบว่ามีการ Reverse Shell กลับที่พอร์ตดังกล่าว และสามารถรันคำสั่งต่าง ๆ ได้

จากนั้นผมได้ไปที่พาธ “/home” จะพบผู้ใช้งานที่ชื่อ “chris” เมื่อเข้าไปที่โฟลเดอร์ของ “chris” จะพบกับ user flag นั่นเอง โดยเราสามารถอ่านไฟล์ user.txt ได้เลยโดยไม่ต้องเป็นสิทธิ์ผู้ใช้งานที่ชื่อ “chris”

Privilege Escalation

เรามาเริ่มจากการหาไฟล์ที่เป็น SUID ไฟล์ โดยใช้งานคำสั่ง “find / -perm /4000 2>/dev/null” เราจะพบกับไฟล์ที่น่าสนใจต่าง ๆ แต่ที่ผมสนใจเป็นพิเศษคือพาธ “/var/htb/bin/emergency”

ถ้าหากเราหาไฟล์ที่เป็นไฟล์ SUID ไม่เจอ เราอาจจะใช้เครื่องมือที่มือชื่อว่า “Linpeas” ในการใช้หาข้อมูลเพิ่มเติมได้ โดย “Linpeas” นั้นเป็นเครื่องมืออเนกประสงค์ในการข้อมูลสำหรับยกสิทธิ์ต่าง ๆ บนระบบ Linux ส่วน Windows จะเป็น “Winpeas” เครื่องมือนี้ใช้สำหรับการสอบ OSCP ของสาย Security ได้ดีมาก ๆ โดยจะต้องนำไฟล์ “linpeas.sh” ไปรันบนเครื่องเป้าหมาย สเต็ปก่อนรัน เราจะทำการเปิด python3 เซิร์ฟเวอร์ที่เครื่องเราเพื่อให้เครื่องเป้าหมายมาทำการดาวน์โหลดไฟล์ “linpeas.sh” ไปไว้บนเครื่องเป้าหมายก่อน

ที่เครื่องเป้าหมายผมใช้คำสั่ง “wget” เพื่อทำการดาวน์โหลดไฟล์ “linpeas.sh” มาวางที่โฟลเดอร์ “/tmp” บนเครื่องเป้าหมาย

จากนั้นทำการชะมด (chmod) โดยเพิ่มสิทธิ์การ execute ไฟล์ลงบนไฟล์ “linpeas.sh” และทำการรันได้เลย

ที่ผลลัพธ์ของ Linpeas จะพบกับพาธ “/var/htb/bin/emergency” เช่นเดียวกัน

ก่อนไปที่พาธดังกล่าว ผมลองเข้าไปที่พาธ “/var/htb” จะพบกับไฟล์ชื่อเดียวกัน เมื่อทำการอ่านไฟล์ดูจะพบว่าไฟล์นี้เมื่อทำการรันจะมีการถามว่าจะต้องการ “root shell” ไหม ถ้าตอบ “y” จะทำการรันฟังก์ชัน “getroot()” โดยจะไปทำการ execute ไฟล์ “emergency” ที่พาธ “/var/htb/bin/emergency”

เราลองเข้าไปดูที่ไฟล์นั้นตรง ๆ กันเลย จะพบว่าไฟล์ “emergency” ที่พาธ “/var/htb/bin/emergency” เป็นไฟล์ชนิด SUID ไฟล์

เมื่อทำการรันไฟล์ดังกล่าวจะพบว่าจะสร้าง root shell ขึ้นมาทันที เมื่อลองทำการรันคำสั่ง “whoami” จะพบว่าเรากลายเป็นสิทธิ์ Root แล้วซึ่งเป็นสิทธิ์ที่สูงที่สุดบนระบบ Linux

จากนั้นลองทำการอ่านไฟล์ root.txt ดังภาพ

เมื่อนำ user flag และ root flag มาใส่บนเว็บ Hack the box เราก็จะผ่านเรียบร้อย!!!!!

เป็นอย่างไรบ้างครับสำหรับแล็บที่ผ่านมา ผมมองว่าถ้าคนที่สนใจถ้าด้าน Security แล้วหาแล็บ Hack The Box เล่นในส่วนของ Retired ผมว่าแล็บนี้เป็นแล็บนึงที่สามารถฝึกสกิลด้านการ Enumeration ได้เป็นอย่างดีสำหรับผู้เริ่มต้น และมีการ Privilege Escalation ที่ใช้เทคนิคไม่ยากจนเกินไป โดยครั้งหน้าจะเป็นแล็บอะไรหรือบทความแบบไหน โปรดติดตามที่เพจ Datafarm สำหรับวันนี้ผมขอลาไปก่อน สวัสดีครับบ!

--

--

No responses yet