linux提权进阶 环境变量劫持提权 nfs提权
前言
环境变量:
这个有说头 分为变量和常量 常量就是系统自带的固定的 变量就是可控的 简单举例就是 我们想调用 java 这个时候我们需要把这个java在计算机的路径写清楚之后才能调用 但是这样太麻烦 所以就可以配置环境变量 然后就能不写路径直接调用
比如linux中 命令 其实就是文件啊 那怎么调用的就是使用的环境变量
nfs协议:
就是相当于远程文件同步 这个简单的说就是运维人员想把自己的脚本上传到服务器进行使用 就需要开放这个协议 实现远程文件的同步 但是呢有个安全隐患就是 对方同步的文件同步数据的同时权限也是同步的对方的(这个就能造成提权漏洞)
一般linux中文件的权限 一般固定是很小的 但是在本用户下我们上传一些文件的时候我们可以给与777 权限 这个是不冲突的
说到这个nfs协议再说一下他的进阶兄弟 smb协议
smb协议
这个比nfs常用的原因就是他会有个身份验证来验证重要文件的分享 如果你没密码就只能看普通的文件
环境变量劫持提权
靶场演示:symfonos: 1


gobuster dir -u http://192.168.248.142/ -x php,bak,txt,html -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt是kali自带的字典
发现没有敏感的目录
我们就利用 smb 查看一下共享文件
先列出来能看的文件
这边需要输入密码直接空格跳过就行
smbclient -L
这个sharename就是用户
挨个试试发现只有 第三个不需要密码 进行登录
登录指令
smbclient //<目标IP>/共享名 -U <用户名>[%密码]
这边我没因为没有web权限所以不用使用用户名
smbclient //192.168.248.142/anonymous
查看
使用上面的密码尝试爆破
发现这里就有一个是用户
尝试一下发现是第二个密码
smbclient //192.168.248.142/helios -U Helios
把这两个文件分别下载一下 第一个文件讲的就是希腊的神话故事 第二个 有个web的目录
搞一下
利用的payload
http://192.168.248.142//h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/etc/passwd
发现是文件包含漏洞
文件包含拿到webshell
需要的条件就是把后门代码执行显示到web页面中去
主要就是有可控的代码文件
1、常用手段就是把webshell写入到日志文件中
2、可以利用一些如邮件系统什么的 文件同步等上传到对方的服务器上 再实现包含
/var/log/apache/access.log
/var/log/nginx/access.log
发现这个靶场无法访问到一般的日志路径
可以访问到邮件 那就思路变为了 我们对对方的接口发送webshell的邮件从而实现访问成功 触发木马文件
是成功执行了 如果 你想让它更明显那就可以输入一下标识性的代码
使用蚁剑(哥斯拉连接不上)测试连接
反弹个shell
使用工具进行生成
反弹到kali上 (原因就是后门连接软件无法新建shell 所以很多事都做不了)
我们优先找的就是 非usr(suid我们要 优先利用的就是活的(管理员创建的)一些死的是无法执行命令 除了优先找活的外就是找 不会覆盖命令的一些指令(如find 可以在执行这个命令外 参数还能执行 -exec )
我们cat一下直接就乱码了 所以这个应该是个应用程序 使用Strings 筛选一下字符串
当然主要的目的还是查看这个程序在运行过程中调用的系统命令(在这个程序中 这个命令也是suid权限)
执行一下 curl
环境变量劫持的思路:
拥有suid权限的命令是 curl
这个命令的调用是我们调用 /opt/下的程序的时候会执行的
那就劫持
opt程序 ->curl -> 执行
->换目录给权限 修改 curl的内容让其执行 /bin/bash 现在curl就是执行sh的 ->把假curl添加到环境变量 现在环境变量有2个curl了冲突了 但是我们只有在 假curl目录下执行 opt程序 执行就是当前下的假 curl -> 执行我们可控的命令
之前有个疑问就是不是root怎么还能给权限 ? 因为这个是我们自己创建的所以所有权归我们
给与环境变量 验证一下
执行程序
提权成功