Według man 7 capabilities
CAP_DAC_READ_SEARCH
* Bypass file read permission checks and directory read and execute permission checks;
* Invoke open_by_handle_at(2).
To zadziałało dla mnie. (linie zaczynające się od „#” są rootem, linie z „$” nie są rootem) w tym przypadku użytkownik inny niż root jest w wheel
grupie.
# cp /usr/bin/find /usr/bin/sudofind
# chmod 710 /usr/bin/sudofind
# chown root:wheel /usr/bin/sudofind
# setcap cap_dac_read_search+ep /usr/bin/sudofind
# exit
$ find /root
find: ‘/root’: Permission denied
$ sudofind /root
/root /root
/root/Testbed
...
...
$ sudofind /root -exec cat {} \;
cat: /root: Permission denied
cat: /root/Testbed: Permission denied
$ sudofind /root -printf "%u %g %m %c %p\n"
root root 644 Mon Apr 20 09:20:48.0457518493 2015 /root
root root 755 Fri Dec 4 02:34:03.0016294644 2015 /root/Testbed
...
...
$ # Capability inheritance test..
$ sudofind /root -exec /bin/sleep 10 \; &
[1] 17017
$ getpcaps $(pgrep find)
Capabilities for `17017': = cap_dac_read_search+ep
$ getpcaps $(pgrep sleep)
Capabilities for `17019': =
Biorąc pod uwagę to, co zapewnia zdolność, pasuje dokładnie do tego, czego chcesz. Nie wyczerpująco sprawdziłem, czy find
ma funkcję, która pozwala na odczyt bajtów wewnątrz plików, ale oczywiste rzeczy, takie jak LD_PRELOAD
ataki typu shim w bibliotece, nie powinny działać ze względu na naturę kontroli setuid w Linuksie, a bity możliwości nie dostają odziedziczone przez procesy potomne (w przeciwieństwie do surowego setuida), więc to kolejna premia.
Pamiętaj, że to, co chcesz zrobić, budzi potencjalne obawy dotyczące prywatności związane z tworzeniem lub dostępem do plików tymczasowych, a program może służyć jako podstawa do podjęcia próby eskalacji warunków wyścigu / przywilejów (w stosunku do programów, które tworzą znane nazwy plików ale nie wykonuj poprawnych kontroli bezpieczeństwa).
Ponadto niektóre źle napisane aplikacje mogą polegać na metadanych pliku lub strukturze drzewa jako sposobie przekazywania znaczenia lub ukrywania danych. Może to spowodować udostępnienie ograniczonych informacji lub ujawnienie uprzywilejowanych dokumentów, o których nie wiadomo inaczej (wiem o bezpieczeństwie poprzez niejasność, ale jest to rzecz, którą szczególnie lubią robić dostawcy z zamkniętym źródłem).
Dlatego uważaj i rób to ostrożnie i zrozum, że wiąże się to z ryzykiem, nawet jeśli oczywiste rzeczy nie działają.
Och, chciałbym sprawdzić, czy ktoś ma atak koncepcyjny, który wykorzystuje ten mechanizm jako podstawę do eskalacji uprawnień w komentarzach!