{"id":75,"date":"2026-01-20T12:08:46","date_gmt":"2026-01-20T12:08:46","guid":{"rendered":"https:\/\/patatties.nl\/?p=75"},"modified":"2026-01-20T15:39:40","modified_gmt":"2026-01-20T15:39:40","slug":"htb-keeper","status":"publish","type":"post","link":"https:\/\/patatties.nl\/?p=75","title":{"rendered":"HTB: Keeper"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-27.png\" alt=\"\" class=\"wp-image-77\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-27.png 300w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-27-150x150.png 150w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"68\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-26-1024x68.png\" alt=\"\" class=\"wp-image-76\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-26-1024x68.png 1024w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-26-300x20.png 300w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-26-768x51.png 768w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-26.png 1407w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A Linux box this time. We&#8217;re slowly working our way up. A bit more recent machine this time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lets start again with a Ping and nmap of all ports.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">nmap -p- -sC -sV 10.129.229.41<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Only 2 ports open<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PORT   STATE SERVICE VERSION\n22\/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.3 (Ubuntu Linux; protocol 2.0)\n| ssh-hostkey: \n|   256 35:39:d4:39:40:4b:1f:61:86:dd:7c:37:bb:4b:98:9e (ECDSA)\n|_  256 1a:e9:72:be:8b:b1:05:d5:ef:fe:dd:80:d8:ef:c0:66 (ED25519)\n80\/tcp open  http    nginx 1.18.0 (Ubuntu)\n|_http-title: Site doesn't have a title (text\/html).\n|_http-server-header: nginx\/1.18.0 (Ubuntu)\nService Info: OS: Linux; CPE: cpe:\/o:linux:linux_kernel<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Main page simply says to rais a ticket, but also exposes the tickets subdomain. So lets add that to the hosts file, and open.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"633\" height=\"186\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-28.png\" alt=\"\" class=\"wp-image-80\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-28.png 633w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-28-300x88.png 300w\" sizes=\"auto, (max-width: 633px) 100vw, 633px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We are greeted by the ticketing system.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"400\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-29-1024x400.png\" alt=\"\" class=\"wp-image-81\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-29-1024x400.png 1024w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-29-300x117.png 300w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-29-768x300.png 768w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-29-1536x600.png 1536w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-29.png 1577w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Capturing a sign-in POST with burpsuite i tried to see if any of the fields are SQL injectable using SQLMAP:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>POST \/rt\/NoAuth\/Login.html HTTP\/1.1\nHost: tickets.keeper.htb\nUser-Agent: Mozilla\/5.0 (X11; Linux x86_64; rv:140.0) Gecko\/20100101 Firefox\/140.0\nAccept: text\/html,application\/xhtml+xml,application\/xml;q=0.9,*\/*;q=0.8\nAccept-Language: en-US,en;q=0.5\nAccept-Encoding: gzip, deflate, br\nContent-Type: application\/x-www-form-urlencoded\nContent-Length: 57\nOrigin: http:\/\/tickets.keeper.htb\nConnection: keep-alive\nReferer: http:\/\/tickets.keeper.htb\/rt\/\nCookie: RT_SID_tickets.keeper.htb.80=acf955e350c85ca2764ea39c9283495d\nUpgrade-Insecure-Requests: 1\nPriority: u=0, i\n\nuser=user&amp;pass=pass&amp;next=c91d1e2a59351c19648436b3c1740a6e\n\n## put this into sqlmap.txt<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>sqlmap -r sqlmap.txt -p next --dump --ignore-code=404 --risk=3\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">No luck there!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Guessing the password for an admin user, also no luck. The logon form exposes some system information: RT 3.3.3+dfsg-2ubuntu1 (debian). Perhaps a vulnerability?<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"173\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-30.png\" alt=\"\" class=\"wp-image-82\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-30.png 900w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-30-300x58.png 300w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-30-768x148.png 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">There seems to be an SQL injection for ShowPending. Lets have a closer look!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hm, seems to be outdated, or at least authenticated, but lets give it a try nonetheless. We have our post request, so it only takes a couple of minutes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"461\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-31-1024x461.png\" alt=\"\" class=\"wp-image-83\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-31-1024x461.png 1024w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-31-300x135.png 300w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-31-768x346.png 768w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-31.png 1079w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">No dice! Maybe later.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For now, lets look up the factory default credentials, if they exist. According to a short google search these should be <strong>root:password.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dice! They worked! We&#8217;re in!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"461\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-32-1024x461.png\" alt=\"\" class=\"wp-image-84\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-32-1024x461.png 1024w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-32-300x135.png 300w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-32-768x346.png 768w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-32.png 1079w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">So what now. Lets have a look around. There is another user on this system: lnorgaard@keeper.htb, and they have a note at their account:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>New user. Initial password set to Welcome2023!<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Not sure wat to do with this, i would think that root would have all access.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Looking around i se a bunch of errors, but not really any new leads. So i logged on with <strong>lnorgaard:Welcome2023!<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This indeed still worked! We come to the website in Danish, but immediately we see a ticket with issues for keepass. Keepass, passwords, interesting!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"518\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-33-1024x518.png\" alt=\"\" class=\"wp-image-85\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-33-1024x518.png 1024w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-33-300x152.png 300w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-33-768x388.png 768w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-33.png 1392w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Opening the Issue we have a message about a keepas crash dump. Very interesting! <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"233\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-34-1024x233.png\" alt=\"\" class=\"wp-image-86\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-34-1024x233.png 1024w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-34-300x68.png 300w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-34-768x175.png 768w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-34.png 1195w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Looking around i dont seem to find the download attachment button for this ticket. Apperently they are saved in the database somehow. Also, it seems that Root has created this ticket. Maybe it has hidden dat data somewhere?<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"623\" height=\"116\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-35.png\" alt=\"\" class=\"wp-image-87\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-35.png 623w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-35-300x56.png 300w\" sizes=\"auto, (max-width: 623px) 100vw, 623px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Apperently the attachment was removed, but placed in the home directory. Is this user also a user on the box? Lets check it out.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Success!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"662\" height=\"335\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-37.png\" alt=\"\" class=\"wp-image-89\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-37.png 662w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-37-300x152.png 300w\" sizes=\"auto, (max-width: 662px) 100vw, 662px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">When unzipping the RT3000.zip we find 2 files inside:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>KeePassDumpFull.dmp<\/li>\n\n\n\n<li>passcodes.kdbx<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">a quick google search and i found a github repo that apperently can get the master-password for this dump, abusing a CVE-2023-32784.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/z-jxy\/keepass_dump\/blob\/main\/README.md\">https:\/\/github.com\/z-jxy\/keepass_dump\/blob\/main\/README.md<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Running it against the dump i get the following password: <strong><strong>dgrd med flde<\/strong><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This does feel danish to me, and googling it brings me to: R\u00f8d gr\u00f8d med fl\u00f8de (which is a type of desert). <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In the examples within the github, the first letter is missing oftenly in the first overview. So i would guess that the master password is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>rdgrd med flde\nRdgrd med flde\nR\u00f8dgr\u00f8d med fl\u00f8de\nrodgrod med flode\nr\u00f8dgr\u00f8d med fl\u00f8de\n\n\nAnd what to do with those. I'm looking for a way to extract content from this dumpfile somehow. But i also got the passcodes.kdbx. Maybe i need to do something with that<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">I managed to download a linux copy keepass by doing this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u250c\u2500\u2500(root\u327fkali)-&#91;\/home\/kali]\n\u2514\u2500# sudo apt-add-repository ppa:jtaylor\/keepass\nsudo apt-get update\nsudo apt-get install keepass2\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">running keepass2 from the command line gives me the full GUI.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"904\" height=\"767\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-38.png\" alt=\"\" class=\"wp-image-90\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-38.png 904w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-38-300x255.png 300w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-38-768x652.png 768w\" sizes=\"auto, (max-width: 904px) 100vw, 904px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Here i can load the passcodes, and enter the password which was<strong> r\u00f8dgr\u00f8d med fl\u00f8de<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"579\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-39-1024x579.png\" alt=\"\" class=\"wp-image-91\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-39-1024x579.png 1024w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-39-300x170.png 300w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-39-768x434.png 768w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-39.png 1325w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The first entry i see seemed to contain a putty ssh key for the root account. sudo apt install putty, installs putty \ud83d\ude42<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Take the Notes content completely and put it in a file. I named mine id_rsa.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"631\" height=\"517\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/Screenshot-from-2026-01-20-16-32-48.png\" alt=\"\" class=\"wp-image-92\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/Screenshot-from-2026-01-20-16-32-48.png 631w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/Screenshot-from-2026-01-20-16-32-48-300x246.png 300w\" sizes=\"auto, (max-width: 631px) 100vw, 631px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Run putty, specify the ssh credentials under Connection, SSH, Auth Credentials<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"641\" height=\"291\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-40.png\" alt=\"\" class=\"wp-image-93\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-40.png 641w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-40-300x136.png 300w\" sizes=\"auto, (max-width: 641px) 100vw, 641px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"645\" height=\"323\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-41.png\" alt=\"\" class=\"wp-image-94\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-41.png 645w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-41-300x150.png 300w\" sizes=\"auto, (max-width: 645px) 100vw, 645px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">we&#8217;re in!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"697\" height=\"333\" src=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-42.png\" alt=\"\" class=\"wp-image-95\" srcset=\"https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-42.png 697w, https:\/\/patatties.nl\/wp-content\/uploads\/2026\/01\/image-42-300x143.png 300w\" sizes=\"auto, (max-width: 697px) 100vw, 697px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And there is the flag!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Final thoughts<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This was a fine box, nothing too great! Was more of a puzzle than anything else. The longest time was spent on getting the password for keepass right, but after that, smooth sailing!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A Linux box this time. We&#8217;re slowly working our way up. A bit more recent machine this time. Lets start again with a Ping and nmap of all ports. nmap -p- -sC -sV 10.129.229.41 Only 2 ports open Main page simply says to rais a ticket, but also exposes the tickets subdomain. So lets add [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-75","post","type-post","status-publish","format-standard","hentry","category-htb"],"_links":{"self":[{"href":"https:\/\/patatties.nl\/index.php?rest_route=\/wp\/v2\/posts\/75","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/patatties.nl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/patatties.nl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/patatties.nl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/patatties.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=75"}],"version-history":[{"count":3,"href":"https:\/\/patatties.nl\/index.php?rest_route=\/wp\/v2\/posts\/75\/revisions"}],"predecessor-version":[{"id":96,"href":"https:\/\/patatties.nl\/index.php?rest_route=\/wp\/v2\/posts\/75\/revisions\/96"}],"wp:attachment":[{"href":"https:\/\/patatties.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=75"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/patatties.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=75"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/patatties.nl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=75"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}