from burp import IBurpExtender
from burp import IHttpListener
from burp import IHttpRequestResponse
from burp import IResponseInfo
from burp import IRequestInfo
from burp import IHttpService
from burp import IScannerCheck
from burp import IScannerInsertionPointProvider
from burp import IParameter
from burp import IScanIssue
class BurpExtender(IBurpExtender,IScannerCheck):
def registerExtenderCallbacks(self,callbacks):
self._callbacks = callbacks
self._helpers = callbacks.getHelpers()
self._callbacks.registerScannerCheck(self)
self._callbacks.setExtensionName("get link") def doPassiveScan(self, baseRequestResponse):
Request = baseRequestResponse.getRequest()
analyzedRequest, reqHeaders, reqBodys, reqMethod, reqParameters= self.get_request_info(Request )
httpService = baseRequestResponse.getHttpService()
host, port, protocol, ishttps, = self.get_server_info(httpService)
targetHost = ['saicmaxus', 'saicmotor', 'maxuscloud']
if (host.split('.')[-3] in targetHost) or (host.split('.')[-2] in targetHost): url = self.get_request_url(protocol,reqHeaders)
def consolidateDuplicateIssues(self, existingIssue, newIssue):
def doActiveScan(self, baseRequestResponse, insertionPoint):
def get_response_info(self, response):
analyzedResponse = self._helpers.analyzeResponse(
resHeaders = analyzedResponse.getHeaders()
analyzedResponse.getBodyOffset():].tostring()
resStatusCode = analyzedResponse.getStatusCode()
for header in resHeaders:
if 'Content-Length' in header:
resLength = int(header.split(':')[1].strip()) return resHeaders, resBodys, resStatusCode, resLength
def get_server_info(self, httpService):
host = httpService.getHost()
port = httpService.getPort()
protocol = httpService.getProtocol()
return host, port, protocol, ishttps
def get_parameter_Name_Value_Type(self, parameter):
parameterName = parameter.getName()
parameterValue = parameter.getValue()
parameterType = parameter.getType()
return parameterName, parameterValue, parameterType
def get_request_url(self, protocol, reqHeaders):
link = reqHeaders[0].split(' ')[1] host = reqHeaders[1].split(' ')[1] return protocol + '://' + host + link
f = open('get_link.txt', 'at') f.writelines(content + '\n\n')
def get_request_info(self, request):
analyzedRequest = self._helpers.analyzeRequest(
reqHeaders = analyzedRequest.getHeaders()
reqBodys = request[analyzedRequest.getBodyOffset():].tostring()
reqMethod = analyzedRequest.getMethod()
reqParameters = analyzedRequest.getParameters()
return analyzedRequest, reqHeaders, reqBodys, reqMethod, reqParameters