SlideShare a Scribd company logo
1 of 32
Download to read offline
Wybrane podatności
w aplikacjach webowych
Michał Sajdak, CISSP, CEH, CTT+
www.securitum.pl
www.sekurak.pl
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
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
Cisco RVS 4000
Security router
VPN, Firewall, IPS, …
4
Copyright 2015 Securitum
www.securitum.pl
Cisco RVS 4000
5
Copyright 2015 Securitum
www.securitum.pl
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
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
Copyright 2014 Securitum
www.securitum.pl
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
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
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
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
OS Command Exec – JBoss Seam
Zobaczmy
13
Copyright 2014 Securitum
www.securitum.pl
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
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
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
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
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
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
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
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
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
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
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
XXE (XML eXternal Entities)
Encje znany z HTML-a:
&lt; lub &#60;
<
&quot;
&apos;
&amp;
&micro;
…
Ogólnie:
&nazwa_encji;
&#numer_encji;
25
Copyright 2014 Securitum
www.securitum.pl
Renderowanie encji w HTML
W XML-u:
działa to podobnie…
26
Copyright 2014 Securitum
www.securitum.pl
XXE (XML eXternal Entities)
… możemy definiować własne encje
<!ENTITY name "value">
27
Copyright 2014 Securitum
www.securitum.pl
28
Copyright 2014 Securitum
www.securitum.pl
29
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
Dziękuję za uwagę
Pytania?
Kontakt: michal.sajdak@securitum.pl
http://securitum.pl/
Szkolenia / testy bezpieczeństwa aplikacji
31
Copyright 2014 Securitum
www.securitum.pl
32

More Related Content

Viewers also liked

Operación invierno 2011 - Veladero
Operación invierno 2011 - VeladeroOperación invierno 2011 - Veladero
Operación invierno 2011 - Veladerobarrickarg
 
Marco market in numbers mobile world wide & colombia
Marco   market in numbers mobile world wide & colombiaMarco   market in numbers mobile world wide & colombia
Marco market in numbers mobile world wide & colombiaMarco Marketing Consulting
 
Media Topline - Blurb
Media Topline - BlurbMedia Topline - Blurb
Media Topline - BlurbGabriela R
 
Matrix Telecom | ETERNITY IP-PBX
Matrix Telecom | ETERNITY IP-PBXMatrix Telecom | ETERNITY IP-PBX
Matrix Telecom | ETERNITY IP-PBXmatrixtelesol
 
SNER para el Desarrollo Rural en MAGA / Ministerio de Agricultura, Ganadería ...
SNER para el Desarrollo Rural en MAGA / Ministerio de Agricultura, Ganadería ...SNER para el Desarrollo Rural en MAGA / Ministerio de Agricultura, Ganadería ...
SNER para el Desarrollo Rural en MAGA / Ministerio de Agricultura, Ganadería ...EUROsociAL II
 
Marketing automation best practices for insurance companies
Marketing automation best practices for insurance companiesMarketing automation best practices for insurance companies
Marketing automation best practices for insurance companiesedynamic
 
Wirtschaftliche Aspekte der Nutzung von Open Government Data, Nikolaus Futter
Wirtschaftliche Aspekte der Nutzung von Open Government Data, Nikolaus FutterWirtschaftliche Aspekte der Nutzung von Open Government Data, Nikolaus Futter
Wirtschaftliche Aspekte der Nutzung von Open Government Data, Nikolaus FutterSemantic Web Company
 

Viewers also liked (10)

Operación invierno 2011 - Veladero
Operación invierno 2011 - VeladeroOperación invierno 2011 - Veladero
Operación invierno 2011 - Veladero
 
Guion de cine expo
Guion de cine expoGuion de cine expo
Guion de cine expo
 
Marco market in numbers mobile world wide & colombia
Marco   market in numbers mobile world wide & colombiaMarco   market in numbers mobile world wide & colombia
Marco market in numbers mobile world wide & colombia
 
Media Topline - Blurb
Media Topline - BlurbMedia Topline - Blurb
Media Topline - Blurb
 
Matrix Telecom | ETERNITY IP-PBX
Matrix Telecom | ETERNITY IP-PBXMatrix Telecom | ETERNITY IP-PBX
Matrix Telecom | ETERNITY IP-PBX
 
Autocad
AutocadAutocad
Autocad
 
SNER para el Desarrollo Rural en MAGA / Ministerio de Agricultura, Ganadería ...
SNER para el Desarrollo Rural en MAGA / Ministerio de Agricultura, Ganadería ...SNER para el Desarrollo Rural en MAGA / Ministerio de Agricultura, Ganadería ...
SNER para el Desarrollo Rural en MAGA / Ministerio de Agricultura, Ganadería ...
 
Marketing automation best practices for insurance companies
Marketing automation best practices for insurance companiesMarketing automation best practices for insurance companies
Marketing automation best practices for insurance companies
 
Arte Celta
Arte CeltaArte Celta
Arte Celta
 
Wirtschaftliche Aspekte der Nutzung von Open Government Data, Nikolaus Futter
Wirtschaftliche Aspekte der Nutzung von Open Government Data, Nikolaus FutterWirtschaftliche Aspekte der Nutzung von Open Government Data, Nikolaus Futter
Wirtschaftliche Aspekte der Nutzung von Open Government Data, Nikolaus Futter
 

Similar to Wybrane podatności aplikacji webowych - Michał Sajdak

“Jak ocalić swoje dane przed SQL injection?” - Krzysztof Kotowicz na KrakSpot...
“Jak ocalić swoje dane przed SQL injection?” - Krzysztof Kotowicz na KrakSpot...“Jak ocalić swoje dane przed SQL injection?” - Krzysztof Kotowicz na KrakSpot...
“Jak ocalić swoje dane przed SQL injection?” - Krzysztof Kotowicz na KrakSpot...krakspot
 
Jak ocalić swoje dane przed SQL injection?
Jak ocalić swoje dane przed SQL injection?Jak ocalić swoje dane przed SQL injection?
Jak ocalić swoje dane przed SQL injection?Krzysztof Kotowicz
 
Zhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP TrojmiastoZhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP Trojmiastosecman_pl
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyqbeuek
 
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...Logicaltrust pl
 
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...SecuRing
 
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktykaMichał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktykaFuture Processing
 
Pierwsza aplikacja na iOS, czyli z czym można się spotkać, co jest trudne i c...
Pierwsza aplikacja na iOS, czyli z czym można się spotkać, co jest trudne i c...Pierwsza aplikacja na iOS, czyli z czym można się spotkać, co jest trudne i c...
Pierwsza aplikacja na iOS, czyli z czym można się spotkać, co jest trudne i c...The Software House
 
Jak tworzyć bezpieczne aplikacje?
Jak tworzyć bezpieczne aplikacje?Jak tworzyć bezpieczne aplikacje?
Jak tworzyć bezpieczne aplikacje?SecuRing
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
 
Sql z perspektywy hakera czy twoje dane są bezpieczne ? - Sqlday 2016 Wrocław
Sql z perspektywy hakera   czy twoje dane są bezpieczne ? - Sqlday 2016 WrocławSql z perspektywy hakera   czy twoje dane są bezpieczne ? - Sqlday 2016 Wrocław
Sql z perspektywy hakera czy twoje dane są bezpieczne ? - Sqlday 2016 WrocławKrzysztof Binkowski
 
Testowanie poziomu bezpieczeństwa aplikacji internetowych
Testowanie poziomu bezpieczeństwa aplikacji internetowychTestowanie poziomu bezpieczeństwa aplikacji internetowych
Testowanie poziomu bezpieczeństwa aplikacji internetowychAntoni Orfin
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...Future Processing
 
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...Trójmiejska Grupa Testerska
 
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać PROIDEA
 

Similar to Wybrane podatności aplikacji webowych - Michał Sajdak (20)

“Jak ocalić swoje dane przed SQL injection?” - Krzysztof Kotowicz na KrakSpot...
“Jak ocalić swoje dane przed SQL injection?” - Krzysztof Kotowicz na KrakSpot...“Jak ocalić swoje dane przed SQL injection?” - Krzysztof Kotowicz na KrakSpot...
“Jak ocalić swoje dane przed SQL injection?” - Krzysztof Kotowicz na KrakSpot...
 
Jak ocalić swoje dane przed SQL injection?
Jak ocalić swoje dane przed SQL injection?Jak ocalić swoje dane przed SQL injection?
Jak ocalić swoje dane przed SQL injection?
 
Zhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP TrojmiastoZhakuj swojego Wordpressa, WordUP Trojmiasto
Zhakuj swojego Wordpressa, WordUP Trojmiasto
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatyczny
 
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
Urządzenia i usługi bezpieczeństwa IT - pełna ochrona czy... zaproszenie dla ...
 
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
 
Devops security
Devops securityDevops security
Devops security
 
Devops/Sysops security
Devops/Sysops securityDevops/Sysops security
Devops/Sysops security
 
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktykaMichał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
 
Pierwsza aplikacja na iOS, czyli z czym można się spotkać, co jest trudne i c...
Pierwsza aplikacja na iOS, czyli z czym można się spotkać, co jest trudne i c...Pierwsza aplikacja na iOS, czyli z czym można się spotkać, co jest trudne i c...
Pierwsza aplikacja na iOS, czyli z czym można się spotkać, co jest trudne i c...
 
Jak tworzyć bezpieczne aplikacje?
Jak tworzyć bezpieczne aplikacje?Jak tworzyć bezpieczne aplikacje?
Jak tworzyć bezpieczne aplikacje?
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
 
Sql z perspektywy hakera czy twoje dane są bezpieczne ? - Sqlday 2016 Wrocław
Sql z perspektywy hakera   czy twoje dane są bezpieczne ? - Sqlday 2016 WrocławSql z perspektywy hakera   czy twoje dane są bezpieczne ? - Sqlday 2016 Wrocław
Sql z perspektywy hakera czy twoje dane są bezpieczne ? - Sqlday 2016 Wrocław
 
Testowanie poziomu bezpieczeństwa aplikacji internetowych
Testowanie poziomu bezpieczeństwa aplikacji internetowychTestowanie poziomu bezpieczeństwa aplikacji internetowych
Testowanie poziomu bezpieczeństwa aplikacji internetowych
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
 
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
 
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać
PLNOG 8: Tomasz Sawiak - Log management i analizy > to czego nie widać
 
Pure MVC - Mediovski
Pure MVC - MediovskiPure MVC - Mediovski
Pure MVC - Mediovski
 
WF w zastosowaniach Web
WF w zastosowaniach WebWF w zastosowaniach Web
WF w zastosowaniach Web
 
NET flow
NET flowNET flow
NET flow
 

Wybrane podatności aplikacji webowych - Michał Sajdak

  • 1. Wybrane podatności w aplikacjach webowych Michał Sajdak, CISSP, CEH, CTT+ www.securitum.pl www.sekurak.pl
  • 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. 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. Cisco RVS 4000 Security router VPN, Firewall, IPS, … 4 Copyright 2015 Securitum www.securitum.pl
  • 5. Cisco RVS 4000 5 Copyright 2015 Securitum www.securitum.pl
  • 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. 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
  • 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. 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. 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. 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. OS Command Exec – JBoss Seam Zobaczmy 13 Copyright 2014 Securitum www.securitum.pl
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. XXE (XML eXternal Entities) Encje znany z HTML-a: &lt; lub &#60; < &quot; &apos; &amp; &micro; … Ogólnie: &nazwa_encji; &#numer_encji; 25 Copyright 2014 Securitum www.securitum.pl
  • 26. Renderowanie encji w HTML W XML-u: działa to podobnie… 26 Copyright 2014 Securitum www.securitum.pl
  • 27. XXE (XML eXternal Entities) … możemy definiować własne encje <!ENTITY name "value"> 27 Copyright 2014 Securitum www.securitum.pl
  • 29. 29
  • 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. Dziękuję za uwagę Pytania? Kontakt: michal.sajdak@securitum.pl http://securitum.pl/ Szkolenia / testy bezpieczeństwa aplikacji 31 Copyright 2014 Securitum www.securitum.pl
  • 32. 32