漏洞 setuid 使用

2021-05-26 19:30:55 字數 1247 閱讀 7782

在 android 開發中,有乙個 adbd 服務,是為了讓開發者可以除錯程式。

用 adb shell 連上手機,通過 ps 命令看 adbd 程序的資訊:

shell      19128 1     3448   196   ffffffff 00008294 s /sbin/adbd

此程序的父程序是 root 使用者啟動,然後通用 setuid 降級為 shell 使用者,

看 android 2.2 原始碼中的 /android/android2.2/platform/system/core/adb/adb.c 的源**

/* add extra groups:

** aid_adb to access the usb driver

** aid_log to read system logs (adb logcat)

** aid_input to diagnose input issues (getevent)

** aid_inet to diagnose network issues (netcfg, ping)

** aid_graphics to access the frame buffer

** aid_net_bt and aid_net_bt_admin to diagnose bluetooth (hcidump)

** aid_sdcard_rw to allow writing to the sd card

** aid_mount to allow unmounting the sd card before rebooting

*/gid_t groups = ;

setgroups(sizeof(groups)/sizeof(groups[0]), groups);

/* then switch user and group to "shell" */

setgid(aid_shell);

setuid(aid_shell);

這裡並沒有對 setuid 等函式的操作進行正確證判斷。

如何這個函式會失敗呢? 經查詢,當目標使用者的程序數達到 rlimit_nproc 這個值的時候,setuid 就會設定失敗,而 aid_shell 使用者恰好是,使用者通過 adb shell 連進來的使用者,相信我們可以不斷的 fork,再連一下 adb,這時 adb 就不是以 shell 使用者啟動了,而是它的父程序的使用者(root)

看到可愛的 # 號了!

setuid的作用 深入理解SetUID

在linux系統中每個普通使用者都可以更改自己的密碼,這是合理的設定。問題是 使用者的資訊儲存在檔案 etc passwd中,使用者的密碼儲存在檔案 etc shadow中,也就是說使用者更改自己密碼時是修改了 etc shadow檔案中的加密密碼,但是,look rw r r 1 root roo...

深入理解SetUID

摘自 在linux系統中每個普通使用者都可以更改自己的密碼,這是合理的設定。問題是 使用者的資訊儲存在檔案 etc passwd中,使用者的密碼儲存在檔案 etc shadow中,也就是說使用者更改自己密碼時是修改了 etc shadow檔案中的加密密碼,但是,look rw r r 1 root ...

深入理解SetUID

在linux系統中每個普通使用者都可以更改自己的密碼,這是合理的設定。問題是 使用者的資訊儲存在檔案 etc passwd中,使用者的密碼儲存在檔案 etc shadow中,也就是說使用者更改自己密碼時是修改了 etc shadow檔案中的加密密碼,但是,look rw r r 1 root roo...