Web


Nmap discovered a Web server on the port 80 of the 192.168.103.188 host. The running service is Apache httpd 2.4.48 ((Win64) OpenSSL/1.1.1k PHP/8.0.7)

┌──(kali㉿kali)-[~/PEN-200/PG_PRACTICE/craft2]
└─$ curl -I -X OPTIONS http://$IP/
HTTP/1.1 200 OK
Date: Fri, 04 Jul 2025 16:11:38 GMT
Server: Apache/2.4.48 (Win64) OpenSSL/1.1.1k PHP/8.0.7
X-Powered-By: PHP/8.0.7
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
 
 
┌──(kali㉿kali)-[~/PEN-200/PG_PRACTICE/craft2]
└─$ curl -I http://$IP/        
HTTP/1.1 200 OK
Date: Fri, 04 Jul 2025 16:11:40 GMT
Server: Apache/2.4.48 (Win64) OpenSSL/1.1.1k PHP/8.0.7
X-Powered-By: PHP/8.0.7
Content-Type: text/html; charset=UTF-8

Webroot

Admin Panel


The Admin Login button does not lead anywhere

File Upload


File upload is available at the signup section.

Uploading a testing file sends a POST request to the /upload.php endpoint.

Failed. It’s expecting a ODT file. This suggests a phishing opportunity to upload a macro-enabled ODT file.

Domain


The signup section also contains a domain; craft.offsec

The domain information has been appended to the /etc/hosts on Kali for local DNS resolution.

Fuzzing


┌──(kali㉿kali)-[~/PEN-200/PG_PRACTICE/craft2]
└─$ ffuf -c -w /usr/share/wordlists/seclists/Discovery/Web-Content/big.txt -u http://$IP/FUZZ -ic -e .html,.txt,.php -fs 304
________________________________________________
 :: Method           : GET
 :: URL              : http://192.168.103.188/FUZZ
 :: Wordlist         : FUZZ: /usr/share/wordlists/seclists/Discovery/Web-Content/big.txt
 :: Extensions       : .html .txt .php 
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
 :: Filter           : Response size: 304
________________________________________________
Index.php               [Status: 200, Size: 9768, Words: 3463, Lines: 167, Duration: 20ms]
assets                  [Status: 301, Size: 343, Words: 22, Lines: 10, Duration: 21ms]
css                     [Status: 301, Size: 340, Words: 22, Lines: 10, Duration: 19ms]
index.php               [Status: 200, Size: 9768, Words: 3463, Lines: 167, Duration: 24ms]
js                      [Status: 301, Size: 339, Words: 22, Lines: 10, Duration: 21ms]
licenses                [Status: 403, Size: 423, Words: 37, Lines: 12, Duration: 20ms]
phpmyadmin              [Status: 403, Size: 423, Words: 37, Lines: 12, Duration: 21ms]
server-info             [Status: 403, Size: 423, Words: 37, Lines: 12, Duration: 22ms]
server-status           [Status: 403, Size: 423, Words: 37, Lines: 12, Duration: 19ms]
upload.php              [Status: 200, Size: 537, Words: 68, Lines: 9, Duration: 79ms]
uploads                 [Status: 301, Size: 344, Words: 22, Lines: 10, Duration: 21ms]
webalizer               [Status: 403, Size: 423, Words: 37, Lines: 12, Duration: 20ms]
:: Progress: [81912/81912] :: Job [1/1] :: 1754 req/sec :: Duration: [0:00:47] :: Errors: 0 ::
 
 
┌──(kali㉿kali)-[~/PEN-200/PG_PRACTICE/craft2]
└─$ ffuf -c -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-big.txt -u http://$IP/FUZZ/ -ic -fs 304
________________________________________________
 :: Method           : GET
 :: URL              : http://192.168.103.188/FUZZ/
 :: Wordlist         : FUZZ: /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-big.txt
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
 :: Filter           : Response size: 304
________________________________________________
                        [Status: 200, Size: 9768, Words: 3463, Lines: 167, Duration: 23ms]
uploads                 [Status: 200, Size: 777, Words: 61, Lines: 16, Duration: 24ms]
icons                   [Status: 200, Size: 73983, Words: 7383, Lines: 1005, Duration: 40ms]
assets                  [Status: 200, Size: 1196, Words: 114, Lines: 18, Duration: 28ms]
css                     [Status: 200, Size: 980, Words: 83, Lines: 17, Duration: 24ms]
js                      [Status: 200, Size: 981, Words: 86, Lines: 17, Duration: 23ms]
licenses                [Status: 403, Size: 423, Words: 37, Lines: 12, Duration: 23ms]
phpmyadmin              [Status: 403, Size: 423, Words: 37, Lines: 12, Duration: 21ms]
webalizer               [Status: 403, Size: 423, Words: 37, Lines: 12, Duration: 20ms]
server-status           [Status: 403, Size: 423, Words: 37, Lines: 12, Duration: 20ms]
css%20                  [Status: 200, Size: 982, Words: 85, Lines: 17, Duration: 23ms]
server-info             [Status: 403, Size: 423, Words: 37, Lines: 12, Duration: 24ms]
:: Progress: [1185241/1185241] :: Job [1/1] :: 2020 req/sec :: Duration: [0:12:33] :: Errors: 0 ::
  • /uploads/

/uploads/ Endpoint


Possibly the endpoint where uploaded files are stored.

Virtual Host / Sub-domain Discovery


┌──(kali㉿kali)-[~/PEN-200/PG_PRACTICE/craft2]
└─$ ffuf -c -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-110000.txt -u http://$IP/ -H 'Host: FUZZ.craft.offsec' -ic -mc all -fs 9768
________________________________________________
 :: Method           : GET
 :: URL              : http://192.168.103.188/
 :: Wordlist         : FUZZ: /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-110000.txt
 :: Header           : Host: FUZZ.craft.offsec
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: all
 :: Filter           : Response size: 9768
________________________________________________
:: Progress: [114438/114438] :: Job [1/1] :: 288 req/sec :: Duration: [0:02:24] :: Errors: 0 ::

N/A