• JAVA反序列化漏洞之调试环境搭建(含ysoserial项目)


    前言

           本章以Apereo Cas4.x项目进行调试环境搭建。

      主要两个任务:

           一是apereo cas项目调试运行搭建

           二是ysoserial反序列化工具运行配置

           至于漏洞环境搭建,window下只需将项目war包部署在tomcat下即可

    工具

    (1)调试工具

    IntelliJ IDEA 2020.1

    (2)运行环境

    jdk1.8.0_141

    Maven3.6.3(https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip)

     apache-tomcat-9.0.41

    (3) 漏洞环境

    Window虚拟机中安装apache-tomcat-9.0.41

    或启动vulhub-docker

    站点源码

    cas-overlay-template-4.1(https://github.com/apereo/cas-overlay-template/tree/4.1)

    cas-overlay-template-4.2.7(https://codeload.github.com/hjzgg/cas-overlay-template-4.2.7/zip/master)

    cas-server-webapp-4.1.5.war和cas-server-webapp-4.2.7.war(会打包,这两个其实就不用下了)

    https://mvnrepository.com/artifact/org.jasig.cas/cas-server-webapp

    将上面提到的工具先安装好,相应的环境变量自个配好,不懂的就*度找教程,这里就不复述了。

    注意:Maven中的bin/settings.xml文件,仓库的地址要配好,没有repo文件夹就自定义一个,命名随意。

     

    一、Apereo Cas项目调试运行搭建

    项目调试以4.1.5的源码为例,后面4.2.7的搭建过程也一样。

    1、 先修改cas-overlay-template-4.1中pom.xm文件里cas指定的版本为4.1.5

     

    2、 编译器安装成功后,导入项目

    File->open->本地找到cas-overlay-template-4.1项目打开

    3、 项目关联maven

    File->setting->Build,Excution,Deployment->Build Tools->Maven,设置你的Maven安装路径、用户配置文件及仓库路径,最后apply->ok

     

      如果没有repo,可以自定义一个文件夹,避免设在Maven根路径,文件可后续用作联网加载的项目依赖项存储位置。

    点击右侧栏目“Maven”->刷新,等待加载完成。

     

     4、 Idea配置运行的java环境

    File->Project Structure->Projects->”Project SDK”->点击new->JDK->最后找到自己安装的java的jdk路径,点击确定

     

     

     5、 右键“main”->New->Directory->命名java文件夹(命名自定义)

    右键选择自定义新建的“java”文件夹->Mark Directory as->Sources Root(文件夹变蓝色)

     

     6、 对于javaweb开发都会在servlet层存在doget或dopost方法接收和响应前端的请求;抓包查看可知登录时,采用post方式,所以要找到dopost方法所在的java文件并放置到新建的“java”包下。

    项目基于springmvc开发,所以将项目(cas-server-webapp-4.1.5.war修改后缀为.zip)解压,文件夹lib下找到“spring-webmvc-4.1.8.RELEASE.jar“包

     

     Jd-gui对这个jar包进行反编译,FrameworkServlet.java就是我们要的文件(为什么?Search查找”dopost”,勾选方法就找到了)

     

     然后接着在java包下,新建Package,命名为“org.springframework.web.servlet“(一定要这个命名,不能改),再把FrameworkServlet.java文件放到该新建的包下

     

     之所以爆红是少了依赖包,我们导一下就好了

    File->Project Structrue->Libraries->”+”->java->项目“cas-overlay-template-4.1“->overlays-> org.jasig.cas.cas-server-webapp-4.1.5->WEB-INF->选择lib,点击确定

     

     

     弹出窗口点击OK

     

     在modules就可以看到添加的lib,勾选,点击apply,最后ok

     

     但还是爆红,说明还少了包,聚焦到这里,点击小灯泡,选择第一项“Add java EE6 JARS …”

     

     确定下载。

     

     没报错,说明包已经导好了。

    7、 Idea关联Apache服务器

    点击Add Configuration->“+”

     

     在弹出的列表选择”Tomcat Server”->local

    配置本地安装好的tomcat路径

     

     端口随意,不冲突就行

     点击Deployment->”+”->第一项“Artifact..”->第一项”cas-overlay:war”,ok,点击apply,欧克了

     8、 修改propertyFileConfigurer.xml文件中util标签中location的值为:file:项目的绝对路径 etccas.properties,自此调试环境已搭建完成

     

    9、 测试环境效果

    来到FrameworkServlet.java,ctrl+f查找dopost方法,下行断点

     

     没接触过的,不会下断点的,看下图,行头空白地方左键单击一下就行,选择java line breakpoint

     

     开始debug模式

     

     就会在浏览器打开登陆页面,随便填点东西,点击登录

     

     点击登陆后,就会跳到我们下断点的地方,说明调试环境没问题了,后面可以开始我们的娱乐环节了

     

     补充:上图箭头所指的几个调试功能是常用的,后面调试会用到,提前了解一下。

    二、ysoserial反序列化工具运行配置

    1、Idea中打开ysoserial项目

     

     2、配置Maven环境

    File->Settings->Build,Exection,Deployment->Build Tools->Maven

     

     修改这三项的路径为本地你的Maven安装的路径、配置文件(settings.xml)以及仓库路径(repo为本地我自建的文件夹,用于放置联网下载的依赖项)

     

      注意:须在settings.xml文件中指定仓库位置,即自建的repo文件夹绝对路径

     

     在右侧栏目点击Maven->选中ysoserial->点击刷新

     3、配置java环境

    File->Project Structure->project->选择本地安装的jdk

     

     4、选中GeneratePayload文件(入口文件,我们可以随便自定义新的入口文件),debug运行,发现报错,查看哪个文件报错

    我这里是FileUpload1和Jython1报错

    聚焦到报错所在代码行->右键,选择Show Context Actions->优先选择Import Class,如果没有就Find Jar On Web

    这里注释或者删掉

     

     找遍了FileUtils文件的方法,也没看到readFileToString方法,所以删掉Jython1文件先,后面如果用到了再研究。

     

     可以看到,运行成功了。

     

    如有不对的地方,望各位大佬指正。

    欢迎各位大佬关注公众号”Fighter安全团队“

    文章都是第一时间发布至公众号,让我们共同学习相互进步

    大佬的世界,我想去看看
  • 相关阅读:
    liferay常用api总结
    liferay增删改简单小练习
    MD5加密
    日期的工具类
    java生成随机六位数的验证码&随机生成十位数ValidCode码,用于邮件的验证&检查是不是符合为合法的中国的手机号码
    MyBaties
    网页的外观---CSS层叠样式表---03
    还在买鲜花送女神?手把手教你搭建3D立体相册网站,包女神稀饭
    Vue入门——常见指令及其详细代码示例
    什么是可串行化MVCC
  • 原文地址:https://www.cnblogs.com/gychomie/p/14406399.html
Copyright © 2020-2023  润新知