网络安全常见面试题-Web方向

随笔1个月前发布 再琪
4 0 0

网络安全常见面试题

计算机网络

OSI模型和TCP/IP体系结构?

OSI模型:从下到上为物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

TCP/IP结构:从下到上为网络接口层,网际层,传输层,应用层

TCP/IP的三次握手和四次挥手过程,且为什么要这样?

三次握手

客户端给服务器发送数据:

客户端给服务器发送SYN包,询问是否可以进行连接
服务器若可以进行连接,回复SYN+ACK包
客户端回复一个ACK包,连接建立

四次挥手

处于连接状态的客户端给服务器发送数据:

客户端首先给服务器发送一个FIN包,表示要关闭连接。
服务器接收到FIN包后,给客户端发送一个ACK包,代表已经接受了关闭连接的请求,但是未传输完的数据仍要继续传输。
当传输数据传输完之后,服务器给客户端发送一个FIN包。
客户端给服务器回复一个ACK包,中止连接。

为什么这样?

为了建立可靠传输,解决信道不可靠的问题。

私有IP的地址划分

分为三类:

A类:10.0.0.0-10.255.255.255
B类:172.16.0.0-172.31.255.255
C类:192.168.0.0-192.168.255.255

TCP和UDP的区别和优缺点

UDP:

基于无连接的
不可靠的,只是发送数据包,不考虑对方能否接受到
用于即时性要求很高的场合
TCP:
面向连接的,可靠的
发送字节流,对方一定要接收到且不能保证丢失数据。
常用:流量控制、超时重传、拥塞控制等机制来保证可靠传输。
建立连接需要消耗时间和资源。

正向Shell和反向Shell的区别?

正向shell:攻击者连接被攻击机器,攻击者处于内网,被攻击机器处于外网的情况。(上传webshell,进行连接)
反向shell:被攻击者主动连接攻击机器,被攻击者处于内网,攻击者处于外网。(反弹shell)

正向代理和反向代理的区别?

正向代理:客户端将数据发送给代理,代理把数据发送给服务器。

服务器无法感知客户端是谁。

反向代理:假设内网有一台web服务器,客户端无法直接访问内网。那么,我们可以将web服务器反向代理到外网的nginx服务器,此时客户端访问nginx服务器,就访问到web资源了。

客户端无法感知服务器是谁。
提高服务器的安全性。

常见防火墙种类

Web应用防火墙
包过滤防火墙
代理防火墙
状态检测防火墙

HTTP和HTTPS的区别?

HTTPS协议需要用到证书(公钥和私钥),HTTP不需要。
HTTP信息明文传输,HTTPS信息加密传输。
HTTP端口80、HTTPS端口443。
HTTPS协议基于SSL+HTTP协议比HTTP更加安全。

HTTPS工作原理?(非对称加密和对称加密结合)

客户端发起https请求,连接到服务器的443端口
服务端生成证书(私钥和公钥)
传送服务器的公钥
客户端解析公钥,验证公钥是否有效,如果无效,提示证书存在问题,如果有效,那么客户端生成一个随机值(私钥)用服务器的公钥加密,传输到服务器上。
服务器将加密后的值用自身的私钥解密,得到客户端的私钥,然后将明文通过客户端的私钥进行对称加密。
服务器将密文进行传输
客户端用自己之前生成的私钥解密传过来的信息,获取了解密后的内容。

在上述过程中,用非对称加密传输密钥,确保安全性。用对称加密来加解密数据,速度快。

系统(Windows及Linux)方面常问

如何手工判断对方操作系统?

修改url参数,改成大写,正常为Windows,不正常为Linux
ping服务器,看TTL值
看数据包,如果数据包中存在IIS,肯定Windows。

Windows和Linux查看开放端口和运行服务的命令?

Windows:

开放端口:netstat -ano | findstr 关键字
查看正在运行的服务:net start

Linux:

开放端口:netstat -tuln | grep 关键字
查看正在运行/不运行的服务:service –status-all | grep +/-

Windows或Linux被植入后门文件,讲一下你的排查点

查看日志
查看是否存在异常用户
查看异常/隐藏进程
查看系统文件的时间是否被改动、系统文件的内容是否被改动
检查网络
检查计划任务
检查后门程序
检查系统服务

Web安全

OWASP TOP 10

注入(SQL注入、表达式注入等)
失效的身份验证
– 无验证
– 验证脆弱
– 验证可绕过
敏感数据泄露
– 身份证、电话号码、姓名、学号、密码等泄露
– 抓包,后端将全部内容返回,前端只取了一部分
XML/XXE
– 外部实体引入导致RCE等漏洞
失效的访问控制
– 越权、未授权访问
配置不当导致漏洞
– IIS PUT漏洞
XSS
– 用户可以对页面内容进行改变,写入恶意JS语句
反序列化漏洞
– 用户根据序列化字符串,构造恶意对象,当反序列化之后,就会调用魔术方法,从而导致RCE、信息泄露、getshell等
第三方组件、框架漏洞
– Weblogic、Shiro、Spring、Log4j等组件出现漏洞,导致网站被入侵。
不足的日志和监控
– 日志收集不足、缺陷检测时间过长导致黑客入侵无法被溯源反制。

SQL注入原理的种类?防御?预编译原理?

原理?

服务器在接收客户端的数据时,由于没有对数据进行过滤,导致未过滤的数据被拼接到SQL语句中并执行。

种类?

数字型
字符型
联合注入
布尔注入
延时注入
报错注入
二次注入
堆叠注入
宽字节注入
HTTP头注入

修复?

预编译
正则表达式过滤
开启魔术引号,对特殊字符加转义
装WAF

预编译原理?

将一次SQL语句的执行分为两次交互完成:

先发送SQL语句的模板,对于参数部分,用占位符代替,例如Mybatis中用?
对于客户端传递过来的参数传入到模板中,仅仅被当作是字符串执行,因此杜绝了SQL注入的产生。

XSS的种类有哪些?区别?修复?

种类?

存储型
反射型
DOM型

原理/区别?

XSS就是js代码。XSS本质就是输入和输出。用户可以控制输入的内容,服务器如果对输入的内容没有经过任何过滤,那么用户就可以构造恶意XSS从而对html页面进行改变,对用户进行攻击。

存储型:将js代码存储到了数据库中,当用户访问了带有恶意js代码的页面时,js代码就会从数据库中调取出来,从而被加载到页面中执行。

存储型比反射型危害更大,因为会一直存储在数据库中。
只要用户访问了恶意页面,就会收到攻击。
不需要用户的配合。
常出现在用户留言板等业务中

反射型:常出现在url中,攻击者构造带有XSS的恶意链接,欺骗用户点击,从而导致XSS。

反射型XSS一般都是一次性的
需要用户配合(配合社工)
用户正常访问不会受到XSS。

DOM型:上述提到的输入,处理,输出都是在前端完成。

修复?

开启http-only,防止cookie盗取
过滤JS标签
对于输入的数据进行转义等(魔术引号)
装WAF等

XSS,CSRF,SSRF区别?

XSS:跨站脚本攻击
CSRF:跨站请求伪造
SSRF:服务器端请求伪造

XSS:服务器对于用户的输入过滤不严,导致用户可以向html页面注入恶意js代码,当用户访问页面时,浏览器就会解析恶意js代码,从而导致危害。(突出点在于js代码)

CSRF:胁持用户浏览器强制做出某些行为。(突出点在于行为,发送数据包)在这个过程中,攻击者会利用用户对已知站点的信任,在用户不知情的状态下,执行相关行为。

SSRF:服务器代替攻击者去请求url中的数据,如果url为内网地址,那么攻击者就相当于挟持了服务器的身份来访问内网的内容。

什么是XXE漏洞?

XXE即XML外部实体注入漏洞,当应用程序解析XML输入时,没有禁用外部实体的加载,导致可以加载恶意外部文件,造成命令执行、SQL注入、信息泄露、带外执行等。

PHP反序列化?

攻击者根据类和序列化字符串,构造恶意对象,当反序列化之后,就会调用魔术方法,从而导致RCE、信息泄露、getshell等

PHP反序列化通常都会使用魔术方法,当序列化字符串进行反序列化时,就会调用相应的魔术方法,从而导致RCE等。

如何构造?从源码中找到类,修改属性,通过PHP的serialize方法来产生序列化字符串。

Java反序列化?

Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,其
作用把对象转换成字节流,便于保存或者传输,而ObjectInputStream类的
readObject()方法用于反序列化,作用就是把字节流还原成对象。

Shiro反序列化?

shiro反序列化主要是Apache shiro提供了一个remember的一个功能,用户登录成功后会生成经过加密并编码的cookie,保存在浏览器中方便用户的日常使用,而服务器对cookie的处理流程就是先获取浏览器上保存的cookie,然后将其bs64解码,再进行AES解密,再将其反序列化进行校验,而漏洞就是出现在这里,我们都知道AES它是一个硬编码,他是有默认密钥的,如果程序员没有去修改或者过于简单,那我们就可以进行cookie重构,先构造我们的恶意代码,然后将恶意代码进行序列化,然后AES加密(密钥我们已经爆破出来了),再进行bs64编码,形成我们新的cookie,而服务器在处理时就会按照刚才的处理流程,就会在服务端触发我们构造的恶意代码。

如何发现某系统采用了Shiro框架?

手工:

尝试去登录,如果登录失败发现返回包存在rememberMe=deleteMe字段,那么就基本可以判断是Shiro框架。

工具:

goby
网络引擎
shiroscan
插件

原理:

未登陆的情况下,请求包的cookie中没有rememberMe字段,返回包setCookie里也没有deleteMe字段
登陆失败的话,不管勾选RememberMe字段没有,返回包都会有rememberMe=deleteMe字段
不勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段。但是之后的所有请求中Cookie都不会有rememberMe字段
勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段,还会有rememberMe字段,之后的所有请求中Cookie都会有rememberMe字段

业务逻辑漏洞的种类?

越权
未授权
支付金额修改
条件竞争
任意用户注册
任意用户登录
短信轰炸机

给你一个登录框,思路?

SQL注入
XSS
任意用户注册
任意用户登录
js分析,查看代码逻辑,查看是否存在信息泄露?
抓包
验证码爆破、轰炸、重用
弱口令,构造社工字典,爆破
未授权访问
看返回包返回的数据,是否存在信息泄露?
社会工程学

CDN和DNS区别?

CDN:内容分发网络,主要作用就是让用户就近访问网络资源,提高响应速度,降低网络拥堵。
DNS:主要作用就是将域名翻译成ip地址。

CDN检测和绕过思路?

检测?

超级ping
查看返回包,是否存在域名为cdn.xxx的文件,如果存在就是从CDN节点所请求的缓存资源。

绕过?

子域名绕过
国外ping
采用CDN脚本进行全网扫描
内部邮件泄露(反向连接的手段)

常见的中间件漏洞?

IIS:PUT漏洞、短文件名漏洞
Apache:解析漏洞、目录遍历等
Redis:未授权访问漏洞等
Nginx:解析漏洞、目录遍历、目录穿越等
Shiro:反序列化漏洞等
Tomcat:RCE漏洞、war后门文件部署等
JBoss:反序列化漏洞、war后门文件部署等
WebLogic:反序列化漏洞、war后门文件部署等

WAF绕过的手法?

信息搜集:

延迟,防止CC攻击检测
代理池
修改UA头等绕过黑名单,符合白名单
漏洞发现:
同上
漏洞利用:
参考各种Web漏洞的利用绕过方式
权限控制:
代码方面的免杀

传参绕过
变量覆盖
源码加密
异或绕过

行为方面的免杀

根据工具的流量特征,进行二次开发,从而达到免杀

命令无回显怎么办?

延时判断
DNSLog外带
监听http请求
写webshell

3389端口无法连接的情况?

端口改了
超过了服务器最大连接数
服务器在内网
端口关了
管理员设置权限,只允许指定用户登录
防火墙

常问的端口信息

21:FTP文件传输协议
22:SSH远程连接
23:TELNET远程登录
25:SMTP邮件服务
53:DNS域名系统
80:HTTP超文本传输协议
443:HTTPS安全超文本传输协议
1433:MSSQL
3306:MYSQL
3389:windows远程桌面服务端口
7701:weblogic
8080:TCP,HTTP协议代理服务器:Apache-tomcat默认端口号
6379:redis

什么是业务逻辑漏洞?说出至少三种业务逻辑漏洞。

逻辑漏洞是指由于程序逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误。挖掘业务逻辑漏洞,需要对业务有深刻的理解。

拿支付漏洞来说,简单思路有价格修改,支付状态修改,数量最大值溢出,订单替换,支付接口替换,四舍五入,越权支付等等。

拿登录来说,修改状态信息,密码修改跳过验证等等。

密码找回漏洞中存在:1)密码允许暴力破解、2)存在通用型找回凭证、3)可以跳过验证步骤、4)找回凭证可以拦包获取。

身份认证漏洞中最常见的是:1)会话固定攻击、2)Cookie 仿冒。只要得到Session 或 Cookie 即可伪造用户身份。

验证码漏洞中存在:1)验证码允许暴力破解、2)验证码可以通过Javascript 或者改包的方法来进行绕过。

拿到webshell不出网情况下怎么办?

探测出网协议、如dns带外,icmp等

PHP代码执行/命令执行的危险函数

代码执行:eval()、call_user_func()等
命令执行:system()、shell_exec()、exec()、passthru()等

SSRF禁用 127.0.0.1 后如何绕过,支持哪些协议?

缩写绕过
进制绕过
dns重绑定
301重定向

.SVN/GIT源代码泄露?

在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息

使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。

为何一个mysql数据库的站,只有一个80端口开放?

3306端口已经更改
站库分离,3306端口不对外开放。

注入时可以不使用and 或or 或xor,直接order by开始注入吗?

and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省去这个步骤。

在有shell的情况下,如何使用xss实现对目标站的长久控制?

在后台的首页文件加一段js代码,将管理员的cookie发送到攻击者的服务器当中。这样的话,只要管理员不登出,那么攻击者就可以以管理员身份登录。

或者在登录界面加一段js代码,如果用户登录成功,那么就将用户名和密码发送到恶意服务器当中。(表单劫持)

目标站无防护,上传图片可以正常访问,上传脚本格式访问则403.什么原因?

原因很多,有可能web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过。

access 扫出后缀为asp的数据库文件,访问乱码。如何实现到本地利用?

迅雷下载,直接改后缀为.mdb。

文件包含Getshell思路?

伪协议绕过
日志包含绕过
远程包含绕过

文件上传Getshell思路

前端绕过
短标签绕过
Content-Type值绕过
.user.ini绕过
日志包含绕过

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...