Web


Nmap discovered a Web server on the target port 3000 The running service is Kestrel

┌──(kali㉿kali)-[~/archive/htb/labs/lantern]
└─$ curl -i http://$IP:3000/                                      
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Date: Mon, 19 Aug 2024 10:23:42 GMT
Server: Kestrel
Cache-Control: no-cache, no-store, max-age=0
Transfer-Encoding: chunked
 
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <base href="/" />
    <link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" />
    <link href="css/site.css" rel="stylesheet" />
    <link href="PreProd.styles.css" rel="stylesheet" />
 
    <link href="https://fonts.gstatic.com" rel="preconnect">
    <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Nunito:300,300i,400,400i,600,600i,700,700i|Poppins:300,300i,400,400i,500,500i,600,600i,700,700i" rel="stylesheet">
    <!-- Vendor CSS Files -->
 
    <link href="css/bootstrap-icons.css" rel="stylesheet">
 
    <!-- Template Main CSS File -->
    <link href="css/style.css" rel="stylesheet">
 
 
    <!--Blazor:{"sequence":1,"type":"server","prerenderId":"fa7ea5e6983f44c6a328bd3562bf61bd","descriptor":"CfDJ8BUo1ePf0MxMocV2v0oTDZGfxmncZzWoi7EhYPRI1k27ELAo4pk4i2Jp0Ar9gZ4RJAVWSE3QjyVq9Lzgx9euz8Yx2wNNsezLt8QUS8txU/weVbkCz3ow3E6ujxCQana62ZVimTR11siwLbH3ZCfojufnHlFdItRjLWN36vDgoxi8BGtXgAavmJnWHA0TfNGPK8XRQBMDBG4htp0coHCkwJznQbGIoeA32nhsMlPxGiRf0dn1WkSgHU6vRLPmkbGi0A8u4cZauBRHPByJzIDCBg6oht5S2HqhUR26/OloTh0HDyVE9jXAM6XSwoOD9v9r2LqSpJW7MEZYBFf6g0KDpShS9FJJYeDMjb3/bbgymsl8n\u002BsM7Uz8bC3JWSIFnW5xdyF740mh5MBty8UNPACM4BTdbIkV/xUubkhOwHwXtzCq"}--><!--Blazor:{"prerenderId":"fa7ea5e6983f44c6a328bd3562bf61bd"}-->
</head>
<body>
    
 
 
    <!--Blazor:{"sequence":0,"type":"server","descriptor":"CfDJ8BUo1ePf0MxMocV2v0oTDZHoDR0EpjXbbCKz9lwfAp6xKmn4yjPi6bu5DtR/9mkiKQj3LWLO2Q5nfSio16O2WOWxTwvDX4HOCfzT8txxg9Pg1OW5djfX5g1dWSC5aNtniCWAtez8oi/3T/GV4QwAvzrmMAQxpiLfHraex62zJLjVWMjjVVUN5u0plwxfhkzK2qNrGVVAyYCv2/bEazkPnv4DSFmTXaUqETxXPJefv9Y4Lzrp8tMy5GAqwf2i75YLi2yK/8UtZoSWPUbY3Ki\u002BaxAUfnf3ibHMOYQMPjjgQlMN8AAITHilQAyT1ETH5kpLhkxA82J\u002BX12m\u002BK6hlElFFMf057H0YbokHxwDpua0LBkg"}-->
 
 
 
    <div id="blazor-error-ui">
        
        
            An unhandled exception has occurred. See browser dev tools for details.
        
        <a href="" class="reload">Reload</a>
        <a class="dismiss">🗙</a>
    </div>
 
    <script src="_framework/blazor.server.js"></script>
 
    <script>
        window.downloadFileFromStream = async (fileName, contentStreamReference) => {
            const arrayBuffer = await contentStreamReference.arrayBuffer();
            const blob = new Blob([arrayBuffer]);
            const url = URL.createObjectURL(blob);
            const anchorElement = document.createElement('a');
            anchorElement.href = url;
            anchorElement.download = fileName ?? '';
            anchorElement.click();
            anchorElement.remove();
            URL.revokeObjectURL(url);
        }
    </script>
 
</body>
</html>     

The Web server is Kestrel, hosting aBlazor web application

Wappalyzer confirms it

Login Page


It redirects to the login page

Attempting to test the authentication reveals that the web application doesn’t even make a request to the backend.

It would seems that there is a client-side script.

Which is an obfuscated script that connects to the backend, and it corresponds to the original script It’s located under the _framework directory

Fuzzing


┌──(kali㉿kali)-[~/archive/htb/labs/lantern]
└─$ ffuf -c -w /usr/share/wordlists/seclists/Discovery/Web-Content/big.txt -t 200 -u http://$IP:3000/FUZZ -ic  -fw 334
________________________________________________
 :: Method           : GET
 :: URL              : http://10.129.81.94:3000/FUZZ
 :: Wordlist         : FUZZ: /usr/share/wordlists/seclists/Discovery/Web-Content/big.txt
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 200
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
 :: Filter           : Response words: 334
________________________________________________
error                   [Status: 200, Size: 1490, Words: 340, Lines: 38, Duration: 199ms]
favicon.ico             [Status: 200, Size: 5430, Words: 9, Lines: 1, Duration: 185ms]
:: Progress: [20476/20476] :: Job [1/1] :: 798 req/sec :: Duration: [0:00:25] :: Errors: 0 ::

Nothing notable found

Virtual Host / Sub-domain Discovery


┌──(kali㉿kali)-[~/archive/htb/labs/lantern]
└─$ ffuf -c -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-110000.txt -u http://$IP:3000/ -H 'Host: FUZZ.lantern.htb' -ic -mc all -fw 334
________________________________________________
 :: Method           : GET
 :: URL              : http://10.129.81.94:3000/
 :: Wordlist         : FUZZ: /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-110000.txt
 :: Header           : Host: FUZZ.lantern.htb
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: all
 :: Filter           : Response words: 334
________________________________________________
:: Progress: [114437/114437] :: Job [1/1] :: 1015 req/sec :: Duration: [0:02:54] :: Errors: 2118 ::

Nothing found