1.Lava是对对讲如何对poc进行改进的?
2.fastjson 1.2.24源码分析以及漏洞复现
3.黑客编程手把手教你编写POC
4.HDFS和Burst都是基于POC共识机制,有什么区别?
Lava是讲源如何对poc进行改进的?
Lava开源丨开启PoC生态发展新时代
年,比特币(Bitcoin)的对对讲出世,中本聪想要开发一种崭新的讲源去中心化现金支付体系,不再需要一个中心来记账,对对讲每个人都有记账的讲源公安 网站 源码权利,整个账本完全公开透明,对对讲去中心化的讲源概念也由此而生。中本聪也将比特币的对对讲项目代码公布于社区,比特币由此成为了历史上第一个开源的讲源区块链项目。
在那之后,对对讲比特币和PoW(工作量证明)慢慢走进了大众的讲源视野,但由于PoW机制存在资源浪费、对对讲算力集中等问题,讲源越来越不适宜当前的对对讲大环境。伴随着众多区块链从业者的mtr 测试源码不断探索,以PoC机制为核心的项目逐渐涌现出来。
年,Burst开创了PoC(容量证明)共识机制,其共识优势是设备成本低、利用空闲资源,实现了人人皆可锻造的可能性。Burst遵循去中心化和共享的精神,将项目源代码进行共享。虽然由于经济模型的问题,Burst项目并没有获得传统意义上的成功,但其源代码的分享为后来者提供许多启发。
年月日,为了能够让更多的人参与到项目当中来,推动PoC领域乃至整个区块链的发展,Lava正式在拥有超过万的圣魂源码全球开发者用户的平台——Github 上实现开源,致力于建立一个开源的、开放的去中心化生态。
fastjson 1.2.源码分析以及漏洞复现
反序列化,这个过程将字节序列恢复为Java对象。例如在使用Python做自动化测试时,通过字符串名字调用相同名字的方法。Fastjson的功能允许通过字符串引用如`@type":"com.sun.rowset.JdbcRowSetImpl`来执行内部方法。由此,我们能利用Fastjson提供的便利,通过调用对应的函数来验证漏洞。
在渗透测试中,漏洞的验证通常需要满足几个条件:判断指纹和指纹回显,Fastjson的特性使得这一步变得简单。然而,在利用过程中,afsim仿真源码要考虑到Fastjson本身的限制、JDK的限制以及可能的安全配置限制。因此,POC验证方案需考虑这些限制的版本和配置。
Fastjson通过JSON抽象类实现JSONAware接口,并提供两个常用方法:`toJSONString`用于对象转换为JsonString,`parseObject`用于将JSON字符串转换为对象。这次的漏洞主要与反序列化相关。
反序列化的执行发生在`DefaultJSONParser.java`类中。关键代码中,固定键`@type`对应反序列化类的全路径,其中`typeName`为传入类的全路径。在Fastjson 1.2.版本中,`loadClass`方法未进行任何过滤,允许传入任何JVM加载的源码前端费用类,并执行`setKey`方法,其中Key为可变参数。
要利用这个反序列化漏洞,需要满足以下条件:JVM加载的类、有非静态set方法和传入一个参数。使用RPC远程执行代码的思路实现POC,此处使用了`com.sun.rowset.JdbcRowSetImpl`实现。
JNDI全称为Java Naming and Directory Interface,主要提供应用程序资源命名与目录服务。其底层实现之一是RMI(Remote Method Invocation),用于Java环境的远程方法调用。在`com.sun.rowset.JdbcRowSetImpl`类中,关注点在于`getDataSourceName()`和`setAutoCommit()`方法。`getDataSourceName()`用于传值,`setAutoCommit()`用于确认调用set方法。
实现过程包括引用`com.sun.rowset.JdbcRowSetImpl`类、设置`dataSourceName`传值以及通过`autoCommit`属性触发执行方法。完成方法确认后,使用`marshalsec`项目启动RMI服务并加载远程类。
POC的实现步骤如下:首先确认目标是否使用Fastjson且存在漏洞;利用Fastjson的反序列化功能传输引用类和执行方法;使用`com.sun.rowset.JdbcRowSetImpl`执行验证POC的脚本,并观察回显结果;最后,完成漏洞利用。
具体操作包括搭建环境,如使用CentOS虚拟机作为RMI服务器和远程调用服务,KALI机器作为靶机和抓包测试。进行指纹确认、安装maven、构建RMI服务器和客户端、调用测试文件,并观察DNS日志以验证漏洞成功利用。通过DNS日志确认漏洞利用成功后,可以进一步尝试反弹shell,实现远程控制。
综上所述,Fastjson的反序列化漏洞是一个可以被利用的安全问题,通过合理的利用,可以实现远程代码执行。了解和研究这类漏洞有助于增强对Fastjson以及类似技术的防御能力。
黑客编程手把手教你编写POC
POC(全称:Proof of concept), 中文译作概念验证。在安全界可以理解成漏洞验证程序。和一些应用程序相比,PoC 是一段不完整的程序,仅仅是为了证明提出者的观点的一段代码。
本次漏洞使用DVWA(Damn Vulnerable Web App) 是一个用来进行安全脆弱性鉴定的PHP/MySQL Web 应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。mihun渗透靶场 已经集成DVWA。
登入DVWA系统,将DVWA Security 修改为low,本次使用 Command Injection(命令注入) 模块作为此次POC验证漏洞点。
Command Injection(命令注入) 模块用于验证网络是否通畅,由于对输入的参数检查不严格导致任意命令执行。
Command Injection 模块源码
分析上面源码发现ip参数未过滤被带入命令执行函数shell_exec,利用linux/win命令特性拼接参数 sechelper.cn&whoami 伪代码如下:
使用PyCharm 创建一个python项目
使用火狐浏览器按F 开启Firebug开发者模式,选择网络 重新触发漏洞观察http请求
文件列/vulnerabilities/exec/ 是接口地址,方法是 POST ,域名是 ...5 ,完整http请求包如下:
漏洞的信息已经知道的差不多,开始编写代码
执行上面代码返回状态,不应该是 吗?为什么返回 ?,观察控制台内打印出的跳转地址是登入界面,原来/vulnerabilities/exec/ 有授权验证,未授权会跳转到登入界面
怎么才能授权呢?这里就不分析登入的过程了,登入信息保存在Cookie内,在请求头内加入cookie 头
从结果内看出代码已经可以访问并利用/vulnerabilities/exec/ 存在漏洞接口,那么如何使用代码快速识别出漏洞是否存在呢?
特征方式 匹配返回结果里的特征检测漏洞是否存在,匹配到 自定义 的字符则表示漏洞存在
关键输出方式 输出关键信息人工判断是否成功,一些复杂的漏洞利用需要使用这种方式
渗透过程中自己写一些脚本可以更方便快捷的做一些事情,渗透测试很难自动化全程自动化,但是写一些小工具可以显著提高渗透效率,想要做一个合格白帽子会一门语言是很有必要的。
HDFS和Burst都是基于POC共识机制,有什么区别?
据我了解,POC(容量证明)共识机制是Burst团队在年研发的,其共识优势是设备成本低、利用空闲资源,实现了人人皆可锻造的可能性。Burst将项目源代码进行共享。虽然由于经济模型和奖机制的问题,Burst项目并没有获得传统意义上的成功,但其源代码的分享为后来者提供许多启发。
而HDFS则是基于Burst开发的POC共识机制,对POC进行了优化和升级,弥补了POC存在的一些不足之处。至于详细优化了哪些,你可以去看看HDFS的白皮书。