Smarty Forum Index Smarty
The discussions here are for Smarty, a template engine for the PHP programming language.

XSS vulnerability

 
Post new topic   Reply to topic    Smarty Forum Index -> Language: Russian
View previous topic :: View next topic  
Author Message
nikola_blin
Smarty Rookie


Joined: 14 Apr 2017
Posts: 5

PostPosted: Fri Apr 14, 2017 9:08 am    Post subject: XSS vulnerability Reply with quote

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
View user's profile Send private message
AnrDaemon
Administrator


Joined: 03 Dec 2012
Posts: 1044

PostPosted: Fri Apr 14, 2017 9:40 am    Post subject: Reply with quote

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
View user's profile Send private message
nikola_blin
Smarty Rookie


Joined: 14 Apr 2017
Posts: 5

PostPosted: Fri Apr 14, 2017 10:03 am    Post subject: Reply with quote

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
View user's profile Send private message
AnrDaemon
Administrator


Joined: 03 Dec 2012
Posts: 1044

PostPosted: Fri Apr 14, 2017 10:50 am    Post subject: Reply with quote

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
View user's profile Send private message
nikola_blin
Smarty Rookie


Joined: 14 Apr 2017
Posts: 5

PostPosted: Sat Apr 15, 2017 4:08 am    Post subject: Reply with quote

Господа, после переноса повторю вопрос.

Прочитал о smarty такую штуку, как опция escape.
Есть ли такая опция для функции? вида smarty->fetch(display.tpl)?

Данная строка обозначена в отчете PT как уязвимость.
Back to top
View user's profile Send private message
AnrDaemon
Administrator


Joined: 03 Dec 2012
Posts: 1044

PostPosted: Sat Apr 15, 2017 10:54 am    Post subject: Reply with quote

Отчёты надо уметь читать и понимать прочитанное, а не бросаться исправлять непонятно что.

Что именно написано в отчёте и на что именно идёт проверка?
Back to top
View user's profile Send private message
nikola_blin
Smarty Rookie


Joined: 14 Apr 2017
Posts: 5

PostPosted: Sat Apr 15, 2017 11:14 am    Post subject: Reply with quote

AnrDaemon wrote:
Отчёты надо уметь читать и понимать прочитанное, а не бросаться исправлять непонятно что.

Что именно написано в отчёте и на что именно идёт проверка?


Я не бросался что-либо исправлять, откуда такие выводы? Laughing Читать я умею. Чтобы понять прочитанное, топик здесь завел.

В отчете:
Уязвимость - 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
View user's profile Send private message
AnrDaemon
Administrator


Joined: 03 Dec 2012
Posts: 1044

PostPosted: Sat Apr 15, 2017 11:42 am    Post subject: Reply with quote

nikola_blin wrote:

echo $smarty->fetch('forbidden.tpl');
die;

Это что за идиотский код?
Какой дебил тебе его посоветовал?
Почему не просто
Code:
$smarty->display('forbidden.tpl');
die;
Back to top
View user's profile Send private message
nikola_blin
Smarty Rookie


Joined: 14 Apr 2017
Posts: 5

PostPosted: Sat Apr 15, 2017 11:49 am    Post subject: Reply with quote

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
View user's profile Send private message
AnrDaemon
Administrator


Joined: 03 Dec 2012
Posts: 1044

PostPosted: Sat Apr 15, 2017 12:30 pm    Post subject: Reply with quote

Повторяю второй и последний раз.

1. Общая часть.
Шаблон, за исключением тегов Smarty, должен содержать УЖЕ ВАЛИДНЫЙ код. Любая трансформация допустима только для ДАННЫХ (подставляемых переменных, да) и только с целью предотвратить повреждение данных при передаче клиенту или интерпретации (что суть едино).
Никаких бессмысленных трансформаций делать нельзя, иначе получишь дебилизм типа этого форума. (Попробуй на русский пост превью нажать - увидишь красочные результаты подобного "эскепинга".)

2. Конкретно по твоему отчёту.
Сама формулировка не даёт никакой информации. Ну, да, идёт оператор печати, дальше то что?
Что теперь, не печатать ничего, чтобы оно не ругалось?

3. Не надо давать ссылки на документацию по 2.0 - она поддерживается только фиксами безопасности.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Smarty Forum Index -> Language: Russian All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Protected by Anti-Spam ACP