1. Përshëndetje dhe mirësevini në forumin e Itshqip.com
    Nëse akoma nuk jeni pjesë e IT komunitetit më të madhë Shqiptarë nga fusha e Teknologjisë Informative, ju ftojmë që të bëheni pjesë e këtij komuniteti që tani duke u regjistruar këtu - procedura është shumë e thjeshtë dhe e lehtë. Gjithashtu ju mund të regjistroheni edhe përmes rrjetit social Facebook, Twitter, Google+.

Shmangja e Problemeve te Sigurise nga Symlink

Tema tek 'Siguria në Ueb' e hapur nga Selim Baruti, 20 Korrik 2014.

  1. Selim Baruti

    Selim Baruti Anëtar me Përvoj

    Postimet:
    1,375
    Pëlqimet:
    257
    Pikë nga trofetë:
    128
    Symlinks janë në sistemet UNIX, ekuivalente me shortcuts në Windows. Kjo guidë do ju tregojë një teknikë të thjeshtë dhe të aksesueshme nga kushdo për të mbrojtur serverat shared nga problemet e sigurisë që Symlinks krijojnë.

    Çfarë është një Symlink?

    Symlink (Symbolic Link ose Soft Link) është një tip i veçantë skedari që përmban lidhje me një skedar tjetër në sistemet UNIX dhe çdo derivat të tij. Praktikisht mund ta konsideroni si shortcuts në sistemet Windows.

    Nëse do doja të krijoja një Symlink të skedarit “/home/feniksi/skedari.php” në skedarin “/home/luani/feniksi.php”, do shkruaja një komandë si më poshtë:


    Code:
    ln -s /home/feniksi/skedari.php /home/luani/feniksi.php
    Komanda “ln”, nëse thërritet pa parametrin “-s”, krijon Hard Links, të cilat janë të ndryshëm në koncept nga Symlinks. Duke shtuar parametrin “-s”, linku i krijuar është Symlink. Në rastin më sipër, kam krijuar një Symlink për “skedari.php” të quajtur “feniksi.php”.

    Një Symlink referencon direkt skedarin origjinal, qoftë në egzekutim apo lexim. Kjo e fundit, pra leximi i skedarëve origjinalë duke krijuar Symlinks, është edhe tema e kësaj guide.

    Siguria lidhur me Symlinks

    Problemi nga të cilët vuajnë serverat shared është se i lejojnë sulmuesëve të krijonë Symlinks që referencojnë skedarë që nuk u përkasin. Nëse këto skedarë janë opsione konfigurimi të viktimave, që përmbajnë të dhënat e databazës apo fjalëkalimin e administratorit, teknika bëhet vërtetë e rrezikshme. Serveri Web më popullor në planet, Apache, e ka të aktivizuar automatikisht opsionin “FollowSymlinks”, gjë që e bën vulnerabël.

    Le të shohim një skenar se si sulmuesi mund të përdorë Symlinks për të marrë të dhëna sensitive nga viktima.

    1. Sulmuesi ngarkon “php shell” tek llogaria e tij në server ose mund të ketë akses direkt në shell, për të egzekutuar komanda.
    2. Krijon një Symlink të skedarit të konfigurimit të viktimës.
    3. E lexon atë skedar dhe merr të dhënat e konfigurimit.
    Duke mbetur në skenarin më sipër, sulmuesi mund të egzekutonte një komandë të tillë:


    Code:
    ln -s /home/viktima/public_html/konfigurimi.php /home/sulmuasi/public_html/newfolder/konfigurimi.php
    Skedari “konfigurimi.php” i viktimës mund të ketë të dhënat e databazës së viktimës, gjë që ja bën shumë të lehtë punën sulmuesit. I mjafton të ngarkojë një aplikacion PHP që menaxhon databazat MySQL dhe të vendosë të dhënat e marra nga viktima. Automatikisht ka akses të bëjë gjithçka me atë databazë, qoftë ta manipulojë apo ta fshijë.

    Edhe nëse FollowSymlinks nuk është e aktivizuar në Apache, sulmuesi mund ta aktivizojë me .htaccess duke vendosur +FollowSymlinks. Gjithashtu mund të bëjë që skedarët PHP të lexohen si tekst, duke shtuar AddHandler dhe AddType respektive, përsëri në .htaccess.


    Code:
    +FollowSymlinks
    
    
    AddHandler txt .php
    
    AddType txt .php
    Si të mbroheni nga Symlinks

    Metoda që do ju tregoj funksionon për pjesën më të madhe të rasteve dhe do ju sigurojë që Symlinks mos të abuzohen nga njerëz me qëllime përfitimi. Duke qenë se ka pasur shumë sulme të tilla, sidomos kohët e fundit me përhapjen e teknikës, ju këshilloj të merrni masa të menjëhershme. Më poshtë do ju tregoj 2 teknika, ose më mirë 2 raste në bazë të nivelit të aksesit që keni në server: Administrator ose Klient i një serveri shared.

    Administratorët

    Nëse jeni administrator i serverit, mund të shmangni problemet duke konfiguruar Apache-n që të mos lejojë mbivendosjen e opsionit FollowSymlinks. Konfigurimi është fare i thjeshtë dhe mund ta bëjë kushdo.

    Fillimisht gjeni vendodhjen e skedarit të konfigurimit të Apache: httpd.conf. Kjo varet nga mënyra e instalimit. Psh, mund të jetë tek: /usr/local/apache/conf/httpd.conf.

    Hapeni skedarin “httpd.conf” me një editor dhe gjeni rreshtin:

    Code:
    <Directory "/">
    
      Options ExecCGI -FollowSymLinks Includes IncludesNOEXEC Indexes MultiViews SymLinksIfOwnerMatch
    
      AllowOverride All
    
    </Directory>


    Direktiva “AllowOverride All” do të thotë se Apache i lejon të mbivendosen lokalisht opsionet përmes .htaccess. Kjo s’na intereson, sepse i lejon sulmuesëve të mbivendosin opsionin FollowSymlinks dhe të përfitojnë nga Symlinks. Do përcaktoj një listë të vetëm atyre opsioneve që na interesojnë të mbivendosen, duke i bllokuar të tjerat.

    Tek “AllowOverride All” ndryshojeni në “AllowOverride AuthConfig FileInfo Indexes Limit Options=Includes,Indexes,MultiViews”. Duhet të duket si më poshtë:

    Code:
    <Directory "/">
    1">  Options ExecCGI -FollowSymLinks Includes IncludesNOEXEC Indexes MultiViews SymLinksIfOwnerMatch
    1">  AllowOverride AuthConfig FileInfo Indexes Limit Options=Includes,Indexes,MultiViews
    </Directory>
    Pasi ta keni bërë ndryshimin dhe ta keni ruajtur skedarin, bëni restart Apache-n. Zakonisht mjafton të shkruani komandën më poshtë, por kjo varet nga distro e Linux dhe mënyra e instalimit.


    Code:
    service httpd restart
    Në këtë moment e keni siguruar serverin tuaj nga problemet e sigurisë që Symlinks krijojnë. Nëse një sulmues do tentojë të aktivizojë opsionin FollowSymlinks, në atë direktori do të shfaqet “Internal Server Error”. Një ndryshim shumë i vogël, por me rëndësi të madhe për të ruajtur integritetin të dhënave në serverin tuaj.

    Nëse përdorni opsionet automatike të WHM, në shumë raste ai e rindërton konfigurimin e Apache. Sigurohuni të kontrolloni nëse AllowOverride është kthyer në “All”, apo ka mbetur si ç’e shkruajta më lart.

    Klientët
    Klientët normalisht nuk kanë akses në opsionet e konfigurimit të Apache, kështu që alternativat janë më të pakta. Por, për fat të mirë, pjesa më e madhe e serverave shared lejojnë krijimin e skedarëve .htaccess për të mbivendosur konfigurimet bazë të Apache.

    Fillimisht krijoni një skedar me emër “.htaccess” (pika është e rëndësishme) në direktorinë ku ndodhet skedari i konfigurimit. Më pas, hapeni me një editor dhe vendosni kodin më poshtë:

    Code:
    <Files "konfigurimi.php">
    Order Deny,Allow
    Deny from All
    </Files>
    Kjo i bllokon të gjitha tentativat për të aksesuar skedarin, qoftë nga interneti apo përmes Symlinks. Emri “konfigurimi.php” është thjeshtë si shembull dhe normalisht do duhet ta ndërroni me emrin e skedarit tuaj të konfigurimit. Gjithashtu, do ju duhet të bëni të njëjtin veprim për çdo skedar që përmban të dhëna kritike.

    Siguroni skriptet PHP nga funksionet e rrezikshme
    Me zgjidhjen e problemeve nga Symlinks, ju mbetet edhe një gjë tjetër po aq e thjeshtë që i përket vetëm administratorëve të serverave. Bëhet fjalë për bllokimin e disa funksioneve të rrezikshme të PHP që mund të përdoren nga sulmuesit për të kryer dëme.

    Gjeni skedarin e konfigurimit të PHP-së, php.ini, dhe hapeni me një editor. Bëni ndryshimet në direktivat e shënuara më poshtë:

    Code:
    cgi.force_redirect = 0;
    cgi.fix_pathinfo = 0;
    cgi.discard_path = 1;
    disable_functions = disk_total_space, diskfreespace, apache_note, apache_setenv, closelog, debugger_off, debugger_on, define_syslog_variables, escapeshellarg, escapeshellcmd, ini_restore, openlog, passthru, pclose, pcntl_exec, popen, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, syslog, system, url_exec, base64_encodem, readlink, eval, glob, root, symlink;
    Gjithashtu, për të mos lejuar që klientët të përdorin php.ini individuale dhe për të mos lejuar që klientët ti ndryshojnë ose ti fshijnë funksionet e rrezikshme në “disable_functions”, mjafton të ndryshoni konfigurimin e suPHP, i cili ndodhet në: /opt/suphp/etc/suphp.conf.

    Hapeni atë skedar dhe gjeni rreshtat më poshtë:

    Code:
    [phprc_paths]
     
    
    ;Uncommenting these will force all requests to that handler to use the php.ini
    ;in the specified directory regardless of suPHP_ConfigPath settings.
    ;application/x-httpd-php=/usr/local/lib/
    ;application/x-httpd-php4=/usr/local/php4/lib/
    ;application/x-httpd-php5=/usr/local/lib/

    Ndryshojini në:

    Code:
    [phprc_paths]
     
    
    ;Uncommenting these will force all requests to that handler to use the php.ini
    ;in the specified directory regardless of suPHP_ConfigPath settings.
    application/x-httpd-php=/usr/local/lib/
    application/x-httpd-php4=/usr/local/php4/lib/
    application/x-httpd-php5=/usr/local/lib/
    Në fakt thjeshtë kam hequr komentet, dmth pikë-presjet “;” nga çdo direktivë. Do ju duhet të bëni restart edhe një herë Apache-t dhe në fund të çaktivizoni Safe Mode në php.ini.

    1

    Code:
    safe_mode = Off
    Si ekstra, do ju sugjeroja të çaktivizoni disa komanda për klientë dhe ti lini vetëm për administratorin. Këtë mund ta bëni përmes SSH (Secure Shell), duke shkruar rreshtat më poshtë:

    Code:
    chmod 0700 /bin/ln
    
    chmod 0700 /bin/su
    
    chmod 0700 /bin/cat
    
    chmod 0700 /bin/pwd
    
    chmod 0700 /bin/kill
    
    chmod 0700 /bin/doexec
    
    chmod 0700 /bin/link
    
    chmod 0700 /bin/chmod
    
    chmod 0700 /bin/netstat
    
    chmod 0500 /bin/ps
    
    chmod 0700 /bin/df
    
    chmod 0700 /usr/bin/lynx
    
    chmod 0700 /usr/bin/gcc
    
    chmod 0700 /usr/bin/nc
    
    chmod 0700 /usr/bin/wget
    
    chmod 0700 /usr/bin/scp
    
    chmod 0700 /usr/bin/cvs
    
    chmod 0700 /usr/bin/telnet
    
    chmod 0700 /usr/bin/symlinks
    
    chmod 0500 /usr/bin/w
    
    chmod 0500 /usr/bin/who
    
    chmod 0500 /usr/bin/free
    
    chmod 0500 /usr/bin/vmstat
    
    chmod 0700 /usr/bin/ld
    
    chmod 0700 /usr/bin/tail
    
    chmod 0700 /usr/bin/tailf
    
    chmod 0700 /usr/bin/du
    
    chmod 0700 /usr/bin/find
    
    chmod 0700 /usr/bin/whoami
    
    chmod 0700 /usr/bin/ld86
    
    chmod 0700 /usr/bin/ldd
    
    
    
    chmod 0700 /usr/lib/gcc
    
    chmod 0700 /usr/lib/gcc-lib
    
    
    chmod 700 /usr/bin/perlcc
    
    chmod 700 /usr/bin/byacc
    
    chmod 700 /usr/bin/yacc
    
    chmod 700 /usr/bin/bcc
    
    chmod 700 /usr/bin/kgcc
    
    chmod 700 /usr/bin/cc
    
    chmod 700 /usr/bin/gcc
    
    chmod 700 /usr/bin/i386*cc
    
    chmod 700 /usr/bin/*c++
    
    chmod 700 /usr/bin/*g++
    
    chmod 700 /usr/lib/bcc /usr/lib/bcc/bcc-cc1
    
    chmod 700 /usr/i386-glibc21-linux/lib/gcc-lib/i386-redhat-linux/2.96/cc1

    Përfundimi
    Me vetëm disa ndryshime të thjeshta konfigurimi, siguruam që serverat shared të mos vuajnë nga problemet që sjellin Symlinks. Qofshit Administratorë apo thjeshtë Klientë të një serveri, hapat e mësipërm mund të ndiqen nga kushdo, me çdo nivel eksperience në Linux dhe menaxhim serverash web. Më e rëndësishmja është që bllokoni një sulm shumë të përhapur që mund ti rrezikojë shumë të dhënat tuaja personale.





     
  2. DarKr0x

    DarKr0x Anëtar Legjendë

    Postimet:
    3,453
    Pëlqimet:
    1,081
    Pikë nga trofetë:
    358
    Flm qe e shperndave po nese je ne nje kompani prestigjoze si NameCheap,GoDaddy etj ske mundesi as ti besh upload shellit.E provova vete para 2 ditesh serveri e fshinte shellin.Dhe nese i ben upload symlinkut nuk ke akses.
     
  3. Bahtir

    Bahtir Anëtar

    Postimet:
    15
    Pëlqimet:
    0
    Pikë nga trofetë:
    3
    Normal qe Godaddy ka siguri por sigurisht ke shti ndonje shell qe eshte leht i detektueshem.
     
  4. boom3rang

    boom3rang Ninja Staff Member Administrator

    Postimet:
    4,481
    Pëlqimet:
    2,073
    Pikë nga trofetë:
    448
    Shum e vertet. Sot egzistojne skripta(shella) qe nuk mund te detektohen lehte, dhe funksionojn neper gjith serverat. Pastaj se fundmi kane dale disa menyra per te anashkaluar sigurine permes symlinks ne disa nga kompanite me prestigjioze te hostimit.
     
  5. Bahtir

    Bahtir Anëtar

    Postimet:
    15
    Pëlqimet:
    0
    Pikë nga trofetë:
    3
    Po eshte e vertete qe SymLink eshte bo problem kohve te fundit dhe hackeret me nje webfaqe po e kapin krejt serverin me do komanda te thjeshta siq eshte : ln -s /root/ dhe hapet folderi root dhe ki qasje me lexu qdo webfaqe qe ndodhet ne ate server , me se shumti sulmohen wordpress psh: ln -s /home/example/public_html/wp-config.php 1.txt dhe dalin konfigurimet e wordpressit tu e perfshi emrin e db po edhe username edhe pw edhe shum leht tash e ndron passin e administratorit edhe hin ne webfaqe si administrator por sulmohen edhe joomlat e cila i ka konfigurimet te configuration.php.Osht ky problem i madh edhe duhet mu evitu nga serveri qe permban gov.al sepse dje ndodhi qe nje grup hackeresh AnonGhost e boni symlink krejt serverin me 92 gov.al
     
  6. Bahtir

    Bahtir Anëtar

    Postimet:
    15
    Pëlqimet:
    0
    Pikë nga trofetë:
    3
    Po pershembull nje filemanager i thjeshte qe e krijon nuk osht i detektueshem ndersa shellat qe permbajne shum funksione edhe jon te njohshme per serverin normal qe detektohen siq jan pershembull wso e c99.
     
  7. DarKr0x

    DarKr0x Anëtar Legjendë

    Postimet:
    3,453
    Pëlqimet:
    1,081
    Pikë nga trofetë:
    358
    Jane bere aq te dallueshem sa tani fshihen automatikisht direkt nga serveri :)
     

Shpërndaje faqen

Loading...