View previous topic :: View next topic |
Author |
Message |
nikola_blin Smarty Rookie
Joined: 14 Apr 2017 Posts: 5
|
Posted: Fri Apr 14, 2017 9:08 am Post subject: XSS vulnerability |
|
|
Hello. I'm new in Smarty.
I have a Stored XSS on line:
Code: | echo $smarty->fetch('forbidden.tpl'); |
(this is PT APP INSPECTOR work result).
I think, I need to escape some tags from this tpl, but can't understand how to do it. |
|
Back to top |
|
AnrDaemon Administrator
Joined: 03 Dec 2012 Posts: 1785
|
Posted: Fri Apr 14, 2017 9:40 am Post subject: |
|
|
You "think" or you "need" ?
If you don't know, nobody knows better.
It is your responsibility for what you write in your templates. |
|
Back to top |
|
nikola_blin Smarty Rookie
Joined: 14 Apr 2017 Posts: 5
|
Posted: Fri Apr 14, 2017 10:03 am Post subject: |
|
|
AnrDaemon wrote: | You "think" or you "need" ?
If you don't know, nobody knows better.
It is your responsibility for what you write in your templates. |
"Think" doest contradict "Need". For example, YOU can think that I need to escape symbols.
My question - the syntaxis of escape func for ->fetch('sometempl.tpl').
Sorry, filosophy is in other thread. |
|
Back to top |
|
AnrDaemon Administrator
Joined: 03 Dec 2012 Posts: 1785
|
Posted: Fri Apr 14, 2017 10:50 am Post subject: |
|
|
Yet again. It is your responsibility to escape anything you want to escape IN A TEMPLATE.
The template itself, Smarty tags aside, should contain a valid output stream.
P.S.
If you are more comfortable in Russian, we could move to Russian support forum. |
|
Back to top |
|
nikola_blin Smarty Rookie
Joined: 14 Apr 2017 Posts: 5
|
Posted: Sat Apr 15, 2017 4:08 am Post subject: |
|
|
Господа, после переноса повторю вопрос.
Прочитал о smarty такую штуку, как опция escape.
Есть ли такая опция для функции? вида smarty->fetch(display.tpl)?
Данная строка обозначена в отчете PT как уязвимость. |
|
Back to top |
|
AnrDaemon Administrator
Joined: 03 Dec 2012 Posts: 1785
|
Posted: Sat Apr 15, 2017 10:54 am Post subject: |
|
|
Отчёты надо уметь читать и понимать прочитанное, а не бросаться исправлять непонятно что.
Что именно написано в отчёте и на что именно идёт проверка? |
|
Back to top |
|
nikola_blin Smarty Rookie
Joined: 14 Apr 2017 Posts: 5
|
Posted: Sat Apr 15, 2017 11:14 am Post subject: |
|
|
AnrDaemon wrote: | Отчёты надо уметь читать и понимать прочитанное, а не бросаться исправлять непонятно что.
Что именно написано в отчёте и на что именно идёт проверка? |
Я не бросался что-либо исправлять, откуда такие выводы? Читать я умею. Чтобы понять прочитанное, топик здесь завел.
В отчете:
Уязвимость - Stored XSS
Вход - элемент fetch (строка с echo);
Выход - элемент echo;
Code: | if (!ExtResponse::isAjaxRequest() && $this->getEvent() == 'forbidden') {
$smarty = new SmartyRender('admin');
echo $smarty->fetch('forbidden.tpl');
die;
}
|
|
|
Back to top |
|
AnrDaemon Administrator
Joined: 03 Dec 2012 Posts: 1785
|
Posted: Sat Apr 15, 2017 11:42 am Post subject: |
|
|
nikola_blin wrote: |
echo $smarty->fetch('forbidden.tpl');
die; |
Это что за идиотский код?…
Какой дебил тебе его посоветовал?
Почему не просто Code: | $smarty->display('forbidden.tpl');
die; |
|
|
Back to top |
|
nikola_blin Smarty Rookie
Joined: 14 Apr 2017 Posts: 5
|
Posted: Sat Apr 15, 2017 11:49 am Post subject: |
|
|
AnrDaemon wrote: | nikola_blin wrote: |
echo $smarty->fetch('forbidden.tpl');
die; |
Это что за идиотский код?…
Какой дебил тебе его посоветовал?
Почему не просто Code: | $smarty->display('forbidden.tpl');
die; |
|
Без понятия, кто писал этот код, у меня есть исходник и строка отчета. Совета по коду меня не спрашивал. Почему так написано, знает только автор кода, и, возможно, написать так были какие-то причины. Бэкап куска проекта весит под полтинник метров - кто его знает, что там.
Ты закончил с оффтопами, админ?
Давай спрошу по-простенькому, вот это - http://www.smarty.net/docs/en/language.modifier.escape.tpl
каким то образом на вышеприведенную строку можно применить?
Если да - синтаксис какой? |
|
Back to top |
|
AnrDaemon Administrator
Joined: 03 Dec 2012 Posts: 1785
|
Posted: Sat Apr 15, 2017 12:30 pm Post subject: |
|
|
Повторяю второй и последний раз.
1. Общая часть.
Шаблон, за исключением тегов Smarty, должен содержать УЖЕ ВАЛИДНЫЙ код. Любая трансформация допустима только для ДАННЫХ (подставляемых переменных, да) и только с целью предотвратить повреждение данных при передаче клиенту или интерпретации (что суть едино).
Никаких бессмысленных трансформаций делать нельзя, иначе получишь дебилизм типа этого форума. (Попробуй на русский пост превью нажать - увидишь красочные результаты подобного "эскепинга".)
2. Конкретно по твоему отчёту.
Сама формулировка не даёт никакой информации. Ну, да, идёт оператор печати, дальше то что?
Что теперь, не печатать ничего, чтобы оно не ругалось?
3. Не надо давать ссылки на документацию по 2.0 - она поддерживается только фиксами безопасности. |
|
Back to top |
|
|