云真机-一键抓包的问题解决

最近我们的云真机平台需要对标岩鼠,新增抓包的功能,所以专门去看了下岩鼠的抓包页面, 发现是通过mitproxy来做iframe嵌套实现的。那我们也可以借用mitproxy来解决我们的问题了。

问题1

本以为事情会很顺利,所以我们先尝试做demo的时候,本地先启动了一个mitproxy的服务,由于我们是需要有web的页面的, 所以我们的启动命令是:

# web-host跟上的是本机的ip地址
mitmweb --web-port 10000 --no-web-open-browser -p 20000 --web-host 192.168.31.252

在这里插入图片描述

直接访问链接是可以正常访问的。但是我们将这个页面以iframe的形式嵌入到我们自己的网站上的时候,结果确不是我们想要看到的。

在这里插入图片描述

在这里插入图片描述

页面并没有正常的加载出来,而通过控制台,我们发现出现了这样的一个错误提示信息。

通过谷歌得到了这样子的信息 X-Frame-Options

X-Frame-Options 有三个可能的值:

X-Frame-Options: deny
X-Frame-Options: sameorigin
X-Frame-Options: allow-from https://example.com/

换一句话说,如果设置为 deny,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为sameorigin,那么页面就可以在同域名页面的 frame 中嵌套。

**deny表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。sameorigin表示该页面可以在相同域名页面的 frame 中展示。allow-from *uri***表示该页面可以在指定来源的 frame 中展示

通过上述的内容,我们大致能够猜测出来,是由于mitmweb的header中设置了deny的结果,不过这个是我们的猜测而已,所以我们还是需要具体确认下才知道。

app.py

def set_default_headers(self):
    super().set_default_headers()
    self.set_header("Server", version.MITMPROXY)
    self.set_header("X-Frame-Options", "DENY")
    self.add_header("X-XSS-Protection", "1; mode=block")
    self.add_header("X-Content-Type-Options", "nosniff")
    self.add_header(
        "Content-Security-Policy",
        "default-src 'self'; "
        "connect-src 'self' ws:; "
        "style-src   'self' 'unsafe-inline'"
    )

我们可以看到确实在header中添加了这样子的一个deny的情况。所以要解决这个问题我们只能够修改源码来进行解决了。

页面已经可以正常打开了

在这里插入图片描述

问题2

本以为下来就不会有问题了,结果我们操作web上面的一些按钮后,界面均没有任何的响应,通过抓包发现这样子的结果。均为403的状态。

在这里插入图片描述

通过后台的日志我们看到这样子的一个日志信息

WARNING:tornado.general:403 PUT /options (192.168.31.252): XSRF cookie does not match POST argument

看来是嵌套的iframe还进行了xsrf的一些认证了。但是我们知道最新的chrome的版本禁止了内嵌iframe的cookie的传递,所以如果要根本上解决这个问题就比较困难了,所以还是去掉xsrf的认证是最靠谱的了。

所以我们找到了这样子的一个开关

app.py

def __init__(self, master: "mitmproxy.tools.web.master.WebMaster", debug: bool) -> None:
    self.master = master
    super().__init__(
        default_host="dns-rebind-protection",
        template_path=os.path.join(os.path.dirname(__file__), "templates"),
        static_path=os.path.join(os.path.dirname(__file__), "static"),
        xsrf_cookies=True,
        cookie_secret=os.urandom(256),
        debug=debug,
        autoreload=False,
    )
    ....

所以这里我们只要xsrf_coookies不启用即可了。

至此 所有的问题都得到了解决了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值