window._wpemojiSettings={baseUrl:"https://s.w.org/images/core/emoji/15.0.3/72x72/",ext:".png",svgUrl:"https://s.w.org/images/core/emoji/15.0.3/svg/",svgExt:".svg",source:{concatemoji:"https://cdn1.fikridal.com/wp-includes/js/wp-emoji-release.min.js?ver=6.5.3"}},function(e,t){var n,r,a;function o(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(n,JSON.stringify(t))}catch(e){}}function i(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);var r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every((function(e,t){return e===r[t]}))}function s(e,t,n){switch(t){case"flag":return!n(e,"🏳️‍⚧️","🏳️​⚧️")&&(!n(e,"🇺🇳","🇺​🇳")&&!n(e,"🏴󠁧󠁢󠁥󠁮󠁧󠁿","🏴​󠁧​󠁢​󠁥​󠁮​󠁧​󠁿"));case"emoji":return!n(e,"🐦‍⬛","🐦​⬛")}return!1}function c(t,n,r){var a=("undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):e.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return t.forEach((function(e){o[e]=n(a,e,r)})),o}function p(t){var n=e.createElement("script");n.src=t,n.defer=!0,e.head.appendChild(n)}"undefined"!=typeof Promise&&(n="wpEmojiSettingsSupports",r=["flag","emoji"],t.supports={everything:!0,everythingExceptFlag:!0},a=new Promise((function(t){e.addEventListener("DOMContentLoaded",t,{once:!0})})),new Promise((function(e){var t=function(){try{var e=JSON.parse(sessionStorage.getItem(n));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf() var colibriData={"578-h2":{data:{sticky:{className:"h-navigation_sticky animated",topSpacing:0,top:0,stickyOnMobile:!0,stickyOnTablet:!0,startAfterNode:{enabled:!1,selector:".header, .page-header"},animations:{enabled:!1,currentInAnimationClass:"slideInDown",currentOutAnimationClass:"slideOutDownNavigation",allInAnimationsClasses:"slideInDown fadeIn h-global-transition-disable",allOutAnimationsClasses:"slideOutDownNavigation fadeOut h-global-transition-disable",duration:500}},overlap:!0}},"578-h9":{data:{type:"horizontal"}},"578-h12":{data:[]},"596-s5":{data:{componentsWithEffects:[]}}};
/(trident|msie)/i.test(navigator.userAgent)&&document.getElementById&&window.addEventListener&&window.addEventListener("hashchange",(function(){var t,e=location.hash.substring(1);/^[A-z0-9_-]+$/.test(e)&&(t=document.getElementById(e))&&(/^(?:a|select|input|button|textarea)$/i.test(t.tagName)||(t.tabIndex=-1),t.focus())}),!1); document.querySelector('.skip-link[href="#content"]').addEventListener("click",(function(){var t=document.querySelector("#content #blog-posts, #content .colibri-single-post-loop"),e=document.querySelector('[data-colibri-component="navigation"]');if(t){var i=t.getBoundingClientRect().top;if(e&&!window.colibriNavStickyOpts){var o=e.getBoundingClientRect();i-=o.height}setTimeout((function(){window.scrollTo(0,i)}),0)}else if(e&&!window.colibriNavStickyOpts){var n=-1*(o=e.getBoundingClientRect()).height;setTimeout((function(){window.scrollBy(0,n)}),0)}})); !function(){NodeList.prototype.forEach||(NodeList.prototype.forEach=function(t){for(var o=0;o

PhpShell vb. zararlı php dosyaları her zaman var oldular ve varlıklarıda doğru düzgün çözüm yollarını anlatan bir makale olmamasından dolayı sürekli artıyor. Bu dökümanda PHPShell tarzı scriptlerden, Php yolu ile hacklenmekten veyahut dosyalarınızın zarar görmesi ya da çalınmasından büyük ölçüde kurtulacaksınız. Lütfen makalede yazan çözümleri sırasıyla uygulayınız. Aksi takdirde çözümler yetersiz kalabilir.

Phpshell Nedir?

PhpShell; php’ nin execute yetkilerini kullanarak, sunucuya sanki SSH yolu ile bağlanmışız gibi shell erişimi sağlayan bir hazır korsan scriptidir. Birçok internet sitesinde linki mevcuttur ve yapılması gereken hiçbir ayarı yoktur. Yani dosyayı bulup webserverınıza upload edip herhangi bir browser yoluyla çalıştırıp ( eğer aşağıda yazılan önlemler alınmamış ise) serverda doyasıya gezebilir ve herkesin dosyalarına erişebilirsiniz. Tabi sadece sizden başka kullanıcıların dosyalarına erişmekten bahsetmiyorum root userı dahil herkesten ve her dosyadan bahsediyorum. Phpshell scripti çalıştırıldığında Apache programına ait kullanıcı hakları ile çalışır. Bu yüzden birçok yere girip çıkma hakkı mevcuttur.

Kaynaklar

İnternetteki kaynaklara baktığımız zaman hemen hiçbirinin tam anlamıyla bir çözüm olamadığını bu makaleyi okuyan herkes bilir. Biraz yaratıcılık biraz şans biraz tecrübe ile bu bilgilerin hepsini bir araya getirdim ve kendim bizzat deneyerek çözüm olduğunu gördüm.

Bu makale Php4 ve üzeri php versiyonları ve apache web serverı için geçerlidir.

Sistem

Kendi test ettiğim sistemde Apache ve Php linux dağıtımın en temel şekliyle kuruldu. Yani kullandığınız işletim sistemi Redhat, Fedora, Centos ise yum ile kurabilirsiniz, debian ise apt ile kurabilirsiniz….

Yapılması Gereken İşlemler; 

Adım-1. php.ini dosyasını herhangi bir text editörü ile açın.

Örneğin; pico php.ini  ya da vi php.ini

Safe_Mod=Off

satırını bulun ve aşağıdaki şekilde değiştirin

safe_mod=On

;disable_function =

satırını bulun ve aşağıdaki şekilde değiştirin

disable_functions = “system,exec,shell_exec,passthru,escapeshellcmd,popen,pcntl_exec,proc_open”

;open_basedir =

satırını bulun ve aşağıdaki şekilde değiştirin

open_basedir = /var/www/vhosts:/tmp

burada dikkat etmeniz gereken benim tüm domain lerim /var/www/vhosts dizini altında sizinkiler farklı bir dizinde olabilir. Doğru pathi girmeniz gerekiyor.

Burada amaçlanan ikinci bir güvenlik önlemidir. Az sonra göreceğiniz üzere basedir olayını domain başına indirgeyeceğiz. Ama fazla güvenlik sorun çıkartmaz 😉

Adım-2. httpd.conf (ya da domainleri apacheye hangi dosyada ekliyorsanız o dosya) dosyasını herhangi bir metin editörü ile açın.

<VirtualHost 212.175.22.98:80>
 ServerAdmin info@dinopsys.net
 ServerName www.dinopsys.net
 DocumentRoot /var/www/vhosts/www.dinopsys.net/
 TransferLog /var/www/vhosts/logs/www.dinopsys.net-access_log
</VirtualHost>

 şeklinde domainlerinizin ekli olduğunu göreceksiniz. Şimdi her bir domain için tek tek ayar yapalım.

 <VirtualHost 212.175.22.98:80>
 ServerAdmin info@dinopsys.net
 ServerName www.dinopsys.net
 DocumentRoot /var/www/vhosts/www.dinopsys.net/
 TransferLog /var/www/vhosts/logs/www.dinopsys.net-access_log
      <IfModule mod_php4.c>
                php_admin_flag engine on
                php_admin_flag safe_mode on
      php_admin_value open_basedir “/var/www/vhosts/www.dinopsys.net:/tmp”
        </IfModule>

</VirtualHost>

şeklinde gerekli eklemeleri yapın. Şimdi buraya biraz açıklık getirelim. Öncelikle şunu görüyoruz her domain için ayrı php ayarları yapabiliyoruz. Yani Safe_mod genelde açıkken burda kapatabiliriz. Yaşasın teknoloji. Ayrıca php yi domainin içine hapis ediyoruz. Ne güzel..

Şimdi apacheyi yeniden başlatalım.

/etc/inet.d/apache2 reload

Artık PHPShell scriptlerinden korkmanıza gerek kalmadı.

Makale hakkında yorumlarınızı bekliyorum.

Fikri DAL

07/03/2007

Categories:

Tags:

4 Responses

  1. Disable_Function parametresi asagidaki sekilde guncellenmistir.

    disable_functions = “system,exec,shell_exec,passthru,escapeshellcmd,popen,pcntl_exec,
    proc_open,ini_restore,proc_close,dl,show_source,highlight_file,pcntl_exec,allow_url_fopen,
    proc_get_status,proc_nice”

  2. mod_php4.c yoksa ne yapabiliriz aramadım modülü bulamadım php sürümü 4.4.6 yazı için teşekkürler

  3. Eyvallah bilader kodlar işe yaradı fakat “TrYaG Team” diye bir Shell var o Shell de “read file CURL:” diye bir kısım var o kısımda “/etc/passwd” yazıyor ve “Show” butonuna basınca “passwd” dosyasını okuyor, bunu nasıl engelleriz?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

document.getElementById("ak_js_1").setAttribute("value",(new Date).getTime());

window.hugoFrontendData=[];