Shell Защита на форма

dakata__92

Super Moderator
Някой може ли да ми каже, какво точно представляват шелл атаките и да ми даде няколко примера ! Имам ето тази форма която добавя аватари, но под формата на линкове примерно от prikachi.com (не е реклама) и да ми каже как да я защитя от атаки ?
:)
PHP:
<form action='' method='post'><input type='text' name='avatar'><input type='submit' name='submit' title='Добавете линк към снимката, която желаете да поставите.' value='Добави'><input type='submit' name='delavatar' title='Изтрий аватара, който е в момента !' value='Изтрий'></form>
			if(isSet($_POST['submit']))
			{
				$avatar = addslashes(htmlspecialchars($_POST['avatar']));
				if (!preg_match("/((https?:\/\/|www\.).+?\.(?:jpg|jpeg|gif|png|bmp))/",$avatar))
				{
					echo "Неправилен линк до снимката.<br>";
				}
				else
				{
					$addavatar = mysql_query("UPDATE tablica SET snimka='$avatar' WHERE id='$id'")or die(mysql_error());
					
				}
			}
 
Шел атаките са следните, когато имаш дадена форма, чрез която се качват файлове, на които не си задал какъв формат да са, тоест може да се качват всякакви формати: .PHP , .HTML - така потребителя качва shell [php файл], който дава достъп до целия сайт. При условие, че ти нямаш форма за качване на файлове, а просто едно инпутче, няма как да ти се качи shell на сайта. Мисля, че ти го обясних добре, ако имаш да питаш нещо допълнително питай.

Поздрави, ventage.
 
За да се защитиш от качване на шел на хоста си, забрани качването на php файлове и си 6.
 
Тази провелка ПРОПУСКА само линкове с завършващи на определените от мен разширения:

if (!preg_match("/((https?:\/\/|www\.).+?\.(?:jpg|jpeg|gif|png|bmp))/",$avatar))
 
според мен - да

имаш си addslashes,htmlspecialchars ,проверява дали файла е картинка. Всичко е наред
 
Принципно да защитена е, но ме интересува и друго, дали примерно от прикачи.ком може да се качи картинка с някакъв шел който ще завършва на някое от разширенията които съм дал и да повлияе на сайта при отварянето на линка в имг таг ?
 
предполагам ако има нещо нередно в дадената картинка ще е с голям размер,можеш просто да зададеш размера да не е повече от 1,2 МБ.Не мисля ,че ще имаш проблем.
 
critrate каза:
предполагам ако има нещо нередно в дадената картинка ще е с голям размер,можеш просто да зададеш размера да не е повече от 1,2 МБ.Не мисля ,че ще имаш проблем.

Аз НЕ качвам снимката в моята база, а само линка към снимката и я отварям с <img src='linka zapameten v bazata '>
 
Има един вид атаки, срещу който тази проверка може да не ти помогне много. LFI и RFI атаките разрешват качване на shell от други сайтове, също така проверките не пречат на качването на файла с разширение като на картинка. Например : shell.php.jpg
 
HerpaMoTeH каза:
Има един вид атаки, срещу който тази проверка може да не ти помогне много. LFI и RFI атаките разрешват качване на shell от други сайтове, също така проверките не пречат на качването на файла с разширение като на картинка. Например : shell.php.jpg

И аз така си помислих, затова как да я защитя ?
 
LFI и RFI защитите са включени в apache по default. Защитата от второто се прави като правиш още една проверка, в която проверяваш дали изобщо съдържа PHP. Другият вариант е да отвариш файла и да провериш дали съдържа <?php :)
 
А ако в шаблона добавя да не взима снимки с линк \\www.neshto.php.jpg\\ - if (!preg_match("/((https?:\/\/|www\.).+?\.(?:jpg|jpeg|gif|png|bmp))/",$avatar)) смисъл в регулярния израз ще се оправят ли нещата ? Интересно ми е какви други начини им ада ми вкарат шел през тази форма :)
 
Не съм сигурен за регулярния израз, но за отварянето на файла съм сигурен, че работи като проверка. Другия начин е да те хакнат чрез XSS.
 
HerpaMoTeH каза:
Не съм сигурен за регулярния израз, но за отварянето на файла съм сигурен, че работи като проверка. Другия начин е да те хакнат чрез XSS.
Използвам htmlspecialcharts за филтриране към базата, но пък си прав, че могат като се замисля ! Дай тогава код който да отваря линка и да проверява още при записването :)
 

Горе