文件包含漏洞复现(附源码)

本文深入解析文件包含漏洞,包括本地和远程文件包含的区别,演示如何通过网页表单加载任意文件,展示利用过程及防御策略。

文件包含是指使用include、require等一些包含文件的函数,所产生的漏洞。分为本地文件包含、远程文件包含

本地文件包含:是调用的是服务器本地的文件:如下:

远程文件包含:是调用其他服务器的文件:如下:

下面开始复现:

<!DOCTYPE html>
<html>
<head>
	<title>index.php</title>
</head>
<body>
	<form action="index.php" method="GET">
	<input type="text" name="file">
	<input type="submit" name="load" value="load">
	</form>
</body>
</html>
<?php
	$file = $_GET['file'];
	if (isset($file)&&($file!=null)) {
		include "$file";
	}else{
		echo "请指定文件";
	}
?>

下面是页面

通过这个漏洞可以访问一些用户不应该访问的文件,如果服务器中有木马的话,攻击者可以利用这个漏洞直接访问并执行木马文件,从而拿到shell。

下面通过更改网页浏览日志文件来进行漏洞利用:

使用burp拦截网页并在url中输入一句话木马:

然后我们会在access.log文件中发现,

使用中国蚁剑(或菜刀)连接access.log文件利用成功

http://127.0.0.1/include/index.php?file=..\..\Extensions\Nginx1.15.11\logs\access.log&load=load

access.log的路径不同的Web服务器软件会有所区别,请自行百度

防御方法:建议使用黑名单或白名单对url进行过滤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值