有同学常常使用yak-yso
生成的时候,不关注java版本而使用了默认的(默认52
也就是JDK1.8),会导致有些情况下,某些链子打不通的情况。(原因是:当版本进行升级的时候,有些内置函数、方法、接口都会做出改变)
yak-yso中内置了两种模式的反序列化链(漏洞点为反序列化的漏洞。以shiro为例)
和 恶意类加载(漏洞点为类加载的漏洞。这里就以fastjson为例)
。而yak-yso还可以yak中的反连平台
、webFuzzer
进行同步使用
下面就用一个小的靶场demo来进行简单说明
测试环境
(1)启动tomcat
Yak-yso-attack
具体使用:
这里就以urldns
为例,使用yak-yso
生成cc2-dnslog,我们可以配合yak中内置的dnslog来进行测试。我们发送数据包就可以成功进行复现。如图
这里不仅限于使用dnslog,还可以启动反连服务器来进行漏洞验证。
内存加载恶意类
我们可以通过TemplateImplClassloader
来进行类的内存加载,我们可以通过yak-yso不使用调用链的模式来生成恶意类,然后通过反序列化链进行加载,同时我们也可以生成通过类加载来注入内存马。当进行类加载的时候,java
默认同一类加载一次,而yak-yso
生成时候是同名的,所以有可能会出现二次加载不成功的问题,所以,类加载的时候要时刻注意名称的问题。
我们这里以加载恶意类为例,可以用yso
来生成恶意类,以RuntimeExec为例,输出为base64
我们在选择利用链,使用cc2-->TemplateImplClassLoader
将base64恶意类填入生成hex
然后发包即可。
和webfuzzer进行联动
上面每次发送都需要 生成-->填入参数-->.....
每次都需要经历重复性的操作,是非常繁琐的。可以使用web-fuzzer的热加载来完成。热加载文档(https://yaklang.io/products/Web%20Fuzzer/fuzz-hotpatch)
我们只需要在热加载中用yak语言来进行编写代码即可。当返回是一个数组的时候, Web Fuzzer 会将数组中的每一个元素都作为值去发包。所以要转成hex然后再进行解码
handle = func(domain) {
- shiro漏洞修改max-header(使用yak-yso中
ModifyTomcatMaxHeaderSize
来填入要修改header头的大小来进行修改) - 反弹shell(yak-yso中tcp-reverse)
- 命令执行
END
YAK官方资源
Yak 语言官方教程:
https://yaklang.com/docs/intro/
Yakit 视频教程:
https://space.bilibili.com/437503777
Github下载地址:
https://github.com/yaklang/yakit
Yakit官网下载地址:
https://yaklang.com/
Yakit安装文档:
https://yaklang.com/products/download_and_install
Yakit使用文档:
https://yaklang.com/products/intro/
常见问题速查:
https://yaklang.com/products/FAQ
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)