网站常见漏洞 文件上传漏洞漏洞预警

时间:2023年01月28日

/

来源:崔然竣崔玹硕博连读

/

编辑:本站小编

收藏本文

下载本文

以下是小编整理的网站常见漏洞 文件上传漏洞漏洞预警,本文共5篇,欢迎阅读分享,希望对大家有帮助。本文原稿由网友“崔然竣崔玹硕博连读”提供。

篇1:网站常见漏洞 文件上传漏洞漏洞预警

任意文件上传漏洞

文件上传漏洞(File Upload Attack)是由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件,并能够将这些文件传递给 PHP 解释器,就可以在远程服务器上执行任意PHP脚本,

一套web应用程序,一般都会提供文件上传的功能,方便来访者上传一些文件。

下面是一个简单的文件上传表单

php的配置文件php.ini,其中选项upload_max_filesize指定允许上传的文件大小,默认是2M

$_FILES数组变量

PHP使用变量$_FILES来上传文件,$_FILES是一个数组。

如果上传test.txt,那么$_FILES数组的内容为:

$FILES

Array

{

[file] => Array

{

[name] => test.txt                            //文件名称

[type] => text/plain                          //MIME类型

[tmp_name] => /tmp/php5D.tmp                   //临时文件

[error] => 0                                //错误信息

[size] => 536                               //文件大小,单位字节

}

}

如果上传文件按钮的name属性值为file

那么使用$_FILES['file']['name']来获得客户端上传文件名称,不包含路径。使用$_FILES['file']['tmp_name']来获得服务端保存上传文件的临时文件路径

存放上传文件的文件夹

PHP不会直接将上传文件放到网站根目录中,而是保存为一个临时文件,名称就是$_FILES['file']['tmp_name']的值,开发者必须把这个临时文件复制到存放的网站文件夹中。

$_FILES['file']['tmp_name']的值是由PHP设置的,与文件原始名称不一样,开发者必须使用$_FILES['file']['name']来取得上传文件的原始名称。

上传文件时的错误信息 $_FILES['file']['error']变量用来保存上传文件时的错误信息,它的值如下:

文件上传漏洞

如果提供给网站访问者上传图片的功能,那必须小心访问者上传的实际可能不是图片,而是可以指定的PHP程序。如果存放图片的目录是一个开放的文件夹,则入侵者就可以远程执行上传的PHP文件来进行攻击。

下面是一个简单的文件上传例子:

// 设置上传文件的目录

$uploaddir = “D:/www/images/”;

// 检查file是否存在

if (isset($_FILES['file1']))

{

// 要放在网站目录中的完整路径,包含文件名

$uploadfile = $uploaddir . $_FILES['file1']['name'];

// 将服务器存放的路径,移动到真实文件名 move_uploaded_file($_FILES['file1']['tmp_name'], $uploadfile);

}

?>

……

这个例子没有检验文件后缀,可以上传任意文件,很明显的上传漏洞,

利用此漏洞 克制自由上床任意的木马文件而导致网站失陷。

漏洞防护措施

解决上面所述问题的一种方法是通过检查上传文件的类型来限制用户的文件上传,如以下代码所示。

if(isset($_POST[“form”]))

{

if($_FILES['upfile']['type'] == 'image/pjpeg')  //检查文件类型是否为JPEG

{

$uploadfile = “upfiles/”.$_FILES['upfile']['name'];

//上传后文件所在的文件名和路径

move_uploaded_file($_FILES['upfile']['tmp_name'], $uploadfile);

//上传文件

print_r($_FILES);

die;

}

else

{

die(“上传文件的格式不正确!”);

}

}

?>

上面的代码要求用户上传的文件必须是JPEG类型的图片文件,彻底地避免了终端用户通过上传PHP脚本危害服务器的行为。

文件上传路径变量过滤不严

在许多论坛的用户发帖页面中存在这样的上传Form,如图7-27所示,其网页编程代码为:

在其中“filepath”是文件上传路径,由于网页编写者未对该变量进行任何过滤,因此用户可以任意修改该变量值。在网页编程语言中有一个特殊的截止符“\\0”,该符号的作用是通知网页服务器中止后面的数据接收。利用该截止符可们可以重新构造filepath,例如正常的上传路径是:

“www.***.com/bbs/uploadface/09240824.jpg”,

但是当我们使用“\\0”构造filepath为

“www.***.com/newmm.asp\\0/200409240824.jpg ”

这样当服务器接收filepath数据时,检测到newmm.asp后面的\\0后理解为filepath的数据就止结束了,这样我们上传的文件就被保存成了:“www.***.com/newmm.asp”。

利用这个上传漏洞就可以任意上传如.ASP的网页木马,然后连接上传的网页即可控制该网站系统。

提示:可能有读者会想,如果网页服务器在检测验证上传文件的格式时,碰到“/0”就截止,那么不就出现文件上传类型不符的错误了吗?其实在检测验证上传文件的格式时,系统是从filepath的右边向左边读取数据的,因此它首先检测到的是“.jpg”,当然就不会报错了。

最安全的防范办法就是删除上传页面

篇2:JEECMS漏洞(文件上传)漏洞预警

漏洞描述:这个漏洞很简单,上传没有过滤,注册账号之后去上传头像,jsp 都可以,会提示上传类型错误,弹出对话框,不用管它,关闭弹窗,点击右键查看源代码,你的代码已经上传上了,

JEECMS最新漏洞(文件上传)漏洞预警

上传后的格式为:

www.xxx.com/online/upload/M000000070500007/1349769169860.jsp?o=vLogin

篇3:MetInfov5.1.3 任意文件上传漏洞漏洞预警

MetInfo 23号发布了新版本5.1.5,修补了本文提到的漏洞,当然严格来说应该是任意变量覆盖漏洞....

ps:欢迎各种形式,首发t00ls.net

注:请勿利用本文内容从事一切非法活动,否则后果自负

author:my5t3ry

废话不多说,看代码:

include\\common.inc.php20-39$db_settings=parse_ini_file(ROOTPATH.'config/config_db.php');@extract($db_settings);require_once ROOTPATH.'include/mysql_class.php';$db=newdbmysql;$db->dbconn($con_db_host,$con_db_id,$con_db_pass,$con_db_name);define('MAGIC_QUOTES_GPC',get_magic_quotes_gpc());isset($_REQUEST['GLOBALS'])&&exit('Access Error');require_once ROOTPATH.'include/global.func.php';foreach(array('_COOKIE','_POST','_GET')as$_request){foreach($$_requestas$_key=>$_value){$_key{0}!='_'&&$$_key=daddslashes($_value);}}$query=“select * from {$tablepre}config where name='met_tablename' and lang='metinfo'”;$mettable=$db->get_one($query);$mettables=explode('|',$mettable[value]);foreach($mettablesas$key=>$val){$tablename='met_'.$val;$$tablename=$tablepre.$val;}

metinfo系统通过查询数据库的{$tablepre}config表,并将获取的结果通过foreach循环初始化表名变量,其中的

是通过代码

$db_settings = parse_ini_file(ROOTPATH.'config/config_db.php'); @extract($db_settings);

来初始化的,然后在系统中使用这样“SELECT * FROM $met_message where id=$id and lang='$lang'”的SQL查询数据库,

其中的$met_message变量就是前面foreach循环初始化的变量……

我们可以覆盖$tablepre变量使表名初始化失败,进而提交表名变量.....

我找了个后台的上传页面,通过覆盖变量绕过后台验证并且覆盖允许上传后缀列表,构造上传漏洞,

MetInfov5.1.3 任意文件上传漏洞漏洞预警

exp:任意文件上传

任意文件上传

篇4:天空课堂文件上传漏洞漏洞预警

简要描述:

允许上传危险文件类型,这个系统用的还是不少的

打开网络课网站,如图,登陆进去,现在网盘里传一个PHP文件,网盘竟然没过滤PHP文件,

进入后选择使用网盘文件,然后选择php文件,在切换到HTML下,就可以看到这个PHP文件在服务器上路径了,xxx.xxx.cn/SCR/Course … 31/111026085064.php,执行的时候好像不能写php大马,写个asp上去就可以了,

这个系统数据库用户用的是sa,有点。。

篇5:KCFinder 2.2 文件上传漏洞漏洞预警

KCFinder 2.X上传页未进行严格过滤,导致文件上传漏洞,

1.Go to target link

localhost/KCFinder/browse.php

2.upload your shell as [shell.php.jpg]

注:只适用于linux系统的解析漏洞,

WebPageTest任意php文件上传漏洞预警

企业SEO专业网站漏洞及修复漏洞预警

ServU多个安全漏洞漏洞预警

PHP字符编码绕过漏洞总结漏洞预警

无补丁?教你阻击Office漏洞漏洞预警

下载网站常见漏洞 文件上传漏洞漏洞预警(共5篇)
网站常见漏洞 文件上传漏洞漏洞预警.doc
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
点击下载本文文档