大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。
2020年下半年总结与计划
0x00 前言
2020年到如今已经到了十二月中旬,下半年所学的东西还是挺多,我觉得学习的一个效率也是有着飞跃般的提升。主要的原因可能在于我和我的好朋友(基友)住在一个房间,互相督促学习。其次的原因是在这互相督促中基本都撸到4点左右进行学习一个新的东西。包括生活中的一些小想法或者是在安全中的一些想法。还有的一点原因是因为在后面一段时间中团队几个人一起为我们几个人学习的一个方向进行一个头脑风暴
,然后去定制化一些脑图。后面对应脑图疯狂学习,并且输出对应的文章。
在学习内容中其实也会实时进行一个更新,目前也是完成大半了。
0x01 絮絮叨叨
其实都知道今年并不好过,由于疫情的缘故有一个多月也是在家办公。而在这期间为我的Java学习的基础打下了一些基础。在这是将Java的一些基础其中包括JavaSE、Javaweb、以及SSM框架这些给刷了一遍。 而在疫情隔离以后,就是hvv。而在期间今年担任的是防守队,而在这期间也是学习了Java代码审计,成果是一个sql注入和两个xss。其实在这些类似于攻防演练蓝队都比较划水,大致是到4点左右没事件了,就直接打瞌睡。但是我觉得并不能因为划水而划水
,而我的做法是查看其他师傅们的代码审计文章,并且查询开发资料,了解一个漏洞在Java中的产生过程和关键产生漏洞的一些类。那么了解了这些后,有开发基础的情况下,就可以对一套源代码进行一个代码审计。而我后面因为条件比较苛刻,就算能审计代码,但是在审计完成后,需要对该审计出来的漏洞进行验证,需要使用到一些payload。但是在蓝队划水
工作中,连接的是客户的内网环境,里面会有很多监测设备,而且这些都是全内网环境,不出网。所以验证漏洞和查询资料都不能去进行一个操作,而我的解决方式是开虚拟机然后手机开启热点,虚拟机网络连接热点。
我觉得这是一个很好的学习(划水)机会,得将该时间给利用起来。在这期间是将这些漏洞在Java中产生原理给理了一遍,在此为代码审计打下基础。
后面发现网上很少会有Java的源代码,有一次在一次渗透中,利用信息泄露,打下的一个数据库,但是他的加密的是一个DES的加密(一开始不知道,一开始以为是AES)。查询到一些指纹信息发现他的CMS后,网上进行了一个下载,然后进行审计。开始兴致大起,下了500m的源码后才发现,这压根就不是源代码。而是编译后的class文件。当时想着既然是编译后的文件公布出来为啥不能直接打包成war包呢?但是还是得硬刚。放入JD-GUI进行反编译后,查看到伪代码,然后查询加密方式。后来是在一个他们开发中封装的jar包里面的一个工具类得到这个加密模式。因为在里面就定义了3DES的加密方式,这个方式会被插入一些数据的方法给调用,从而定位到该算法。然后拿到该密钥进行本地的解密,得到该数据结果。
从中不得不说的是没有源代码,无法直接快捷的方式进行跳转,只能去进行全局搜索,然后查找调用。
所以后面的重点放在了反序列化漏洞分析这块。在hvv的后面几天就在分析这个URLDNS利用链以及实际运用场景。
其实在这段时间中,发现一般做这方面的分为两类人:一种是为了应付工作,一种是真正的喜欢这么一个东西,想去这方面做得更好。
如果是应付工作的话,那么我觉得这是一个痛苦的。
我觉得如果喜欢这么一个东西的话,就应该做得更好,再者如果喜欢的东西,变成一个工作后,难道不应该做到更好?
0x02 下半年学习复盘
其实在我接触到Java是在7月份开始学习,在9月下旬左右开始进行代码审计。而我接触到Java安全领域是在10月份左右,接触的第一个知识点貌似是ClassLoader
类加载器。
后面就是一些利用链的分析,在这里也是为我的一个漏洞调试分析奠定一个非常好的基础。由于第一个调试这些cc链,加上十月一假期,CC1这个链分析了10天,但是在后面摸清楚套路以后如鱼得水。后面就是学习了JNI、javaAgent等技术,在学习中途发现在安全中很多有意思的用途。在此先略过不讲。
在期间也开发了一些小工具,如webshell管理工具,但是目前只实现了一个命令执行,传输双向加密,随机ua、gui界面功能。动态密钥AES+HEX加密
最后面就是漏洞分析了,前天分析了Shiro 550 的漏洞,也是很有意思,该漏洞就是Cookie里面某字段的值,然后进行AES解密后base64解密,最后进行反序列化。而在Shiro 里面自带cc的组件。
其实在Fastjson反序列化漏洞的分析也是写了一些,后面是因为各种原因,没继续去进行分析。想法是等分析完Weblogic漏洞后,在继续编写该文。
0x03 计划
漏洞分析
关于明年的计划的话,其实我是想将weblogic和Fastjson反序列化漏洞和St2的表达式注入这些具有代表性的漏洞分析完成。
代码审计
准备后面回去撸Java开发知识,比如SSH框架、Stringboot这些因为在之前就简单过了一遍,某些知识点可能不太了解。将代码审计的知识做一个更新。包括war包的审计这块,如果要做逆向如何更好的方式进行代码审计。
工具开发
想着后面代码功底深了过后,去进行一个工具的开发,以前想实现或者是团队小伙伴提出的想法去做一个实现。具体想法在此不做赘述。比如burp的插件开发,比如一些反序列化漏洞的集合。
0x04 总结
其实我在撸这个Java以来也是会前面有一段时间,非常非常的枯燥。但是学习中间一段时间后,发现很多有意思的点就没那么枯燥了,反而会更感兴趣。有一个不得不提的点是在学习中不能为了学习而学习
,因为这必然是枯燥的。比如学习到一个Java某一个类的时候,需要思考
该类有什么作用,实现一个什么功能,在安全领域能实现有一个什么功能。如果不去思考,那必然也是枯燥的
。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/119895.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...