通过 WebVPN 扫描内网

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 通过 WebVPN 扫描内网

经过@尼克的信息搜集,获取到一位人员的工号并且成功重置其密码,登陆其统一认证系统,以及VPN,发现此VPN不是彼VPN,访问资源都是以他代理去访问的,而不是直接拨入内网。

访问任何资源都如此形式:

https://webvpn.xxxxx.cn/http-8009/77726476706e697776646265737421a1ae13d27666301e2f5bdce2ca

很明显URL路径中有HTTP协议,以及要访问资源的端口,而URL则被进行编码加密操作,此时想要批量探测内网变得有些困难,并且也通过href看到了几个内网IP段。

所以需要分析一下他做的加密操作:

查看JS发现点击“立即跳转”会调用go()

接着可以发现encrypUrl()函数为处理url函数,所以下断点查看调用方法

进入encrypUrl()函数发现又会调用encrypt函数,使用AES加密处理URL

至此已经确定是使用JS并且AES加密等编码来处理URL的,所以我们想使用这个“鸡肋”的VPN探测内网,并且批量可控的话,就要还原这个加密方式,可以考虑自己参照实现AES加密或者扒出来相关功能JS直接使用他的代码来进行处理自己的数据,事半功倍。

使用@c0ny1所写的jsEncrypterBurp插件,是用来爆破前端存在JS加密的登陆口使用的,原理一样,所以使用其中的phantomjs_server.js使用phantomjs开启webserver并提供一个接口,并将自己的数据传入到要调用的代码中做处理。

/**
 * author: c0ny1
 * date: 2017-12-16
 * last update: 2019-5-30 11:16
 */
var fs = require('fs');
var logfile = 'jsEncrypter.log';
var webserver = require('webserver');
server = webserver.create();
var host = '127.0.0.1';
var port = '1664';
// 加载实现加密算法的js脚本
var wasSuccessful = phantom.injectJs('xxxx.js');/*引入实现加密的js文件*/
// 处理函数
function js_encrypt(payload){
  var newpayload;
  /**********在这里编写调用加密函数进行加密的代码************/
  newpayload = encrypUrl("http",payload);
  /**********************************************************/
  return newpayload;
}
if(wasSuccessful){
  console.log("[*] load js successful");
  console.log("[!] ^_^");
  console.log("[*] jsEncrypterJS start!");
  console.log("[+] address: http://"+host+":"+port);
}else{
  console.log('[*] load js fail!');
}
var service = server.listen(1664, function(request, response){
  try{
    if(request.method == 'POST'){
      var payload = request.post['payload'];
      var encrypt_payload = js_encrypt(payload); 
      var log = payload + ':' + encrypt_payload;
      console.log('[+] ' + log);
            fs.write(logfile,log + '\n', 'w+');
      response.statusCode = 200;
      response.write(encrypt_payload.toString());
      response.close();
    }else{
        response.statusCode = 200;
        response.write("^_^\n\rhello jsEncrypter!");
        response.close();
    }
  }catch(e){
    //console.log('[Error]'+e.message+' happen '+e.line+'line');
    console.log('\n-----------------Error Info--------------------')
    var fullMessage = "Message: "+e.toString() + ':'+ e.line;
    for (var p in e) {
      fullMessage += "\n" + p.toUpperCase() + ": " + e[p];
    } 
    console.log(fullMessage);
    console.log('---------------------------------------------')
    console.log('[*] phantomJS exit!')
    phantom.exit();
    } 
});

我们使用这个脚本加载刚刚调试JS所用到的代码,把过程中所用到的go()encrypUrl()等函数全部放进去,再用上面的JS代码去调用返回到WEB。

配置完成后,访问web传入数据:

已经按照原网站的规则进行加密,之后我们就可以利用这个接口去探测内网了

最后使用python的requests库,编写一个扫描c段和常见端口的脚本进行内网探测:

可以成功探测内网,识别title:

最后就解决了尴尬的问题,比较有意思。


相关文章
|
1月前
|
Web App开发 JSON 网络协议
|
1月前
|
安全 NoSQL 关系型数据库
内网扫描器Fscan
内网扫描器Fscan
|
6月前
|
安全 网络协议 网络安全
网络扫描与网络监听
网络扫描与网络监听
165 0
|
11月前
|
XML 网络协议 安全
主动扫描-Nmap-端口、系统、服务扫描
主动扫描-Nmap-端口、系统、服务扫描
235 0
|
安全 网络协议 NoSQL
对内网服务端口进行扫描
对内网服务端口进行扫描,根据开放的端口服务选择横向的方法。
335 1
|
网络协议
扫描域名和扫描IP的区别
扫描域名和扫描IP的区别
258 0
扫描域名和扫描IP的区别
|
网络安全 Python
批量探测IP端口检查是否有存在网站导入AWVS进行扫描
批量探测IP端口检查是否有存在网站导入AWVS进行扫描
批量探测IP端口检查是否有存在网站导入AWVS进行扫描
|
网络协议 Linux 开发工具
kali arp-scan网络扫描工具 扫描局域网ip地址
作者主页:https://www.couragesteak.com/
kali arp-scan网络扫描工具 扫描局域网ip地址
|
安全
内网服务映射到外网访问
服务说明 ngrok是一款反向代理服务,可进行内网穿透,支持端口转发。例如:本地运行的服务而让别人通过公网访问。 服务部署 [root@kazihuo /soft]# wget https://bin.
1511 0