enjeksiyon saldırısı (Ben korumalı düşündüm!)
6 Cevap php

Ben veritabanı aramaların bir sürü tamamen özel bir PHP sitesi var. Ben sadece enjeksiyon girildi. Bu kod küçük bir parça aşağıda benim PHP sayfaları onlarca geldi.

<?php /**/ eval(base64_decode(big string of code....

Benim SQL çağrıları ve bu tür hakkında oldukça dikkatli oldum; bu formatta tüm konum:

$query = sprintf("UPDATE Sales SET `Shipped`='1', `Tracking_Number`='%s' WHERE ID='%s' LIMIT 1 ;",  
 mysql_real_escape_string($trackNo),
 mysql_real_escape_string($id)); 
 $result = mysql_query($query);  
 mysql_close();

Kayıt için, ben nadiren de olsa sonunda mysql_close () kullanın. Bu sadece ben yakaladı kod olması oldu. Ben mysql_real_escape_string (), kullanmayan herhangi bir yer düşünemiyorum (ben bir çift muhtemelen vardır eminim rağmen. Ben yakında öğrenmek için grepping olacak) kullanıcıların özel HTML koyabilirsiniz hiçbir yerde de var ya da bir şey. Aslında, onlar SQL kullanıyorsanız, kullanıcı tarafından erişilebilen sayfaların en "SELECT * DAN" neredeyse kaçınılmaz olan, tüm aramaları bağlı bir GET veya POST, sayfalarını kullanmak.

Açıkçası benim güvenliğini artırma gerekiyor, ama ben böyle bir saldırıyı hiç ettik ve ben ne yapmalıyım olumlu değilim. Ben bütün girdilere sınırlar koymak ve ben bir yere mysql_real_escape_string cevapsız görmek isteyen üzerinden gitmeye karar verdik ... Herkesten herhangi bir öneriniz var mı?

Ayrıca ... Bu kod türü ne yapıyor? Neden var?

6 Cevap

Nitekim olarak, SQL enjeksiyon sunucu muzdarip olabilir saldırı tek tip değildir.

Ve bu, bir SQL enjeksiyonu gibi görünüyor değil.

Çoğu zaman FTP şifrenizi çalmak, PC de sadece bir truva atı bulunuyor.

gerçek kodu görmek için, yankı ile eval değiştirin. Ama ilginç bir şey var şüphe

Bu sunucuyu tehlikeye herhangi bir ortak saldırı neden olmuş olabilir.

Normalde bir SLP (Local File Inclusion) neden olur ama bir şey neden olabilir.

Sizden SLP hakkında daha fazla bilgi edinebilirsiniz:

http://labs.neohapsis.com/2008/07/21/local-file-inclusion-%E2%80%93-tricks-of-the-trade/

Umarım yardımcı olur (biraz)

Some quick tips:

  • Böyle intval sorgularda numaraları için gibi değişkenlerin önce uygun veri türlerini kullanmak
  • Sorgularda dizeleri için mysql_real_escape_string kullanın
  • Kullan prepared statements

Resource:

See SQL Injection guide on php.net

Ben sunucu kalanı bakmak istiyorum. MySQL sizin için dosyaların üzerine / değiştiremez. Bu ("SELECT INTO Dosyası ... SELECT ...") bir dosyaya çıktı göndermek olması mümkündür, ama bir güvenlik önlemi zaten var olan bir dosyanın üzerine önler yerinde var. En azından, bir SQL enjeksiyon sizin bazı verileri değiştirmek, ya da beklenenden daha farklı bir sonuca dönmek için bir sorgu yıkmak olacaktır.

SSH tarama, hatta bir SSH uzlaşma yoluyla bir sistem hesabı zorlayarak kaba tarafından sunucuya içine kazanılmış olan birinin içine atın. Eğer paylaşılan bir sunucuda iseniz, başkasının sitesinde tehlikeye var ve saldırı sadece o bulabildiği her PHP dosyası bulaştırmak için ilerledi ki tamamen mümkün.

siz) sprintf SONRA mysql_real_escape_string () (aradığınız gibi görünüyor.