Skip to content

Instantly share code, notes, and snippets.

@kvitajin
Created November 23, 2017 17:28
Show Gist options
  • Select an option

  • Save kvitajin/ad68d6a13ac42ffefc86538539fa99fd to your computer and use it in GitHub Desktop.

Select an option

Save kvitajin/ad68d6a13ac42ffefc86538539fa99fd to your computer and use it in GitHub Desktop.
Chyby v zabezpečení soutěže Český Slavík 2017

Dobrý den,

zavítal jsem na Vaše stránky Českého slavíka a zkusil jsem bezpečnost stránek proti webovým útokům (zde posloužilo okno pro hlasování).

První na řadu přišel útok XSS.

Zadal jsem:

<script>alert("1");</script>  

Výsledkem nebylo (dle mého očekávání) "Zadal jste neplatný vstup", ale okno viz: priloha1 Delší část textu je zde: Celý text, tento výsledek však byl jiný, než jaký by měl být v případě XSS útoku, tudíž zde nějaká ochrana už implementovaná je, avšak ne dostatečně.

Zde by pomohlo něco ve stylu htmlentities($src,ENT_QUOTES); a následná kontrola správnosti vstupu.

Následoval SQL Injection.

Ten útočí na databázi.

Prve jsem napsal:

* OR 1=1; -- 

Výsledkem byla: priloha3 Což značí o tom, že se mi málem povedlo hlasovat pro všechny najednou.

Poté jsem si však všiml, že je to napsáno špatně a opravil na:

' OR 1=1; -- 

Výsledkem byl pravděpodobně pád kódu na Vaší straně, jelikož se nevypsalo nic: priloha4

Pro:

" OR 1=1; -- 

Se však text opět vypsal, což svědčí o úspěšném počátku blind SQL injection. Pomocí programu k tomu určenému by se tudíž dala analyzovat celá databáze.

Zde bych doporučil použití prepared statements (+ následná kontrola správnosti vstupu), aby se deaktivovala možnost použití tohoto útoku.

Další věc, co bych vytkl je absence SSL. Tím, že komunikace mezi uživatelem a serverem není šifrovaná, může potenciální útočník třetích stran modifikovat text, který jde na Vaše servery a tím úplně otočit výsledky hlasování bez toho, abyste měli šanci zjistit, že se něco stalo.

Poslední věcí, kterou bych (prozatím) vytkl je způsob, jakým bylo ukončeno hlasování. Odstranění odkazu na hlasování z úvodní stránky rozhodně není dostatečný způsob, jak zamezit hlasování po ukončení ankety.

Zde je nutno plně deaktivovat odkaz na hlasování. Zejména, když je tak lehce zapamatovatelný, jako http://www.ceskyslavikmattoni.cz/hlasovani/

Doufám, že se tato zpráva dostane ke kompetentním lidem a bude k užitku.

S pozdravem a přáním hezkého dne

Jindřich Kvita

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment