如何使用AI进行漏洞挖掘?完结!
如何使用AI进行漏洞挖掘?完结!
原创 _7ingLian 偏远酒馆 2025-02-14 06:54
往期文章:
—>目录<—
0x01——前言
0x02——
使用AI进行漏洞挖掘的思路
0x03——
编写burp插件
0x04——
burp数据包传给AI进行分析
0x01、前言 |
—>
目前漏洞挖掘方向的AI交互开发已经接近完成。后面只剩一些调整与优化。
关于本次的开发的目的,主要是为了提升渗透测试的效率。
|
—>
我这里是有三个页面(三个功能):
1.对单个代码文件的分析;
2.对整个框架文件夹的分析;
3.对接burp,实时分析数据包,找出漏洞。
|
—>
这里burp插件的功能很简单,它只负责将HTTP history的数据包保存到指定的文件夹。
使用的时候注意过滤
本插件的兼容版本是Jython 2.7.x
插件源码,可根据自身情况自行修改:
# -*- coding: utf-8 -*-
from burp import IBurpExtender
from burp import IContextMenuFactory
from burp import IHttpListener
from java.io import File
from java.text import SimpleDateFormat
from java.util import Date
import time
import hashlib
import urlparse
class BurpExtender(IBurpExtender, IHttpListener, IContextMenuFactory):
def registerExtenderCallbacks(self, callbacks):
self.callbacks = callbacks
callbacks.setExtensionName("Auto Save HTTP History with In-Scope Filter")
callbacks.registerHttpListener(self)
self.save_directory = File("Z:/burp_history_xmls/")
if not self.save_directory.exists():
self.save_directory.mkdirs()
self.saved_requests = set()
def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):
if not self.isInScope(messageInfo):
return
request = messageInfo.getRequest()
response = messageInfo.getResponse()
status_code = self.getStatusCode(response)
request_hash = self.getRequestHash(request)
if request_hash in self.saved_requests:
return
else:
self.saved_requests.add(request_hash)
timestamp = self.getTimestamp()
file_name = "response_" + timestamp + "_status_" + str(status_code) + ".txt"
file_path = File(self.save_directory, file_name)
with open(file_path.getAbsolutePath(), "wb") as file:
file.write(request)
file.write(b"\r\n\r\n")
file.write(response)
def getTimestamp(self):
current_time = SimpleDateFormat("yyyyMMdd_HHmmss").format(Date())
return current_time
def isInScope(self, messageInfo):
return self.callbacks.isInScope(messageInfo.getUrl())
def getStatusCode(self, response):
if response is None:
return None
response_headers = self.callbacks.getHelpers().analyzeResponse(response).getHeaders()
if response_headers:
status_line = response_headers[0]
status_code = status_line.split(" ")[1]
return status_code
return None
def getRequestHash(self, request):
return hashlib.sha256(request).hexdigest()
数据包存储路径自行修改:
插件加载,插件加载成功没有成功提示,没报错那就是成功(-.-)
效果如下
|
—>
当burp有新数据包更新后,插件都会实时保存到指定目录,当AI大模型检测到有数据包更新时,会自动进行分析。
end