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

Pongsarun Boonyopakorn
5 min readNov 30, 2020

--

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

บทความนี้เป็นตอนที่ 4 ซึ่งเราจะเริ่มทำ Pentesting กันที่ level 3 ซึ่งจะมีความท้าทายเพิ่มขึ้นมากกว่า 2 levels ที่ผ่านมา เช่นการทำ sql injection การแก้ shell เพื่อยกสิทธิ์ เป็นต้น โดยก่อนที่จะเริ่มทางผู้สร้างได้เขียน note ไว้ให้เรามีการแก้ค่า domain name เล็กน้อยที่เครื่อง kali linux ของเรา เพื่อให้เราสามารถเปิดเว็บไซต์ได้ ซึ่งเดี๋ยวจะได้บอกในขั้นตอนต่อๆไปครับ

Enumeration

1.ทำการค้นหา IP Address ของเครื่องเป้าหมายก่อนด้วยคำสั่ง netdiscover จะเห็นว่าตอนนี้เครื่องเป้าหมายมี ip อยู่ที่ 192.168.248.133

2.เมื่อเราได้ ip address ของเครื่องเป้าหมายแล้วย้อนกลับไปที่หน้า home screen ของเครื่องเป้าหมายที่บอกให้เราแก้ hostname ในเครื่อง kali ดังนั้น ผมจึงทำการนำเอา ip จากที่สแกนได้มาใส่เพิ่มลงในไฟล์ /etc/hosts จะได้ดังนี้

แก้ไฟล์ด้วย editor ตัวไหนก็ได้ แล้วเพิ่ม ip address กับ hostname : kioptrix3.com เข้าไป

3.หลังจากที่แก้ไขไฟล์ /etc/hosts เสร็จแล้วต่อไปก็ทำการสแกน port และ services ที่เครื่องเป้าหมาย

จะเห็นว่าเครื่องนี้เปิด services ไว้ 2 อย่างคือ 22/tcp และ 80/tcp และ มี information เพิ่มมาอีกเล็ก ๆ น้อย ๆ คือ Apache/2.2.8 (Ubuntu), PHP/5.2.4–2ubuntu5.6 เริ่มเห็นทางสว่างขึ้นมาบ้างนิดหน่อย ลองเปิดเว็บที่ ip address ดู

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

4.ใช้ nikto เพื่อช่วยสแกนดูช่องโหว่ในเว็บนี้

เลื่อนลงมาเรื่อย ๆ เจอ folder /phpmyadmin ที่ซ่อนไว้ อืมม ลองเปิดดู

พอมาถึงตอนนี้เราพบกับเวอร์ชั่นของ phpmyadmin ที่ 2.11.3 ซึ่งลองเอาตรงนี้ไป search ช่องโหว่ใน google ดูจะพบว่าเป็นช่องโหว่ของ CVE-2009–1151 พอดี ซึ่งเค้าได้อธิบายไว้ว่าเราสามารถใช้ RCE exploit โดยใส่ php injection ได้ แต่ที่น่าโชคร้ายคือ มันจะทำงานได้ก็ต่อเมื่อต้องเป็น directory name ที่ชื่อ /phpMyAdmin เท่านั้นอ่ะดิ แต่เขาเรา admin ได้ทำการ manual ชื่อเป็น /phpmyadmin ซึ่งไม่เวิร์ค

ไม่เป็นไร หาใหม่..

กลับไปที่หน้าเว็บแล้วหาไปเรื่อย ๆ จนมาสะดุดตรง เพจ Blog ซึ่งมีการบอกว่าเราสามารถซื้อขายได้ แต่ให้เราไปที่เว็บ http://kioptrix3.com/gallery ซึ่งโดเมน kioptrix3.com ก็คือที่เราทำการแก้ /etc/hosts ไปในขั้นตอนแรก นั่นเอง

เปิดไปที่เว็บ kioptrix3.com/gallery

หลังจากที่ลองเล่นเว็บนี้ดูก็ได้เห็นว่ามีบางหน้าอนุญาตให้เราทำการ sorting ได้ ซึ่งเราเดาแบบกำปั้นทุบดินเลยว่าไอ้ที่มัน sorting ได้นี่น่าจะใช้ id ของ table มาทำการจัดลับดับ

หน้าเพจที่อนุญาตให้มีการ sorting

5.ลองทำ SQL Injection ดูว่าจะสามารถใช้งานได้หรือไม่ จากที่ลองหาจำนวนคอลัมน์โดยการเพิ่มตัวเลข 1…n ไปเรื่อย ๆ จนกว่าจะเจอ error ปรากฎว่ามีคอลัมน์อยู่ทั้งหมด 6 คอลัมน์ ในตารางนี้ เราจึงทำการ union select 1–6 นั่นเอง

-1 union select 1,2,3,4,5,6

จากรูปด้านบนจะเป็นว่าคอลัมน์ที่ 2 และ 3 เป็นช่องโหว่และสามารถเรียกออกมาดูได้

ในขั้นตอนต่อไปเราต้องทำการค้นหาข้อมูลต่อว่า database นี้เป็นประเภทไหน และ เวอร์ชั่นอะไร เช่น NoSQL, MySQL, MSSQL หรืออื่นๆ โดยใช้คำสั่ง @@version ในคอลัมน์ที่ 2

-1 union select 1,@@version,3,4,5,6
เวอร์ชั่นที่ได้คือ 5.0.51a ซึ่งปกติก็คือ MySQL นั่นเอง

ขั้นตอนต่อไปลองใช้ SQL Injection ในการค้นหาชื่อ Tables ที่อยู่ในฐานข้อมูลนี้ว่ามีอะไรบ้าง

-1 union select 1,2,group_concat(table_name),4,5,6 from information_schema.tables where table_schema=database()--

มาถึงตรงนี้เราน่าจะสะดุดตรงตารางที่ชื่อว่า dev_accounts ซึ่งแลดูเหมือนจะเก็บ user, password เอาไว้ลองเรียกคอลัมน์ของตารางนี้ขึ้นมาดูว่ามีอะไรบ้าง

-1 union select 1,group_concat(column_name),3,4,5,6 FROM information_schema.columns WHERE table_name=CHAR(100, 101, 118, 95, 97, 99, 99, 111, 117, 110, 116, 115)--

CHAR() คือตัวอักษรของชื่อตาราง dev_accounts นั่นแหละ แต่เราแค่แปลงให้เป็นรหัส ASCII code ไม่งั้นจะ query error

ok, ตามที่คาดการณ์มี id, username, password

เป็นไปตามคาดหมายมีคอลัมน์ id, username, password ตามที่คิดไม่รอช้า ลองเรียกข้อมูลขึ้นมาดูกัน

-1 union select 1,group_concat(username,0x3a,password),3,4,5,6 FROM dev_accounts--

จากที่เรียกข้อมูลขึ้นมาดูเราจะเห็นว่ามี user อยู่ 2 คนคือ dreg และ loneferrent และ password ที่ทำการ encryption เอาไว้ อุปสรรคเพิ่มขึ้นมาอีก 1 อย่าง คือการต้อง decrypt รหัสผ่านที่เข้ารหัสไว้ว่ามันคืออะไรออกมาให้ได้

DECRYPTION

1.เรามาเริ่มทำการ decryption รหัสผ่านที่เจอในขั้นตอนที่แล้วกัน เริ่มจาก copy ข้อมูลด้านบนมาใส่ text ไฟล์โดยใช้โปรแกรม editor อะไรก็ได้ ในที่นี้ผมตั้งชื่อว่า hash.txt

ซึ่งเราอาจจะ copy ไปถอดรหัสกับเครื่องมือออนไลน์ชนิดอื่น ๆ ก็ได้แต่ในที่นี้ผมจะใช้ เครื่องมือ HashCat ที่มีความสามารถและรองรับ algorithms ได้หลากหลาย และ HashCat นั้นต้องการ dictionary ดังนั้นผมจึงทำการ download ไฟล์ rockyou.txt มาไว้ในเครื่องเพื่อเป็น dictionary ในการตั้งต้น และใช้คำสั่งตามในรูปด้านล่าง

บิงโก!!!! โปรแกรมสามารถถอดรหัสออกมาได้ คือ starwars และ Mast3r

2.คราวนี้ลองใช้รหัสผ่านที่เพิ่ง crack มาได้ login เข้าเครื่องโดยผ่าน SSH ดูซึ่งเครื่องเป้าหมายได้เปิด port นี้เอาไว้แล้ว

3.หลังจากที่ login เข้าเครื่องมาได้แล้วและทำการสำรวจในเครื่องดูคร่าว ๆ จะเห็นว่าในไฟล์ CompanyPolicy.README นั้นได้เขียนไว้ว่าเราสามารถทำการยกระดับสิทธิ์ได้โดยใช้คำสั่ง sudo ht ให้เราทำการแก้ไขไฟล์ /etc/sudoers แต่เมื่อเราลองรันดูกลับพบว่า error เนื่องจากตัว editor นั้นต้องเรียกผ่าน gui หรือ xterm-256color text editor ดังนั้นเราจึงต้องทำการ export ตัวนี้ออกมาใน shell command ซะก่อน

จากนั้นเรียกใหม่อีกที

4.เมื่อเข้ามาได้ให้กด F3 เพื่อทำการเปิดไฟล์ /etc/sudoers

ให้พิมพ์ /etc/sudoers ลงไปในช่อง name

5.ให้เพิ่ม , /bin/sh ต่อหลังทางด้านขวาสุดของบรรทัด loneferrent จากนั้นกด F2 เพื่อ save และ กด F10 เพื่อออกจากโปรแกรม

เมื่อเราออกจากโปรแกรมมาแล้วจะพบกว่าตอนนี้เราเป็น root เรียบร้อยแล้ว เป็นอันจบด่านนี้

มาถึงตอนนี้เราสามารถทำการเจาะระบบเครื่องเป้าหมายได้เป็นที่เรียบร้อยแล้ว ซึ่งมีขึ้นตอนการได้มาที่ซับซ้อนมากยิ่งขึ้นตั้งแต่การ enum การ decryption การแก้ shell เหน็ดเหนื่อยกันเลยทีเดียว

เวอร์ชันวิดีโอแบบย่อๆ

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

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

--

--

Pongsarun Boonyopakorn

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