Nocturnal

TelBo_on published on
3 min, 563 words

Categories: OSCP

Recon

Ports

Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-06 16:37 CST
Nmap scan report for nocturnal.htb (10.129.192.119)
Host is up (0.11s latency).
Not shown: 98 closed tcp ports (reset)
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 1.76 seconds

目标开放22,80端口。经典的linux服务器。 浏览目标网页信息: 是一个自建的web服务,快速scan一下,未发现敏感信息。

dirsearch -u http://nocturnal.htb/ -w /usr/share/wordlists/seclists/Discovery/Web-Content/quickhits.txt 
/usr/lib/python3/dist-packages/dirsearch/dirsearch.py:23: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
  from pkg_resources import DistributionNotFound, VersionConflict

  _|. _ _  _  _  _ _|_    v0.4.3
 (_||| _) (/_(_|| (_| )

Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 25 | Wordlist size: 2563

Output File: /home/Hackthebox/Nocturnal/reports/http_nocturnal.htb/__25-05-06_16-42-20.txt

Target: http://nocturnal.htb/

[16:42:20] Starting: 
[16:42:24] 302 -    0B  - /admin.php  ->  login.php                         
[16:42:26] 301 -  178B  - /backups  ->  http://nocturnal.htb/backups/       
[16:42:26] 403 -  564B  - /backups/                                         
[16:42:29] 200 -  644B  - /login.php                                        
[16:42:31] 200 -  649B  - /register.php                                     
[16:42:33] 403 -  564B  - /uploads/                                         
[16:42:33] 302 -    3KB - /view.php  ->  login.php

在创建账号后,测试功能点。存在一个上传功能点和一个查看(view.php)功能。 在view.php存在两个参数:username和file。 且可对这两个参数进行遍历测试。获得了两个用户名:tobias和amanda,以及在amanda下存在一个privacy.odt文件,下载下来后。获得了amanda的密码并成功登陆系统。admin panel中发现存在一个备份功能。以及可对系统文件进行查看,在admin.php中发现参数passowrd在进行函数cleanEntry黑名单检测后直接拼接进了command参数里,在随后被php中的proc_open函数执行。

function **cleanEntry**($entry) {
    $blacklist_chars = [';', '&', '|', '$', ' ', '`', '{', '}', '&&'];

    foreach ($blacklist_chars as $char) {
        if (strpos($entry, $char) !== false) {
            return false; // Malicious input detected
        }
    }
    
if (isset($_POST['backup']) && !empty($_POST['password'])) {
    $password = **cleanEntry**($_POST['password']);
    $backupFile = "backups/backup_" . date('Y-m-d') . ".zip";

    if ($password === false) {
        echo "<div class='error-message'>Error: Try another password.</div>";
    } else {
        $logFile = '/tmp/backup_' . uniqid() . '.log';
       
        $command = "zip -x './backups/*' -r -P " . **$password** . " " . $backupFile . " .  > " . $logFile . " 2>&1 &";
        
        $descriptor_spec = [
            0 => ["pipe", "r"], // stdin
            1 => ["file", $logFile, "w"], // stdout
            2 => ["file", $logFile, "w"], // stderr
        ];

        $process = **proc_open**($command, $descriptor_spec, $pipes);
        if (is_resource($process)) {
            proc_close($process);
        }

        sleep(2);

        $logContents = file_get_contents($logFile);
        if (strpos($logContents, 'zip error') === false) {
            echo "<div class='backup-success'>";
            echo "<p>Backup created successfully.</p>";
            echo "<a href='" . htmlspecialchars($backupFile) . "' class='download-button' download>Download Backup</a>";
            echo "<h3>Output:</h3><pre>" . htmlspecialchars($logContents) . "</pre>";
            echo "</div>";
        } else {
            echo "<div class='error-message'>Error creating the backup.</div>";
        }

        unlink($logFile);
    }
}

接下来构造绕过,黑名单对命令行中的常见符号进行了绕过。这里我们可以尝试进行编码绕过(PHP会自动对提交的请求进行解码操作)。 该命令逻辑为:zip -x './backups/*' -r -P <password> <backupFile> . > <logFile> 2>&1 & 其中password可控。payload=\"123\"%0aid%0a#。直接反弹shell出错,远程下载shell文件并运行。

Frist foothold

在应用文件夹中获得了一个数据库文件,dump下来后得到了tobias的密码。ssh登录后,进行内网信息搜集。发现本地存在一个8080端口服务,ssh端口转发后。 没有版本信息,查看它的一些文件信息:发现他的xss文件版本为3.2。合理猜测目标版本信息为3.2+,不行再看其他的。 存在一个CVE-2023-46818。这个漏洞需要认证用户。看了下其他漏洞,都需要认证用户才能进行利用。结合我们现有凭据和搜索相关信息,ispconfig默认用户为admin。尝试登陆。可行。 结合EXP获取了rootshell。可写ssh私钥。

Summary

考察了命令注入中的绕过,和现有CVE漏洞的判断与利用。