Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Jak zdobyć roota na Ubuntu? Prosto: dirty_sock exploit
Świetny opis podatności dającej lokalnie uprawnienia roota na Ubuntu (tzw. privilege escalation ze zwykłego użytkownika do roota). Podatne linie: Ubuntu 18.10, Ubuntu 18.04 LTS, Ubuntu 16.04 LTS, Ubuntu 14.04 LTS.
Opis pokazuje, że tego typu problemy to nie tylko czarna magia i omijanie piętnastu metod antibufferoverflow. Czasem może być prosto. Bardzo prosto.
W skrócie:
- Domyślnie w Ubuntu działa usługa snapd (z uprawnieniami root)
- Usługa udostępnia lokalnie (jako plik) UNIX socket (po polsku: „gniazdo dziedziny Uniksa” hmmm ;)
- Do socketa (do pliku) każdy może pisać (uprawnienia 0666)
- Po drugiej stronie socketa znajduje się API REST (takie zwykłe, z którym można się komunikować poprzez HTTP), np. tak:
$ nc -U /run/snapd.socket
GET / HTTP/1.1
Host: 127.0.0.1 - API posiada jednak uprawnienia (nie ma tak łatwo;), ale podłączając się do socketa można wstrzyknąć fragment ;uid=0; – w dość banalny sposób (podając stosowną nazwę socketa podczas połączenia):
sockfile = „/tmp/sock;uid=0;” - Powoduje to, że API z tego ciągu poniżej wydobywa UID – ale błąd w kodzie powoduje, że ostatnie uid napisuje to „normalne”:
remoteAddr = „pid=5275;uid=1000;socket=/run/snapd.socket;/tmp/sock;uid=0;” - Dalej to np. odpalenie metody: POST /v2/create-user i mamy lokalnego roota
- Autor publikuje dwa przykładowe exploity
–ms
i na co komu ten snapczat
O_O
urywa dupę, zaraz odpalam wirtualkę:)
A gdzie logo? wszystkie podatności mają przecież swoje logo jak heartbleed etc.
Zdaje sie działa jakiś auto-update bo snap sam mi sie aktualizował do non-vulnr wersji 30 stycznia
W 14.04 i 16.04 domyślnie nie działa usługa Snap/Snapcraft, dopiero od 18.04 wzwyż.
Co prawda można doinstalować samemu, ale na „czystej” instalacji jej nie ma. Zarówno na desktopie jak i na wersji Server.