(Sertleştirilmiş) bu script ne kadar güvenli?

7 Cevap php

Aşağıdaki komut dosyası, test.php, tüm wordpress sitelerin belirli bir dizine yerleştirilmesi amaçlanmıştır. Onun amacı, aşağıda $ kaynak adreste dosya yakala ve içinde bulunduğu dizine ayıklamak için. Yani onun yapmak amaçlanan bu.

Örneğin, ben bu komut mevcut olduğu tüm siteler listeler benim merkezi bir sunucu üzerinde bir pano arayüze sahip olacak. Ben sonra etkili seferde hepsine güncelleme dosyasını göndererek, her site üzerinde dolaşır ve bu komut bir çağrıyı gerçekleştiren bir cURL yordamı çalıştırmak olacaktır.

Çağrı şöyle yapılır ...

...processing site 1 update...
http://targetsite1.com/somedeepdirectory/test.php?query=updates.zip

...processing site 2 update...
http://targetsite2.com/somedeepdirectory/test.php?query=updates.zip

...etc until all my sites have been updated.

Benim soru olarak (1) nasıl güvenli (sertleştirilmiş), bu komut olmasıdır. ve (2) hangi kontrollerin ben daha çok yapmak yerine koymak gerekir ...

Ben kötü niyetli, beklenmedik filetypes için MyQuery de yükünü kontrol olarak en azından ben de MyQuery için karakter sayısını kısıtlamak olacağını düşünüyorum?

<?php

/ / Test.php

$source = 'http://mycentralserver.com/protected/'.$_GET['myquery'];
$target = '.';

$out_file = fopen(basename($source), 'w');
$in_file = fopen($source, 'r');
while ($chunk = fgets($in_file)) {
    fputs($out_file, $chunk);
}
fclose($in_file);
fclose($out_file);

$zip = new ZipArchive();
$result = $zip->open(basename($source));
if ($result) {
    $zip->extractTo($target);
    $zip->close();
}

?>

7 Cevap

Bugünkü devlet bu script güvenliği oldukça iyidir. Ben birkaç endişeleri var. Hiçbir koşul altında yanlışlıkla bir. Php dosya indirmek gerekir ve bu web kök saklayın. Bu bir uzaktan kod yürütme güvenlik açığı olacağı gibi bu komut için olabilecek en kötü şeydir. Diğer o klasörde. Htaccess bir "tüm inkar" yapmanız gereken bu dosyayı erişim ile ilgili ise dosyaları belirli bir dizine indirilebilir olmalıdır. Herhangi bir hata bu script varsa size indirilen dosyayı silmeniz gerekir. Aslında ben asap indirilen dosyaları silmenizi öneririz.

Benim endişe komut dosyası düzgün bir hata gerektiğidir. Eğer aradığınızı elde emin olmak için kontrol etmelisiniz. Dosya. Php dosyası olmasa bile o php kodu <?php ?> ardından '() tam şişmiş uzaktan kod yürütme içine (SLP) açığını Dahil Yerel Dosya açacak ed dahil olabilir içerebilir.

Güvenli bir php yapılandırma allow_url_fopen OFF olmalı ve PhpInfoSec benimle aynı fikirde. Bu fopen (), HTTP için kullanılamaz anlamına gelir. allow_url_fopen varsayılan olarak etkindir ve tüm üretim sistemleri devre dışı bırakın. Ben şahsen bu güvensiz varsayılan yararlandı Coppermine Foto galeri bir uzaktan kod yürütülmesine istismar yazdım çünkü nedeni olduğunu. CURL DAİMA PHP HTTP için kullanılması gerektiğini, daha güvenli ve daha istikrarlı.

Ben geçebileceği

http://targetsite1.com/test.php?query=/tmp/somefile.zip

ve ben senin host üzerinde bir yere almak yönetmek herhangi bir dosya ile sitenizi benzetecek.

- Aslında ben bu konuda emin değilim. Bu mycentralserver.com erişilebilir web olurdu.

Söz konusu siteler dumbly komutu üzerine merkezi sunucudan. ZIP dosyasını indirin. Onlar. ZIP dosyası sizden geldiğini doğrulamak, ya da merkezi sunucu tehlikeye olmadığını bilmiyorum.

Ben senin fermuarlar imzalamak için GPG kullanmak istiyorum. Bunlar şifreli olması gerekmez (ama asla acıyor) ama onlar imzalanması gerekir.

Script ne yaptığını düşünün. Eğer bir zip dosyası oluşturma, sorgu motoru çeşit erişim, ve ileri geri, o dosyanın ve sorgu motoru veri geçiyoruz. Neyse ki bu kod sunucu ve istemci değil makinede yapılmaktadır, böylece web sunucusu erişim gibi en azından güvensiz. Web sunucusu için düşündükten sonra bu sorgu motoru çalıştırarak hizmete erişmek veya komut dosyası oluşturur zip dosyasına erişimi kadar güvenli için gerekli ağ mimarisi olarak sadece güvenlidir.

Bu veri depoları deposunda sürece kişisel olarak tanımlanabilir bilgiler kimse kodu ile karıştırmasını trafik veya itibar bazı derecesi ile bir site Deface için kolay bir yol sağlar sürece kodu ile uğraşmak istiyorum gidiyor. Yani, serbestçe zararlı sorgu motorun içine kodu veya zip arşivi enjekte engellemek için ne mekanizmalar var?

Fopen_wrappers kapatarak ve amaçlanan HTTP içeriğe erişmek için eğilen veya http kütüphanelerini kullanarak düşünün.

Bu kötü niyetli bir saldırganın yerel dosya sistemine erişim rectrict amaçlanan bir komut dosyası içinde web içeriğine erişebilir, diğer vulnerabilites sisteminizi güvenli olacaktır. Fopen_wrappers ile kapalı, dosya araçları (yerel) dosya ve http http demektir.

Bu çalıştırabiliriz kim hakkında da düşünün. Internet üzerinde rastgele bir adam / robot kolayca diyemem ki ben, bir şekilde onu korumak istiyorsunuz. Kaynak IP bunu kısıtlayan düşünün, ya da komut dosyası etkileşimli çağrılacak amacı ise belki bir parolası denetimini uygulamak.

Bir problem burada dizin geçişi kontrol yok, bu yüzden bir yere (prensipte) bütün diski kopyalayabilirsiniz olmasıdır '.

/ Web üzerinden erişilebilir ise., Büyük bir sorun var.

Benim tavsiyem recursively .. tüm örneklerini kaldırmak için böylece dizin traversal önleyebilirsiniz

Ben .. / girdi olarak geçerdi eğer, daha kesin olmak gerekirse.. /.. /.. /.. /.. / Etc / passwd sonra bu dosyayı geçerli çalışma dizinine kopyalanır. Script açıkçası, orada yazmak erişimi olduğundan, passwd dosyası maruz olacaktır.

Ayrıca kodlama, bir değil. ya da bir / bir düzine farklı şekillerde kodlanmış, bu yüzden bir kodlanmış arama yapmak ve üzerinde yerini Yüklü olabilir .. /