1

Burpsuite API に問題があり、編集されたリクエストのレスポンスを出力するための適切な関数が見つかりません。python を使用して burpsuite 用の新しいプラグインを開発しています。myscript は単にプロキシからリクエストを受け取り、ヘッダーを編集して再度送信します。

げっぷインポート IBurpExtender から げっぷインポート IHttpListener から

再インポート、urllib2

クラス BurpExtender(IBurpExtender、IHttpListener):

def registerExtenderCallbacks(self, callbacks):
    self._callbacks = callbacks
    self._helpers = callbacks.getHelpers()
    callbacks.setExtensionName("Burp Plugin Python Demo")
    callbacks.registerHttpListener(self)
    return

def processHttpMessage(self, toolFlag, messageIsRequest, currentRequest):
    # only process requests
    if messageIsRequest:

        requestInfo = self._helpers.analyzeRequest(currentRequest)
        #timestamp = datetime.now()        
        #print "Intercepting message at:", timestamp.isoformat()

        headers = requestInfo.getHeaders()
        #print url
        if(requestInfo.getMethod() == "GET"):
            print "GET"
            print requestInfo.getUrl()
            response = urllib2.urlopen(requestInfo.getUrl())
            print response
        elif(requestInfo.getMethod() == "POST"):
            print "POST"
            print requestInfo.getUrl()
        #for header in headers:
            #print header

        bodyBytes = currentRequest.getRequest()[requestInfo.getBodyOffset():]
        bodyStr = self._helpers.bytesToString(bodyBytes)
        bodyStr = re.sub(r'=(\w+)','=<xss>',bodyStr)
        newMsgBody = bodyStr
        newMessage = self._helpers.buildHttpMessage(headers, newMsgBody)
        print "Sending modified message:"
        print "----------------------------------------------"
        print self._helpers.bytesToString(newMessage)
        print "----------------------------------------------\n\n"
        currentRequest.setRequest(newMessage)
    return
4

1 に答える 1

0

応答を出力する必要がありますが、messageIsRequest が false の場合は何もしません。messageIsRequest が false の場合、currentRequest が応答であり、要求に対して行ったように応答を出力できることを意味します。私は次のようにJavaでそれをしました:

def processHttpMessage(self, toolFlag, messageIsRequest, httpRequestResponse):
    if messageIsRequest:
        ....
    else
        HTTPMessage = httpRequestResponse.getResponse()
        print HTTPMessage

プロキシを使用するときにリクエストとレスポンスをバインドできるメソッドもあります。IInterceptedProxyMessage で見つけることができます。

/**
 * This method retrieves a unique reference number for this
 * request/response.
 *
 * @return An identifier that is unique to a single request/response pair.
 * Extensions can use this to correlate details of requests and responses
 * and perform processing on the response message accordingly.
 */
int getMessageReference();

HTTPListeners ではサポートされていないと思います。

私は Java で拡張機能を作成しており、この anwser を Python に変換しようとしました。私はこのコードをテストしておらず、翻訳のためにいくつかのバグが導入される可能性があります。

于 2015-12-03T14:39:32.677 に答える