今天我们来看一套面试题目,以后,每周五分享一份面试题目,从面试题目中学习安全知识,由于我自己的技术栈限制,不是所有面试题目都能回答的很好,所以只能作为抛砖引玉,针对每一个题目,做一个简短的回答,并非标准答案,如果你有更好的回答,欢迎评论区留言。
log4j 是一个用于 Java 应用程序的日志记录框架。Trustcodebase 是 Java 的安全机制之一,它限制了 Java 类加载器加载的类的来源。
如果您的 Java 应用程序使用 log4j,并且您希望绕过 Trustcodebase 限制,则可以使用以下几种方法之一:
使用受信任的类加载器: 使用受信任的类加载器,可以加载不在系统类路径中的类。配置 java.security 文件,禁用 Trustcodebase 限制: 修改 java.security 文件中的 security.provider.x 配置来禁用 Trustcodebase 限制。
使用其他日志记录框架,如 SLF4J。
1、spring 的 heapdump 泄露,可以获取 shiro 配置的 key
2、不存在泄露的情况下,可以通过枚举 shiro key 的方式尝试获取
3、利用 shiro 的 key 进行反序列化利用,获取权限
1 显错判断
想办法使服务器组件抛出异常,也就是报错,在报错中得到我们想要的信息。
2 DNS请求判断
想办法触发一个DNS请求,前提是服务器出网,并且外围设备开放了DNS协议,然后你的dnslog服务地址没被监控设备拦截;
3 TCP、UDP端口请求判断
这里不止一个人问过我,用DNS请求直接判断就可以了,为啥还得用端口来判断呢?这里我举一个例子,如果一个内网机器,它没配DNS的话,然后机器又是出网的,dnslog是收不到请求的,那么只能TCP或者UDP来判断了,这种情况我遇到过好几次了)。
4 延迟判断
想办法使其触发一个延迟。可以执行Java的sleep代码,可以像mysql注入那样计算一个公式bench.mark(5000000,m.d5( ‘test’ )),也可以发起一个轻微的DoS请求。
5、其它方法,比较少见,而且不适用于本次fastjson漏洞检测,这里就不具体叙述了。
这个题目我不是很熟,留个空白,欢迎填坑!
主流的内存马技术就是 java 内存马,有 filter 内存马、Servlet 内存马、Listener 内存马,以及修改字节码的 Agent 型内存马。
内存马查杀,可以使用开源内存马动态检测工具,利用Servlet、Filter、Listener实现内存马有两个主要特征:
特征1:class 实现 javax.servlet.Filter,javax.servlet.Listener,javax.servlet.Servlet等接口。特征2:包含ProcessBuilder,Runtime等Webshell常用的命令执行危险操作。
Agent 型内存马也具有特征,特征:该方式不会生成新的Servlet,Filter,Listener对象,因此隐蔽性更强。唯一美中不足的是,需要生成Agent文件落地,有可能会被IDS文件检测检测到Agent。
1、弱口令尝试2、账号密码暴力破解(默认admin、test、guest 等用户名),有验证码,尝试使用 ddddocr 绕过3、SQL注入(万能密码)4、前后端分离系统,分析 js,提取接口,寻找未授权接口,测试漏洞(注册接口、密码找回等)
原理:Spring的参数绑定会导致ClassLoader的后续属性的赋值,最终能够导致RCE
检测:通过上传部署 waf 包获取 shell,检测 shell 是否成功上传。
利用:首先,我们假设受害者已满足JDK 9+,并且使用了Spring bean,此外还有一个不是很容易满足的条件:
Web应用部署方式必须为Tomcat war包部署(jar的形式则不行)然后,攻击者需要知道存在漏洞的url路由,这和应用的业务息息相关。
所以该漏洞虽然是核弹级,但要在真实情况下找到满足这些条件的情形还是比较少的。这也许能解释为什么漏洞爆出后,在野利用的反响远远不如Log4shell那么大。

https://pan2.ccie.lol:44944/file/PPT/Kcon%202015%20PPT/%E7%BB%86%E6%95%B0%E5%AE%89%E5%8D%93%20APP%20%E9%82%A3%E4%BA%9B%E8%BF%9C%E7%A8%8B%E6%94%BB%E5%87%BB%E6%BC%8F%E6%B4%9E.pdf
针对云服务器的攻击利用:
1、APP 逆向,找硬编码密码、AS/SK 等
2、接口测试,找常规漏洞,比如 SQL 注入、未授权、越权之类
3、云账号接管,比如弱口令之类
4、服务器其他服务探测,尝试破解口令
