- Joined
- Nov 23, 2008
- Messages
- 644
- Reaction score
- 572
Здравейте. Вече доста пъти хората ме питат сайта ми защитен ли е не е ли как да го защитя и т.н. В този урок ще ви покажа един от лесните методи за защитване на вашите сайтове.
Както повечето от вас знаят, че методите са много но ще споделя само най-известните в тази тема. Няма да казвам пряко как се хакват сървъри а как да се избегне хакването им.
Като за начало може да видите какво правят XSS атаките и как да се предпазим от тях. Вероятно този код ви се струва познат защото доста от сайтовете го използват.
Другите методи са незащитени заяки $_POST $_GET $_REQUEST. Ако имат директна връзка с mssql-а е почти сигурно, че ви хакват от там.
N3t shell обяснено от @Gasolincho как се намира и какво представлява.
Това са основните методи по, които ви хакват сайтовете. Сега ще се опитам по най-лесния начин да ви обясня как да ги намирате и как да ги защитавате.
Като за начало ще ви кажа една програмка с която лесно може да намирате shell-ове заявки които не са защитени и т.н. Програмката се казва EditPlus големият + на тази програмка и причината поради която ще използваме е, че може да търси в много файлове и директорий. Инсталацията е елементарна и мисля, че няма нужда да я обяснявам. Програмката е платена но можете без проблем да я използвате.
Мисля да пропусна стъпката с XSS защитите горе има достатъчно примери как можете да си защитите сайта. Големият минус е не само когато отидете в сайта и сложите кода в индекса. Ако някой отиде на http://вашият сайт/modules/stranica.php и там се използва PHP_SELF тогава сайта ви пак може да бъде хакнат защото този файл не чете кода на index страницата. Което означава, че трябва да се добавя на всяка една страница. Тук обаче има 1 малък трик с който можете да избегнете досадното добавяне ако използвате само 1 index файл. Това е .htaccess файл с който можете да забраните да се влиза във всякакви директории но да има достъп единствено до index.php.
Искам да ви покажа нагледно такива грешки които могат да ви хакнат сайта. Отворете програмката която вече трябва да сте инсталирали. Намерете директорията на вашият сайт и натиснете дясно копче на мишката > Find in directory.
Направете следната конфигурацийка.
Нека обясна кое за какво служи.
Find what - Дума или някаква част която искаме да търсим.
File type - Типът на файлове в които искаме да търси. В случея php.
Folder - директорията
И най-важното натиснете include subfolders - това търси и в под директорийте.
Излезнала ви е една камара код която не ви говори нищо? Нека преговорим...
$promenliva = $_POST['test']; - то тогава не е защитено!
Чудно ви е как да го защитим?
Доста от сайтовете си използват фунции. Голяма част от сайтовете използват функции които защитават тези заявки. Те правят проверки дали има дадени символи или директно премахват някои символи като ' " ; < > @ #$%^&*() и т.н.
Както видяхте на картинката по-горе пред всяка $_POST заявка има secure. Това е функция написана от @savoy. Ако нямате такава функция в сайта и се използва такава в някоя заявка ще даде грешка, че такава функция не съществува. За това ще използваме вградените в PHP.
Нека ви представя някои от тях.
htmlspecialchars() - преобразува символи < > '.
trim() - Премахва празното разстояние от началото и края.
Хората казват, че не е много стабилна защита но според мен комбинирана с htmlspecialchars() вършат доста добра работа.
В интернет може да потърсите за още такива. Нека ви насоча... addslashes, stripcslashes, str_replace и други.
Мисля, че малко се отклоних от темата нека видим как ще защитим променливата която е по-горе.
$promenliva = htmlspecialchars(trim($_POST['test']), ENT_QUOTES); - това вече е защитено.
Лесно нали? По този начин ако някой тръгне да изключи сървъра например 'shutdown или както е там командата htmlspecialchars() ще преобразува ' в ' ; и няма да има никакво действие. Не забравяйте да слагате ENT_QUOTES.
Ако се напише 'drop table character (пак не я пиша правилно командата просто давам пример) кода ще стане ' ;drop table character както се досещате няма да навреди на сървъра ви.
Отивам малко по-надолу в програмката EditPlus да видя всички заявки и какво да видя!
Ето това вече е код, който може да навреди на сървъра ви. Лошото е, че няма как да знаете дали е случайна грешка или нарочно. Тук обаче може да видите, че е нарочно защото всичките заявки не са защитени. Един програмист си има начин на писане и доста рядко го променя. Ето, че от тук са дошли външни сили...
Ако не знаете за какво служи кода по-добре го изтрийте. Най-вече ако не е дефинирана функция или е забито в някакъв по-долен файл.
function inventory_clear() {
Копирам точен пример как се създава функция. Това inventory_clear е просто пример. В кода който видяхме, че не е защитен може да се качват всякакви файлове. Shell-ове вируси и какво ли още не което може да навреди на вашият компютър, сървър или сайт.
Триете целият код който е зависим от него и готово.
Тук сигурно си мислите, че това е вредно за вашият сайт. Лошото е, че не е. Взима всички $_POST заявки и ги защитава като заменя ' '' с празно място.
Тук не се сещам как мога да ви обясна да го различавате.
Всичко което изписах до сега се отнася и за $_GET и за $_REQUEST заявките. Не се учудвайте ако нямате $_REQUEST заявки вече се използват доста рядко и за в бъдещите версии на PHP се говори че няма да се използват.
N3t shell - лесният начин за откриване на shell-ове с тази програмка. Единсвеното което трябва да направите е както по-горе десен бутон на папката. Този път ще търсим по параметъра netstat. Ето, че на мига ми откри shell.
Мисля, че съвсем ясно ви стана какво прави това чудо и как вреди.
-------------------------------------------------------------------
Ако решите да иползвате метода с htaccess файл ви препоръчвам да използвате системи за защита подобни на тази на savoy и тази.
Ако се съмнявате в някоя малка част от код пратете ми лично съобщение с нея да видя за какво става на въпрос. Говоря до 15-20 реда не 3000.
EDIT 1: Забравих да допълня няколко неща които също може да търситв във вашите сайтове по които да се ориентирате дали има някакви нередности.
move_uploaded_file
copy
Това означава, че може да се ъплоудва файл
Както повечето от вас знаят, че методите са много но ще споделя само най-известните в тази тема. Няма да казвам пряко как се хакват сървъри а как да се избегне хакването им.
Като за начало може да видите какво правят XSS атаките и как да се предпазим от тях. Вероятно този код ви се струва познат защото доста от сайтовете го използват.
Другите методи са незащитени заяки $_POST $_GET $_REQUEST. Ако имат директна връзка с mssql-а е почти сигурно, че ви хакват от там.
N3t shell обяснено от @Gasolincho как се намира и какво представлява.
Това са основните методи по, които ви хакват сайтовете. Сега ще се опитам по най-лесния начин да ви обясня как да ги намирате и как да ги защитавате.
-------------------------------------------------------------------
Като за начало ще ви кажа една програмка с която лесно може да намирате shell-ове заявки които не са защитени и т.н. Програмката се казва EditPlus големият + на тази програмка и причината поради която ще използваме е, че може да търси в много файлове и директорий. Инсталацията е елементарна и мисля, че няма нужда да я обяснявам. Програмката е платена но можете без проблем да я използвате.
Мисля да пропусна стъпката с XSS защитите горе има достатъчно примери как можете да си защитите сайта. Големият минус е не само когато отидете в сайта и сложите кода в индекса. Ако някой отиде на http://вашият сайт/modules/stranica.php и там се използва PHP_SELF тогава сайта ви пак може да бъде хакнат защото този файл не чете кода на index страницата. Което означава, че трябва да се добавя на всяка една страница. Тук обаче има 1 малък трик с който можете да избегнете досадното добавяне ако използвате само 1 index файл. Това е .htaccess файл с който можете да забраните да се влиза във всякакви директории но да има достъп единствено до index.php.
-------------------------------------------------------------------
Искам да ви покажа нагледно такива грешки които могат да ви хакнат сайта. Отворете програмката която вече трябва да сте инсталирали. Намерете директорията на вашият сайт и натиснете дясно копче на мишката > Find in directory.
Направете следната конфигурацийка.
Нека обясна кое за какво служи.
Find what - Дума или някаква част която искаме да търсим.
File type - Типът на файлове в които искаме да търси. В случея php.
Folder - директорията
И най-важното натиснете include subfolders - това търси и в под директорийте.
Излезнала ви е една камара код която не ви говори нищо? Нека преговорим...
Сигурно вече се питате как да различвам дали е защитено или не е. Ако видите нещо то сорта:Другите методи са незащитени заяки $_POST $_GET $_REQUEST. Ако имат директна връзка с mssql-а е почти сигурно, че ви хакват от там.
$promenliva = $_POST['test']; - то тогава не е защитено!
Чудно ви е как да го защитим?
Доста от сайтовете си използват фунции. Голяма част от сайтовете използват функции които защитават тези заявки. Те правят проверки дали има дадени символи или директно премахват някои символи като ' " ; < > @ #$%^&*() и т.н.
Както видяхте на картинката по-горе пред всяка $_POST заявка има secure. Това е функция написана от @savoy. Ако нямате такава функция в сайта и се използва такава в някоя заявка ще даде грешка, че такава функция не съществува. За това ще използваме вградените в PHP.
Нека ви представя някои от тях.
htmlspecialchars() - преобразува символи < > '.
trim() - Премахва празното разстояние от началото и края.
Хората казват, че не е много стабилна защита но според мен комбинирана с htmlspecialchars() вършат доста добра работа.
В интернет може да потърсите за още такива. Нека ви насоча... addslashes, stripcslashes, str_replace и други.
Мисля, че малко се отклоних от темата нека видим как ще защитим променливата която е по-горе.
$promenliva = htmlspecialchars(trim($_POST['test']), ENT_QUOTES); - това вече е защитено.
Лесно нали? По този начин ако някой тръгне да изключи сървъра например 'shutdown или както е там командата htmlspecialchars() ще преобразува ' в ' ; и няма да има никакво действие. Не забравяйте да слагате ENT_QUOTES.
Ако се напише 'drop table character (пак не я пиша правилно командата просто давам пример) кода ще стане ' ;drop table character както се досещате няма да навреди на сървъра ви.
Отивам малко по-надолу в програмката EditPlus да видя всички заявки и какво да видя!
Ето това вече е код, който може да навреди на сървъра ви. Лошото е, че няма как да знаете дали е случайна грешка или нарочно. Тук обаче може да видите, че е нарочно защото всичките заявки не са защитени. Един програмист си има начин на писане и доста рядко го променя. Ето, че от тук са дошли външни сили...
Ако не знаете за какво служи кода по-добре го изтрийте. Най-вече ако не е дефинирана функция или е забито в някакъв по-долен файл.
function inventory_clear() {
Копирам точен пример как се създава функция. Това inventory_clear е просто пример. В кода който видяхме, че не е защитен може да се качват всякакви файлове. Shell-ове вируси и какво ли още не което може да навреди на вашият компютър, сървър или сайт.
Триете целият код който е зависим от него и готово.
Тук сигурно си мислите, че това е вредно за вашият сайт. Лошото е, че не е. Взима всички $_POST заявки и ги защитава като заменя ' '' с празно място.
Тук не се сещам как мога да ви обясна да го различавате.
Всичко което изписах до сега се отнася и за $_GET и за $_REQUEST заявките. Не се учудвайте ако нямате $_REQUEST заявки вече се използват доста рядко и за в бъдещите версии на PHP се говори че няма да се използват.
-------------------------------------------------------------------
N3t shell - лесният начин за откриване на shell-ове с тази програмка. Единсвеното което трябва да направите е както по-горе десен бутон на папката. Този път ще търсим по параметъра netstat. Ето, че на мига ми откри shell.
Мисля, че съвсем ясно ви стана какво прави това чудо и как вреди.
-------------------------------------------------------------------
Ако решите да иползвате метода с htaccess файл ви препоръчвам да използвате системи за защита подобни на тази на savoy и тази.
Надявам се тарикатите да станат по-малко и това да помогне на доста хора. Ако не ви се чете всичко поне си направете 1 scan за shell-ове...
Ако се сещате за нещо което съм пропуснал искате да добавите само напишете и ще го добавя в първата страница.
Ако се съмнявате в някоя малка част от код пратете ми лично съобщение с нея да видя за какво става на въпрос. Говоря до 15-20 реда не 3000.
EDIT 1: Забравих да допълня няколко неща които също може да търситв във вашите сайтове по които да се ориентирате дали има някакви нередности.
move_uploaded_file
copy
Това означава, че може да се ъплоудва файл
Attachments
Last edited: