WFC_phpstudy后门利用【通过】

0x00 前言

这款工具是我很久之前写的,到现在有很久的一段时间没有去看过,最近正巧想做个网站,买了台服务器,但是域名迟迟不给我备案通过,最后说我信息有点问题,怕麻烦的我也就没去再次备案了,闲着服务器也没事,我就想到要不更新一下之前写的工具,正好有服务器可以做一些检测更新的一些效果,我就选中了这个工具。

这款工具的初衷是为了给我自己方便做一些脚本的,后来做时间长了一点就把他做的正规了一些,截止到2019.10.07,我已经做到1.7版本了,接下来通过最新的这个PHPstudy的后门漏洞,我简单的介绍一些这个工具。

0x01 文件的安装

文件的安装其实是比较简单的一个方面,和常见的程序安装的过程是一样的,直接点击下一步下一步就可以安装完成,给几个截图就好。

image

0x02 文件目录的介绍

image

首先我们来看一下目录的结构。

  1. dos:是用来存储WFC执行dos命令时候的一些垃圾文件,这里面的文件WFC是支持自动删除的,所以正常情况下是不会有文件在这个文件夹中的。

  2. ico:这个只是在文件关联时候,使得脚本文件的图标变成里面的文件的一个ico文件,只有一个ico.ico文件。

  3. jb:这个是用来存储我们写好的脚本的,里面是一些文件夹

image

这里的文件夹是和WFC

image

用来保存文件脚本类型的。每个分支的文件件,是用来添加脚本在里面的,当然你也可以自己来添加一些文件夹。

  1. txt:这个的话呢,我们在利用某些函数的时候会读取外部的一些txt文件,就会将txt文件放在这个文件夹中。

  2. 小图标:只是用来存储一些程序在使用的时候用到的一些图标。

  3. configure.ini/pd.ini:用来存储一些配置文件的,当然程序是可以进行配置的。

  4. variable.txt:这个是用来存储全局变量的,我们在讲解编写脚本的过程中会讲解到相关的知识。

  5. user.ini:存储登录的用户信息的(记得注意文件的安全性)

  6. 程序的登录

程序,为了长期的运行,所以我增加了一些登录的效果,但是:程序使用是免费的,那为什么要进行程序的登录呢?是为了我在下一个版本也就是1.8版本推出脚本商城时可以用到的一个效果,并且可以保持我对程序的一个动态使用情况的一个查看。

我们可以免费的注册,直接登录就好了,但是切记,在点击保存密码后,会生成的user.ini文件中会存储登录的账号和密码,大家记得保证对user.ini文件的安全性。

  1. 程序的简单使用

image

如果出现类似的提示框,就点击确认,说明之前你已经关联过了,这个时候强制改变成当前的WFC的文件关联。当然需要给予WFC管理员权限的启动(win10,win8)。

image

  1. 脚本的编写

  2. 设置文件的关联

  3. 全局变量的设置

  4. 程序的配置

  5. 网站一些cookie的设置

  6. 内置浏览器

这里我就不进行讲解了,只是内置浏览器大家可以充分的利用好,还是有一些强大的,抓包,网页分析,cookie查看设置之类的。

image

这里我们可以看到我们jb文件夹中配置的一些脚本,界面我做的并不是很美观,但是可以用我觉得就好,哈哈,最后一个字段(输入):就是用来告诉我们这个脚本需不需要外部输入的。

我们来执行一个脚本试一下(拿最近的phpstudy后门漏洞来测试一下):

我们点击脚本前面的钩子,然后点击执行。

image

然后因为需要输入我们输入我们需要的一些参数:

image

双击和右键添加是一样的,然后我们点击确定,就会看到程序返回给我们的消息。

我们执行漏洞成功。

0x03. 程序脚本的编写

我们来简单的介绍一下WFC的函数:

如果(变量,变量)

真()

假()

如果结束()

计次循环(变量【循环次数】)

计次循环结束()

变量=变量+-*/变量【整数型】

变量==“内容”【文本型】

跳出循环()

到循环尾()

数组加值(数组名,内容)

取数组成员数(承接变量,数组名)

get(网址,接受返回内容的变量,接收http返回的变量)

get_w(网址,提交的header,提交的cookie,接受返回内容的变量)

GET_对象(链接,超时,接受文本,接受的http状态码)

post(网址,POST内容,接受返回内容的变量,接收http返回的变量)

post_w(网址,POST内容,提交的header,提交的cookie,接受返回内容的变量)

POST_对象(链接,POST数据,超时,接受文本,接受的http状态码)

dos(命令,接受的变量)

文本取中间(原文本,前文本,后文本,用来接收返回内容的变量)

文本取中间2(原文本,前文本,后文本,用来接收返回内容的变量)

文本批量取中间(原文本,前文本,后文本,用来接收返回内容的数组)

文本取右边(原文本,寻找的文本,接受的变量)

文本取左边(原文本,寻找的文本,接受的变量)

取文本右边(原文本,长度,接受的变量)

取文本左边(原文本,长度,接受的变量)

取文本长度(原文本,接受变量)

寻找文本(原文本,寻找的文本,接受位置的文本)

分割文本(原文本,分隔符,接受的数组)

文本替换(原文本,待替换文本,替换的文本,接受的文本)

正则(检查的文本,正则命令,接受的数组)

编码(编码的变量,编码类型,是否编码数字,接受变量)

解码(解码的变量,解码类型,接受变量)

base64编码(待编码的文本,接受的变量)

base64解码(待解码的文本,接受的变量)

清空数组(待清空数组)

提示(提示信息)

延时(延时时间)

读取外部(文件名,接受的变量)

md5加密(需要加密的内容,接受的变量)

sql连接(sql地址,sql账号,sql密码,sql数据库,接受返回值的变量)

ftp连接(ftp地址,ftp账号,ftp密码,接收返回值的变量)

端口检测(IP地址,端口号,接收返回值的变量)

取进程ID(进程名称,接受PID的变量)

读内存整数型(进程PID,内存地址,接受变量)

读内存小数型(进程PID,内存地址,接受变量)

写内存整数型(进程PID,内存地址,写入的值)

写内存小数型(进程PID,内存地址,写入的值)

十六到十(要转换的值,接受的变量)

十到十六(要转换的值,接受的变量)

取ip(起始IP,结束IP,结果数组)

取页面链接(链接,链接接受数组,友联接受数组)

(参数名,接受变量【变量】)

——————————————

这里简单强调一下,在条件控制语句和循环语句,在内部执行的命令前面是要加一个空格的。

输出和print类似,但不支持直接输出数组,但可以输出数组的元素。

我们简单便写一点代码,这样大家就会简单的理解如何编写了。

image

我们点击上面的绿色三角符号,来运行一下。输出了一个yes。

记得,我这里的字符赋值,是两个等于号,加减乘除是一个等号,而且加减乘除不支持多个运算。

上面的用户输入是代表是否我们需要用户输入我们的参数的,我简单的演示一下大家就明白了。

(参数名,接受变量【变量】)

当我们给test写入123,我们就会出现yes。

我来介绍一下自定义函数,这里我也就给大家演示一下,也是很简单的。

通过——————————————这个进行定义,下面的第一行是函数名称,记得不要加括号。

image

这样就是可以的,简单的定义一个自己的函数。

好了,我们简单了解过之后我们可以通过查看函数定义来编写。

image

第一个是打开脚本,第二个是保存脚本,第三个是另存为脚本,第四个是查看函数,第五个运行自己定义的脚本,第六个是强制结束脚本。

0x04 案例(PHPstudy后门漏洞检测)

我们通过PHPstudy爆出的后门漏洞来编写一个实例。

首先我们要获取用户的输入,这个时候我们可以做成批量,但是我这里留给大家自己写,通过全局变量这个变量,获取用户设置的一些内容,这里就不带大家看了,很简单变量名就是:全局变量,这个是不需要声明的。

首先,我们设置获用户输入的网址,然后通过base64加密获得echo "wfcwfc";的编码结果,存储在poc这个变量里面,然后将attack这个常量替换一下文本,将我们的poc替换掉Accept-Charset字段。

将结果还是放在poc这个变量中,然后通过get_w这个函数将我们的网站和http协议头提交上去,cookie我们我就不设置了,将返回的结果放在result变量中。然后我们寻找一下”wfcwfc”这个文本,如果在返回的内容中有这个字符串,说明存在php代码执行。也就是寻找文本返回的位置不是-1的话我们就认为他是存在漏洞的。将为之存放在add这个变量中,然后通过简单的条件语句将其输出。

程序我是会录一些专门的课程脚本的编写的,大家也可以看看我之前写的脚本,大约我给大家带了五六十个脚本,大家可以自己尝试着看一下,我自带了一个IDE,可以查错,和高亮。

程序我自己一个人写的,部分代码我看了网上的一些资料,所以程序有漏洞的话呢可以和我汇报一下,下一个版本我也会写一个脚本商城,供大家下载脚本。

WFC V1.7.1_Setup.zip (3.4 MB)

  • 通过
  • 未通过

0 投票者

1 Like

脚本商城都出来了,后面需要进行购买脚本吗? 跟POC-T Pocsuite3比起来好像没啥亮点...最后多嘴一句,商城里面放一些exp之类的真的可以吗?

谢谢分享