Auteur Sujet: [AIDE] Pour développer un scanneur de faille XSS reflected en PHP  (Lu 505 fois)

0 Membres et 2 Invités sur ce sujet

Hors ligne Frenchcore44

  • Membre régulier
  • **
  • Messages: 97
  • +2/-0
Salut,

J'ai voulu créez un script en php qui tester pour voir si une URL est vulnérable à la faille XSS

Du coup j'ai réussi un peut près x) à créer le script

Sauf après avoir trouvée un point d'injection,
je ne sais pas comment faire pour  savoir si mon code javascript a était bien exécuter

Tout d'abord je vais vous montrez le code qui permet de savoir si une URL à une entrée utilisateur qui est renvoyez sur la page


<?php

/* 

Cette fonction prend un URL en paramètre et un mot-clés
qui seras chercher dans le corps de la page
Exemple : 

REFLECTED('http://127.0.0.1/search.php?query=test123','test123')

La fonction va essayer de chercher le mot-clés "test123" dans 
le corps de la page, si le mot est reflected alors la fonction
retourneras TRUE


 */
function REFLECTED($URL,$FIND)
{
$ch curl_init($URL);

curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse); 
curl_setopt($chCURLOPT_SSL_VERIFYHOST0);
curl_setopt($chCURLOPT_RETURNTRANSFER1);

$DATA curl_exec($ch);
curl_close($ch);

if(
preg_match_all('%'.$FIND.'%i'$DATA))
{
$reponse TRUE;

return $reponse;
}
else
{
$reponse FALSE;

return $reponse;
}

}


$URL "http://127.0.0.1/search.php?query=test123&age=19&country=france";

/*

On nettoye l'URL entrée, car le code
si dessous ne prend que des URLs comme ça :

http://127.0.0.1/search.php?query=test123&age=19&country=france

*/
$URL preg_replace('%(\;|\#)[\w]+%'''$URL);

/*
Avent de chercher les inputs qui sont reflecteds
Je vais chercher à savoir combien il y a de input
dans l'URL, pour pas faires des requetes en plus


*/
$How_Nany_Input_Have_In_The_Url substr_count($URL'=');



switch (
$How_Nany_Input_Have_In_The_Url
{
case 1:
/*
Si une URL à un seul input

http://127.0.0.1/search.php?query=test123

J'enléve '=test123' et puis je r'ajoute '=R3f13ct3d'
Et après je cherche avec ma fonction REFLECTED si
il est renvoyer sur la page


*/
$URL preg_replace('%=[\w]+$%','=R3f13ct3d'$URL);
$REFLECTED REFLECTED($URL,'R3f13ct3d');
if($REFLECTED == TRUE)
{
echo $URL.' --> YES<br>';
}
else
{
echo $URL.' --> NO<br>';
}



break;

/* ----------------------------------------------------------------------------------------*/


/*
Si une URL à 2 input 

Idem, comme au dessus, mais sauf la sa
change pour le deuxième input 


http://127.0.0.1/search.php?query=test123&age=R3f13ct3d
Et puis après
http://127.0.0.1/search.php?query=R3f13ct3d2



*/


case 2:
$URL preg_replace('%=[\w]+$%','=R3f13ct3d'$URL);
$REFLECTED REFLECTED($URL,'R3f13ct3d');
if($REFLECTED == TRUE)
{
echo $URL.' --> YES<br>';
}
else
{
echo $URL.' --> NO<br>';
}
$URL preg_replace('%[\w]+\&[\w]+\=[\w]+$%','R3f13ct3d2'$URL);
$REFLECTED2 REFLECTED($URL,'=R3f13ct3d2');
if($REFLECTED2 == TRUE)
{
echo $URL.' --> YES<br>';
}
else
{
echo $URL.' --> NO<br>';
}



break;


case 3:
$URL preg_replace('%=[\w]+$%','=R3f13ct3d'$URL);
$REFLECTED REFLECTED($URL,'R3f13ct3d');
if($REFLECTED == TRUE)
{
echo $URL.' --> YES<br>';
}
else
{
echo $URL.' --> NO<br>';
}
$URL preg_replace('%[\w]+\&[\w]+\=[\w]+$%','R3f13ct3d2'$URL);
$REFLECTED2 REFLECTED($URL,'=R3f13ct3d2');
if($REFLECTED2 == TRUE)
{
echo $URL.' --> YES<br>';
}
else
{
echo $URL.' --> NO<br>';
}
$URL preg_replace('%[\w]+\&[\w]+\=[\w]+$%','R3f13ct3d3'$URL);
$REFLECTED3 REFLECTED($URL,'=R3f13ct3d3');
if($REFLECTED2 == TRUE)
{
echo $URL.' --> YES<br>';
}
else
{
echo $URL.' --> NO<br>';
}



break;


default:
echo "error";
break;
}

Après je pensez pour détecté la faille injectez un script qui refait une redirection sur page

Exemple:  http://127.0.0.1/search.php?query=<svg/onload=document.location.href="http://www.monsite/index.php/">

Mais cette page je connais sa taille !
Du coup avec curl je vais regarder le nombre  d'octect de ma page, et  si une injection retourne le meme octect que celle de ma page alors c'est vulnérable
Ou sinon avec curl regarder si j'ai eu une redirection

Mais sauf je ne sais pas si vous connaissez un moyen plus simple et plus optimisez pour savoir si le code js a était éxécuter ??

Aussi je tient à précisez que le code php juste en dessus ne supporte pas une URL qui a plus de 3 input



>l3$ 3l1t3$ 0l1garc1qu3$ m0nd1al1st3 et l3ur$ ma1tr3s 0ccult3s v0us r3m3rc13nts d3 v0tr3 part1c1pat10ns à l'av3nc33 d3 la m1s3 3n plac3 du n0uv3l 0rdr3 m0ndial
 
0rd0 Ab Cha0 / P0ur V0tr3 S3cur1t3 V0u$ N' @ur3z P1u$ D3 L1b1t33 / Qu1 @pp@rti3nt L3 p@ss3 @pp@rti3nt L3 Pr3s3nt / % P0ur M13uX R3gn3r

Hors ligne ZeR0-@bSoLu

  • Administrateur
  • Membre Elite
  • *****
  • Messages: 2172
  • +113/-4
  • Pentest - Arch - Python - Kali
    • Kali-fr
Re : [AIDE] Pour développer un scanneur de faille XSS reflected en PHP
« Réponse #1 le: 28 novembre 2019 à 06:42:26 »
Bah pour savoir si ton code est exécuté tu fais faire une action à ton script que tu peux voir/quantifié (un ping ou ce genre de chose..)
Mess  with the bests.
Die like the rest.

Hors ligne Frenchcore44

  • Membre régulier
  • **
  • Messages: 97
  • +2/-0
Re : [AIDE] Pour développer un scanneur de faille XSS reflected en PHP
« Réponse #2 le: 28 novembre 2019 à 18:56:59 »
Salut, je vien de tester pas mal de chose, et j'ai l'impression que lorsque je fait une requête avec curl, le javascript se s’exécute pas ou alors c'est a cause de ma connexion, ou sinon il faut que je fasse attendre curl, je vais testez ça

car j'ai essayer plusieurs script comme :

"><svg/onload=document.location.href='https://iplogger.org/2RvYS5'>

Puis je suis allez sur mon iplogger et je ne voit aucune personne qui c'est connecter

Sinon j'ai essayer de récupérer la taille de page avec curl + un script qui fait une redirection sur page qui est vide
et lorsque je regarde la taille de la page requêté, ça me retourne la taille de la page vulnérable ou le script aurait du être exécuter
pourtant la page est bien vulnérable

J'ai essayer aussi  de récupérer les derniers urls avec CURLINFO_EFFECTIVE_URL, et ça me retourne la page vulnérable, alors qu'il avait un script qui aurait du être exécuter

Après il faut que je documente plus sur curl, mais je me demande si il faut un serveur comme pour xss validator https://portswigger.net/bappstore/98275a25394a417c9480f58740c1d981

>l3$ 3l1t3$ 0l1garc1qu3$ m0nd1al1st3 et l3ur$ ma1tr3s 0ccult3s v0us r3m3rc13nts d3 v0tr3 part1c1pat10ns à l'av3nc33 d3 la m1s3 3n plac3 du n0uv3l 0rdr3 m0ndial
 
0rd0 Ab Cha0 / P0ur V0tr3 S3cur1t3 V0u$ N' @ur3z P1u$ D3 L1b1t33 / Qu1 @pp@rti3nt L3 p@ss3 @pp@rti3nt L3 Pr3s3nt / % P0ur M13uX R3gn3r

Hors ligne ZeR0-@bSoLu

  • Administrateur
  • Membre Elite
  • *****
  • Messages: 2172
  • +113/-4
  • Pentest - Arch - Python - Kali
    • Kali-fr
Re : [AIDE] Pour développer un scanneur de faille XSS reflected en PHP
« Réponse #3 le: 28 novembre 2019 à 19:07:32 »
curl peut load du svg ?
Mess  with the bests.
Die like the rest.

Hors ligne Frenchcore44

  • Membre régulier
  • **
  • Messages: 97
  • +2/-0
Re : [AIDE] Pour développer un scanneur de faille XSS reflected en PHP
« Réponse #4 le: 28 novembre 2019 à 19:21:19 »
Comment ça ? j'ai essayer avec le payload <script></script> et idem le js s’exécute pas, après je ne sais pas si curl peut interpréter le js et se faire rediriger, je ne sais pas si c'était ça ta question ? 
>l3$ 3l1t3$ 0l1garc1qu3$ m0nd1al1st3 et l3ur$ ma1tr3s 0ccult3s v0us r3m3rc13nts d3 v0tr3 part1c1pat10ns à l'av3nc33 d3 la m1s3 3n plac3 du n0uv3l 0rdr3 m0ndial
 
0rd0 Ab Cha0 / P0ur V0tr3 S3cur1t3 V0u$ N' @ur3z P1u$ D3 L1b1t33 / Qu1 @pp@rti3nt L3 p@ss3 @pp@rti3nt L3 Pr3s3nt / % P0ur M13uX R3gn3r

Hors ligne ZeR0-@bSoLu

  • Administrateur
  • Membre Elite
  • *****
  • Messages: 2172
  • +113/-4
  • Pentest - Arch - Python - Kali
    • Kali-fr
Re : [AIDE] Pour développer un scanneur de faille XSS reflected en PHP
« Réponse #5 le: 28 novembre 2019 à 19:22:52 »
c'était ma remarque en effet
Mess  with the bests.
Die like the rest.

Hors ligne Frenchcore44

  • Membre régulier
  • **
  • Messages: 97
  • +2/-0
Re : [AIDE] Pour développer un scanneur de faille XSS reflected en PHP
« Réponse #6 le: 28 novembre 2019 à 20:16:51 »
Ok, je vais essayer avec une page en  html et avec un script qui fait un redirection de-dans et voir si curl suis la redirection
>l3$ 3l1t3$ 0l1garc1qu3$ m0nd1al1st3 et l3ur$ ma1tr3s 0ccult3s v0us r3m3rc13nts d3 v0tr3 part1c1pat10ns à l'av3nc33 d3 la m1s3 3n plac3 du n0uv3l 0rdr3 m0ndial
 
0rd0 Ab Cha0 / P0ur V0tr3 S3cur1t3 V0u$ N' @ur3z P1u$ D3 L1b1t33 / Qu1 @pp@rti3nt L3 p@ss3 @pp@rti3nt L3 Pr3s3nt / % P0ur M13uX R3gn3r

Hors ligne ZeR0-@bSoLu

  • Administrateur
  • Membre Elite
  • *****
  • Messages: 2172
  • +113/-4
  • Pentest - Arch - Python - Kali
    • Kali-fr
Re : [AIDE] Pour développer un scanneur de faille XSS reflected en PHP
« Réponse #7 le: 28 novembre 2019 à 20:17:07 »
voilà ;)

Mess  with the bests.
Die like the rest.

Hors ligne Frenchcore44

  • Membre régulier
  • **
  • Messages: 97
  • +2/-0
Re : [AIDE] Pour développer un scanneur de faille XSS reflected en PHP
« Réponse #8 le: 28 novembre 2019 à 20:29:18 »
 j'ai créer une page en html

<!DOCTYPE html>
<html>
<head>
<title>cURL_test.html</title>
<meta charset="utf-8">
</head>
<body>
<script>document.location.href="https://www.google.fr";</script>
</body>
</html>

Puis en php je vais essayer de récupérer la dernière URL

<?php



$URL 
'http://192.168.1.39/Project%20XSS%20Refleted%20Scan%2030%25/cURL_test.html';



$ch curl_init($URL);

/*curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);*/
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_FOLLOWLOCATION1);

curl_exec($ch);
$info curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);
curl_close($ch);



echo 
$info


Quand j'affiche $info sa retourne l'url de la page
Donc sois cURL peut pas éxécuter du javascript mais peut lire
Ou bien il faut que je met un timeout ou truc pour cURL reste plus longtemps sur la page pour voir si il peut exécuter le js

« Modifié: 28 novembre 2019 à 20:30:54 par Frenchcore44 »
>l3$ 3l1t3$ 0l1garc1qu3$ m0nd1al1st3 et l3ur$ ma1tr3s 0ccult3s v0us r3m3rc13nts d3 v0tr3 part1c1pat10ns à l'av3nc33 d3 la m1s3 3n plac3 du n0uv3l 0rdr3 m0ndial
 
0rd0 Ab Cha0 / P0ur V0tr3 S3cur1t3 V0u$ N' @ur3z P1u$ D3 L1b1t33 / Qu1 @pp@rti3nt L3 p@ss3 @pp@rti3nt L3 Pr3s3nt / % P0ur M13uX R3gn3r

Hors ligne Frenchcore44

  • Membre régulier
  • **
  • Messages: 97
  • +2/-0
Re : Re : [AIDE] Pour développer un scanneur de faille XSS reflected en PHP
« Réponse #9 le: 28 novembre 2019 à 21:18:09 »
Comment ça ? j'ai essayer avec le payload <script></script> et idem le js s’exécute pas, après je ne sais pas si curl peut interpréter le js et se faire rediriger, je ne sais pas si c'était ça ta question ?

Du coup j'ai chercher si cURL pouvait éxécuter du js sur internet, et malheureusement non :/, du coup je suis bloquée, pour savoir comment détecter si le payload est passé 
>l3$ 3l1t3$ 0l1garc1qu3$ m0nd1al1st3 et l3ur$ ma1tr3s 0ccult3s v0us r3m3rc13nts d3 v0tr3 part1c1pat10ns à l'av3nc33 d3 la m1s3 3n plac3 du n0uv3l 0rdr3 m0ndial
 
0rd0 Ab Cha0 / P0ur V0tr3 S3cur1t3 V0u$ N' @ur3z P1u$ D3 L1b1t33 / Qu1 @pp@rti3nt L3 p@ss3 @pp@rti3nt L3 Pr3s3nt / % P0ur M13uX R3gn3r

Hors ligne platon-y

  • Membre sérieux
  • ***
  • Messages: 327
  • +17/-4
  • *CCCP*
Re : [AIDE] Pour développer un scanneur de faille XSS reflected en PHP
« Réponse #10 le: 03 décembre 2019 à 22:27:00 »
If you want a progress meter for HTTP POST or PUT requests, you need to redirect the response output to a file, using shell redirect (>), -o, --output or similar.

en essayant, peux étre tu auras des infos sur ton payload, ou ce qui bloque....

https://curl.haxx.se/docs/manpage.html
« Modifié: 03 décembre 2019 à 22:38:15 par platon-y »
MINIX 3.1.2a