Тестването на проникване е актът на тестване на мрежа за уязвимости в сигурността, преди да бъде експлоатиран от злонамерен нападател или хакери. DE-ICE е виртуална машина, която съдържа инсталация Linux Slax и служи за практикуване както за начинаещи, така и за напреднали.
Slax е CD на живо на операционната система GNU / Linux въз основа на дистрибуцията на Slackware. Slax е преносима операционна система Linux, не заема много място и осигурява бърза производителност.
Slax предоставя хранилище на предварително инсталиран софтуер и се използва широко от администраторите за създаване на тестови платформи, специфични дистрибуции и полезни за създаване на инструменти за възстановяване, тестове за проникване, сигурност и мрежови симулации с виртуални машини за системни администратори и разработчици на софтуер или експерти по сигурността, системата заема около 190 MB. Графичен интерфейс може или не може да бъде инсталиран, но това ще отнеме много място и ще направи системата бавна.
De-ICE може да бъде инсталиран във VirtualBox или записан на CD, за да се използва като LiveCD. Има няколко версии, които представят различни нива на трудност, версията за начинаещи е DE-ICE1.100, а най-сложната в момента е DE-ICE1.140. За този урок ще използваме версията DE-ICE 1.120, която е достъпна на https: //www.vulnhub… .e-ice-s1120,10 /.
Тази виртуална машина е специално подготвена да тества нашите знания и да прилага всякакви техники или инструменти за тестване на проникване.
Pentesting на De-ICE PenTest Lab 1.120
За процедури за тестване на проникване инсталирайте DE-ICE.1.120 версия и използвам Linux Mint и VirtualBox за инсталиране на DE-ICE. Може да се използва от всяка операционна система, която ви позволява да създадете виртуална машина.
Започвам да търся текущия си ip от терминал, използвайки командата ifconfig и резултатът е следният:
IP: 192.168.0.11
След това използвам различен софтуер по мой избор, но те могат да опитат други, които да отговарят на потребителя.
А) Използвам Zenmap за сканиране на всички хостове между 1-254
В уроците:
- Визуален инструмент Zenmap за тестване на сигурността на порта
- Как да използвате Nmap за сканиране на отворени портове на вашата VPS и Metasploit рамка за тестване на сигурността на сървъра
Видяхме някои инструменти за сканиране на портове и как да ги използваме.
Отваряме Zenmap, аз присвоявам IP и параметрите, така че да сканира цялата мрежа и да ми показва свързаното оборудване и IP адресите.
IP 192.168.0.1 съответства на IP на шлюза на рутера с отворен порт 80 и IP на рутера 192.168.0.10 със затворени всички портове.
Разглеждайки топологията и характеристиките на всеки хост, определям, че ip 192.168.0.38 е WiFi ip на виртуалната машина, а ip 192.168.0.40 е Ethernet връзката е виртуалната машина.
Достъпвам до IP на виртуалната машина или VPS и намирам уебсайт за регистриране на продукти.
По принцип [color = # b22222] сериозен провал [/ color] би бил, че този уебсайт няма никакъв вид контрол на достъпа на потребителите, по този начин ще има достъп до всички потребители на мрежата, без значение колко е в интранет.
От Zenmap също наблюдавам сканираните портове за този хост.
Намирам няколко отворени порта, за да пробвам с груба сила атаки за достъп чрез принуждаване на потребител и парола с инструменти като Hydra или John the Ripper, наред с други.
Можем също да видим топологията, за да анализираме всеки хост и с кого е свързан.
По този начин можем да видим характеристиките на оборудването, как е конфигурирана мрежата и кои хостове можем да атакуваме.
Б) Сканиране на уязвимости
Използвам OSWAP ZAP за сканиране на уязвимости. Видяхме този инструмент в урока:
- Сканирайте уязвимостта на уебсайт с ZAP
Тя ни позволява да сканираме уязвимости на уебсайт, като представя доклади за откритите уязвимости.
С помощта на филтър и правила за активно и пасивно сканиране можем да открием уязвимостите на мрежата. Той също така ни показва всички страници, които съдържа мрежата, дори посочва кои са тези, които получават някакъв тип параметър чрез url.
След сканирането мога да видя структурата на мрежата със страниците, програмирани в PHP, и уязвимостите според приложените филтри.
В случай на страница за вмъкване на продукт виждаме, че тя получава параметри чрез метода POST и можем също да видим полетата или променливите, които получава.
° С) Инжектиране на XSS код
След това ще отидем на страницата, за да добавим продукт (Добавяне на продукт) и да кандидатстваме XSS инжекционни техники където инжектирам html и Javascript код, за да видя дали е уязвим за този тип атака.
Като първи тест добавям html кода на външно изображение в описанието на продукта, можете да изберете всеки, като потърсите в Google.
Ако изображението е уязвимо, то ще бъде записано в базата данни и ще се покаже в списъка с продукти, които ще трябва да търсим в комбинацията за кода, който присвояваме, резултатът е следният:
[color = # b22222] Той е уязвим за XSS [/ color], тъй като можем да въведем всеки html или javascript код, включително връзки.
Вмъкваме вградена рамка в полето за описание и запазваме:
След това търсим продукта с код 003 и можем да видим резултата
Използвайки тази техника, можем да въведем формуляр със симулиране на вход и данните всъщност да бъдат записани във външна база данни. Можем да деактивираме списъка с продукти, причиняващи пренасочване към друг уебсайт, ако в някое поле за регистрация на продукт добавим следния html код:
Когато някой се опита да види списъка с продукти, той автоматично ще бъде препратен към уебсайта, посочен в този случай Google.
Д) SQL инжекция Достъп до база данни
Sqlmap е много полезен инструмент за тестване на сигурността на сървърите на бази данни в уроците:
- SQLMAP Инструмент за инжектиране на SQL и хакване на етични бази данни
- BadStore: Уеб за тестове за пентестиране.
Използвам sqlmap, за да определя дали има налични бази данни, използвайки следните команди.
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --dbs
Можем да видим, че сървърът е Apache 2.2.11, който използва php 5.2.9 и че сървърът на базата данни е MySQL 5.0.12, ние също така преглеждаме всички налични бази данни, включително тези, които са конфигурация на базовия сървър MySQL данни.
След това използвам командата, за да проверя дали има таблици в базата данни на стоките, която предполагам има таблицата с продукти, която въвеждаме в мрежата.
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" -таблици -D мерч
Открихме таблицата, която уебсайтът използва. По -долу мога да разгледам таблицата с продукти със следната команда
python sqlmap.py -u "http://192.168.0.50/products.php?id=1" -колони -D мерч -T продукти
Търся да разбера потребителите, които имат Mysql акаунт, които се опитват да намерят администратор, по подразбиране използвам речника на данни sqlmap, разположен в папката sqlmap-dev / txt / wordlist.zip
В тази директория ще намерим няколко речника, sqlmap ще отговаря за разархивирането и използването на файла, за търсене на потребители и пароли за тестване, ако мога да открия и да конфигурирам потребителските имена на MySQL сървъра, за това използвам следната команда:
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --users --passwords
След това търся типа потребител, за да видя какви са привилегиите за достъп на всеки потребител, за да определя кои са администраторите и какви са техните кодове за достъп.
python sqlmap.py -u "http://192.168.0.65/products.php?id=1" -f -b --current -user --is -dba --is -dba --privileges --dbs -dump
В резултат на изпълнението се разкриват паролите на всеки потребител за достъп до базите данни и какви привилегии имат.
Когато сканирането приключи, в края на списъка можем да видим привилегиите на всеки потребител и да определим кои потребители са администратори.
Намирам, че има няколко администраторски потребители, затова ще взема потребителя jdavenport кой е администратор и паролата му е babyl0n, за да се опитате да получите достъп до системата
След това се опитвам да наруша SSH порт 22 с получените данни:
Може да се види, че имам достъп като администратор и имам пълен контрол върху сървъра. С помощта на командата cd / отиваме в главната директория и от там можем да осъществим достъп до всеки сектор, като например да видим папките и акаунтите на другите потребители
Като имаме достъп чрез SSH с комбинацията от потребителско име и парола, която получихме. Следващата ни цел ще бъде ескалация на привилегии, въпреки че вече имаме root или администраторски потребител.
За да манипулираме разрешенията, трябва да се консултираме с файловете, които съдържат разрешенията, потребителите, групите и кодовете за достъп, които тези файлове са в директорията / etc
- Потребител и групи с техните ключове в директорията: / etc / passwd
- Групи и разрешения в директорията: / etc / sudores
Можем да получим достъп до файла с потребители и системни ключове чрез следната команда:
nano / etc / password
Можем да преминем през директориите между тях, можем да видим файловете в мрежата, които анализирахме, и да ги изтеглим по -късно чрез ftp или от конзолата ssh, можем да ги копираме в локалната ни директория, ако искаме да ги редактираме или да прегледаме код, за да го направите по -сигурен и тествайте отново.
Сега, когато знаем данните за достъп на администратор, можем да влезем във виртуалната машина.
Как да избегнем SQL инжекционни атаки
Сигурността на мрежата е много важна тук, поради проблем с инжектирането на SQL, ние вземаме целия сървър.
Трябва да контролирате какво се изпраща като параметър в URL адресите, като например:
http://192.168.0.40/products.php?id=1Когато правим sql заявка, трябва да се уверим, че могат да бъдат въведени символи или параметри, които не съответстват, например:
$ sql = SELECT * FROM users WHERE user = 'jose' и password = '12345' ИЛИ '1' = '1';Изречението е много подобно на потребителско име за вход, където търсим, ако потребителят и паролата съществуват, в таблицата с потребители, ако има някой, регистриран с потребителско име, което изпращаме като параметър и ако паролата му е „12345 или ако 1 е същото към 1 '.
Този израз определя, че ако ключът не е правилен, изразът 1, равен на 1, е истина и ще можем да влезем в системата, без да знаем паролата.
Един метод е да избягате променливите например в PHP:
mysql_real_escape_string ($ _ POST [„потребител“]);Ако трябва да изпратим параметри чрез url, трябва да ги шифроваме с помощта на md5, sha1 или base64 и можем да изпратим различни криптирани данни, така че крайният формат на параметъра да не е пряко свързан с данни или полета в базата данни.
Освен това трябва да има система, която да избягва сканирането на портове и множество връзки от един и същ IP, защитна стена в този случай с iptables би била достатъчна и детектор за проникване.
Един инструмент, който можем да използваме, е PortSentry или Fail2Ban Инсталира се от хранилище на Linux и трябва само да конфигурираме кои портове трябва да бъдат защитени, ако един от тези портове бъде сканиран, той автоматично ще блокира IP, който ни атакува.
Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка