几个高频的HVV面试题梳理
XSS 、CSRF、XXE的原理
XSS它是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。
XSS修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。
CSRF它是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,它是由于没有在关键操作执行时进行是否由用户自愿发起的确认。
CSRF修复方式:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer。
XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。
XXE修复方式:XML解析库在调用时严格禁止对外部实体的解析。
CSRF、SSRF和重放攻击的区别
CSRF:它是跨站请求伪造攻击,由客户端发起
SSRF:它是服务器端请求伪造,由服务器发起
重放攻击:它是将截获的数据包进行重放,达到身份认证等目的
IPS和IDS的区别
IPS系统是电脑网络安全设施,它是对防病毒软件和防火墙的补充。IPS系统是一部能够监视网络或网络设备的网络资料传输行为的计算机网络安全设备,能够即时的中断、调整或隔离一些不正常或是具有伤害性的网络资料传输行为。
IPS对于初始者来说,它是位于防火墙和网络的设备之间的设备。这样,如果检测到攻击,IPS会在这种攻击扩散到网络的其它地方之前阻止这个恶意的通信。因此IPS具有检测已知和未知攻击并具有成功防止攻击的能力。
IDS系统的核心价值在于通过对全网信息的分析,了解信息系统的安全状况,进而指导信息系统安全建设目标以及安全策略的确立和调整,而入侵防御系统的核心价值在于安全策略的实施—对黑客行为的阻击;IDS系统需要部署在网络内部,监控范围可以覆盖整个子网,包括来自外部的数据以及内部终端之间传输的数据,入侵防御系统则必须部署在网络边界,抵御来自外部的入侵,对内部攻击行为无能为力。
IDS局限性是不能反击网络攻击,因为IDS传感器基于数据包嗅探技术,只能眼睁睁地看着网络信息流过。IDS只是存在于你的网络之外起到报警的作用,而不是在你的网络前面起到防御的作用。IDS不具备检测已知和未知攻击并具有成功防止攻击的能力。
win文件读取漏洞,会读哪些
C:\boot.ini //查看系统版本
C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件
C:\Windows\repair\sam //存储系统初次安装的密码
C:\Program Files\mysql\my.ini //Mysql配置
C:\Program Files\mysql\data\mysql\user.MYD //Mysql root
C:\Windows\php.ini //php配置信息
C:\Windows\my.ini //Mysql配置信息
linux文件读取漏洞,会读哪些文件
/root/.ssh/authorized_keys //如需登录到远程主机,需要到.ssh目录下,新建authorized_keys文件,并将id_rsa.pub内容复制进去
/root/.ssh/id_rsa //ssh私钥,ssh公钥是id_rsa.pub
/root/.ssh/id_ras.keystore //记录每个访问计算机用户的公钥
/root/.ssh/known_hosts
//ssh会把每个访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。
/etc/passwd // 账户信息
/etc/shadow // 账户密码文件
/etc/my.cnf //mysql 配置文件
/etc/httpd/conf/httpd.conf // Apache配置文件
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/proc/self/fd/fd[0-9]*(文件标识符)
/proc/mounts //记录系统挂载设备
/porc/config.gz //内核配置文件
/var/lib/mlocate/mlocate.db //全文件路径
/porc/self/cmdline //当前进程的cmdline参数
如何排查系统内存shell
判断它是基于什么方法注入的内存马,可以查看web日志是否有可疑的web访问日志,如果是filter或者listener类型就会有大量url请求路径相同参数不同的,或者页面不存在但是返回200的,查看是否有类似哥斯拉、冰蝎相同的url请求,哥斯拉和冰蝎的内存马注入流量特征与普通webshell的流量特征基本吻合。
通过查找返回200的url路径对比web目录下是否真实存在文件,如不存在大概率为内存马。如在web日志中并未发现异常,可以排查是否为中间件漏洞导致代码执行注入内存马,排查中间件的error.log日志查看是否有可疑的报错,根据注入时间和方法,根据业务使用的组件,排查是否可能存在java代码执行漏洞以及是否存在过webshell,排查框架漏洞,反序列化漏洞。
webshell如何响应
基于PDCERF模型将应急响应分成6个阶段工作:准备(Preparation)、检测(Detection)、抑制(Containment)、根除(Eradication)、恢复(Recovery)、跟踪(Follow-up)。
Prepare(准备):分析资产的风险、组建管理 人员团队、风险加固、保障资源储备、技术支持资源库
Detection(检测):日常运维监控、事件判断、事件上报:包括防火墙、系统、web服务器、IDS/WAF/SIEM中的日志,不正常或者是执行了越权操作的用户,甚至还有管理员的报告
Containment(抑制):抑制阶段的主要任务是限制事件扩散和影响的范围。抑制举措往往会对合法业务流量造成影响,最有效的抑制方式是尽可能地靠近攻击的发起端实施抑制
Eradication(根除):根除阶段的主要任务是通过事件分析查明事件危害的方式,并且给出清除危害的解决方案。
对事件的确认仅是初步的事件分析过程。事件分析的目的是找出问题出现的根本原因。在事件分析的过程中主要有主动和被动2种方式。主动方式是采用攻击诱骗技术,通过让攻击方去侵入一个受监视存在漏洞的系统,直接观察到攻击方所采用的攻击方法。被动方式是根据系统的异常现象去追查问题的根本原因。
Recover(恢复):主要任务是把被破坏的信息彻底地还原到正常运作状态。确定使系统恢复正常的需求和时间表、从可信的备份介质中恢复用户数据、打开系统和应用服务、恢复系统网络连接、验证恢复系统、观察其他的扫描、探测等可能表示入侵者再次侵袭的信号。
Follow-Up(跟踪):主要任务是回顾并整合应急响应过程的相关信息,进行事后分析总结、修订安全计划、政策、程序并进行训练以防止再次入侵,基于入侵的严重性和影响,确定是否进行新的风险分析、给系统和网络资产制定一个新的目录清单、如果需要,参与调查和起诉。这一阶段的工作对于准备阶段工作的开展起到重要的支持作用。应急响应报告、应急事件调查、应急响应总结
webshell原理
Webshell它是一种网页后门。攻击者在入侵一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。
攻击者入侵服务器,使用webshell,不管是传文件还是改文件,必然有一个文件会包含webshell代码,很容易想到从文件代码入手,这是静态特征检测;webshell运行后,B/S数据通过HTTP交互,HTTP请求/响应中可以找到蛛丝马迹。
webshell检测方案
Webshell静态检测:通过匹配特征码,特征值,危险函数来查找webshell的方法,只能查找已知的webshell,并且误报率漏报率会比较高,但是如果规则完善,可以减低误报率,但是漏报率必定会有所提高。优点是快速方便,对已知的webshell查找准确率高,部署方便,一个脚本就能搞定。缺点漏报率、误报率高,无法查找0day型webshell,而且容易被绕过。
检测webshell的开源工具:
https://github.com/he1m4n6a/findWebshell
Webshell动态检测:Linux下就是nobody用户起了bash,Window下就是IIS User启动cmd,这些都是动态特征。如果攻击者反向连接的话,Agent和IDS都可以抓现行。Webshell总有一个HTTP请求,如果我在网络层监控HTTP,并且检测到有人访问了一个从没访问过的文件,并且返回了200,则很容易定位到webshell,这便是http异常模型检测,就和检测文件变化一样,如果非管理员新增文件,则说明被人入侵了。缺点也很明显,攻击者只要利用原文件就很轻易绕过了,并且部署代价高,网站时常更新的话规则也要不断添加。
Webshell日志检测:使用Webshell一般不会在系统日志中留下记录,但是会在网站的web日志中留下Webshell页面的访问数据和数据提交记录。日志分析检测技术通过大量的日志文件建立请求模型从而检测出异常文件。
webshell的防护方案
Webshell可参考防护方案有3种:
1、将专门存放上传文件的文件夹里面的脚本类型文件,解析成其他类型的文件,服务器不会以脚本类型来执行它。
2、匹配文件夹里的脚本类型文件,将其设置为无法读取及操作。
3、将文件上传到一个单独的文件夹,给一个二级的域名,然后不给这个虚拟站点解析脚本的权限,听说很多网站都用这种方式。
谈谈攻击溯源和反制
攻击源捕获
基于安全设备报警:扫描IP、威胁阻断、病毒木马、入侵事件等等
基于日志与流量分析:异常通讯流量、攻击源与攻击目标等
基于服务器资源异常:异常的文件、账号、进程、端口、启动项、计划任务和服务等
通过邮件钓鱼:获取恶意文件样本、钓鱼网站URL
通过蜜罐系统:获取攻击者行为、意图的相关信息
溯源反制手段
IP定位技术:根据IP定位物理地址获取代理IP
溯源案例:通过IP端口扫描,反向渗透服务器进行分析,最终定位到攻击者相关信息
ID追踪术:ID追踪术,搜索引擎、社交平台、技术论坛、社工库匹配
溯源案例:利用ID从技术论坛追溯邮箱,继续通过邮箱反追踪真实姓名,通过姓名找到相关简历信息
网站url:域名Whois查询--注册人姓名、地址、电话和邮箱。
溯源案例:通过攻击IP历史解析记录/域名,对域名注册信息进行溯源分析
恶意样本:提取样本特征、用户名、ID、邮箱、C2服务器等信息
溯源案例:样本分析过程中,发现攻击者的个人ID和QQ,成功定位到攻击者。
社交账号:
基于JSONP跨域,获取攻击者的主机信息、浏览器信息、真实 IP及社交信息等
利用条件:可以找到相关社交网站的jsonp接口泄露敏感信息,相关网站登录未注销
web应用10大安全漏洞
1、未验证参数: Web请求返回的信息没有经过有效性验证就提交给Web应用程序使用。攻击者可以利用返回信息中的缺陷,包括URL、请求字符串、cookie 头部、表单项,隐含参数传递代码攻击运行Web程序的组件。
2、访问控制缺陷:用户身份认证策略没有被执行,导致非法用户可以操作信息。攻击者可以利用这个漏洞得到其他用户账号、浏览敏感文件、删除更改内容,执行未授权的访问,甚至取得网站管理的权限。
3、账户及会话管理缺陷:账户和会话标记未被有效保护。攻击者可以得到密码、解密密钥、会话Cookie和其他标记,并突破用户权限限制或利用假身份得到其他用户信任。
4、跨站脚本漏洞:在远程Web页面的html代码中插入的具有恶意目的的数据,用户认为该页面是可信赖的,但是当浏览器下载该页面时,嵌入其中的脚本将被解释执行。最典型的例子就是论坛处理用户评论的应用程序,这些有跨站脚本漏洞的应用程序会向客户端返回其他用户先前输入的内容,- -些网站的错误处理页面也存在此类问题。浏览器收到了嵌入恶意代码的响应,那么这些恶意代码就可能被执行。
5、缓冲区溢出: Web应用组件没有正确检验输入数据的有效性,倒使数据溢出,并获得程序的控制权。可能被利用的组件包括CGI,库文件、驱动文件和Web服务器。
6、命令注入漏洞: Web应用程序在与外部系统或本地操作系统交互时,需要传递参数.如果攻击者在传递的参数中嵌入了恶意代码,外部系统可能会执行那些指令。比如SQL注入攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。
7、错误处理问题:在正常操作没有被有效处理的情况下,会产生错误提示,如内存不够、系统调用失败、网络超时等。如果攻击者人为构造Web应用不能处理的情况,就可能得到一些反馈信息,就有可能从中得到系统的相关信息。系统如何工作这样重要的信息显示出来,并且暴露了那些出错信息背后的隐含意义。例如,当发出请求包试图判断-一个文件是否在远程主机上存在的时候,如果返回信息为“文件未找到”则为无此文件,而如果返回信息为“访问被拒绝"则为文件存在但无访问权限。
8、密码学使用不当: Web应用经常会使用密码机制来保护信息存储和传输的安全,比如说开机或文件密码、银行账号、机密文件等。然而这些用于保密用途的程序代码也可能存在一些安全隐患,这可能是由于开发者的原因造成的。
9、远程管理漏洞:许多Web应用允许管理者通过Web接口来对站点实施远程管理。如果这些管理机制没有得到有效的管理,攻击者就可能通过接口拥有站点的全部权限。
10、Web服务器及应用服务器配置不当:对Web应用来说,健壮的服务器是至关重要的。服务器的配置都较复杂,比如Apache服务器的配置文件完全是由命令和注释组成,一个命令包括若千个参数。如果配置不当对安全性影响最大。