PortableKanban
ps c:\Users\jason> ls Downloads
ls Downloads
directory: C:\Users\jason\Downloads
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 3/31/2021 2:36 AM node_modules
d----- 4/2/2021 8:21 PM PortableKanban
I found an unusual/interesting directory within the home directory of the jason
user upon completing basic enumeration
It would appear that the user might have downloaded and been using another application other than the Heep application with the electron-builder
package.
portable kanban appears to be a 3rd-party personal task management software available on Windows hosts. It seems to be a personal project as there isn’t much information available online.
ps c:\Users\jason> cd Downloads/PortableKanban ; ls
directory: C:\Users\jason\Downloads\PortableKanban
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 4/2/2021 7:44 AM Files
d----- 4/2/2021 7:17 AM Plugins
-a---- 2/27/2013 7:06 AM 58368 CommandLine.dll
-a---- 11/8/2017 12:52 PM 141312 CsvHelper.dll
-a---- 6/22/2016 9:31 PM 456704 DotNetZip.dll
-a---- 11/23/2017 3:29 PM 23040 Itenso.Rtf.Converter.Html.dll
-a---- 11/23/2017 3:29 PM 75776 Itenso.Rtf.Interpreter.dll
-a---- 11/23/2017 3:29 PM 32768 Itenso.Rtf.Parser.dll
-a---- 11/23/2017 3:29 PM 19968 Itenso.Sys.dll
-a---- 11/23/2017 3:29 PM 376832 MsgReader.dll
-a---- 7/3/2014 10:20 PM 133296 Ookii.Dialogs.dll
-a---- 4/2/2021 8:22 PM 5920 PortableKanban.cfg
-a---- 1/4/2018 8:12 PM 118184 PortableKanban.Data.dll
-a---- 1/4/2018 8:12 PM 1878440 PortableKanban.exe
-a---- 1/4/2018 8:12 PM 31144 PortableKanban.Extensions.dll
-a---- 4/2/2021 7:21 AM 172 PortableKanban.pk3.lock
-a---- 9/6/2017 12:18 PM 413184 ServiceStack.Common.dll
-a---- 9/6/2017 12:17 PM 137216 ServiceStack.Interfaces.dll
-a---- 9/6/2017 12:02 PM 292352 ServiceStack.Redis.dll
-a---- 9/6/2017 4:38 AM 411648 ServiceStack.Text.dll
-a---- 1/4/2018 8:14 PM 1050092 User Guide.pdf
While there are just about only executables(EXE
,DLL
) and a PDF manual, there is also a configuration file; PortableKanban.cfg
Configuration File
PS C:\Users\jason\Downloads\PortableKanban> cat PortableKanban.cfg
{
"RoamingSettings": {
"DataSource": "RedisServer",
"DbServer": "localhost",
"DbPort": 6379,
"DbEncPassword": "Odh7N3L9aVSeHQmgK/nj7RQL8MEYCUMb",
"DbServer2": "",
"DbPort2": 6379,
"DbEncPassword2": "",
"DbIndex": 0,
"DbSsl": false,
"DbTimeout": 10,
"FlushChanges": true,
"UpdateInterval": 5,
"AutoUpdate": true,
"Caption": "My Tasks",
"RightClickAction": "Nothing",
"DateTimeFormat": "ddd, M/d/yyyy h:mm tt",
"BoardForeColor": "WhiteSmoke",
"BoardBackColor": "DimGray",
"ViewTabsFont": "Segoe UI, 9pt",
"SelectedViewTabForeColor": "WhiteSmoke",
"SelectedViewTabBackColor": "Black",
"HeaderFont": "Segoe UI, 11.4pt",
"HeaderShowCount": true,
"HeaderShowLimit": true,
"HeaderShowEstimates": true,
"HeaderShowPoints": false,
"HeaderForeColor": "WhiteSmoke",
"HeaderBackColor": "Gray",
"CardFont": "Segoe UI, 11.4pt",
"CardLines": 3,
"CardTextAlignment": "Center",
"CardShowMarks": true,
"CardShowInitials": false,
"CardShowTags": true,
"ThickTags": false,
"DefaultTaskForeColor": "WhiteSmoke",
"DefaultTaskBackColor": "Gray",
"SelectedTaskForeColor": "WhiteSmoke",
"SelectedTaskBackColor": "Black",
"SelectedTaskFrames": false,
"SelectedTaskFrameColor": "WhiteSmoke",
"SelectedTaskThickFrames": false,
"WarmTasksThreshold": 0,
"WarmTaskForeColor": "WhiteSmoke",
"WarmTaskBackColor": "MediumBlue",
"WarmTaskFrameColor": "Goldenrod",
"HotTasksThreshold": 1,
"HotTaskForeColor": "WhiteSmoke",
"HotTaskBackColor": "Blue",
"HotTaskFrameColor": "Yellow",
"OverdueTaskForeColor": "WhiteSmoke",
"OverdueTaskBackColor": "OrangeRed",
"OverdueTaskFrameColor": "OrangeRed",
"WarmHotTaskFrames": false,
"WarmHotTaskThickFrames": false,
"BusinessDaysOnly": false,
"TrackedTaskForeColor": "WhiteSmoke",
"TrackedTaskBackColor": "Red",
"ShowSubtasksInEditBox": true,
"CheckForDuplicates": true,
"WarnBeforeDeleting": true,
"ProgressIncrement": 5,
"DisableCreated": false,
"DefaultPriority": "Low",
"DefaultDeadlineTime": "PT0S",
"ShowTaskComments": true,
"IntervalFormat": "Hours",
"WorkUnitDuration": 1,
"SelectAnyColumn": false,
"ShowInfo": true,
"CardInfoFont": "Segoe UI, 9pt",
"InfoTextAlignment": "Center",
"InfoShowPriority": true,
"InfoShowTopic": true,
"InfoShowPerson": true,
"InfoShowCreated": true,
"InfoShowDeadlineCompleted": true,
"InfoShowSubtasks": false,
"InfoShowEstimate": false,
"InfoShowSpent": false,
"InfoShowPoints": false,
"InfoShowProgress": true,
"InfoShowCommentsCount": false,
"InfoShowTags": false,
"InfoShowCustomFields": false,
"ShowToolTips": true,
"ToolTipShowText": true,
"ToolTipTextLimit": 200,
"ToolTipShowPriority": true,
"ToolTipShowTopic": true,
"ToolTipShowPerson": true,
"ToolTipShowCreated": false,
"ToolTipShowDeadlineCompleted": true,
"ToolTipShowSubtasks": true,
"ToolTipShowEstimate": true,
"ToolTipShowSpent": true,
"ToolTipShowPoints": true,
"ToolTipShowProgress": true,
"ToolTipShowCommentsCount": false,
"ToolTipShowTags": false,
"ToolTipShowCustomFields": false,
"TimerWorkInterval": 25,
"TimeShortBreakInterval": 5,
"TimerLongBreakInterval": 15,
"PlaySound": 1000,
"ActivateWindow": false,
"TaskBarProgress": true,
"EnableTimeTracking": true,
"AlertOnNewTask": false,
"AlertOnModifiedTask": false,
"AlertOnCompletedTask": false,
"AlertOnCanceledTask": false,
"AlertOnReassignedTask": false,
"AlertOnMovedTask": false,
"AlertOnDeletedTask": false,
"AlertMethod": "None",
"EmailLogon": true,
"EmailReviewMessage": true,
"EmailSmtpPort": 587,
"EmailSmtpDeliveryMethod": "Network",
"EmailSmtpUseDefaultCredentials": false,
"EmailSmtpEnableSSL": false,
"EmailSmtpTimeout": 5,
"EmailAttachFile": true,
"EmailNewTaskSubject": "PortableKanban Notification: New task has been created",
"EmailDeletedTaskSubject": "PortableKanban Notification: Task has been deleted",
"EmailEditedTaskSubject": "PortableKanban Notification: Task has been modified",
"EmailCompletedTaskSubject": "PortableKanban Notification: Task has been completed",
"EmailCanceledTaskSubject": "PortableKanban Notification: Task has been canceled",
"EmailReassignedTaskSubject": "PortableKanban Notification: Task has been reassigned",
"EmailMovedTaskSubject": "PortableKanban Notification: Task has been moved",
"EmailSignature": "This is automatic message.",
"PluginsSettings": {
"bd5d2026e1f7424eab8690a62ad05ad2": {},
"07a0d797c97c41f789af21ff4298754e": {
"SourceColumnId": "00000000000000000000000000000000",
"DestinationColumnId": "00000000000000000000000000000000",
"Age": 30
},
"2e470c79feb946f2b6e74b35245f8e80": {
"FromDate": "/Date(1617346800000-0700)/",
"ToDate": "/Date(1617346800000-0700)/",
"IncludeTopics": false,
"IncludeTags": false,
"IncludeComments": false,
"ReportType": "Html",
"SortByUser": true
},
"680986568fed41c381ef9f230feaa102": {
"RunOnStartup": false
},
"24b7acead7984f8ab16bdb0ae8559fb6": {
"TopicId": "00000000000000000000000000000000",
"ColumnId": "00000000000000000000000000000000",
"FromPersonId": "00000000000000000000000000000000",
"ToPersonId": "00000000000000000000000000000000"
}
},
"AutoLogon": false,
"LogonUserName": "",
"EncLogonPassword": "",
"ExitOnSuspend": false,
"DropFilesFolder": "Files",
"UseRelativePath": true,
"ConfirmFileDeleteion": true,
"DefaultDropFilesActionOption": "Copy",
"CreateNewTaskForEachDroppedFile": true,
"ParseDroppedEmails": true,
"RestoreWindowsLocation": true,
"DesktopShortcut": false,
"DailyBackup": false,
"BackupTime": "PT0S",
"BlockEscape": false,
"BlackWhiteIcon": true,
"ShowTimer": true,
"ViewId": "00000000000000000000000000000000",
"SearchInSubtasks": false,
"ReportIncludeComments": true,
"ReportIncludeSubTasks": true,
"ReportIncludeTimeTracks": true,
"ReportIncludeCustomFields": true
},
"LocalSettingsMap": {
"ATOM": {
"Left": 320,
"Top": 2,
"Width": 800,
"Height": 601,
"Minimized": false,
"Maximized": false,
"FullScreen": false,
"Hidden": false,
"AboutBoxLeft": 0,
"AboutBoxTop": 0,
"AboutBoxWidth": 0,
"AboutBoxHeight": 0,
"EditBoxLeft": 0,
"EditBoxTop": 0,
"EditBoxWidth": 0,
"EditBoxHeight": 0,
"EditBoxSplitterOrientation": 1,
"EditBoxSplitterDistance": 0,
"EditBoxFontSize": 0,
"EditBoxCommentsSortDirection": "Ascending",
"ReportBoxLeft": 370,
"ReportBoxTop": 27,
"ReportBoxWidth": 700,
"ReportBoxHeight": 551,
"SetupBoxLeft": 370,
"SetupBoxTop": 52,
"SetupBoxWidth": 700,
"SetupBoxHeight": 501,
"ViewBoxLeft": 0,
"ViewBoxTop": 0,
"ViewBoxWidth": 0,
"ViewBoxHeight": 0,
"LogonBoxLeft": 520,
"LogonBoxTop": 202,
"LogonBoxWidth": 400,
"LogonBoxHeight": 201
}
}
}
Interestingly, PortableKanban seems to be used in conjunction with the target Redis server instance as the backend
There is also the DbEncPassword
attribute populated with what appears to be an encrypted string; Odh7N3L9aVSeHQmgK/nj7RQL8MEYCUMb
It doesn’t appear to be a regular base64 string or the Redis password.
End-User-Only
ps c:\Users\jason\Downloads\PortableKanban> Get-Service *PortableKanban*
ps c:\Users\jason\Downloads\PortableKanban> Get-Process *PortableKanban*
Since there is not a single running service or process about the binary, I’d assume that this software is purely an end-user application much like notepad.exe
Vulnerability
┌──(kali㉿kali)-[~/archive/htb/labs/atom]
└─$ searchsploit PortableKanban
------------------------------------------------------------------------------------------------------ ---------------------------------
Exploit Title | Path
------------------------------------------------------------------------------------------------------ ---------------------------------
PortableKanban 4.3.6578.38136 - Encrypted Password Retrieval | windows/local/49409.py
------------------------------------------------------------------------------------------------------ ---------------------------------
Shellcodes: No Results
Papers: No Results
┌──(kali㉿kali)-[~/archive/htb/labs/atom]
└─$ searchsploit -X windows/local/49409.py
# Exploit Title: PortableKanban 4.3.6578.38136 - Encrypted Password Retrieval
# Date: 9 Jan 2021
# Exploit Author: rootabeta
# Vendor Homepage: The original page, https://dmitryivanov.net/, cannot be found at this time of writing. The vulnerable software can be downloaded from https://www.softpedia.com/get/Office-tools/Diary-Organizers-Calendar/Portable-Kanban.shtml
# Software Link: https://www.softpedia.com/get/Office-tools/Diary-Organizers-Calendar/Portable-Kanban.shtml
# Version: Tested on: 4.3.6578.38136. All versions that use the similar file format are likely vulnerable.
# Tested on: Windows 10 x64. Exploit likely works on all OSs that PBK runs on.
# PortableKanBan stores credentials in an encrypted format
# Reverse engineering the executable allows an attacker to extract credentials from local storage
# Provide this program with the path to a valid PortableKanban.pk3 file and it will extract the decoded credentials
[...REDACTED...]
Looking further into the vulnerability, there is a single entry
It seems that the software has already been reverse-engineered for decryption
This would mean that I may be able to decrypt the encrypted password string; Odh7N3L9aVSeHQmgK/nj7RQL8MEYCUMb
The
User Guide.pdf
file contains the version information.
While it is clear that the development has ended during the year 2018, and the project appear to be no longer maintained
Thus, the instance is very much likely vulnerable