php内网探测脚本&简单代理访问

<?php
$url = isset($_REQUEST[‘u‘])?$_REQUEST[‘u‘]:null;
$ip = isset($_REQUEST[‘i‘])?$_REQUEST[‘i‘]:null; 

if($url != null){
    $host = getHost($url);
    echo getCss($host,getHtmlContext($url));
}else if($ip != null){
    $useIP = substr($ip,0,strripos($ip,".") + 1);
  ob_start();
    for($i=0;$i<256;$i++){
      $url = "http://".$useIP.$i;
    $html = getHtmlContext($url);
    $title = getTitle(html);
    $serverType = getHeader("Server");
    $status = $html ? "Success": "Fail";
    if($html){
       echo $url."  >>  ".$title.">>".$serverType." >>".$status."<br/>";
    }
        @ob_flush();
        flush();
  }
  ob_end_clean();
}
function getHtmlContext($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, TRUE);    //表示需要response header
    curl_setopt($ch, CURLOPT_NOBODY, FALSE); //表示需要response body
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_TIMEOUT, 120);
    $result = curl_exec($ch);
  global $header;
  if($result){
       $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
       $header = explode("\r\n",substr($result, 0, $headerSize));
       $body = substr($result, $headerSize);
  }
    if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == ‘200‘) {
        return $body;
    }
    if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == ‘302‘) {
    $location = getHeader("Location");
    if(strpos(getHeader("Location"),‘http://‘) == false){
      $location = getHost($url).$location;
    }
        return getHtmlContext($location);
    }
    return NULL;
}
function getHeader($name){
  global $header;
  foreach ($header as $loop) {
     if(strpos($loop,$name) !== false){
       return trim(substr($loop,strlen($name)+2));
     }
  }
}
function getTitle($html){
    preg_match("/<title>(.*?)<\/title>/i",$html, $matches);
  return $matches[1];
}
function getHost($url){
    preg_match("/^(http:\/\/)?([^\/]+)/i",$url, $matches);
    return $matches[0];
}
function getCss($host,$html){
    preg_match_all("/<link[\s\S]*?href=[‘\"](.*?[.]css.*?)[\"‘][\s\S]*?>/i",$html, $matches);
  //print_r($matches);
    foreach($matches[1] as $v){
    $cssurl = $v;
        if(strpos($v,‘http://‘) == false){
      $cssurl = $host."/".$v;
    }
    $csshtml = "<style>".file_get_contents($cssurl)."</style>";
    $html .= $csshtml;
  }
  return $html;
}
?>

时间: 2024-10-11 11:24:14

php内网探测脚本&简单代理访问的相关文章

内网服务器通过Squid代理访问外网

环境说明 项目整体需部署Zabbix监控并配置微信报警,而Zabbix Server并不能访问外网,故运维小哥找了台能访问外网的服务器做Suqid代理,Zabbix Server服务器通过代理服务器访问外网. 操作说明 [[email protected] ~]# echo "1" >/proc/sys/net/ipv4/ip_forward [[email protected] ~]# yum -y install squid [[email protected] ~]# vi

解决为什么内网不能用公网地址访问内网服务器

NAT地址池和服务器地址要与出口IP不同网段,NAT地址池可以和服务器地址在同一网段,也可在不同网段. 对于下文中推论的回答:我认为不会成环,ping NAT地址池的没用到的地址,得不到回应,就没有回去的数据包,怎么会成环呢..... 以下参考下面这个文章,附上本文留存,原文引用链接为: http://www.2cto.com/net/201202/119693.html NAT网络回流现象解释,内网使用服务器的外网IP登陆 hi大家好,今天我们来讨论一个很多人都找不到答案得问题:究竟为什么内网

阿里云内网机器通过squids代理上访问外网资源

一.背景 代理服务器A(10.0.1.2)机器有公网地址可正常访问外网 业务服务器B(10.0.1.33)机器无公网地址不能访问外网 代理服务器A((10.0.1.2)和业务服务器B(10.0.1.33)在公一个数据中心(同一个局域网) 需要实现B访问外网通过A代理出去 二.安装 在代理服务器A(10.0.1.2)机器上安装squid yum install openssl squid -y 然后启动服务 service squid start 2.在业务服务器B(10.0.1.33)机器宿主目

apache环境下禁止某文件夹内运行PHP脚本、禁止访问文件或目录执行权限的设置方法

? 首先我们来看两段对上传目录设置无权限的列子,配置如下: <Directory "要去掉PHP执行权限的目录路径,如/upload"> ErrorDocument 404 /404/404.html ErrorDocument 403 /404/403.html <FilesMatch "\.(?i:php|php3|php4)$"> // ?是尽可能多的匹配.php的字符串,i是不区分大小写,然后冒号后面跟上正则表达式,也可以写成:<

利用nginx 来实现内网yum源(反向代理)

简介 在项目部署时,尤其是在政府企业,对于外网简直是奢望,但是对于运维来说,没有外网的话只能自建yum源.我今天来说的是一种简单的自建yum源方法,前提是必须有一台内外网都有的机器,我们一般称为前置机. 操作思路 1.使用nginx 反向代理 阿里云源 2.在内网机器自建repo指向nginxip nginx配置 12345678 server { listen 80; location /centos/ { proxy_pass http://mirrors.aliyun.com/centos

ROS Dst-Nat 后内网不能通过公网IP访问内网服务器解决方法

通常企业内部会有很多服务器需要互联网用户访问,这时就需要做Dst-Nat. 但是我们配置完后会 发现内网用户不能通过公网IP访问对应的服务器.其实这时我们再添加一条策略即可搞定. 实例说明: 内网服务器:172.16.0.101 路由器LAN口: 172.16.254.2 公网IP: 106.37.xxx.xxx 外网访问IP假设为 1.1.1.1    内网访问的PC 假设IP为172.16.3.100 配置NAT: 配置完后,外网可以正常访问了.但是内网通过公网IP不可访问. 究其原因: 外

20170718 关于Mysql 安装于虚拟机Ubuntu中,内网中Windows系统无法访问

-- 1. 前提Mysql 已经安装在Ubuntu中 -- 2. 防火墙已经关闭 命令确认防护墙状态 -- 3.问题如果Ubuntu是基于Docker容器的环境,是否需要把Docker做端口映射?

利用nginx的stream模块实现内网端口的转发代理

一.安装nginx使其支持stream #直接使用yum安装,如果使用源码安装编译时加上 --with-stream ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-stream  &&  make  && make install[[email protected] ~]# yum -y install nginx二.配置nginx配置文件 [[email protected]

通过公网访问内网的几种方式总结

有些机房可能不想外部用户能直接访问所有服务器,一般会开放一台为公网,作为与外界交互的中转站.我们可以通过如下几种方式来访问内网服务器: 1. 我们可以通过CRT建立通道来访问这些服务器.建通道的步骤: 1). 选择公网的远程地址,右键,选择properties. 2). 选择Port Forwarding ,选择add 进行添加.注意的是:name可任意命名,local  address为本地一个未使用的端口,注意,是本地! Remote Address为你要连接的那台服务器的ip地址和端口.而