From 22a6daab532914054338eec269c0ab7245d21737 Mon Sep 17 00:00:00 2001 From: noobpk Date: Sat, 13 Nov 2021 21:47:20 +0700 Subject: [PATCH] Fix Multiple Stored XSS on featuers 'Milestones' , 'Research', 'Retrospective' Disclosure: https://huntr.dev/bounties/1cc6d108-3827-4b62-bcf2-24192af7057d/ --- src/domain/leancanvas/templates/canvasDialog.tpl.php | 2 +- src/domain/retrospectives/templates/showBoards.tpl.php | 6 +++--- src/domain/tickets/js/ticketsController.js | 6 +++++- src/domain/tickets/templates/milestoneDialog.tpl.php | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/domain/leancanvas/templates/canvasDialog.tpl.php b/src/domain/leancanvas/templates/canvasDialog.tpl.php index b6d7def46..572d003ae 100644 --- a/src/domain/leancanvas/templates/canvasDialog.tpl.php +++ b/src/domain/leancanvas/templates/canvasDialog.tpl.php @@ -19,7 +19,7 @@ -

" class="retroModal" data="item_">

+

" class="retroModal" data="item_">e($row["description"]);?>

e($row["data"]); ?> @@ -199,7 +199,7 @@
-

" class="retroModal" data="item_">

+

" class="retroModal" data="item_">e($row["description"]);?>

e($row["data"]); ?> @@ -297,7 +297,7 @@
-

" class="retroModal" data="item_">

+

" class="retroModal" data="item_">e($row["description"]);?>

e($row["data"]); ?> diff --git a/src/domain/tickets/js/ticketsController.js b/src/domain/tickets/js/ticketsController.js index 6a2a6e0cc..1e3303847 100644 --- a/src/domain/tickets/js/ticketsController.js +++ b/src/domain/tickets/js/ticketsController.js @@ -78,6 +78,10 @@ leantime.ticketsController = (function () { var initGanttChart = function (tasks, viewMode) { + function htmlEntities(str) { + return String(str).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); + }; + jQuery(document).ready( function () { @@ -88,7 +92,7 @@ leantime.ticketsController = (function () { // dates and progress value var end_date = task._end.format(leantime.i18n.__("language.momentJSDate")); return '
' + - '

'+task.name+'


' + + '

'+htmlEntities(task.name)+'


' + '

'+leantime.i18n.__("text.expected_to_finish_by")+' '+end_date+'
' + ''+Math.round(task.progress)+'%

' + ' '+leantime.i18n.__("links.edit_milestone") +' | ' + diff --git a/src/domain/tickets/templates/milestoneDialog.tpl.php b/src/domain/tickets/templates/milestoneDialog.tpl.php index d5794a741..4c5fe8b00 100644 --- a/src/domain/tickets/templates/milestoneDialog.tpl.php +++ b/src/domain/tickets/templates/milestoneDialog.tpl.php @@ -26,7 +26,7 @@
- "/>
+ "/>