[Guide] Защитаване на вашите web сайтове

newguy

Well-Known Member
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 - това търси и в под директорийте.


Излезнала ви е една камара код която не ви говори нищо? Нека преговорим...
Другите методи са незащитени заяки $_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() ще преобразува ' в &#039 ; и няма да има никакво действие. Не забравяйте да слагате ENT_QUOTES.

Ако се напише 'drop table character (пак не я пиша правилно командата просто давам пример) кода ще стане &#039 ;drop table character както се досещате няма да навреди на сървъра ви.

Отивам малко по-надолу в програмката EditPlus да видя всички заявки и какво да видя! :x



Ето това вече е код, който може да навреди на сървъра ви. Лошото е, че няма как да знаете дали е случайна грешка или нарочно. Тук обаче може да видите, че е нарочно защото всичките заявки не са защитени. Един програмист си има начин на писане и доста рядко го променя. Ето, че от тук са дошли външни сили...

Ако не знаете за какво служи кода по-добре го изтрийте. Най-вече ако не е дефинирана функция или е забито в някакъв по-долен файл.

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

  • ES-Computing.EditPlus.v3.10.193.rar
    1 MB · Views: 196
Last edited:
10/10 просто много писане сигурно работи не съм го пробвам :)
 
newguy просто винаги изненадваш :) 10/10
 
това скан на Omaru Insertmu сайта ли е?
 
Не друг е. Всъщност не го знам този insert пратиха ми го сайта.
 
Ако можеш да я ъпнеш в 4storing или нещо друго ще е добре.
 
Излъгал съм ви по-горе. trim() премахва само разстоянието от началото и грая на текста. Благодаря на @stevieg88 за поправката.
 
не ми отговори теста дето си напраил от на insertmu web-a ли е? (0.8 reskin)
 
Казах ти. Не знам кой е сайта. Пратиха ми го по скайп. Дай го тоя insert web да го видиме.
 
Released>Muweb 0.8 (reskin) от омару на 1ва страница е защото ползвам някой файлове от него и там го има тва дето ти говорих за u?=user (modules>user.php погледни)
 
добър урок и полезен доста, но ако някой разбира доста и ви има зъб, то тогава няма спасение ^^
10/10 -> за урока
 
  • Like
Reactions: MeMoS
от тук мога само да кажа браво за труда.
Мога и да кажа че всички които дадоха 10/10 (chuckle)
малко са в грешка (демек понятие си нямат... _). Не че искам да се заяждам... просто това е тема, кято
80% от нещата са излишни. Смисъл 10/10 ок... ама като не ни тряят дадени работи само си мешаме главите.

И тва за нет шела е простотия.

Иначе за труда браво
 
  • Like
Reactions: Wasabi and Kademix
добър урок и полезен доста, но ако някой разбира доста и ви има зъб, то тогава няма спасение ^^
10/10 -> за урока

+1 прав си няма измакване
 
Винаги има измъкване. Лошото е, че рядко хората са добри в повече области. Ако сайта е защитен нищо чудно mssql-а да не е.
 
от тук мога само да кажа браво за труда.
Мога и да кажа че всички които дадоха 10/10 (chuckle)
малко са в грешка (демек понятие си нямат... _). Не че искам да се заяждам... просто това е тема, кято
80% от нещата са излишни. Смисъл 10/10 ок... ама като не ни тряят дадени работи само си мешаме главите.

И тва за нет шела е простотия.


Иначе за труда браво


(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)(xaxa)

К'во браво за труда е ?
ОТ ТУКА 90% от нещастниците, които вече не можеш ги барна използват САМО НАШИ ОБЯСНЕНИЯ как да си защитят умрелият сайт или машина. "РАЗБИРАЧИТЕ" ги наричам, разбраха какво е N3t shell & XSS когато на нас ни писна да се ебаваме с тях и решихме малко да им дадем насока ама има явно и малко по схватливи и се оправиха горе-долу.

Когато Иво хакваше Insert Mu, през дупката на EscapeWeb "Вирусчето" ми писа в skype да съм му помогнел, и че много ми се молел (което беше така) изчистих му насраният WEB за 10 минути и после ми сра в мойта уста и доносничи после, сега станал "кодер и защитник" ОМГ, ОМГ! Смях... ако не е WT нема и тва да направиш за muweb 0.8.

Имаше още един помияр от форума дето преди едва не ми лиза кура да му правя нещо но го забравих кой е ...

Финал: Лиско аре да уважаваш повече работата ни и да не се правиш на много умен и кадърен... щото имаме общи приятели и се познаваме лично с тебе и мисля че не си такова момче.
 
  • Like
Reactions: LasTCursE and Backo
Gaso страшно изказване и впрочем си много прав! Но идеята на всичките "хакери" е проста -- > "показ на дупките в сигурността на един уеб".
Прав си, че много хора се правя на "разбирачи" и "кодери по сигурността", но както ти каза всички са почнали от ТУК!

P.S: --> --> Моля, не пишете тъпи коментари като: "Ти пък си голям кодер..... " и т.н.т! Аз знам каквото ми трябва и запомнете няма човек родил се до сега със IQ над 220 -- > няма роден знаещ, всички се учим до края на живота си (за някой е по - малко, а за други повече :D ).

P.S2: И пак 10/10 usefull :D