Linux权限提升—定时任务、环境变量、权限配置不当、数据库等提权

news2025/1/13 2:39:42

Linux权限提升—定时任务、环境变量、权限配置不当、数据库等提权

  • 1. 前言
    • 1.1. 如何找编译好的EXP
  • 2. 定时任务提权
    • 2.1. 查看定时任务
    • 2.2. 通配符注入提权
      • 2.2.1. 创建执行脚本
      • 2.2.2. 创建定时任务
      • 2.2.3. 查看效果
      • 2.2.4. 提权操作
        • 2.2.4.1. 切换普通用户
        • 2.2.4.2. 执行命令
        • 2.2.4.3. 查看效果
        • 2.2.4.4. 提权执行
      • 2.2.5. 总结
        • 2.2.5.1. 执行成功的
        • 2.2.5.2. 执行未成功的
    • 2.3. 权限配置不当提权
      • 2.3.1. 查看定时任务
      • 2.3.2. 查看脚本
      • 2.3.3. 编辑脚本
      • 2.3.4. 查看执行效果
      • 2.3.5. 提权执行
      • 2.3.6. 疑问
  • 3. 环境变量提权
    • 3.1. 环境搭建
      • 3.1.1. 编辑C语言脚本
      • 3.1.2. 编译C语言脚本
      • 3.1.3. 添加SUID权限
    • 3.2. 提权操作
      • 3.2.1. 查找SUID权限文件
      • 3.2.2. 尝试执行脚本
      • 3.2.3. 查看源码
      • 3.2.4. 分析环境变量
      • 3.2.5. 查看环境变量
      • 3.2.6. 复制bash
      • 3.2.7. 劫持环境变量
      • 3.2.8. 执行脚本
    • 3.3. 总结
  • 4. MySQL数据库提权
    • 4.1. 自动化提权
      • 4.1.1. 打开工具
      • 4.1.2. 连接目标数据库
      • 4.1.3. 进入目标数据库
      • 4.1.4. 查看secure-file-priv状态
    • 4.2. 总结

1. 前言

  在上篇文章中提到了Linux权限提升之前的信息收集操作,这里就不在赘述,在前言中讲上篇文章为提到的内容进行补充,至于其它内容可参考上篇文章。

  Linux权限提升—内核、SUID、脏牛等提权

1.1. 如何找编译好的EXP

  这里提一下,之前在设计找EXP都是使用自动化进行编译,但是就会出现需要安装C语言环境,而如果目标靶机中没有C语言环境,如果你私自在别人的操作系统中去安装C语言环境,可能会导致服务器部分环境或服务产生问题,那么就需要在本地进行编译,在编译后好再上传。不过也较为麻烦,这里给几个github上编译好的环境。

  kernel-exploits

  Unix-Privilege-Escalation-Exploits-Pack

  linux-kernel-exploits

2. 定时任务提权

  定时任务通常被设置用于备份文件、清理目录内容等。crontab命令可以创建一个cron文件,以指定的时间区间运行。

2.1. 查看定时任务

  可以通过下列的命令去指定一个定时任务,这里关于Linux定时任务相关的内容,请百度自行了解。

cat /etc/crontab

在这里插入图片描述

2.2. 通配符注入提权

  先按照操作流程去操作一边,不懂的会在通配符总结中详细讲解到,最好先跟着操作一边,有印象再去看总结,就能看懂了。

  通配符注入也就是Linux中用于匹配文件名的服务(*、?等),当存在这些符号的时候就可以用来提权,但是需要涉及到与类似解压缩类型的命令。

  通配符通常是在查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。

2.2.1. 创建执行脚本

  这里创建一个bf.sh的执行脚本,并在里面写入一个备份执行命令。关于这条命令,为什么要这么设置,我想了很久,这里先设置,操作完看到效果后,我会对这个命令进行分析。

  这里就是先到tmp目录下的123目录中,去打包里面的文件,并存放到tmp下。

cd /tmp/123;tar -zcf /tmp/bf.tar.gz *

在这里插入图片描述

2.2.2. 创建定时任务

  这里创建一个压缩备份的定时任务,这个定时任务在大部分服务器中存在还是比较多的,由于服务器中的数据较为重要,所以多数都会使用到一个压缩备份的定时任务,同时如果在一个文件夹中需要备份的文件较多,管理者不可能一个一个压缩,那么就会使用到通配符来辅助压缩。

  这里我设置的是:执行tmp下面的bf.sh。

vi /etc/crontab   ##编辑定时任务
* * * * * root /tmp/bf.sh  ##创建定时任务
cat /etc/crontab   ##查看定时任务

在这里插入图片描述

2.2.3. 查看效果

  可以看到,这里成功压缩了文件,注意这个条件的确实是我备份的,我测试完又删除的,所以导致前后时间不对应。

在这里插入图片描述

2.2.4. 提权操作

  关于这个提权,web权限账户基本上不太可能能进行提权,同时普通用户若管理员设置备份的文件夹未给写入权,那么也GG,但是多数应该不太会出现这个情况,不过也不保证会排查。

2.2.4.1. 切换普通用户

  这里切换到普通用户,然后查看到存在root创建的定时任务,那么就可以利用这个定时任务进行提权,同时我们需要查看刚刚创建的执行脚本,对里面的内容进行分析,然后再去执行提权。

在这里插入图片描述

2.2.4.2. 执行命令

  由于备份的时候是备份123目录下的文件,那么我们执行的命令就需要再123命令下进行操作。

  定时任务打包时使用了将整个文件夹下的文件打包,而当系统真正执行打包操作时,会将目录下的所有文件名一个一个传参给执行打包操作。前几个文件都没问题,但是当打包到–checkpoint=1文件和–checkpoint-action=exec=sh test.sh文件时,执行的相当于执行:

tar czf /tmp/backup.tar.gz --checkpoint=1 --checkpoint-action=exec=sh test.sh

  而 --checkpoint、–checkpoint-action正好是tar命令的参数,打包到这里就会导致tar命令直接把–checkpoint=1和–checkpoint-action=exec=sh test.sh两个文件名当做参数执行,而不打包文件。–checkpoint-action=exec=sh test.sh参数的意思是执行同目录下test.sh文件,test.sh文件内容又是把 bin/bash拷贝给/tmp/bash并给/tmp/bash赋SUID权限。此时我们再执行/tmp/bash就享有了suid权限,所以这里是一环套一环的。

echo "" > --checkpoint=1   
echo "" > "--checkpoint-action=exec=sh test.sh"   ##执行test.sh文件
echo 'cp /bin/bash /tmp/bash;chmod +s /tmp/bash' > test.sh  ##将/bin/bash复制到/tmp下,并提权SUID权限,同时将命令写入到test.sh脚本中
chmod +x test.sh  ##赋予执行权限

在这里插入图片描述

2.2.4.3. 查看效果

  可以看到这里成功的将bin目录下的bash复制到tmp下。

在这里插入图片描述

2.2.4.4. 提权执行

  这里可以参考之前提到的一个提权参考文章,在里面可以看到bash的提权操作,这里我们已经将bash复制过来了,同时又赋予了SUID权限,那么就是root权限了,通过参考文章中给予的操作方式,这里只需要下列命令即可。

  那么完整的提权就结束了。

  suid-executables

./bash -p

在这里插入图片描述

2.2.5. 总结

  这里将一下在这个提权中需要注意的事项,总体来说有种莫名的鸡肋感觉。

  • 如果备份的文件夹你没有写入权限就GG。
  • 如果备份的命令是绝对路径也GG。
  • 如果管理员设置了其它权限也GG。
  • 如果是WEB权限也GG。

  可能有些文章中是在定时任务中直接写入压缩命令,来完成压缩的,下面我们就来具体分析一下这两条命令。

cd /tmp/123;tar -zcf /tmp/bf.tar.gz *  ##执行成功的
tar -zcf /tmp/bf.tar.gz /tmp/123/*   ##执行未成功的

  通过上面两条命令来看,其实都是成功对文件进行压缩,但是有上面不同呢?最好的办法就是把这两条命令的内容解压出来看看。

  这里我由于使用香港服务器有点卡,我就切到华为云服务器上操作了。

2.2.5.1. 执行成功的

  通过整个验证流程来看,执行成功的命令是先到123目录中,通过匹配符去打包123目录中的所有文件,这样就符合了我们提权执行的流程。

在这里插入图片描述

2.2.5.2. 执行未成功的

  这条命令也是网上很多人文章中使用的,但是从来没有下一步成功的截图或者内容,很多都直接提过了,都跳过了,你写个毛教程,这条命令我通过解压验证,他打包的内容是tmp整个目录,并不是123中的文件,整就导致了,提取目录无法执行的原因。

  从验证流程上是错误的,所以我也不知道网上他们的文章是如何成功的,或者是我的理解有错误,有大佬知道的请反馈给我,解答我心中的疑惑。

在这里插入图片描述

2.3. 权限配置不当提权

  关于权限配置不当提权其实很好理解,比如管理员在设置一个定时任务的时候,通常都需要给定时任务的脚本添加一个执行权限,正常情况下都是"chmod +x test.sh",而有些管理员偷懒直接添加一个777权限,就会导致权限配置不当提权。

  这里首选我们需要获取一个本地用户,WEB权限的用户不是不行,但是多数web权限都会被限制,不过也可以去尝试看看,能否进行操作。

2.3.1. 查看定时任务

  可以看到管理员在定时任务中添加一个sh脚本任务,这里就可以看看这个脚本中写的是什么。

在这里插入图片描述

2.3.2. 查看脚本

  通过查看脚本,发现是将时间写入time.log中,结合定时任务就是每分钟追加时间进入time.log中。并且查看权限的时候发现,是777权限,那么这里我们就可以考虑把这个文件覆盖或者在后面添加命令完成我们的提权操作。

在这里插入图片描述

2.3.3. 编辑脚本

  一定要有修改权限哦,如果没有修改权限那就GG了,是无法提权的。

  在现实环境中最好是追加命令,不要去随意修改别人的脚本,确保原先的脚本也能执行,同时也能执行我们想要的执行权限,那么就可以直接在脚本中追加我们的命令。

cp /bin/bash /tmp/bash; chmod +s /tmp/bash  ##这里还是将bin下的bash复制到tmp下,同时加上SUID权限。

在这里插入图片描述

2.3.4. 查看执行效果

  可以看到成功获取到bash。

在这里插入图片描述

2.3.5. 提权执行

  这里同样可以参考之前给的提权文章中使用命令进行提权,可以看到是root权限了。

bash -p

在这里插入图片描述

2.3.6. 疑问

  可能有的人说,test.sh都是777权限了,能不能直接进行执行,这里测试是不行的,我们是没有权限的,由于time.log是由root的定时任务产生的,所以我们无法进行执行。

  但是如果你把里面所有的内容都删除了,是可以进行执行的,或者你复制一份把里面的内容都删除了,然后进行执行也是可以的,但这些都基于权限配置出错的前提下。

在这里插入图片描述

3. 环境变量提权

  PATH是Linux 和 Unix 操作系统中的环境变量,它指定存储可执行程序的所有bin和sbin目录。当用户在终端上执行任何命令时,它会通过PATH变量来响应用户执行的命令,并向shell发送请求以搜索可执行文件。超级用户通常还具有/sbin和/usr/sbin条目,以便于系统管理命令的执行。

  比如我想执行一个ls命令,其实我们执行的是/bin/ls这个可执行文件,而系统就是靠环境变量中我们设置的路径/bin中找到的ls并执行。而执行的优先级是从前向后查询的,例如下图,若在/usr/local/sbin中到到ls则会执行/usr/local/sbin中的ls,而不会再向下寻找。

在这里插入图片描述

3.1. 环境搭建

  这里我们先搭建一个模拟环境,模拟环境只是为了好演示以及知道原理,并不是在实际情况中一定会遇到。

3.1.1. 编辑C语言脚本

  这个脚本意思很简单执行ps命令,而在实际环境中可能会其它的命令,基本上都是一致的替换即可。

#include<unistd.h>
void main()
{
        setuid(0);
        setgid(0);
        system("ps");
}

在这里插入图片描述

3.1.2. 编译C语言脚本

  这里编译C语言脚本需要使用到gcc命令,若没有,可以自行安装,在我另外一篇文章中的5.2.2.1注意段中有写到关于这个C语言环境的情况。

  Linux权限提升—内核、SUID、脏牛等提权

  看到出现一个可执行的shell文件就证明编译成功了。

gcc shell.c -o shell   ##shell.c是脚本文件名,后面的shell是编译后的名称

在这里插入图片描述

3.1.3. 添加SUID权限

  这里添加SUID权限是由于在部分脚本中可能会出现一些命令必须使用root权限来执行,但是有些管理比较严格的公司,不允许随便使用root来管理服务器就会导致普通用户创建的文件可能会出现部分命令无法执行,那么就会使用root用户添加一个SUID权限来让其脚本在执行的时候默认使用root来执行,就能够解决这个问题。

chmod +s shell  ##添加SUID权限

在这里插入图片描述

3.2. 提权操作

  这里的提权操作,整体的思路就是提权脚本中执行命令的环境变量,也就相当于对其进行环境变量的劫持。

3.2.1. 查找SUID权限文件

  这里我们可以看到我们找到一个shell文件,文件路径是在tmp下。

find / -perm -u=s -type f 2>/dev/null

在这里插入图片描述

3.2.2. 尝试执行脚本

  这里尝试执行shell后发现是执行ps命令,那么我们可以找找看看是否存在相关的源码,或者为了避免脚本影响一些服务,可以先对其进行反编译查看脚本里面是什么内容。

在这里插入图片描述

3.2.3. 查看源码

  这里可以对文件进行反编译,或者查看是否存在关于shell脚本的源码,这里也是成功的找到shell脚本的源码,通过查看是执行ps命令。

在这里插入图片描述

3.2.4. 分析环境变量

  默认情况下执行ps是执行/bin/ps,同时这里设定的ps并未写绝对路径来执行,而是直接ps,那么就可以思考,默认情况下环境变量是一个一个查看,若找到了,就不会再向下查找,那么就可以对环境变量进行劫持。

在这里插入图片描述

3.2.5. 查看环境变量

  首先这里我们先查看一下现有的环境变量,通过现有的环境变量能够看到,默认再执行shell的时候会从前向后去一个一个查找,找到了就去执行。

echo $PATH

在这里插入图片描述

3.2.6. 复制bash

  正如之前提到的从前向后查找,那么我们可以把我们的环境变量设置在第一个,同时修改文件名为ps,那么就实现了环境变量劫持,同时也实现了我们提权的操作,那么想要提权就需要使用到bash。

  我们就可以将/bin/bash复制到脚本所在的目录下,当然不是强制复制到脚本所在的目录,只需要你将复制后的bash所在的目录添加在环境变量第一位即可。

  同时修改/bin/bash为/tmp/ps,这里的tmp是脚本所在的目录,还是那句话,不一定强制要求在这个脚本目录下。而为什么要修改bash为ps呢?

  这是由于ps去可执行的时候,相当于就是调用/bin/ps文件,那么修改为ps后就能实现文件名对应,就能进行执行。

cp /bin/bash /tmp/ps

在这里插入图片描述

3.2.7. 劫持环境变量

  通过之前的分析逻辑,我们需要添加环境变量,并且将环境变量添加到第一位。

export PATH=路径:$PATH  ##从头添加
export PATH=$PATH:路径  ##从尾添加

  那么这里我们就需要使用到从头添加的命令,将tmp添加进去,如果你复制的bash修改后的ps不再tmp下,可以根据你设定的目录进行添加,一定要是绝对路径哦。

  添加完查看一下添加的路径是否成功。

export PATH=/tmp:$PATH 
echo $PATH

在这里插入图片描述

3.2.8. 执行脚本

  这里执行完仔细看我截的图,是不是自动跳转到了root权限,这样的话就是成功提权了。

./shell

在这里插入图片描述

3.3. 总结

  整体的原因就是由于开始管理员给予shell就是SUID权限,同时shell是一个执行脚本,通过对其反编译或者寻找源码,来判断脚本里面所调用的命令是什么。

  然后根据这个命令将bash修改成对应的命令名称,同时添加环境变量,根据环境变量的特性,让其优先寻找到我们将bash修改后的命令名称,让其执行的ps命令成为执行bash。

  而shell恰巧是SUID权限也就是root权限执行,那么root权限去执行bash就能够进行提权。

  当然拉~这个提权有点鸡肋就是本地用户才可以,如果是web权限用户基本上是不能执行的。

4. MySQL数据库提权

  其实这里的MySQL数据库提权本来是不想写的,由于在Linux中部署网站本来就会受到各种权限限制。同时Linux中的MySQL数据库提权和Windows的步骤基本上一致。

  并且由于目前的高于5.5的数据库存在secure-file-priv的限制,很多情况下都实现不了,除非你胆大去改别人的数据库同时重启。这里就使用说一下工具自动化提权吧,手动的百度搜索吧,我也想写了,确实由于Linux下的这个secure-file-priv的限制,我以及研究了一下午,翻遍了网上很多文章,基本上清一色的Windows操作,Windows我也能,但是Linux怎么修改都还是nall我已经放弃了。

  MySQL数据库提权,同样需要使用到外联,如果不能外联,那么只有老老实实手工提权了。关于外联提权操作,这里可以参考我之前写的一篇文章,在这个文章中详细写到了如何开启外联。Windows权限提升—MySQL数据库提权

4.1. 自动化提权

  关于这个自动化提权,其实Windows和Linux均能使用这个工具,只是在之前Windows提权中未提到,这里进行操作一下。

  工具下载地址:MDUT

4.1.1. 打开工具

  这里将工具下载下来后,需要在cmd中使用java打开。

java -jar 工具名称

在这里插入图片描述

4.1.2. 连接目标数据库

  这里我们打开工具后,将相关的信息输入进去后就可以进行提权了,不过需要注意数据库要支持外联哦。

  右击》添加》选择数据库类型》输入地址》输入账户密码》确认端口是否正确》保存

在这里插入图片描述

4.1.3. 进入目标数据库

  这里是成功进入了,但是却无法提权,提示出了一个错误,这个错误是由于secure-file-priv的问题,这个问题我在Windows权限提升—MySQL数据库提权中也说到过,这个值如果为NULL直接就是GG,提权不了。

  不过也不是不能修改,而是修改了需要重启数据库,同时如你所看到的,就是这个问题困扰了我一个下午了,解决不了。

在这里插入图片描述

4.1.4. 查看secure-file-priv状态

  可以看到明显是NULL,如果在Windows上修改好像挺简单的修改,重启,但是在Linux上我修改后重启了无数遍依旧不行,同时部分文章中也提到这个问题,同样也是没解决,注意如果修改成功后果自负哦!!!

show global variables like '%secure%';

在这里插入图片描述

4.2. 总结

  关于这里,算上烂尾了吧,但是实在是有心无力,可能有人说,为什么不使用低版本的数据库来演示呢,都2023年了,但凡负责任的管理员也会升级数据库了,比如我所在的公司,早就被强制升级了。

  至于低版本的演示,百度一大堆,而且在我写过的Windows权限提升—MySQL数据库提权中的操作是一样的操作,我也就不想再去写一边了。

  只是这里主要提及了一下这个工具,之前Windows没提过,如果提过了,我直接这章动不会写,同时我也参考了很多关于Linux权限提升的文章,都没涉及数据库提权,反倒Windows权限提升中很多都涉及到了数据库提权,可能在Linux中数据库提权比较麻烦吧,或者遇到的问题和我一样,一致无法让secure-file-priv的状态成为null导致无法演示。

  如果后面研究出来了,再重新补一篇文章!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/444248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优先、双端队列-我的基础算法刷题之路(八)

本篇博客旨在整理记录自已对优先队列、双端队列的一些总结&#xff0c;以及刷题的解题思路&#xff0c;同时希望可给小伙伴一些帮助。本人也是算法小白&#xff0c;水平有限&#xff0c;如果文章中有什么错误之处&#xff0c;希望小伙伴们可以在评论区指出来&#xff0c;共勉 &…

Netty 源码解析(下)

接上一篇博客 Netty 源码解析&#xff08;上&#xff09;继续分析 上一篇博客中已经分析了绝大部分 ChannelFuture cf bootstrap.bind(9000).sync(); 这一行代码&#xff0c;当这一行代码运行完时&#xff0c;Netty服务端就已经启动好了&#xff0c;接下来就是接收链接&#x…

Spring Security OAuth2.0(二)-----简化模式/密码模式/客户端模式/刷新 token

简化模式 代码示例 修改authorization_server授权服务模块 新增“implicit” 和修改回调地址为本次地址 修改第三方应用项目搭建新页面模拟 新建implicit.jsp <% page contentType"text/html;charsetUTF-8" language"java" isELIgnored"fals…

C++入门篇(二)

目录 一、引用1.1 什么是引用&#xff1f;1.2 引用的特性1.3 常引用1.4 引用的使用场景1.5 传值和传引用效率比较1.5.1 传值和传引用做参数的性能对比1.5.2 传值和传引用做返回值的性能对比 1.6 引用和指针之间的区别 二、内联函数2.1 什么是内联函数&#xff1f;2.2 内联函数的…

知识变现海哥|研究了100个项目,这个才是人生逆袭首选

&#xff08;本文源自公号跟海哥学知识变现&#xff0c;移步公号与100万知识变现/知识付费创业者&#xff0c;一起学知识变现知识付费干货&#xff0c;回‘领书’获取3本电子书&#xff1a;【知识付费秘籍】【知识创业者成长手册】【100个知识付费成功案例】) 经常有人问海哥&a…

什么是中断向量表?作用是什么?为什么需要偏移?

一、定义与特点 定义&#xff1a;中断向量表(interrupt vector table)包含中断服务程序地址的特定内存区域&#xff0c;这些服务程序是处理外部硬件中断请求的代码。 特点&#xff1a;这些中断服务程序(函数)在中断向量表中的位置是由半导体厂商定好的&#xff0c;当某个中断…

ESP32-C2开发板 Homekit烧录教程

准备 1.1硬件ESP32 C2开发板&#xff0c;如图1-1所示 图1-1 ESP32 C2开发板 1.2软件 CozyLife APP可以在各大应用市场搜索下载&#xff0c;也可以扫描二维码下载如图1-2所示 HomeKit flash download tool 烧录工具 esp32c2 homkit演示固件 烧录教程 打开flash_download_to…

以智求治,MapGIS打造公共安全治理新模式

随着我国城市人口和规模日益扩大&#xff0c;城市运行系统日趋复杂&#xff0c;各类风险隐患增多且呈现相互叠加、相互耦合态势&#xff0c;各类风险、事故灾害类事件造成的损失严重&#xff0c;公共安全防范压力不断增大。 党的二十大报告中指出&#xff1a;“建立大安全大应…

【容器化应用程序设计和开发】2.1 容器化基础知识和Docker容器

往期回顾&#xff1a; 第一章&#xff1a;【云原生概念和技术】 容器化应用程序设计和开发 2.1 容器化基础知识和Docker容器2.1.1 容器的创建2.1.2 容器的管理 容器化应用程序设计和开发是一种基于容器技术的应用程序设计和开发方法论。它将应用程序拆分为多个小型服务&#x…

Centos7安装MySQL-5.7.17详细教程

1、MySQL安装包可以在Oracle官网下载 下载链接:https://dev.mysql.com/downloads/mysql/5.7.html 也可以通过wget命令下载 wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz 下载完成之后解压tar包 命令&#xff1a;tar -zxvf…

Smith预估控制器

Smith预估器主要针对存在大滞后的系统,作用延迟和反馈延迟环节的控制,Smith预估器的另一篇文章,请参看下面的博客文章: 博途1200/1500PLC Smith预估器(补偿器)算法实现(FB)_RXXW_Dor的博客-CSDN博客在写这篇文章之前写过一篇"大林控制算法",大家可以参看下面这…

一款适合智慧档案馆一体化建设平台的多参数空气质量传感器

智慧档案馆一体化建设平台配件产品/空气质量传感器/空气质量云测仪/空气质量检测仪/空气质量探测器/环境集成传感器 主要检测参数&#xff1a;温度、湿度、粉尘PM2.5/PM10、二氧化碳CO2、甲醛、TVOC等六参数档案库房常用环境参数检测。 安装方式&#xff1a;吸顶式 信号输出&…

Element table组件动态设置expand展开项以及同时只展开一项

场景一&#xff1a;table表格展开项过多&#xff0c;界面数据太繁杂影响查看。 场景二&#xff1a;Element Table加载的数据发生变化时&#xff0c;会重新渲染界面&#xff0c;之前的展开项会自动关闭&#xff0c;用户需要手动去打开展开项&#xff0c;频繁的手动操作会极大的影…

Vue系列:在离线环境下部署,CDN无法访问导致vuex.min.js、axios.min.js和vue-router.min.js的cdn地址无法访问

目录 遇到的问题&#xff1a; 问题分析&#xff1a; 解决方案有以下两种&#xff1a; 遇到的问题&#xff1a; 在客户现场部署程序&#xff0c;是在外网环境的服务器上&#xff0c;部署起来后&#xff0c;发现前端vuex.min.js、axios.min.js和vue-router.min.js无法访问 问题…

【Python_Scrapy学习笔记(十)】基于Scrapy框架的下载器中间件创建代理IP池

基于Scrapy框架的下载器中间件创建代理IP池 前言 本文中介绍 如何基于 Scrapy 框架的下载器中间件创建代理IP池。 正文 1、添加中间件的流程 在 middlewares.py 中新建 代理IP 中间件类在 settings.py 中添加此下载器中间件&#xff0c;设置优先级并开启 2、基于Scrapy框…

Node【初识Express框架】

文章目录 &#x1f31f;前言&#x1f31f;Express框架&#x1f31f;1.什么是框架&#x1f31f;2.express安装&#x1f31f;3.创建web服务基本遵循之前的四个步骤&#xff1a; &#x1f31f;4.路由&#x1f31f; 由 &#xff1a;请求方式请求路径&#xff08;1&#xff09;get发…

从传统管理到智慧水务:数字化转型的挑战与机遇

概念 智慧水务是指利用互联网、物联网、大数据、人工智能等技术手段&#xff0c;将智能化、信息化、互联网等技术与水务领域相结合&#xff0c;通过感知、传输、处理水质、水量、水价等数据信息&#xff0c;对水资源进行全面监测、综合管理、智能调度和优化配置的智能化水务系…

电商平台商品数据爬虫分析(test阶段可对接测试)

1.简单说明 京东&#xff0c;淘宝&#xff0c;天猫&#xff0c;&#xff0c;淘特&#xff0c;拼多多&#xff0c;阿里巴巴&#xff0c;1688&#xff0c;抖音&#xff0c;苏宁&#xff0c;亚马逊中国 &#xff0c;lazada&#xff0c;速卖通等全球50多个知名平台抓取数据&#x…

蓝牙耳机哪个品牌音质好?300到400的蓝牙耳机推荐

不知道从什么时候开始&#xff0c;越来越喜欢安静和独处&#xff0c;去外面闲逛也总是佩戴上蓝牙耳机&#xff0c;享受音乐带来的美妙&#xff01;蓝牙耳机便利性也让很多小伙伴开始选择&#xff0c;出门在外&#xff0c;背包里面永远装着蓝牙耳机&#xff0c;以备不时之需&…

CANoe使用记录(二):Trace界面介绍

目录 1、概述 2、Trace界面介绍 2.1、右键配置 2.2、显示Title信息 2.3、改变窗口颜色 2.4、详细视图 2.5、静态视图 2.6、差异窗口 2.7、预过滤器 2.8、过滤分析 3.9、保存报文 3.10、其他类型简述 1、概述 Trace界面用于监控报文的界面&#xff0c;此界面包含很…