웹 프록시로 사용하는 버프에는 Extender라는 기능이 있습니다.
BApp Store에는 점검 시 유용한 도구들이 존재하는데 직접 만들기도 가능하여, 특정 문자열을 입력하면 자동으로 표시해주는 소스를 작성하였습니다.
### 환경구성
- Burp Suite Professional (유료버전)
-
JythonWindows(http://www.jython.org/downloads.html - 다운)Mac OS X ($ brew install jython - 터미널 설치)
### 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 |