Portál AbcLinuxu, 5. května 2025 10:32

Dotaz: Veverka.ch - hack - výzva :-)

xkucf03 avatar 6.5.2009 13:19 xkucf03 | skóre: 49 | blog: xkucf03
Veverka.ch - hack - výzva :-)
Přečteno: 1567×
Odpovědět | Admin

Ahoj,

napsal jsem jednoduchý skriptík, pomocí kterého si uživatelé mohou měnit heslo.

Zdrojáky jsou tady: http://hg.vps.frantovo.cz/veverka.ch/

A běží to tady: https://posta.veverka.ch/heslo/

K PHP jsem byl nucen se vrátit, protože na tom serveru teď nic jiného neběží, a nejsem si v něm moc jistý (jsem zmlsaný Javou :-) ), takže bych vás chtěl požádat o revizi kódu. Kdo to hackne první, má u mě pivo :-) (ale o D/DoS útok nestojím). Na tom serveru neběží nic kritického (ani tam nemám žádné zajímavé e-maily), takže to považuji za celkem dobrou chvíli, abych se zeptal: co byste na tom kódu vylepšili?

Franta

BTW: je to open source, tak to můžete sami použít nebo se inspirovat, pokud vám to k něčemu bude. Použil jsem PHP + PostgreSQL (funkce zmen_heslo)

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.5.2009 07:10 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Veverka.ch - hack - výzva :-)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Není to asi bezpečnostní riziko, ale regexp na platný e-mail samo domo nesestavíte, je lepší si ho někde najít. Jo a taky je ten formulář náchylný na CSRF, ale to je kvůli potřebě zadat heslo diskutabilní.
In Ada the typical infinite loop would normally be terminated by detonation.
xkucf03 avatar 7.5.2009 11:07 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Veverka.ch - hack - výzva :-)

Ten regulární výraz jsem sám nepsal, kdysi jsem ho někde našel a používám. Přišel mi nejlepší z těch, na které jsem narazil. Kde najdu lepší? A v čem ta změna bude spočívat? (které adresy projdou a neprojdou).

CSFR by řešila CAPTCHA, o té uvažuji, ale zatím je tam jen to osmivteřinové zdržení před kontrolou -- proti (nedistribuovanému) útoku hrubou silou.

 

 

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
7.5.2009 11:43 12345 | skóre: 41 | blog:
Rozbalit Rozbalit vše Re: Veverka.ch - hack - výzva :-)
Lepší RE najdete třeba tady: http://php.vrana.cz/kontrola-e-mailove-adresy.php
xkucf03 avatar 7.5.2009 12:02 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše regulární e-mail
  1. @copyright
  2. Připouští v TLD čísla -- ta jsem tam ale nikde neviděl
  3. Nepočítá s IDN* -- s čímž ale počítá málokdo, to by se musely připustit i jiné abecedy než latinka nebo předem převádět doménu na punycode

*) já to říkal vždycky, že s IDN budou leda problémy :-)

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
7.5.2009 12:43 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Veverka.ch - hack - výzva :-)
A v čem ta změna bude spočívat?
E-mailová adresa není jen user@jmeno.cz jak ji bežně známe. Zkuste se třeba kouknout na adresu: http://ex-parrot.com/~pdw/Mail-RFC822-Address.html

Já bych osobně validaci emailu svěřil např. tomu modulu, ale ten je pro Perl, takže nějaký ekvivalent pro PHP si budete muset najít sám.
CSFR by řešila CAPTCHA
Ne, CSRF je něco jiného. Na to pomáhá pouze do formuláře dát náhodný token a ve zpracování jej porovnat s lokálně (v db) uloženou hodnotou.

IMHO to v tomto konkrétním případě řeší nutnost zadat (staré) heslo. U jiných formulářů by mohl být problém.
In Ada the typical infinite loop would normally be terminated by detonation.
xkucf03 avatar 7.5.2009 15:43 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše CSRF
Ne, CSRF je něco jiného. Na to pomáhá pouze do formuláře dát náhodný token a ve zpracování jej porovnat s lokálně (v db) uloženou hodnotou.

No a právě to ta CAPTCHA řeší :-) (přestože je primárně určena k něčemu jinému). Protože si nejdřív musím zobrazit stránku s formulářem a získat z ní kód (což je v tomto případě ještě ztížené tím, že ho musím opsat z obrázku) a pak teprve mohu formulář odeslat. Viz např. Přehled útoků na webové aplikace

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
7.5.2009 20:17 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: CSRF
No to je asi pravda, ale je poměrně ukrutné nechat uživatele kvůli každé akci vyplňovat kód.
In Ada the typical infinite loop would normally be terminated by detonation.
Tarmaq avatar 7.5.2009 14:30 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Veverka.ch - hack - výzva :-)
Zde najedete implementaci kontrolovani emailove adresy podle RFC2822.

To same prepsane do javascriptu:
function isValidEmail(email) // {{{
{
    var pattern = new RegExp(
        '^[-!#$%&\'*+/=?^_`{|}~\\w]+' /* local-part dot-atom-text (1*atext) */
      + '(?:\\.[-!#$%&\'*+/=?^_`{|}~\\w]+)*' /* local-part dot-atom-text (*("." 1*atext)) */
      + '@' /* literal "@" */
      + '(?:'
      +   '(?:' /* domain (dom-atom or domain-literal) */
      +     '[-!#$%&\'*+/=?^_`{|}~\\w]+' /* domain dot-atom (1*atext) */
      +     '\\.[-!#$%&\'*+/=?^_`{|}~\\w]+' /* domain dot-atom (*("." 1*atext)) */
      +   ')+'
      + '|'
      +   '\\[' // domain domain-literal ("[")
          // domain domain-literal (dcontent)
      +   '[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21-\\x5A\\x5E-\\x7F]*'
          // ^@  -  ^H   ^K   ^L   ^N    ^_  "!" -  "Z" "^" -  DEL
      +   '\\]' // domain domain-literal ("]")'
      + ')'
      + '$'
    );
    return pattern.test(email);
} // }}}

Don't panic!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.