ÛãçèØÃÂ¥ Ã’ØàãáÞÃÂ’ - Xakep Online
ÛãçèØÃÂ¥ Ã’ØàãáÞÃÂ’ - Xakep Online
ÛãçèØÃÂ¥ Ã’ØàãáÞÃÂ’ - Xakep Online
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
обзор<br />
эксплоитов<br />
обзор<br />
эксплоитов<br />
>> взлом<br />
int fts_errno; /* èñêëþ÷åíèÿ */<br />
long fts_number; /* íóìåðîâàííîå çíà÷åíèå */<br />
void *fts_pointer; /* ëîêàëüíûé àäðåñ â ïàìÿòè */<br />
struct _ftsent *fts_parent; /* ðîäèòåëüñêàÿ äèðåêòîðèÿ<br />
*/<br />
struct _ftsent *fts_link; /* ñëåäóþùàÿ ôàéëîâàÿ<br />
ñòðóêòóðà */<br />
struct _ftsent *fts_cycle; /* ñòðóêòóðà èåðàðõèè ïî<br />
öèêëó */<br />
struct stat *fts_statp; /* ñòàòèñòèêà ïî ôàéëàì<br />
èåðàðõèè */<br />
} FTSENT;<br />
Заметим, что fts_level имеет тип short. Это наводит на определенные<br />
мысли. При изучении кода взгляд натыкается на комментарий<br />
разработчиков:<br />
- ---line-616-625---<br />
/*<br />
* Figure out the max file name length that can<br />
be stored in the<br />
* current path -- the inner loop allocates<br />
more path as necessary.<br />
* We really wouldn’t have to do the maxlen<br />
calculations here, we<br />
* could do them in fts_read before returning<br />
the path, but it’s a<br />
* lot easier here since the length is part of<br />
the dirent structure.<br />
*<br />
* If not changing directories set a pointer so<br />
that can just append<br />
* each new name into the path.<br />
*/<br />
- ---line-616-625---<br />
«По правде говоря, мы не будем здесь делать какие-либо вычисления<br />
с огромными именами... и здесь должен быть уровень<br />
ограничений или «pathlen»-монитор». Конечно, должен, но где<br />
же он? Безусловно, недоработка, а точнее недоделка.<br />
#define NAPPEND(p)\<br />
(p->fts_path[p->fts_pathlen — 1] == ‘/’ \<br />
? p->fts_pathlen — 1 : p->fts_pathlen)<br />
Естественно, эта функция пойдет в креш, если мы обратимся к неправильному<br />
участку памяти с помощью аномальных параметров.<br />
127# pwd<br />
/home/cxib<br />
# êîëè÷åñòâî ðîäèòåëüñêèõ êàòàëîãîâ î÷åíü âåëèêî<br />
127# du /home/<br />
4 /home/cxib/.ssh<br />
Segmentation fault (core dumped)<br />
127# rm -rf Samotnosc<br />
Segmentation fault (core dumped)<br />
127# chmod -R 000 Samotnosc<br />
Segmentation fault (core dumped)<br />
>> Targets<br />
• OpenBSD 4.4 (/usr/src/lib/libc/gen/fts.c)<br />
• Microsoft Interix 6.0 10.0.6030.0 x86<br />
• Microsft Vista Enterprise (SearchIndexer.exe) z<br />
XÀÊÅÐ 04 /124/ 09<br />
47