ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Уязвимости CMS / форумов (https://forum.antichat.xyz/forumdisplay.php?f=16)
-   -   [Обзор Уязвимости DokuWiki] (https://forum.antichat.xyz/showthread.php?t=468775)

RedHazard 16.02.2019 02:55

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

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

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

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

с сайта: 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/vulnerabi.../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

PHP код:

[COLOR="#000000"]# users.auth.php
# [COLOR="#0000BB"]
[/COLOR]# Don't modify the lines above
#
# Userfile
#
# Format:
#
# login:passwordhash:Real Name:email:groups,comma,seperated

tzwtf:$1$JikdmqPD$z4eF2afPNoDcehT7xyeGd1:Sanya:admin@123.ru:admin,user
hui_r_n
:$1$dQ8LHk6m$8IWlBUSZui49eujJSh8dt.:\r\n:123@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
[/COLOR

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

PHP код:

[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#FF8000"]/**
* Обновление профиля (редактирование)
* Print the update profile form
*
* @author Christopher Smith
* @author Andreas Gohr
*/
[/COLOR][COLOR="#007700"]function[/COLOR][COLOR="#0000BB"]html_updateprofile[/COLOR][COLOR="#007700"](){
global[/COLOR][COLOR="#0000BB"]$lang[/COLOR][COLOR="#007700"];
global[/COLOR][COLOR="#0000BB"]$conf[/COLOR][COLOR="#007700"];
global[/COLOR][COLOR="#0000BB"]$INPUT[/COLOR][COLOR="#007700"];
global[/COLOR][COLOR="#0000BB"]$INFO[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#FF8000"]/** @var auth_basic $auth */
[/COLOR][COLOR="#007700"]global[/COLOR][COLOR="#0000BB"]$auth[/COLOR][COLOR="#007700"];

print[/COLOR][COLOR="#0000BB"]p_locale_xhtml[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'updateprofile'[/COLOR][COLOR="#007700"]);

[/
COLOR][COLOR="#0000BB"]$fullname[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$INPUT[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]post[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]str[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'fullname'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$INFO[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'userinfo'[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#DD0000"]'name'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#0000BB"]true[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]$email[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$INPUT[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]post[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]str[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'email'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$INFO[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'userinfo'[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#DD0000"]'mail'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#0000BB"]true[/COLOR][COLOR="#007700"]);
print[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]NL[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]Doku_Form[/COLOR][COLOR="#007700"](array([/COLOR][COLOR="#DD0000"]'id'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'dw__register'[/COLOR][COLOR="#007700"]));
[/
COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]startFieldset[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$lang[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'profile'[/COLOR][COLOR="#007700"]]);
[/
COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]addHidden[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'do'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'profile'[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]addHidden[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'save'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'1'[/COLOR][COLOR="#007700"]);
[/
COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]addElement[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]form_makeTextField[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'login'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$_SERVER[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'REMOTE_USER'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#0000BB"]$lang[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'user'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'block'[/COLOR][COLOR="#007700"], array([/COLOR][COLOR="#DD0000"]'size'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'50'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'disabled'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'disabled'[/COLOR][COLOR="#007700"])));
[/
COLOR][COLOR="#0000BB"]$attr[/COLOR][COLOR="#007700"]= array([/COLOR][COLOR="#DD0000"]'size'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'50'[/COLOR][COLOR="#007700"]);
if (![/COLOR][COLOR="#0000BB"]$auth[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]canDo[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'modName'[/COLOR][COLOR="#007700"]))[/COLOR][COLOR="#0000BB"]$attr[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'disabled'[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#DD0000"]'disabled'[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]addElement[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]form_makeTextField[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'fullname'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$fullname[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$lang[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'fullname'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'block'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$attr[/COLOR][COLOR="#007700"]));
[/
COLOR][COLOR="#0000BB"]$attr[/COLOR][COLOR="#007700"]= array([/COLOR][COLOR="#DD0000"]'size'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'50'[/COLOR][COLOR="#007700"]);
if (![/COLOR][COLOR="#0000BB"]$auth[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]canDo[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'modMail'[/COLOR][COLOR="#007700"]))[/COLOR][COLOR="#0000BB"]$attr[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'disabled'[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#DD0000"]'disabled'[/COLOR][COLOR="#007700"];
[/
COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]addElement[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]form_makeTextField[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'email'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$email[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$lang[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'email'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'block'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$attr[/COLOR][COLOR="#007700"]));
[/
COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]addElement[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]form_makeTag[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'br'[/COLOR][COLOR="#007700"]));
if ([/COLOR][COLOR="#0000BB"]$auth[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]canDo[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'modPass'[/COLOR][COLOR="#007700"])) {
[/
COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]addElement[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]form_makePasswordField[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'newpass'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$lang[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'newpass'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'block'[/COLOR][COLOR="#007700"], array([/COLOR][COLOR="#DD0000"]'size'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'50'[/COLOR][COLOR="#007700"])));
[/
COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]addElement[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]form_makePasswordField[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'passchk'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$lang[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'passchk'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'block'[/COLOR][COLOR="#007700"], array([/COLOR][COLOR="#DD0000"]'size'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'50'[/COLOR][COLOR="#007700"])));
}
if ([/COLOR][COLOR="#0000BB"]$conf[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'profileconfirm'[/COLOR][COLOR="#007700"]]) {
[/
COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]addElement[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]form_makeTag[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'br'[/COLOR][COLOR="#007700"]));
[/
COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]addElement[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]form_makePasswordField[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'oldpass'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$lang[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'oldpass'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'block'[/COLOR][COLOR="#007700"], array([/COLOR][COLOR="#DD0000"]'size'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#DD0000"]'50'[/COLOR][COLOR="#007700"])));
}
[/
COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]addElement[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]form_makeButton[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'submit'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$lang[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'btn_save'[/COLOR][COLOR="#007700"]]));
[/
COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]addElement[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]form_makeButton[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'reset'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$lang[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'btn_reset'[/COLOR][COLOR="#007700"]]));
[/
COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]endFieldset[/COLOR][COLOR="#007700"]();
[/
COLOR][COLOR="#0000BB"]html_form[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'updateprofile'[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$form[/COLOR][COLOR="#007700"]);
print[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]NL[/COLOR][COLOR="#007700"];
}[/
COLOR][/COLOR

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

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

Фильтр символов:

из

Цитата:

Сообщение от None
~!@#%^*()_+-=[]\'|;/.,:

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

Цитата:

Сообщение от None
% & ; , :


RedHazard 05.03.2019 03:54

Баг авторизации выход из деректории:

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

authtype plain

Регистрация

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

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

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

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


Код:

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

test:a:$1$9xrqaX5M$EYTB88lDR83zcl9nsxIMk0:mail@email.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 plain

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

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

Цитата:

Сообщение от None
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=registe r&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: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
пропускают # диезу , а она как мы знаем комментирует все после себя в файле паролей.
Тем самым стирает значения.



Время: 19:10