Information Security/General Technique
Mitmproxy Websocket Match and Replace
hackcatml
2023. 7. 15. 15:07
반응형
burpsuite 으로 websocket 요청 및 응답값을 볼수도 있고, 캡쳐도 할수 있습니다만...match and replace 기능을 제공하지 않습니다.
websocket 통신데이터의 경우 중간에 인터셉트해서 수동으로 변조하고 다시 날리면 원하는 결과를 얻기 힘들기 때문에, 자동으로 변조해주는 match and replace 기능이 필요하죠.
mitmproxy 를 이용하면 match and replace가 가능합니다.
예컨데, websocket 통신 request 데이터 중 "clientVersion":"0.0.10" 문자열을 "clientVersion":"1.0.0" 로 match and replace 하고 싶은 경우 다음과 같은 파이썬 스크립트를 만들어주고,
- mitmproxywebsockets.py
import mitmproxy
from mitmproxy import ctx, http
class WebSocketModifier:
def websocket_message(self, flow: mitmproxy.http.HTTPFlow):
message = flow.websocket.messages[-1]
if message.from_client:
ctx.log.info("Modifying WebSocket message...")
old_content = message.content
if b'"clientVersion":"0.0.10"' in old_content:
new_content = old_content.replace(b'"clientVersion":"0.0.10"', b'"clientVersion":"1.0.0"')
message.content = new_content
addons = [
WebSocketModifier()
]
mitmproxy를 구동시켜줍니다.
mitmweb -s mitmproxywebsockets.py -p 8082
또는
mitmdump -s mitmproxywebsockets.py -p 8082
반응형