Jak sfałszować / wyszydzić katalog używany przez aplikację binarną jako inny katalog?

9

Załóżmy, że istnieje aplikacja binarna, która zawsze zapisuje swoje dane /tmp.

Jak mogę sfałszować / wyszydzić /tmpze względu na ten plik binarny jako jakiś inny katalog (np. home/tmp)?

Załóżmy, że nie mam możliwości zmodyfikowania tego pliku binarnego, aby zmusić go do użycia innego katalogu.

Nobilis
źródło

Odpowiedzi:

11

Możesz uruchomić aplikację w chrootśrodowisku, tzn /. Aplikacja nie jest prawdziwa /. Tworzysz kompletną nową hierarchię systemu plików i mount ( --bind) wszystko, czego potrzebujesz. Odpowiedni punkt jest: Można zamontować rzeczywiście ~/tmpdo /tmpw chrootśrodowisku.

Zamiast używać chroot(co wymaga uprawnień administratora) możesz zrobić mniej więcej to samo z kontenerami Linux ( lxc). Nie znam się na tym, lxcale ponieważ jest to zwykły proces użytkownika systemu hosta, nie musisz być superużytkownikiem dla takich konfiguracji w kontenerze.

Hauke ​​Laging
źródło
Świetna odpowiedź, że nie słyszał o albo chrootczy lxcjest w stanie to zrobić. Miło jest również wiedzieć, że istnieje sposób, aby to osiągnąć, nie będąc superużytkownikiem.
Nobilis
3
@Nobilis 98 brakujących głosów, aby można było to uznać za świetną odpowiedź ...
Hauke ​​Laging
2
Strzeż się jednak, że chrootwymaga dodatkowej konfiguracji (wymieniasz całość /, a nie tylko /tmp, więc jakikolwiek dostęp do /etc, /varitp, będzie również wewnątrz „więzienia”) i stwarza problemy bezpieczeństwa własnego (dalej „uwięziony” program może być w stanie manipulować częściami systemu plików, które normalnie byłyby niedostępne, jeśli nie będziesz ostrożny z uprawnieniami podczas konfigurowania fałszywego pliku /).
IMSoP
@IMSoP Czy mógłbyś wyjaśnić bardziej szczegółowo „może być w stanie manipulować częściami systemu plików, które normalnie byłyby niedostępne”?
Hauke ​​Laging
@HaukeLaging Jeśli nowy /nie jest ograniczony tylko do napisania root, „uwięziony” użytkownik może tworzyć lub zamieniać pliki, które wydają się znajdować w kluczowych lokalizacjach systemowych, takich jak /etc/passwd; można to następnie wykorzystać do eskalacji uprawnień, która nie byłaby możliwa poza chroot. Wiele serwerów FTP z systemem Linux, które tradycyjnie używają chrootdo ukrywania reszty systemu plików, teraz odmawia, jeśli katalog jest zapisywalny przez użytkownika innego niż root.
IMSoP
8

Większość programów zgodnych z POSIX honorowałaby zmienną środowiskową TMPDIR np

env TMPDIR=~/mytmp  /path/to/application
HBruijn
źródło