网络安全常见面试题

计算机网络

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绕过
  • 日志包含绕过
  • ...
相关推荐
Hacker_xingchen2 分钟前
关于网络安全攻防演化博弈的研究小议
安全·web安全
Microsoft Word1 小时前
计算机网络 第五章 运输层
网络·计算机网络
朝阳…晚霞1 小时前
HCIE之OSPF基础(十九)
网络
VVVVWeiYee2 小时前
路由引入问题(双点双向路由回馈问题)
运维·服务器·网络·信息与通信
CodeGrindstone2 小时前
Muduo网络库解析 ---线程模块
网络·c++·tcp/ip
乌龟跌倒3 小时前
运输层8——TCP连接和释放
网络·网络协议·tcp/ip
(天津)鸿萌数据安全4 小时前
iPhone/iPad/iPod 设备取证工具: ElcomSoft iOS Forensic Toolkit
安全·ios·iphone·ipad
大明湖的狗凯.4 小时前
HTTP 常见状态码解析
网络·网络协议·http