Maison > Article > Périphériques technologiques > ChatGPT écrit PoC et obtient la vulnérabilité !
ChatGPT (Chat Generative Pre-trained Transformer) est l'un des chatbots IA intelligents les plus attendus aujourd'hui. Il permet non seulement une communication linguistique de base, mais dispose également de nombreuses fonctions puissantes, telles que la rédaction d'articles, la rédaction de scripts de code, la traduction, etc. Alors pouvons-nous utiliser ChatGpt pour nous aider à réaliser certains travaux ? Par exemple, lorsqu'un produit présente des risques de sécurité et nécessite une détection de vulnérabilité, nous devons rédiger le POC correspondant pour le mettre en œuvre. Grâce à plusieurs vérifications, nous avons initialement confirmé la faisabilité de cette expérience. ChatGPT peut être entraîné à écrire de simples PoC, mais son contrôle des détails n'est pas assez parfait, comme l'écriture d'expressions régulières pour correspondre au contenu de sortie et certaines erreurs dans le contenu. le traitement d'une logique complexe, ainsi qu'une intervention et une modification manuelles sont nécessaires. De plus, nous avons utilisé des méthodes de comparaison pour vérifier l'exactitude de certaines conjectures de sécurité et modèles de formation de ChatGPT. Ce qui suit est l'effet de mise en œuvre de sa combinaison avec les outils pratiques d'attaque et de défense de réseau de Goby pour la détection d'exploitation.
Nous utilisons ChatGPT et Goby pour écrire PoC et EXP de deux manières : écriture semi-automatique et écriture entièrement automatique (le compte ChatGPT-Plus est utilisé dans le processus).
L'écriture semi-automatique utilise ChatGPT pour la conversion du format de langue. Le code généré après la conversion peut présenter des problèmes détaillés et nécessite un dépannage et une amélioration supplémentaires. Enfin, les instructions correspondantes et le contenu des fonctions sont modifiés pour terminer l'écriture de PoC et EXP.
L'écriture entièrement automatique fournit à ChatGPT les modèles de code utilisés et les détails de vulnérabilité, lui permettant de générer automatiquement le PoC correspondant au modèle. Lorsque vous fournissez des informations détaillées, vous devez faire attention à l'exhaustivité et à l'exactitude des informations. À l'heure actuelle, il est possible d'écrire automatiquement un PoC simple. Pour EXP, une formation supplémentaire sur l'utilisation par ChatGPT des fonctions intégrées de Goby est requise.
Adobe ColdFusion est un environnement de développement de serveur d'applications Web efficace. Il existe plusieurs vulnérabilités de traversée de répertoires dans la console d'administration d'Adobe ColdFusion 9.0.1 et versions antérieures. Un attaquant distant pourrait lire des fichiers arbitraires via le paramètre locale envoyé à /CFIDE/administrator/enter.cfm, /CFIDE/administrator/archives/index.cfm, etc.
Essayez d'abord de laisser ChatGPT convertir l'EXP au format Python de la vulnérabilité de traversée de répertoire CVE-2010-2861 en code au format de langage Go. De cette manière, ChatGPT peut être utilisé pour remplacer le processus manuel de code. interprétation et conversion de code.
Nous sélectionnons le code EXP de la vulnérabilité dans la plateforme de divulgation des vulnérabilités :
Avant d'utiliser ChatGPT pour convertir le code EXP de la vulnérabilité correspondante, démontrez d'abord l'effet d'exécution du code Python d'origine, comme suit :
Démarrer la conversion du format :
De plus, il explique également comment utiliser le programme. Cependant, les réponses de ChatGPT peuvent ne pas être exactement les mêmes à chaque fois. L'utilisation spécifique de la fonction n'a pas été expliquée en détail dans la réponse précédente, mais l'explication suivante a été donnée dans une autre réponse : (Si nécessaire, vous pouvez ajouter "et introduire l'utilisation spécifique de la fonction" à la question)
Enfin, procédez Après avoir débogué le code, il a été constaté qu'il ne pouvait pas être utilisé immédiatement et que le contenu du fichier requis n'a pas pu être lu avec succès :
Ensuite, vous devez commencer le dépannage. Voici le processus de dépannage :
.Vérifiez si la chaîne est vide après une correspondance régulière :
Vérifiez si le contenu du paquet renvoyé est normal et s'il existe un contenu requis. Le paquet de données renvoyé suivant affiche un message normal :
Jugement. qu'il y a un problème avec l'expression régulière et que le contenu correspondant ne peut pas être mis en correspondance :
Grâce au dépannage, il a été constaté qu'il n'y avait pas de correspondance correcte dans l'expression régulière, le contenu du fichier n'a donc pas pu être récupéré correctement. des modifications ont été apportées. Le contenu modifié est le suivant :
Avant modification :
Résultat final de l'exécution, conversion Python-Go complète :
Nous avons réussi à convertir l'EXP au format Python au format langage Go, essayons maintenant de le convertir en Goby PoC et EXP au format.
Étant donné que Goby utilise un cadre de vulnérabilité auto-développé basé sur le langage Go, pour la commodité des utilisateurs, de nombreuses fonctions intégrées sont disponibles pour les utilisateurs, il vous suffit donc d'utiliser la partie ci-dessus du code pour terminer le PoC. et EXP. Voici la description générale de l'EXP et le contenu détaillé de la modification :
Modification du contenu de l'importation :
Étant donné que l'EXP généré nécessite une saisie manuelle des paramètres lors de l'utilisation de la ligne de commande. :
Ensuite, lorsque PoC est converti, vous devez redéfinir les constantes et utiliser httpclient.FixUrl.IP et httpclient.FixUrl.Port dans Goby pour obtenir l'IP de test et le numéro de port, et déterminer le chemin du fichier de test :
Puis ajoutez des déclarations de jugement conditionnel dans le PoC, Déterminez les caractéristiques de la vulnérabilité et retournez vrai (il y a une vulnérabilité) :
Enfin, supprimez le code d'impression de sortie redondant pour terminer la conversion PoC, tels que :
EXP Lors de la conversion, vous devez redéfinir les variables et utiliser Goby. Les expResult.HostInfo.IP et expResult.HostInfo.Port obtiennent l'IP de test et le numéro de port, et utilisent ss.Params["filePath "]. (chaîne) pour obtenir le paramètre EXP saisi par l'utilisateur - le chemin du fichier de test filePath :
Ajoutez ensuite une instruction de jugement conditionnel au code EXP pour déterminer si l'exécution de l'EXP a réussi et affichez l'EXP résultat de l'exécution pour terminer la conversion EXP :
Après avoir utilisé ChatGPT combiné à l'écriture manuelle, nous avons d'autres tentatives pour l'utiliser pour écrire un PoC au format Goby.
Donnez d'abord le modèle au format Goby :
Donnez ensuite le numéro de vulnérabilité, le produit, le type, l'URL, le fichier de vulnérabilité, les paramètres et les conditions de réussite du jugement, et expliquez le format de champ correspondant. Nous avons finalement obtenu le code suivant. peut être compilé par le front-end Goby et peut générer avec succès un PoC simple :
La formation du modèle est initialement terminée. Continuez à utiliser le deuxième cas pour vérifier la perfection du modèle :
Découvrez le champ Nom. S'il y a toujours une erreur de format, entraînez-la à nouveau et modifiez-la (si le champ Nom et les autres sorties de la vérification sont corrects, vous pouvez ignorer cette étape de correction d'erreur) :
Enfin, utilisez le troisième cas pour vérifier le résultats finaux de l'entraînement, et l'entraînement est réussi :
Mettez le code dans Goby et remplissez les informations de description de vulnérabilité manquantes (vous pouvez continuer à vous entraîner en profondeur plus tard. L'effet en cours d'exécution est le suivant :
Quand nous). utilisent ChatGPT pour aider à rédiger un PoC afin de détecter de nouvelles vulnérabilités 0day ou d'autres vulnérabilités confidentielles. Ce processus entraînera-t-il des problèmes tels qu'une injection de programme ou une fuite d'informations ? C'est-à-dire que lorsque la formation du modèle est terminée et que d'autres utilisateurs posent des questions connexes, ChatGPT produira-t-il directement le modèle ou les données formés ?
Afin de vérifier si la conjecture d'auto-apprentissage de ChatGPT existe, une formation a été réalisée à travers « différentes sessions » et « différents comptes ». Après la pratique suivante, la conclusion est que ChatGPT n'effectue pas d'auto-apprentissage entre sessions et entre comptes. Les modèles et les données formés sont entre les mains d'OpenAI, et les autres utilisateurs n'obtiendront pas les modèles pertinents, donc ce n'est pas le cas. Il existe encore des risques de sécurité associés à la fuite de données d’informations pertinentes, mais les situations futures doivent encore être jugées sur la base des décisions prises par OpenAI.
Le modèle utilisé (le schéma schématique est omis ici) et les informations de vulnérabilité sont donnés. On peut voir que les champs Nom et Description dans le PoC ne sont pas remplis selon le mode de formation de la session précédente. . Par conséquent, ChatGPT n'apprendra pas tout seul au cours des différentes sessions, et le modèle de formation entre chaque session est indépendant :
Donnez également le modèle (le schéma schématique est omis ici) et les informations de vulnérabilité, ou vous pouvez En voyant que les champs pertinents dans le PoC ne sont pas remplis selon le modèle de formation précédent, nous pouvons savoir que ChatGPT ne s'auto-apprendra pas entre les comptes :
ChatGPT4 ont été mis à jour et lancé Alors, quelle est la différence entre l'utilisation de ChatGPT4 pour effectuer la même formation à l'écriture entièrement automatique et le modèle formé par ChatGPT3 ? La réponse est que ChatGPT4 est plus « intelligent et flexible » que ChatGPT 3, et que la génération de modèles est plus précise.
Nous avons donné les différentes informations dont nous avions besoin, et après une formation (une partie du diagramme schématique est omise ici), nous avons obtenu l'effet correct dans l'image ci-dessous :
De plus, nous avons effectué 10 cycles de formation pour ciblez le modèle En comparant le champ Nom dans ChatGPT3 et 4 pour déterminer la précision d'écriture PoC de ChatGPT3 et 4, il a été constaté que des erreurs probabilistes se produiront dans les deux cas. Parmi eux, la précision de sortie du modèle de 3 est inférieure à celle de 4, et une correction doit encore être effectuée dans certaines circonstances. Mauvaise formation, comme le montre le tableau suivant :
En général, ChatGPT peut en effet aider à accomplir une partie du travail comme. en écrivant la vulnérabilité PoC, vous pouvez utiliser sa capacité de conversion de code pour accélérer l'écriture ; vous pouvez également fournir des informations détaillées sur la vulnérabilité, utiliser ChatGPT pour former un modèle approprié et générer directement un simple code PoC de vérification de vulnérabilité, ce qui est plus pratique et plus rapide. Cependant, le contenu des réponses qu'il fournit n'est pas nécessairement directement copié et utilisé, et certaines corrections manuelles sont nécessaires pour l'améliorer. De plus, nous pouvons actuellement utiliser ChatGPT avec une relative tranquillité d'esprit. Il ne transmettra pas les données du modèle de formation d'un seul utilisateur à d'autres utilisateurs (des sessions non déroutantes peuvent être dues à des préoccupations concernant la contamination mutuelle des données utilisateur), mais dans à l'avenir, nous devons prendre des décisions basées sur la prise de décision du siège d'OpenAI pour un jugement plus approfondi. Par conséquent, l'utilisation raisonnable de ChatGPT peut contribuer à améliorer un certain degré d'efficacité du travail si une formation et un développement ultérieurs peuvent être poursuivis à l'avenir, par exemple, s'il peut être utilisé pour rédiger des PoC standardisés et plus complexes ou même des EXP avec une description des informations. spécifications, ou il peut être conçu pour compléter le contenu par lots pour explorer davantage de scénarios et de potentiels d'application.
Référence
[1] https://gobysec.net/exp
[2] https://www.exploit-db.com/exploits/14641
[3] https://zhuanlan.zhihu. com/p/608738482?utm_source=wechat_session&utm_medium=social&utm_oi=1024775085344735232
[4] Utilisez ChatGPT pour générer l'encodeur et prendre en charge Webshell
L'auteur de cet article : GobySec, veuillez indiquer que la source de la réimpression provient de FreeBuf.COM
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!