본문 바로가기

30./31. Web

[Burp] Extender - burp Extender 기능 활용

웹 프록시로 사용하는 버프에는 Extender라는 기능이 있습니다. 

BApp Store에는 점검 시 유용한 도구들이 존재하는데 직접 만들기도 가능하여, 특정 문자열을 입력하면 자동으로 표시해주는 소스를 작성하였습니다.



### 환경구성


### Windows 환경 설정

jython 홈페이지에서 jython 2.7.0 - Standalon Jar 를 다운받습니다.



Extender - Options - Python Environment 에서 다운받은 jar를 추가합니다.



#### Mac OS X 환경 설정

brew를 이용하여 jython 설치가 가능합니다.
$ brew install jython
######################################################################## 100.0%
==> Pouring jython-2.7.1.high_sierra.bottle.tar.gz
🍺  /usr/local/Cellar/jython/2.7.1: 3,797 files, 147.4MB

Extender - Options - Python Environment 에서 아래 경로의 jython.jar를 추가합니다.
/usr/local/Cellar/jython/2.7.1/libexec/jython.jar

#### 간단한 테스트 소스


#Hello_word.py
from burp import IBurpExtender
from java.io import PrintWriter

class BurpExtender(IBurpExtender):
    def registerExtenderCallbacks(self, callbacks):
        callbacks.setExtensionName("Seccasts Tutorial - Jtyhon")
        stdout = PrintWriter(callbacks.getStdout(),True)
        stdout.println("Hello from Seccasts!")

        return


작성한 python 소스를 `Extender - Extensions - Burp Extensions`에 추가하여 테스트 가능합니다.



#### python 소스 및 기능


  •  searchItem 리스트 아이템을 자동 검색하여 Comment에 표시 가능
  • searchItem 정규식/문자열/숫자 혼용 가능

from burp import IBurpExtender
from burp import IHttpListener
import re

searchItem =[
    "\b(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-[1-4][0-9]{6}\b",
    "findmeme",
]
pattern = '|'.join(searchItem)

class BurpExtender(IBurpExtender, IHttpListener):

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

    def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):
        # only process responses
        if not messageIsRequest:
            print "process responses"

            gResponse = messageInfo.getResponse()
            print "Reciving message:"
            if re.findall(pattern, self._helpers.bytesToString(gResponse)):
                messageInfo.setComment("check info")
            print "----------------------------------------------\n\n"
            return

        # only process requests
        else:
            print "process requests"

            gRequest = messageInfo.getRequest()
            print "Sending message:"
            if re.findall(pattern, self._helpers.bytesToString(gRequest)):
                messageInfo.setComment("check info")
            print "----------------------------------------------\n\n"
            return


searchItem에 findmeme라는 문자열을 입력 후 burp에서 해당 문자열이 HTTP Request/Response 포함되어 있으면 `Proxy - HTTP history - Comment`에 자동으로 `check info` 표시합니다.



기호에 따라 setHighlight(color) 함수를 사용하시면 하이라이트도 가능합니다.
messageInfo.setHighlight("yellow")



'30. > 31. Web' 카테고리의 다른 글

[Burp] Extender - Burp Suite JSBeautifier  (0) 2018.04.16
[XSS] PHP htmlspecialchars 우회  (0) 2014.10.13
Obfuscated code  (0) 2014.10.10
[정보수집] Google Hacking  (1) 2014.07.01
[XSS] Xenotix XSS Exploit Framework  (0) 2014.06.27