際際滷

際際滷Share a Scribd company logo
Drupal biztons叩g




Tuesday, April 3, 12
Ki c辿lpont?




Tuesday, April 3, 12
mi nem vagyunk c辿lpontok
         n        Az adatok 辿rt辿kesek (pl.
                   tematiz叩lt email c鱈mlista
                   az {user} t叩bl叩b坦l)
         n        A l叩togat坦k 辿rt辿kesek
         n        Minden g辿p sz叩m鱈t
                   (botnetek)
         n        Vand叩lkodni j坦 :)

Tuesday, April 3, 12
Ki c辿lpont?


                       Mindenki

Tuesday, April 3, 12
Biztons叩gr坦l 叩ltal叩ban
         n
                   Csak biztons叩gos 辿s nem
                   biztons叩gos oldal van, nincs
                   f辿lig biztons叩gos
         n
                   Egy rossz sor k坦d is el辿g
                   ahhoz, hogy b叩rki b叩rmit
                   tehessen az oldalunkkal /
                   szerver端nkkel
         n
                   A webfejleszt is programoz坦,
                   ugyan炭gy kell nek端nk is
                   t旦rdn端nk a biztons叩ggal,
                   mint annak, aki az amerikai
                   v辿delmi hivatalnak fejleszt.
Tuesday, April 3, 12
H叩l坦zati biztons叩g

         n        Titkos鱈tott protokollok haszn叩lata (FTP 辿s HTTP (felt旦lt辿s)
                   ker端lend)
         n        Wi-Fi eset辿n WPA titkos鱈t叩s
         n        Total Commander nem jelsz坦megrz



Tuesday, April 3, 12
gy hallgathatlak le t辿ged




Tuesday, April 3, 12
B叩rki lehallgathat

         n        Nem csak a k辿pzett crackerek
                       sudo ifconfig wlan0 down

                       sudo iwconfig wlan0 mode monitor

                       sudo ifconfig wlan0 up

                       sudo wireshark




Tuesday, April 3, 12
珂艶乙看鉛糸叩壊看一
         n        SSL-lel titkos鱈tott protokollok haszn叩lata:
                       n   FTPS
                       n   SFTP
                       n   HTTPS
                       n   SSH
         n        VPN

Tuesday, April 3, 12
皆噛艶姻厩艶姻恢艶叩鉛鉛鱈岳叩壊看一
         n
                   FastCGI (DDoS ellen jobb)
         n
                   PHP
                       n
                            suhosin haszn叩lata
                       n
                            php.ini
                                n
                                      open_basedir
                                n
                                      disabled_functions
                                n
                                      disabled_classes
                                n
                                      safe_mode kikapcsol叩sa (hamis biztons叩g辿rzet, gyakorlatban
                                      nem sokat v辿d)
Tuesday, April 3, 12
Formok biztons叩ga

         n        a hidden (辿s b叩rmilyen m叩s) mezk tartalmai ugyan炭gy
                   m坦dos鱈that坦ak a felhaszn叩l坦k 叩ltal! (meglepen sok oldal
                   t旦rhet 鱈gy)
         n        szerencs辿re ezt a form api kiv辿di



Tuesday, April 3, 12
Formok biztons叩ga


         n        Bizonyos 辿rz辿keny adatok (pl.: bankk叩rtya sz叩m) beviteli
                   mezj辿n辿l az autocomplete=off attrib炭tum haszn叩lata




Tuesday, April 3, 12
HTTP k辿r辿sek
         n        r叩s soha ne legyen GET
         n        L辿trehoz叩s, szerkeszt辿s az POST (form miatt), de a t旦rl辿s is
                   legyen az!
         n        Nem 叩rt, ha r叩k辿rdez端nk a felhaszn叩l坦ra t旦rl辿s eltt
                   (Drupalban: con鍖rm_form() f端ggv辿ny)
         n        Ha bejut valamilyen bot, akkor a linkeken v辿gigmegy 
                   ha ez egy admin fel端let, akkor t旦r旦lheti az 旦sszes
                   tartalmat
Tuesday, April 3, 12
HTTP k辿r辿sek


         n        rz辿keny adatot URL-ben soha
         n        http://example.com/register.php?
                   username=foo&password=bar&mail=foobar@example.com




Tuesday, April 3, 12
JavaScript


         n        A JavaScript 叩ltal v辿gzett ellenrz辿s csak k辿nyelmi
                   szolg叩ltat叩s, minden ellenrz辿st el kell v辿gezni a szerver
                   oldalon is!




Tuesday, April 3, 12
JavaScript
         n        Val坦s 辿letbl vett ellenp辿lda:
              <script language="javascript">
                  <!--//
                  /*This Script allows people to enter by using a form that asks for a
                  UserID and Password*/
                  function pasuser(form) {
                      if (form.id.value=="buyers") {
                           if (form.pass.value=="gov1996") {
                               location="http://officers.federalsuppliers.com/agents.html"
                           } else {
                               alert("Invalid Password")
                           }
                  } else {
                           alert("Invalid UserID")
                      }
                  }
                  //-->
                  </script>



Tuesday, April 3, 12
File inclusion

         n        File-t SOHA nem include-olunk URL alapj叩n
         n        Trivi叩lis p辿lda:
                       http://example.com/index.php?p=../../../../etc/
                           passwd
                       http://example.com/index.php?p=index.php


Tuesday, April 3, 12
Drupal biztons叩g




Tuesday, April 3, 12
Alapok


         n        Soha, de soha ne ny炭ljunk a core k坦dhoz!




Tuesday, April 3, 12
Alapok

         n        Haszn叩ljuk a Drupal f端ggv辿nyeit 辿s API-jait
                       n   N叩lunk tapasztaltabb emberek 鱈rt叩k
                       n   K旦nny撤 megtanulni ket
                       n   Hossz炭 t叩von 炭gyis gyorsabban v辿gezz端k el a
                            feladatainkat


Tuesday, April 3, 12
Alapok
         n        Minim叩lis jogosults叩gok mindenkinek
         n        A k旦vetkez jogosults叩gok megad叩s叩val odaadjuk a
                   siteunkat:
                       n   Administer content types
                       n   Administer users
                       n   Administer permissions
                       n   Administer 鍖lters
                       n   Administer site con鍖guration
Tuesday, April 3, 12
Input formats


         n        Amit csak nagyon megb鱈zhat坦 felhaszn叩l坦knak enged端nk:
                       n   Full HTML
                       n   PHP



Tuesday, April 3, 12
Access control

         n        Haszn叩ld:
                       n   node_access
                       n   user_access
                       n   hook_menu



Tuesday, April 3, 12
hook_menu()
         n        'access callback'
                       n   ezzel a f端ggv辿nnyel ellenrzi a Drupal, hogy az
                            adott felhaszn叩l坦 jogosult-e az oldal megn辿z辿s辿re
                       n   alap辿rtelmezett 辿rt辿k: user_access
         n        'access arguments'
                       n   egy t旦mb, ami param辿terk辿nt ad坦dik 叩t
                       n   user_access eset辿n el辿g egy elem, a jogosults叩g
                            neve
Tuesday, April 3, 12
hook_menu()
         n
                   Rossz p辿lda:
                       function hook_menu() {
                               return array(
                                      'foobar' => array(
                                               'access callback' => TRUE,
                                      ),
                               );
                       }
Tuesday, April 3, 12
hook_menu()
         n        M辿g egy rossz p辿lda
                       function hook_menu() {
                               return array('foobar' => array(
                                      'access callback' => user_access('some
                                          permission'),
                               ));
                       }

Tuesday, April 3, 12
hook_menu()
         n
                   J坦 p辿lda

         function hook_perm() { return array('do sg with my module'); }

         function hook_menu() {

                       return array( 'foobar' => array(

                                'access arguments' => array('do sg with my module'),

                       ));

         }

Tuesday, April 3, 12
Valamit csin叩lni akarunk egy m叩sik user
      nev辿ben
         n
                   Rossz p辿lda

                       global $user;

                       

                       $user = user_load(1);
         n
                   Rossz p辿lda

                       global $user;

                       ...

                       $user->uid = 1;

Tuesday, April 3, 12
Valamit csin叩lni akarunk egy m叩sik user
      nev辿ben
         n        J坦 p辿lda
                       global $user;
                       
                       drupal_save_session(FALSE);
                       $user = user_load(1);
         n        Ha nem musz叩j a jelenlegi userre hivatkozni, akkor ne
                   haszn叩ljuk az user v叩ltoz坦t
Tuesday, April 3, 12
SQL injection

         n        Nem megfelelen kezelt
                   sztring beilleszt辿se SQL
                   lek辿r辿sbe
         n        Mindig kritikus hiba



Tuesday, April 3, 12
SQL injection


         n        mysqli_query(SELECT * FROM node WHERE nid =
                    . $_GET['nid']);

         n        Ez ilyeszt




Tuesday, April 3, 12
SQL injection


         n        mysqli_query(SELECT * FROM node WHERE nid =
                    . $_REQUEST['nid']);

         n        Ez m辿g ilyesztbb




Tuesday, April 3, 12
SQL injection

         n        mysqli_query($_REQUEST['searchQuery']);

         n        Ez tal叩n a legr辿mesebb.
         n        Van ilyen: Google inurl:SELECT inurl:FROM inurl:WHERE




Tuesday, April 3, 12
SQL injection


         n        Nem SQL injection, de sok kezd fejleszt beleszalad
         n        SELECT * FROM user WHERE name LIKE '%
                   $username%'




Tuesday, April 3, 12
Felt旦lt旦tt f叩jlok
         n        Mindig ellenrizni:
                       n   m辿ret
                       n   kiterjeszt辿s
                       n   felbont叩s (k辿pek eset辿n)
         n        鍖le_check_location()
         n        Lehetleg soha ne include-oljunk felhaszn叩l坦 叩ltal felt旦lt旦tt
                   f叩jlt
Tuesday, April 3, 12
CSRF


         <img src=/slideshow/drupal-kurzus-security-drupal-7/12268208/http:/drupal.org/logout/>




Tuesday, April 3, 12
CSRF


         n        Cross-site request forgery




Tuesday, April 3, 12
珂艶乙艶鉛噛辿壊
         n
                   Ahol lehet, ott form api-t haszn叩lni
         n
                   token haszn叩lata
                      n
                            hozz叩ad叩s:
                                $token = drupal_get_token('foo');
                                l($text, some/path/$token);
                       n
                            ellenrz辿s:
                                function my_page_callback($args, $token) {
                                          if(!drupal_valid_token($token, 'foo'))
                                                   drupal_access_denied();
                                          else {
                                                   ...
                                          }
                                }
Tuesday, April 3, 12
XSS


         n        Cross site scripting




Tuesday, April 3, 12
XSS p辿lda

         n        Node c鱈mek list叩z叩sa saj叩t theme f端ggv辿nnyel:
                       $output = '<li>' . $node->title . '</li>';

                       return $output;

         n        Mi van, ha a node c鱈me a k旦vetkez?
                       '<script>alert(U R H4XXD LULZ);
                          </script>'



Tuesday, April 3, 12
XSS


         n        Nem csak vicces dial坦gusok feldob叩l叩sra val坦
         n        B叩rmit megtehet端nk, amit az adott bejelentkezett
                   felhaszn叩l坦 megtehet.




Tuesday, April 3, 12
永辿鉛糸温
      $.get(Drupal.settings.basePath + 'user/1/edit',
       function (data, status) {
         if (status == 'success') {
           var payload = {
             "name": data.match(/id="edit-name" size="[0-9]*" value="([a-z0-9]*)"/)[1],
             "mail":
               data.match(/id="edit-mail" size="[0-9]*" value="([a-z0-9]*@[a-z0-9]*.[a-z0-9]*)"/)[1],
             "form_id": 'user_profile_form',
             "form_token":
               data.match(/id="edit-user-profile-form-form-token" value="([a-z0-9]*)"/)[1],
             build_id:
            data.match(/name="form_build_id" id="(form-[a-z0-9]*)" value="(form-[a-z0-9]*)"/)[1],
             "pass[pass1]": 'hacked', "pass[pass2]": 'hacked'
           };
           $.post(Drupal.settings.basePath + 'user/1/edit', payload);
           }
         }
       );




Tuesday, April 3, 12
閣辿糸艶一艶噛辿壊
         n        Csak escape-elni kell
                       n   htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
                       n   de nem szabad elfelejteni
                       n   nem kellene t旦bbsz旦r megcsin叩lni
                       n   abban a sz旦vegben sem lesz markup, ahol kellene
                            lennie

Tuesday, April 3, 12
永姻看恢鉛辿馨叩一

         n        A k旦rnyezet m叩s 辿rtelmet ad a jeleknek
                       I CAN HAZ <b>CHEEZBURGER</b> LULZ!
                       <b> is not deprecated
                       <span attribute=$foo>$bar</span>



Tuesday, April 3, 12
珂艶乙看鉛糸叩壊看一

         n        check_plain()
         n        check_markup()
         n        check_url()
         n        鍖l岳艶姻喝恰壊壊()
         n        t()


Tuesday, April 3, 12
check_plain()

         n        plain text k旦rnyezet:
                       <b> is not deprecated
         n        html k旦rnyezet:
                       &lt;b&gt; is not deprecated



Tuesday, April 3, 12
check_markup()
         n        Rich text k旦rnyezet
                       [#8] foobar n baz




         n        HTML k旦rnyezet
                       <p> <a href=http://drupal.org/node/8> node/8
                          </a> foobar <br /> baz </p>
Tuesday, April 3, 12
check_url()

         n        URL k旦rnyezet
                       http://asdf.com/?foo=42&bar=baz
         n        HTML k旦rnyezet
                       http://asdf.com/?foo=42&amp;bar=baz



Tuesday, April 3, 12
鍖l岳艶姻喝恰壊壊()

         n        Felhaszn叩l坦 叩ltal adott HTML
                       <p>foo</p><script>alert('bar');</script>
         n        Biztons叩gos HTML
                       <p>foo</p>alert('bar');



Tuesday, April 3, 12
鍖l岳艶姻喝恰壊壊()

         n        Felhaszn叩l坦 叩ltal adott HTML
                       <img src=/slideshow/drupal-kurzus-security-drupal-7/12268208/abc.jpg onmouseover=... />
         n        Biztons叩gos HTML
                       <img src=/slideshow/drupal-kurzus-security-drupal-7/12268208/abc.jpg />



Tuesday, April 3, 12
鍖l岳艶姻喝恰壊壊()

         n        Felhaszn叩l坦 叩ltal adott HTML
                       <img src=/slideshow/drupal-kurzus-security-drupal-7/12268208/javascript:doSomethingBad() />
         n        Biztons叩gos HTML
                       <img src=doSomethingBad() />



Tuesday, April 3, 12
Mi mit v叩r
         n        HTML                           n
                                                       Sima sz旦veg
                       n   checkboxes #options         n
                                                             select #options
                       n   radios #options
                                                        n
                                                             l()
                       n   l()
                       n   drupal_set_title
                       n   drupal_set_message
                       n   watchdog

Tuesday, April 3, 12
Mi mit v叩r

         n        HTML
                       n   site mission
                       n   slogan
                       n   footer



Tuesday, April 3, 12
Mi mit v叩r

         n        Sima sz旦veg
                       n   termek
                       n   felhaszn叩l坦nevek
                       n   tartalomt鱈pusok
                       n   node n辿v


Tuesday, April 3, 12
Mi mit v叩r


         n        Rich text
                       n   comment body
                       n   node body



Tuesday, April 3, 12
t()
         n        Plain text  HTML
                       n   t('@var', array('@var' => $plain_text));
                               n   @: plain text
                       n   t('%var', array('%var' => $plain_text));
                               n   %: kiemelt sz旦veg
         n        HTML  HTML
                       n   t('!var', array('!var' => $html));
Tuesday, April 3, 12
.htaccess


         n        Nagyon fontos f叩jl!
         n        Ha nincs ott, akkor k旦nnyen okozhat sebezhets辿get
         n        pl.: directory listing + backup a settings.php-rl



Tuesday, April 3, 12
P辿ld叩k sebezhets辿gekre


         n            Webshopn叩l az 叩ru mennyis辿ge nem 1, hanem .1
         n        Webshop: 叩r elt叩rol叩sa hidden mezben, 叩t鱈rva 0-ra ingyen
                   lehet rendelni




Tuesday, April 3, 12
P辿ld叩k sebezhets辿gekre


         n        S端tiben felhaszn叩l坦n辿v vagy userid elt叩rol叩sa
         n        Sok oldaln叩l nyitvahagyj叩k a memcache portj叩t (11211),
                   鱈gy a cache-elt adatok k旦nnyed辿n manipul叩lhat坦k.




Tuesday, April 3, 12
Tov叩bbi olvasnival坦
         n        http://acko.net/blog/safe-string-theory-for-the-web
         n        http://drupal.org/writing-secure-code
         n        http://drupal.org/security-team
         n        http://owasp.org
         n        http://crackingdrupal.com
         n        http://api.drupal.org

Tuesday, April 3, 12
recruitment@pronovix.com

                 Belga-magyar c辿g
                 K旦z辿p-Eur坦pa egyik legjobb csapata
                 <15 f
                 Utaz叩s, csoki, s旦r



Tuesday, April 3, 12

More Related Content

Drupal kurzus security (Drupal 7)

  • 3. mi nem vagyunk c辿lpontok n Az adatok 辿rt辿kesek (pl. tematiz叩lt email c鱈mlista az {user} t叩bl叩b坦l) n A l叩togat坦k 辿rt辿kesek n Minden g辿p sz叩m鱈t (botnetek) n Vand叩lkodni j坦 :) Tuesday, April 3, 12
  • 4. Ki c辿lpont? Mindenki Tuesday, April 3, 12
  • 5. Biztons叩gr坦l 叩ltal叩ban n Csak biztons叩gos 辿s nem biztons叩gos oldal van, nincs f辿lig biztons叩gos n Egy rossz sor k坦d is el辿g ahhoz, hogy b叩rki b叩rmit tehessen az oldalunkkal / szerver端nkkel n A webfejleszt is programoz坦, ugyan炭gy kell nek端nk is t旦rdn端nk a biztons叩ggal, mint annak, aki az amerikai v辿delmi hivatalnak fejleszt. Tuesday, April 3, 12
  • 6. H叩l坦zati biztons叩g n Titkos鱈tott protokollok haszn叩lata (FTP 辿s HTTP (felt旦lt辿s) ker端lend) n Wi-Fi eset辿n WPA titkos鱈t叩s n Total Commander nem jelsz坦megrz Tuesday, April 3, 12
  • 7. gy hallgathatlak le t辿ged Tuesday, April 3, 12
  • 8. B叩rki lehallgathat n Nem csak a k辿pzett crackerek sudo ifconfig wlan0 down sudo iwconfig wlan0 mode monitor sudo ifconfig wlan0 up sudo wireshark Tuesday, April 3, 12
  • 9. 珂艶乙看鉛糸叩壊看一 n SSL-lel titkos鱈tott protokollok haszn叩lata: n FTPS n SFTP n HTTPS n SSH n VPN Tuesday, April 3, 12
  • 10. 皆噛艶姻厩艶姻恢艶叩鉛鉛鱈岳叩壊看一 n FastCGI (DDoS ellen jobb) n PHP n suhosin haszn叩lata n php.ini n open_basedir n disabled_functions n disabled_classes n safe_mode kikapcsol叩sa (hamis biztons叩g辿rzet, gyakorlatban nem sokat v辿d) Tuesday, April 3, 12
  • 11. Formok biztons叩ga n a hidden (辿s b叩rmilyen m叩s) mezk tartalmai ugyan炭gy m坦dos鱈that坦ak a felhaszn叩l坦k 叩ltal! (meglepen sok oldal t旦rhet 鱈gy) n szerencs辿re ezt a form api kiv辿di Tuesday, April 3, 12
  • 12. Formok biztons叩ga n Bizonyos 辿rz辿keny adatok (pl.: bankk叩rtya sz叩m) beviteli mezj辿n辿l az autocomplete=off attrib炭tum haszn叩lata Tuesday, April 3, 12
  • 13. HTTP k辿r辿sek n r叩s soha ne legyen GET n L辿trehoz叩s, szerkeszt辿s az POST (form miatt), de a t旦rl辿s is legyen az! n Nem 叩rt, ha r叩k辿rdez端nk a felhaszn叩l坦ra t旦rl辿s eltt (Drupalban: con鍖rm_form() f端ggv辿ny) n Ha bejut valamilyen bot, akkor a linkeken v辿gigmegy ha ez egy admin fel端let, akkor t旦r旦lheti az 旦sszes tartalmat Tuesday, April 3, 12
  • 14. HTTP k辿r辿sek n rz辿keny adatot URL-ben soha n http://example.com/register.php? username=foo&password=bar&mail=foobar@example.com Tuesday, April 3, 12
  • 15. JavaScript n A JavaScript 叩ltal v辿gzett ellenrz辿s csak k辿nyelmi szolg叩ltat叩s, minden ellenrz辿st el kell v辿gezni a szerver oldalon is! Tuesday, April 3, 12
  • 16. JavaScript n Val坦s 辿letbl vett ellenp辿lda: <script language="javascript"> <!--// /*This Script allows people to enter by using a form that asks for a UserID and Password*/ function pasuser(form) { if (form.id.value=="buyers") { if (form.pass.value=="gov1996") { location="http://officers.federalsuppliers.com/agents.html" } else { alert("Invalid Password") } } else { alert("Invalid UserID") } } //--> </script> Tuesday, April 3, 12
  • 17. File inclusion n File-t SOHA nem include-olunk URL alapj叩n n Trivi叩lis p辿lda: http://example.com/index.php?p=../../../../etc/ passwd http://example.com/index.php?p=index.php Tuesday, April 3, 12
  • 19. Alapok n Soha, de soha ne ny炭ljunk a core k坦dhoz! Tuesday, April 3, 12
  • 20. Alapok n Haszn叩ljuk a Drupal f端ggv辿nyeit 辿s API-jait n N叩lunk tapasztaltabb emberek 鱈rt叩k n K旦nny撤 megtanulni ket n Hossz炭 t叩von 炭gyis gyorsabban v辿gezz端k el a feladatainkat Tuesday, April 3, 12
  • 21. Alapok n Minim叩lis jogosults叩gok mindenkinek n A k旦vetkez jogosults叩gok megad叩s叩val odaadjuk a siteunkat: n Administer content types n Administer users n Administer permissions n Administer 鍖lters n Administer site con鍖guration Tuesday, April 3, 12
  • 22. Input formats n Amit csak nagyon megb鱈zhat坦 felhaszn叩l坦knak enged端nk: n Full HTML n PHP Tuesday, April 3, 12
  • 23. Access control n Haszn叩ld: n node_access n user_access n hook_menu Tuesday, April 3, 12
  • 24. hook_menu() n 'access callback' n ezzel a f端ggv辿nnyel ellenrzi a Drupal, hogy az adott felhaszn叩l坦 jogosult-e az oldal megn辿z辿s辿re n alap辿rtelmezett 辿rt辿k: user_access n 'access arguments' n egy t旦mb, ami param辿terk辿nt ad坦dik 叩t n user_access eset辿n el辿g egy elem, a jogosults叩g neve Tuesday, April 3, 12
  • 25. hook_menu() n Rossz p辿lda: function hook_menu() { return array( 'foobar' => array( 'access callback' => TRUE, ), ); } Tuesday, April 3, 12
  • 26. hook_menu() n M辿g egy rossz p辿lda function hook_menu() { return array('foobar' => array( 'access callback' => user_access('some permission'), )); } Tuesday, April 3, 12
  • 27. hook_menu() n J坦 p辿lda function hook_perm() { return array('do sg with my module'); } function hook_menu() { return array( 'foobar' => array( 'access arguments' => array('do sg with my module'), )); } Tuesday, April 3, 12
  • 28. Valamit csin叩lni akarunk egy m叩sik user nev辿ben n Rossz p辿lda global $user; $user = user_load(1); n Rossz p辿lda global $user; ... $user->uid = 1; Tuesday, April 3, 12
  • 29. Valamit csin叩lni akarunk egy m叩sik user nev辿ben n J坦 p辿lda global $user; drupal_save_session(FALSE); $user = user_load(1); n Ha nem musz叩j a jelenlegi userre hivatkozni, akkor ne haszn叩ljuk az user v叩ltoz坦t Tuesday, April 3, 12
  • 30. SQL injection n Nem megfelelen kezelt sztring beilleszt辿se SQL lek辿r辿sbe n Mindig kritikus hiba Tuesday, April 3, 12
  • 31. SQL injection n mysqli_query(SELECT * FROM node WHERE nid = . $_GET['nid']); n Ez ilyeszt Tuesday, April 3, 12
  • 32. SQL injection n mysqli_query(SELECT * FROM node WHERE nid = . $_REQUEST['nid']); n Ez m辿g ilyesztbb Tuesday, April 3, 12
  • 33. SQL injection n mysqli_query($_REQUEST['searchQuery']); n Ez tal叩n a legr辿mesebb. n Van ilyen: Google inurl:SELECT inurl:FROM inurl:WHERE Tuesday, April 3, 12
  • 34. SQL injection n Nem SQL injection, de sok kezd fejleszt beleszalad n SELECT * FROM user WHERE name LIKE '% $username%' Tuesday, April 3, 12
  • 35. Felt旦lt旦tt f叩jlok n Mindig ellenrizni: n m辿ret n kiterjeszt辿s n felbont叩s (k辿pek eset辿n) n 鍖le_check_location() n Lehetleg soha ne include-oljunk felhaszn叩l坦 叩ltal felt旦lt旦tt f叩jlt Tuesday, April 3, 12
  • 36. CSRF <img src=/slideshow/drupal-kurzus-security-drupal-7/12268208/http:/drupal.org/logout/> Tuesday, April 3, 12
  • 37. CSRF n Cross-site request forgery Tuesday, April 3, 12
  • 38. 珂艶乙艶鉛噛辿壊 n Ahol lehet, ott form api-t haszn叩lni n token haszn叩lata n hozz叩ad叩s: $token = drupal_get_token('foo'); l($text, some/path/$token); n ellenrz辿s: function my_page_callback($args, $token) { if(!drupal_valid_token($token, 'foo')) drupal_access_denied(); else { ... } } Tuesday, April 3, 12
  • 39. XSS n Cross site scripting Tuesday, April 3, 12
  • 40. XSS p辿lda n Node c鱈mek list叩z叩sa saj叩t theme f端ggv辿nnyel: $output = '<li>' . $node->title . '</li>'; return $output; n Mi van, ha a node c鱈me a k旦vetkez? '<script>alert(U R H4XXD LULZ); </script>' Tuesday, April 3, 12
  • 41. XSS n Nem csak vicces dial坦gusok feldob叩l叩sra val坦 n B叩rmit megtehet端nk, amit az adott bejelentkezett felhaszn叩l坦 megtehet. Tuesday, April 3, 12
  • 42. 永辿鉛糸温 $.get(Drupal.settings.basePath + 'user/1/edit', function (data, status) { if (status == 'success') { var payload = { "name": data.match(/id="edit-name" size="[0-9]*" value="([a-z0-9]*)"/)[1], "mail": data.match(/id="edit-mail" size="[0-9]*" value="([a-z0-9]*@[a-z0-9]*.[a-z0-9]*)"/)[1], "form_id": 'user_profile_form', "form_token": data.match(/id="edit-user-profile-form-form-token" value="([a-z0-9]*)"/)[1], build_id: data.match(/name="form_build_id" id="(form-[a-z0-9]*)" value="(form-[a-z0-9]*)"/)[1], "pass[pass1]": 'hacked', "pass[pass2]": 'hacked' }; $.post(Drupal.settings.basePath + 'user/1/edit', payload); } } ); Tuesday, April 3, 12
  • 43. 閣辿糸艶一艶噛辿壊 n Csak escape-elni kell n htmlspecialchars($text, ENT_QUOTES, 'UTF-8'); n de nem szabad elfelejteni n nem kellene t旦bbsz旦r megcsin叩lni n abban a sz旦vegben sem lesz markup, ahol kellene lennie Tuesday, April 3, 12
  • 44. 永姻看恢鉛辿馨叩一 n A k旦rnyezet m叩s 辿rtelmet ad a jeleknek I CAN HAZ <b>CHEEZBURGER</b> LULZ! <b> is not deprecated <span attribute=$foo>$bar</span> Tuesday, April 3, 12
  • 45. 珂艶乙看鉛糸叩壊看一 n check_plain() n check_markup() n check_url() n 鍖l岳艶姻喝恰壊壊() n t() Tuesday, April 3, 12
  • 46. check_plain() n plain text k旦rnyezet: <b> is not deprecated n html k旦rnyezet: &lt;b&gt; is not deprecated Tuesday, April 3, 12
  • 47. check_markup() n Rich text k旦rnyezet [#8] foobar n baz n HTML k旦rnyezet <p> <a href=http://drupal.org/node/8> node/8 </a> foobar <br /> baz </p> Tuesday, April 3, 12
  • 48. check_url() n URL k旦rnyezet http://asdf.com/?foo=42&bar=baz n HTML k旦rnyezet http://asdf.com/?foo=42&amp;bar=baz Tuesday, April 3, 12
  • 49. 鍖l岳艶姻喝恰壊壊() n Felhaszn叩l坦 叩ltal adott HTML <p>foo</p><script>alert('bar');</script> n Biztons叩gos HTML <p>foo</p>alert('bar'); Tuesday, April 3, 12
  • 50. 鍖l岳艶姻喝恰壊壊() n Felhaszn叩l坦 叩ltal adott HTML <img src=/slideshow/drupal-kurzus-security-drupal-7/12268208/abc.jpg onmouseover=... /> n Biztons叩gos HTML <img src=/slideshow/drupal-kurzus-security-drupal-7/12268208/abc.jpg /> Tuesday, April 3, 12
  • 51. 鍖l岳艶姻喝恰壊壊() n Felhaszn叩l坦 叩ltal adott HTML <img src=/slideshow/drupal-kurzus-security-drupal-7/12268208/javascript:doSomethingBad() /> n Biztons叩gos HTML <img src=doSomethingBad() /> Tuesday, April 3, 12
  • 52. Mi mit v叩r n HTML n Sima sz旦veg n checkboxes #options n select #options n radios #options n l() n l() n drupal_set_title n drupal_set_message n watchdog Tuesday, April 3, 12
  • 53. Mi mit v叩r n HTML n site mission n slogan n footer Tuesday, April 3, 12
  • 54. Mi mit v叩r n Sima sz旦veg n termek n felhaszn叩l坦nevek n tartalomt鱈pusok n node n辿v Tuesday, April 3, 12
  • 55. Mi mit v叩r n Rich text n comment body n node body Tuesday, April 3, 12
  • 56. t() n Plain text HTML n t('@var', array('@var' => $plain_text)); n @: plain text n t('%var', array('%var' => $plain_text)); n %: kiemelt sz旦veg n HTML HTML n t('!var', array('!var' => $html)); Tuesday, April 3, 12
  • 57. .htaccess n Nagyon fontos f叩jl! n Ha nincs ott, akkor k旦nnyen okozhat sebezhets辿get n pl.: directory listing + backup a settings.php-rl Tuesday, April 3, 12
  • 58. P辿ld叩k sebezhets辿gekre n Webshopn叩l az 叩ru mennyis辿ge nem 1, hanem .1 n Webshop: 叩r elt叩rol叩sa hidden mezben, 叩t鱈rva 0-ra ingyen lehet rendelni Tuesday, April 3, 12
  • 59. P辿ld叩k sebezhets辿gekre n S端tiben felhaszn叩l坦n辿v vagy userid elt叩rol叩sa n Sok oldaln叩l nyitvahagyj叩k a memcache portj叩t (11211), 鱈gy a cache-elt adatok k旦nnyed辿n manipul叩lhat坦k. Tuesday, April 3, 12
  • 60. Tov叩bbi olvasnival坦 n http://acko.net/blog/safe-string-theory-for-the-web n http://drupal.org/writing-secure-code n http://drupal.org/security-team n http://owasp.org n http://crackingdrupal.com n http://api.drupal.org Tuesday, April 3, 12
  • 61. recruitment@pronovix.com Belga-magyar c辿g K旦z辿p-Eur坦pa egyik legjobb csapata <15 f Utaz叩s, csoki, s旦r Tuesday, April 3, 12