Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Fastjson

  • 使用JSON.parse()JSON.parseObject()的不同(★)

前者会在JSON字符串中解析字符串获取@type指定的类,后者则会直接使用参数中的class,并且对应类中所有gettersetter都会被调用

  • 什么情况下反序列化过程会反射调用getter(★)

符合getter规范的情况且不存在setter

  • 如果不存在settergetter方法可以反射设置值吗(★)

需要服务端开启Feature.SupportNonPublicFiel参数,实战无用

  • Fastjson在反序列化byte[]类型的属性时会做什么事情(★)

将会在反序列化时候进行base64编码

  • 谈谈常见的几种Payload(★★★)

首先是最常见的JdbcRowSetImpl利用JDNI注入方式触发,需要出网

利用TemplatesImpl类比较鸡肋,需要服务端开启特殊参数

不出网的利用方式有一种BasicDataSource配合BCEL可实现RCE

另外某个版本之后支持$ref的功能,也可以构造一些Payload

  • 是否存在不出网的Fastjson利用方式(★★★)

第一种是TemplatesImpl类加载字节码做到不出网利用,但需要开启特殊参数实战鸡肋

第二种方式是服务端存在在tomcat-dbcp.jar情况下,使用BasicDataSource配合BCEL可实现不出网RCE

  • 谈谈1.2.47版本之前的绕过(★★★)

首先是利用解析问题可以加括号或大写L绕过低版本,高版本利用了哈希黑名单,之所以要哈希是因为防止黑客进行分析。但黑名单还是被破解了,有师傅找到可以绕过了类。在1.2.47版本中利用缓存绕过

  • Fastjson应该如何探测(★★)

使用dnslog做检测是最常见的方式,利用java.net.Inet[4][6]Addressjava.net.InetSocketAddressjava.net.URL类,之所以使用这三个因为不在黑名单中,可以直接检测

除了这种方式,还可以自行实现虚假的JNDI Server作为反连平台,用JdbcRowSetImpl这样的Payload来触发

如果不能出网,可以结合不出网的利用方式和中间件的回显手段,执行无害命令检测,或利用报错回显

Morty Proxy This is a proxified and sanitized view of the page, visit original site.