[Write Up] Passage — HackTheBox

Datafarm
5 min readMar 24, 2021

--

สวัสดีครับ พอดีช่วงนี้ได้มีเวลาเลยได้ไปนั่งเล่น Lab ของ Hack The Box ดูครับ ซึ่งในบทความนี้ก็เลยเอา Write Up ของข้อนึงที่ผมได้เล่นมาฝากกันครับ ซึ่งตัว Hack The Box จะมีโจทย์แต่ละข้อให้เล่นโดยการให้หา Flag ด้วยสิทธิ์ของทั้ง User และ Root และจะมี Lab ที่แบ่งเป็น Active Machines [Lab ที่เปิดให้เล่นโดยไม่ต้องสมัคร VIP ซึ่งจะเป็น Lab ใหม่ ๆ โดยจะมีอายุที่ประมาณ 6 เดือน] และ Retired Machines [Lab ที่ต้องสมัคร VIP ซึ่งจะเป็น Lab ที่มีอายุเกิน 6 เดือนแล้ว] และโจทย์แต่ละข้อก็ยังมีระดับความยากง่ายดังนี้ Easy, Medium, Hard และ Insane

** แต่กว่าจะปล่อยบทความนี้ได้ก็คงต้องรอให้ Hack The Box Retire โจทย์ข้อ Passage ก่อนนะครับ

สำหรับข้อ Passage นั้นเป็นโจทย์ระดับ Medium และมี OS เป็น Linux เราสามารถเข้าไปเล่นโจทย์ข้อนี้ได้โดยการใช้ VPN ที่ Hack The Box สร้างให้เรามา

Recon

ก่อนอื่นเลยเรามา Discover Port ที่เปิดอยู่ก่อน โดยใช้งาน Tool ที่ชื่อว่า Nmap โดยมีคำสั่งดังนี้

nmap -sC -sV -p- 10.10.10.206-sC => User Default Script-sV => Enumerate Version and Service

จะพบว่ามี Port 22 (SSH) และ 80 (HTTP) เปิดอยู่จึงลองเข้าเว็บดู

จากนั้นพอลองตรวจสอบ Source Code ดูก็พบว่าเว็บนี้มีการใช้งาน CuteNews ซึ่งเป็น News Management System

ต่อมาจึงลองเข้าไปที่หน้า Management ของ CuteNews และพบว่ามีการใช้งาน CuteNews เวอร์ชัน 2.1.2 รวมถึงเราสามารถสมัครสมาชิกได้ด้วย

เลยลองนำเวอร์ชันของ CuteNews มา Search หาดูว่ามันมี Exploit หรือไม่ ที่ www.exploit-db.com พบว่ามีช่องโหว่เรื่อง Arbitary File Upload อยู่แต่เราจำเป็นต้อง Authenticated ก่อน

Exploit the CuteNews

เพราะงั้นเลยลองสมัครสมาชิก แล้ว Login เข้าไปดูก็พบว่ามีช่องสำหรับ Upload File อยู่

เราสามารถใช้วิธีการอัปโหลด Shell Script ขึ้นไปเองก็ได้ หรือจะใช้ Exploit ที่มีอยู่ใน Exploit-DB ก็ได้ โดยผู้เขียนได้ใช้ Metasploit เอาเนื่องจากว่ามันสะดวกดี (ขี้เกียจนั่นแหละ)

จากนั้นก็ Set Options ต่าง ๆ ให้เรียบร้อยโดยพารามิเตอร์ที่เราต้อง Set จะมี USERNAME, PASSWORD และ RHOSTS

ต่อมาจึง Set Payload

แล้วเราก็ทำการรันได้เลยจ้า……………………… ได้แว้วววว

และแล้วก็ได้ Shell ไปที่เครื่อง Passage แล้ว แต่ได้สิทธิ์เป็นเพียงของ www-data เท่านั้น

Get the User Privilege

ลองตรวจสอบไฟล์ passwd ดูว่ามี User อะไรบ้างในเครื่องนี้โดยใช้คำสั่ง cat /etc/passwd ก็พบว่ามี User ที่น่าสนใจคือ nadav และ dav อยู่

ทีนี้ก็มาลองหาว่าพอจะบอกข้อมูลอะไรให้เรานำมาใช้ได้บ้างที่มีอยู่ใน /var/www/html/CuteNews จนพบว่ามีไฟล์ที่น่าสนใจก็คือ users, users.db.php และ users.txt ที่ Path /var/www/html/CuteNews/cdata

แต่เมื่อลองเปิดอ่านไฟล์ users.db.php และ users.txt ดูแล้วก็ไม่พบอะไรที่น่าจะเอามาใช้ได้

เลยลองเข้ามาดูที่ไฟล์ users เมื่อลองลิสต์ไฟล์ดูก็พบว่ามีไฟล์ lines ที่น่าสนใจ

เมื่อเปิดอ่านไฟล์ดูก็พบว่ามีข้อมูลที่ถูก Encode ด้วย base64 อยู่

เลยต้องลอง Decode ดูก็พบว่ามีข้อมูลชุดนึงที่น่าสนใจโดยเป็น User ที่ชื่อว่า Paul และพบว่ามีข้อมูลชุดนึงที่คาดว่าน่าจะเป็น Password อยู่ด้วย นั่นก็คือ s:4:”pass”;s:64:”e26f3e86d1f8108120723ebe690e5d3d61628f4130076ec6cb43f16f497273cd

จากนั้นก็ลองเอา Hash ดังกล่าวมา Crack ที่ crackstation.net ดู จึงได้ Password มา

ทีนี้ก็ได้เวลาเปลี่ยนเป็น User paul ด้วยการใช้คำสั่ง su paul เมื่อเข้าไปที่ User paul ได้ก็ไปที่ home ของ paul จะพบว่ามี user.txt อยู่.. เรียบร้อยได้ User Flag แล้ววว

เมื่อเข้ามาเป็น User paul ได้แล้ว เลยลองเช็คดูว่า paul อยู่ในกรุ๊ปไหนบ้าง ก็พบว่ามีเพียง paul เท่านั้น จึงลองเช็คกรุ๊ปของ nadav ดูก็พบว่า User นี้อยู่ในกรุ๊ป sudo ด้วย

Get the User2 Privilege

เมื่อทราบแล้ว nadav มีสิทธิ์ในการใช้ sudo อยู่ด้วยจึงจำเป็นต้องเข้าใช้งานในสิทธิ์ของ nadav ให้ได้ เลยลองสำรวจหน้า home ของ paul ดู ก็ดูไม่มีอะไรที่แปลกไปกว่าปกติ

แต่เมื่อลองเข้าไปเช็คดูดี ๆ แล้ว กลับพบว่าที่ Path /home/paul/.ssh ที่ไฟล์ authorized_keys นั้นมี nadav@passage อยู่ด้วย เลยลองก็อปปี้ RSA Private Key จาก id_rsa ไปเลย

เมื่อสร้างไฟล์ id_rsa เสร็จก็อย่าลืมแก้ Permission ของไฟล์ โดยใช้คำสั่ง chmod 0600 id_rsa และแล้วก็ได้เป็น nadav แล้วว

Get the Root Privilege

หลังจากเข้ามาที่ home ของ nadav ก็ลองลิสต์ไฟล์ที่มีอยู่ แต่ยังไม่พบอะไรที่น่าจะเป็นเบาะแสที่จะทำให้เราสามารถได้สิทธิ์ root มาได้

หลังจากใช้เวลาหานู่นนี่มานาน ในที่สุดก็พบว่ามีอะไรที่น่าสนใจอยู่ก็คือ USBCreator ที่เปิดเจอในไฟล์ .viminfo

พอลองเอาคีย์เวิร์ด usb creator privilege escalation ไปค้นหาใน Google ก็พบว่ามีช่องโหว่นี้อยู่จริง ๆ ด้วย จากนั้นก็ถึงเวลานั่งอ่านว่ามัน Exploit ยังไง…

เมื่ออ่านคร่าว ๆ แล้วก็ได้ความว่าช่องโหว่นี้ (USBCreator D-Bus) ทำให้ผู้ไม่ประสงค์ดีสามารถ Overwrite ไฟล์ผ่านด้วยสิทธิ Root ได้โดยไม่จำเป็นต้องทราบ Password โดยการ Escalate สิทธินั้นอาจจะทำได้ด้วยการ Overwrite ไฟล์ shadow เพื่อแก้ไข Password ของ Root เป็นต้น

เมื่ออ่านจนจบก็จะพบในบทความนั้นมีการใช้ gdbus ในการ Copy ไฟล์ให้ดู

ผู้เขียนจึงใช้คำสั่งดังกล่าวมาใช้ในการ Copy ไฟล์ id_rsa ของ Root Privilege โดยใช้คำสั่งตามนี้

gdbus call — system — dest com.ubuntu.USBCreator — object-path /com/ubuntu/USBCreator — method com.ubuntu.USBCreator.Image /root/.ssh/id_rsa /tmp/id_rsa_r true

เมื่อได้ key มาแล้วก็ลอง login ดูก็พบว่าสามารถ SSH ด้วยสิทธิของ Root ได้แล้วว…

Conclusion

สรุปภาพรวมสำหรับ Box นี้ก็พบว่าจริง ๆ แล้วไม่ได้มีความยากมากนักในการจะไปให้ถึง Root โดยสามารถหาวิธีการโจมตีช่องโหว่ต่าง ๆ ได้จาก Internet เลย โดยมีช่องโหว่อยู่ที่ตัว CuteNews ที่เป็น Arbitrary File Upload ที่ทำให้เราสามารถ Upload ไฟล์ Shell ขึ้นไปได้ และในส่วนของการยกระดับสิทธิให้กลายเป็น Root ด้วยการใช้ช่องโหว่ของตัว USBCreator ที่ทำให้เรา Overwrite ไฟล์ได้ โดยในบทความนี้ผู้เขียนได้ใช้ช่องโหว่ในการ Copy SSH key ของ Root มานั้นเอง โดยหากต้องการศึกษาเพิ่มเติมก็สามารถดูได้ที่ลิงค์ด้านล่างนี้เลยจ้า… สำหรับบทความก็ขอลาไปก่อน ขอบคุณที่อ่านจนจบนะครับ ^w^

--

--