Když vám rozbíjejí hračky

Jan @Novoj Novotný

Sledujte prezentaci spolu se mnou
http://novoj.github.io/reveal.js/jopenspace2016.html

Už na škole nás učili

nevěřit ničemu, co přichází z klienta

  • parametry / fieldy
  • http hlavičky
  • názvy souborů
    (to, že to nemůže existovat, ještě neznamená,
    že vám to nemůžou uploadnout)
  • soubory (injected code)

Obecně:

  • co není třeba předávat přes klienta radši nepředávat
  • používat ideálně hashe místo idček (enumerace)
  • vstupy validovat

Děláme to dostatečně?

Cross Site Scripting (XSS)

Co s tím?

  • Content Security Policy FTW

Nebezpečí v URL

  • vložený obrázek za HTTP autentizací (popis)
  • HTML v odkazu (Notepad), útok na přihlašování demo, popis

XML zranitelnosti


    <?xml version="1.0"?>
    <!DOCTYPE lolz [
    <!ENTITY lol "lol">
    <!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
    <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
    <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
    <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
    <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
    <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
    <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
    <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
    ]>
    <lolz>&lol9;</lolz>

Skvělý rozbor XXE se nachází na SOOM.cz

A co teda s tím?

Source, OWASP, BlackHat

ReDos

  • plno lidí RegExům nerozumí
  • plno vývojářů RegExy kopírují aniž by jim rozuměli

Ukázka RegExu na validaci e-mailu:

^([a-zA-Z0-9])(([\-.]|[_]+)?([a-zA-Z0-9]+))*(@){1}[a-z0-9]+[.]{1}(([a-z]{2,3})|([a-z]{2,3}[.]{1}[a-z]{2,3}))$
^([a-zA-Z0-9])(([\-.]|[_]+)?([a-zA-Z0-9]+))*(@){1}[a-z0-9]+[.]{1}(([a-z]{2,3})|([a-z]{2,3}[.]{1}[a-z]{2,3}))$
novotnaci@gmail.com //ok
aaaaaaaaaaaaaaaaaaaaaaaa! //DOS
OK

Děkuji za pozornost

Odkazy:

Kontakt @Novoj or novotnaci@gmail.com