【面试复盘】华顺信安 白帽汇安全研究院一面
- 1.讲讲CTF另你印象最深刻的一道题目
- 2.CTF web类的题目有做过吗,有没有印象比较深刻的
- 3.讲讲XXE的原理以及利用方法
- 4.PHP反序列化讲讲,都有什么函数,以及如何利用的
- 5.Java反序列化函数,如何利用
- 6.说说你对Java反射的理解
- 7.rmi有了解吗
- 8.rmi的架构有了解吗,讲一下
- 9.讲讲你在绿盟的工作内容,为什么离职了
- 10.讲讲你在绿盟的部门,主要负责什么,团队规模怎么样
- 11.最近报出的漏洞有了解吗?
- 12.简单介绍一下你负责的端口扫描插件的实现
- 13.为什么要与channel配合实现并发
- 14.向目标发送数据包,怎么判断端口开闭状态的
- 15.刚刚讲到向目标发送TCP连接的包,这里是怎么实现的
- 16.POC和EXP的区别
- 17.平时是怎么编写POC的
- 18.你们POC识别的维度有几层
- 19.平时有没有自己开发什么有意思的项目
- 20.详细说说你们的二维码识别小程序的原理
- 21.总结
- 22.结果
1.讲讲CTF另你印象最深刻的一道题目
和面试官讲了一道社工解密类的Misc题目
2.CTF web类的题目有做过吗,有没有印象比较深刻的
讲了网鼎杯CTF第一场的spider:
拿到题目,访问 robots.txt 发现存在 /get_sourcecode
文件,访问该URL提示 NOT 127.0.0.1
尝试伪造IP绕过,无果,经过尝试发现首页的爬虫分析系统会执行 JS 代码,我们构造恶意的ajax请求代码,通过服务器执行 JS 代码来访问 /get_sourcecode
文件
拿到 get_sourcecode
源代码,开始代码审计!
发现 redis 关键字 dbfilename
,猜测题目存在一个 redis 未授权访问,攻击思路应该是通过 redis 写马 getshell
先通过 JS 代码探测主机开放了哪些web端口,发现 8000端口开放着,猜测可能运行着一个PHP 的Web服务。再次通过 JS 代码,操纵 redis 并写入 shell。最后接着构造 JS 代码访问我们构造的PHP文件即可获得flag🚩
3.讲讲XXE的原理以及利用方法
应用程序在解析XML内容时,没有禁止外部实体的加载,导致可加载恶意外部文件;因此如果XML内容可控,那么就可造成XXE漏洞
利用方法:
1- 读取文件 <!ENTITY name SYSTEM "file:///etc/passwd">
2- SSRF <!ENTITY name SYSTEM "http://hacker.ssrf">
3- 在安装expect扩展的PHP环境里执行系统命令 <!ENTITY xxe SYSTEM "expect://id" >]>
4- 拒绝服务攻击 递归引用的方式
4.PHP反序列化讲讲,都有什么函数,以及如何利用的
序列化:serialize
反序列化:unserialize
利用可以使用PHP魔术方法
__construct:当对象被创建时调用
__destruct:当对象被销毁前调用
__sleep:执行serialize函数前调用
__wakeup:执行unserialize函数前调用
__call:在对象中调用不可访问的方法时调用
__callStatic:用静态方法调用不可访问方法时调用
__get:获得类成因变量时调用
__set:设置类成员变量时调用
5.Java反序列化函数,如何利用
序列化:Java.io.ObjectOutputStream
类中的writeObject
方法
反序列化:Java.io.ObjectInputStream
类中的readObject
方法
利用:通过Java反射
6.说说你对Java反射的理解
PS:因为对Java反射机制比较熟悉,这里说了一大堆,面试官很好,也没有打断
Java反射是Java语言的一项特性,它允许程序在运行时动态地获取、检查和操作类、对象、方法和属性。通过Java反射,开发人员可以在编译时未知类的情况下,通过类的名称、方法名、属性名等进行操作和调用
尽管Java反射提供了强大的动态操作能力,但由于它是在编译时未知类的情况下进行操作,因此会引入一定的性能开销和安全风险。因此,在使用反射时需要谨慎,确保合理使用并遵循最佳实践
Java反射主要带来的两个问题:安全问题和性能开销问题
7.rmi有了解吗
RMI是Java中的远程方法调用机制,它允许在不同的Java虚拟机(JVM)上的对象之间进行远程通信和方法调用。通过RMI,Java程序可以在网络上的不同节点上调用远程对象的方法,就像调用本地对象的方法一样,而不需要直接处理网络通信和序列化
8.rmi的架构有了解吗,讲一下
PS:一时懵逼了,后来发现其实就是讲讲rmi的各方组件构成,当时没答上来/(ㄒoㄒ)/~~
- 客户端(Client):客户端是发起RMI调用的一方,它通过网络连接到服务器端,并请求调用远程对象的方法。客户端可能位于不同的Java虚拟机(JVM)中
- 服务器端(Server):服务器端是提供远程对象和服务的一方。它在运行着的JVM中创建并导出远程对象,使其能够被客户端访问和调用。服务器端可能有多个,并且可以分布在不同的主机上
- RMI注册表:RMI注册表是RMI架构中的中心化服务。它充当了服务器端和客户端之间的纽带。在服务器端,RMI注册表维护了一个对象引用的映射表,将远程对象与唯一的标识符进行关联。客户端通过查找RMI注册表获取远程对象的引用
- 远程对象:远程对象是在服务器端创建并导出的Java对象,它实现了远程接口。远程接口定义了远程对象可供远程调用的方法。远程对象必须继承
java.rmi.server.UnicastRemoteObject
类以支持远程调用
9.讲讲你在绿盟的工作内容,为什么离职了
- 负责XXX(自动化渗透测试平台)的迭代研发和POC,EXP的更新
- 负责绿盟新一代安全社区XXX的前后端研发,并能对关键模块进行技术选型,对漏洞高发点进行安全把控
- 参加公司内部资产轮询测试和漏扫“大练兵”,针对公司核心资产进行渗透测试
离职原因:学校有事
10.讲讲你在绿盟的部门,主要负责什么,团队规模怎么样
XXX部门,人数20几人,主要做红队工具开发,信息收集工具开发,自动化渗透测试平台开发,为一线安服人员赋能
11.最近报出的漏洞有了解吗?
讲了Spring Framework远程代码执行漏洞,但是实际根本没有复现过,这里答的效果一般
12.简单介绍一下你负责的端口扫描插件的实现
- 基于绿盟旧版本(Python)的端口识别插件,设计并实现了Go语言端口识别插件的核心功能,包括目标主机的端口扫描和结果分析
- 使用多线程技术提高插件的扫描速度,通过与channel配合实现了新的并发方式,提高了对协程控制的精细程度,扫描速度提升了300%
- 集成了常见的端口扫描技术,如TCP连接扫描、SYN扫描和UDP扫描,以确保对不同类型的目标主机都具有较高的识别准确性
13.为什么要与channel配合实现并发
当时上线测试时发现了线程批量启动批量结束,造成服务器资源的不稳定性,配合使用channel,可以使线程的启动更加的平滑
在并发环境中,多个任务可能同时访问共享资源,导致竞争条件和数据不一致的问题。通过使用Channel,可以将任务间的交互限制在一个有序的通信通道中,避免了直接访问共享资源的竞争,从而减少了潜在的并发问题
14.向目标发送数据包,怎么判断端口开闭状态的
通过尝试与目标主机的指定端口建立TCP连接,可以判断端口是否开放。如果连接成功建立,则端口处于开放状态;如果连接失败或被拒绝,则端口处于关闭状态
使用ICMP协议发送Ping请求来测试目标主机的可达性。如果目标主机响应Ping请求,通常意味着端口处于开放状态;如果没有响应,则端口可能处于关闭状态或被防火墙屏蔽
UDP扫描是通过发送UDP数据包到目标端口,根据返回的响应或无响应来判断端口状态。如果收到UDP响应,可以推断端口是开放的;如果没有响应,则端口可能处于关闭状态或被防火墙过滤
通过发送数据包并测量从发送到接收的响应时间,可以初步判断端口的状态。如果响应时间非常短,则可以推断端口开放;如果响应时间较长或没有响应,则端口可能关闭
15.刚刚讲到向目标发送TCP连接的包,这里是怎么实现的
PS:看面试官的反应应该是期待我们自己实现了一个网络连接的框架,但实际没有,我们用的是goland的net包/(ㄒoㄒ)/~~
使用net包来进行端口扫描,具体是使用 net.DialTimeout
尝试向对方端口建立一个连接,通过连接的状态识别端口是否开放
16.POC和EXP的区别
POC指的是概念验证,是一种用于验证漏洞、安全问题或攻击方法的技术证明
EXP是针对特定漏洞或问题的实际攻击代码,用于获取未经授权的访问权限、执行恶意操作或获得敏感信息
17.平时是怎么编写POC的
在写POC之前,首先需要把漏洞详情搞清楚。对于一些开源CMS,可以到官网或者github上找到对应版本的源码,搭建模拟环境进行研究;有些不开源的漏洞,可以在网上找一些案例进行黑盒测试,复原漏洞产生过程。最好再撰写一份属于自己的漏洞分析报告
复现完成后生成payload,转化为XXX格式的poc(基于YAK语言的),提交到不同模拟环境扫描测试,考虑不同目标环境和条件下的适用性。如果可能,提供POC的变体,以适应不同的操作系统、软件版本或配置
最后审核上线
18.你们POC识别的维度有几层
???没看懂这个问题什么意思
19.平时有没有自己开发什么有意思的项目
IMUSTCTF靶场,二维码安全识别小程序,模拟学习强国的疫情期间的答题APP,算法可视化项目,网络安全视频学习站点,包头市青山区遇见青山APP(点评类),包头市广电局活动管理系统,包头市第二届文创旅游大赛官网,IMUSTACM(ACM练习平台)
20.详细说说你们的二维码识别小程序的原理
讲了一堆,巴拉巴拉,主要针对dfa内容监测算法和码安四维二维码分析算法
21.总结
面试时没有录音(之后要养成面试录音复盘的好习惯),还有一些问题忘记了,一面问了挺长时间,整体感觉很好,面试官人也不错,会详细介绍他们团队的研究方向
22.结果
5月23日,通知一面通过了,准备二面