文件上传漏洞防御——图片写马的剔除

文件上传漏洞防御——图片写马的剔除

ID:34772766

大小:124.31 KB

页数:8页

时间:2019-03-10

文件上传漏洞防御——图片写马的剔除_第1页
文件上传漏洞防御——图片写马的剔除_第2页
文件上传漏洞防御——图片写马的剔除_第3页
文件上传漏洞防御——图片写马的剔除_第4页
文件上传漏洞防御——图片写马的剔除_第5页
资源描述:

《文件上传漏洞防御——图片写马的剔除》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、文件上传漏洞防御——图片写马的剔除     最近回顾了一下CasperKid大牛在2011年11月发布的UploadAttackFramework,非常有感触,写得非常好,想深入了解这个漏洞的都推荐看看。  AD:2013大数据全球技术峰会低价抢票中  最近回顾了一下CasperKid大牛在2011年11月发布的UploadAttackFramework,非常有感触,写得非常好,想深入了解这个漏洞的都推荐看看。  上传功能常见于图片的上传,例如博客头像设置,广告位图片上传等。  上传检测方法在paper中也写的比较明朗,这里总结一下:  1.客户端使用JS对上传图片做

2、检测,例如文件大小,文件扩展名,文件类型  2.服务端检测,例如文件大小(免得拒绝服务),文件路径(避免0x00截断,目录遍历),文件扩展名(避免服务器以非图片的文件格式解析文件),文件类型(避免修改Content-Type为image/jpeg等),文件内容(避免图片写马)  上传检测绕过的方法,也总结一下:  1.客户端检测,相当于没有检测,可以使用HTTP代理例如burp绕过  2.服务端检测,一般采用白名单+黑名单的方式,但也极有可能出纰漏。例如大小写,不在名单内的特例,操作系统bt特性(windows系统会自动去掉文件名最后面的点和空格),0x00截断,服务

3、器文件解析漏洞,最后还有图片写马绕过类型检测  本篇博客重点讲讲图片写马的检测。  我们知道PHP中文件类型的检测可以使用  1.$_FILES['uploaded']['type'];  2.getimagesize  两种方式来判断是否是正常图片,其实只要在不破坏图片文件格式的情况下,就可以绕过检测  例如使用以下命令,将正常图片与一句话php木马绑定在一起生成一个新的文件的方式  copy/btangwei.jpg+yijuhua.phptangweiyijuhua.jpg  我们查看新生图片的内容,在图片底端可以看到一句话木马写入,如下图所示  strings

4、tangweiyijuhua.jpg    接下来我们演示这张图片是否能正常上传。  试验用到了两个脚本  1.upload.html上传客户端  Chooseanimagetoupload  2.upload.php上传文件处理  这个脚本会检测文件后缀与文件类型,符合白名单jpeg格式的才允许上传,并打印出上传文件的基本信息及显示图片。  注意:红色字体部分可以先注释掉,下一步演示中会使用到  if(isset($_POST['upload'])){  //获得上传文件的基本信息,文件名,类型,大小,临时文件路径  $filename=$_FILES['uploa

5、ded']['name'];  $filetype=$_FILES['uploaded']['type'];  $filesize=$_FILES['uploaded']['size'];  print"  Filename:$filename  ";  print"  Filetype:$filetype  ";  print"  Filesize:$filesize  ";  $tmpname=$_FILES['uploaded']['tmp_name'];  print"  TempFilepath:$tmpname  ";  $uploaddir='/var/

6、www/upload/';  $target_path=$uploaddir.basename($filename);  //获得上传文件的扩展名  $fileext=substr(strrchr($filename,"."),1);  print"  Fileextension:$fileext  ";  $serverip=$_SERVER['SERVER_ADDR'];  //判断文件后缀与类型,合法才进行上传操作  if(($fileext=="jpg")&&($filetype=="image/jpeg")){  if(move_uploaded_file(

7、$tmpname,$target_path)){  print$target_path."successfullyuploaded!  ";  //显示上传的图片  print'Originimage  ';  //使用上传的图片生成新的图片  $im=imagecreatefromjpeg($target_path);  //给新图片指定文件名  srand(time());  $newfilename=strval(rand()).".jpg";  print"  newfilename$newfilename  ";  $newimagepat

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。