做医学网站织梦企业黄页网站源码
2026/2/9 5:31:07 网站建设 项目流程
做医学网站,织梦企业黄页网站源码,it咨询公司排名,网站版块下载重点是理解CURL函数和file_get_contents函数引发的漏洞 使用的php版本是5.6.9 #xff08;一#xff09;、查看页面信息 一、CURL curl不是单独的函数#xff0c;是基于libcurl库的一套请求工具集#xff0c;所以支持的协议比较多二、file_get_content php中内置的简单文件…重点是理解CURL函数和file_get_contents函数引发的漏洞使用的php版本是5.6.9一、查看页面信息一、CURLcurl不是单独的函数是基于libcurl库的一套请求工具集所以支持的协议比较多二、file_get_contentphp中内置的简单文件/资源读取函数重点是轻量级查看后发现都存在用户可控的请求传入到服务器那就是存在ssrf的最基础前提了那这里就详细尝试包含http访问文件file读取文件dict扫描其他主机二、CURL关卡一、代码审计通过查看后端源码分析if(isset($_GET[url])$_GET[url]!null){//直接获取GET请求传入的URL值$URL$_GET[url];$CHcurl_init($URL);curl_setopt($CH,CURLOPT_HEADER,FALSE//只返回响应体curl_setopt($CH,CURLOPT_SSL_VERIFYPEER,FALSE//禁用SSL证书校验$REScurl_exec($CH);//发送请求curl_close($CH);echo$RES;//直接将请求结果返回}直接获取请求中的URL值未作任何过滤操作操作CURl函数默认支持多种协议包括http/httpsfiledict**gopher**等多种协议二、协议访问壹、http直接访问网站下的其他文件和百度网站都可以访问成功重点是没有过滤贰、file访问windows的早期配置文件叄、其他的协议只要修改协议名和遵循格式就行三、防护防护手段过滤协议只允许http和https协议控制访问的文件使用文件映射比较好验证访问的ip地址if(isset($_GET[url])$_GET[url]!null){//接收前端URL没问题,但是要做好过滤,如果不做过滤,就会导致SSRF$URL$_GET[url];$CHcurl_init($URL);//协议判断$url_infoparse_url(strtolower($URL));if(!in_array($url_info[scheme],array(http,https))){//scheme: 协议类型 die(出错了1);}// 定义访问白名单$list[info1.php];// 访问文件判断$filenamebasename($url_info[path]);if(!in_array($filename,$list)){die(出错了2);//还存在/../等绕过方式}// 服务器判断$system_ip[127.0.0.1,192.168.1.1];//访问白名单 // 要实现还是验证具体的ip地址这只是验证的是字符串$host$url_info[host];if(!in_array($host,$system_ip)){die(出错了3);}这样可以初步过滤和防护ssrf漏洞,但还是有问题哦三、file_get_content关卡一、代码审计if(isset($_GET[file])$_GET[file]!null){$filename$_GET[file];$strfile_get_contents($filename);echo$str;}可以看到非常的简单直接获取GET请求中的file值后使用file_get_contents函数发送请求无任何过滤防护手段需要注意的是函数只能接受GET请求的参数file_get_contents()支持的协议比较少包括http/httpsfileftp协议二、协议访问壹、连接外部的资源贰、访问文件叄、伪协议访问后端源码可以看出后端会直接返回输出的信息那就输入不存在的文件导致报错看看后端路径通过php的伪协议输出了后端源码肆、其他的协议也是类似的操作三、防护手段if(isset($_GET[file])$_GET[file]!null){$filename$_GET[file];$url_infoparse_url(strtolower($filename));// 协议判断if(!in_array($url_info[scheme],array(http,https))){//scheme: 协议类型die(出错了1);}// 定义访问白名单$list[info2.php];// 访问文件判断$filebasename($url_info[path]);if(!in_array($file,$list)){die(出错了2);//还存在/../等绕过方式}// 服务器判断$system_ip[127.0.0.1,192.168.1.1];//访问白名单$host$url_info[host];if(!in_array($host,$system_ip)){die(出错了3);}//要实现还是验证具体的ip地址这只是验证的是字符串$strfile_get_contents($filename);echo$str;}这是最简单的过滤防止ssrf漏洞但还是有问题哦四、配置防护php.ini中关闭allow_url_fopen/allow_url_include限制open_basedir禁用危险函数web服务器的危险请求拦截设置防护防火墙警用特殊IP地址

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询