web安全相关面试总结


“如果一个人住,千万不要在下午时睡午觉,一觉睡到六七点等你一睁开眼,看着朦胧黑黑的天空,看着空荡的房间,会有一种被全世界遗弃的感觉,孤独在那一刻体现的淋漓尽致。”

前言

收集和总结一些web安全面试可能会问到的问题,本文只是写个大概,提供一个方向,不会在某个问题讲太深,以下都是用本人通俗的话来讲,难免会有不正确的。

基本漏洞讲解

sql注入

原理:
没有对输入生成的数据进行过滤或过滤不当,能够通过构造构造恶意的输入来改变sql语句的结构

判断
通过构造条件语句,来查看页面是否发生变化,例如:加单引号,加 2-1,sleep()验证

注入类型
get
post
cookie

注入方式

1
2
3
4
5
6
7
8
9
10
union注入
利用union slect 等等

报错注入
利用rand()+floor(),exp(),updatexml(),polygon()等等

盲注(bool盲注和时间盲注)
利用subtr(),if(),ascii()等等、

宽字节注入

防御
·使用预编译语句
·关闭错误提示
·强制类型转换

跨站脚本XSS

原理
向网页写入恶意脚本,当其他用户进行浏览时,就会触发恶意代码进行恶意操作

类型
反射性(一次性)
一般在url中构造恶意代码,发送给其他用户点击执行相关操作

存储型(永久性)
一般在进行表单提交,比如留言板,在表单提交恶意代码存到数据库,当其他用户浏览时会触发,影响大量用户

dom型(基于)
通过修改dom结构来操作dom对象进行注入

防御
·进行转义输出
·设置httponly(禁止js获取cookie值)

csrf(夸站请求伪造)

原理
服务器没有对请求来源进行过滤验证而导致受害者执行攻击代码,一般是在恶意网站向其他网站执行了恶意操作

判断
抓取正常请求包,去掉referer重新提交,如果提交还有效,说明存在ssrf

防御
设置token(服务器生成一个随机给客户端,客户点携带随机数进行请求)
验证refere

ssrf(服务端请求伪造)

原理
没有对服务器请求的内容进行过滤造成可以从外网访问内网进行攻击

判断
在图片地址或者url中进行构造

防御
·禁用不需要的协议 类似于file:// , gopher://, ftp://
·限制端口

XXE漏洞

原理
当应用程序程序能够解析xml时,如果可以引用外部实体,可以通过构造恶意命令执行恶意操作,内网攻击,任意文件读取

防御
禁止对外部实体的访问
过滤xml数据

解析漏洞

IIS
XX.ASP目录下的问价会被当做asp文件执行
xx.asp;.jpg ;表示截止,不会解析;后面的内容 会被当做asp文件执行

Apache
文件名解析从右到左

Nginx
xx.jpg/.php 会被当做php执行
存在00截断

文件包含

原理
过滤包含文件函数中的参数可控 可导致任意文件

本地包含: 包含文件的参数可控 在进行包含时没有进行过滤 导致的夸目录读取文件
远程包含: 用户的输入没有进行过滤 通过访问远程服务器下的shell文件

包含方式
包含上传文件
利用伪协议,php://input(写一句话),data://(执行命令),php://filter(读取文件内容)
包含日志文件
包含session
防御
设置allow_url_include,关闭allow_url_fopen
使用open_basedir进行限制包含
过滤包含文件函数中的参数

文件上传

原理
没有对文件的后缀名过滤或者可绕过从而上传危险文件

防御
禁止上传目录有执行命令权限
文件路径名+文件名写死

面试常见问题

apache和nginx区别
apache 性能高 模块多 更稳定 动静编译
nigix 轻量级 静态编译

怎么判断是否同源
如果 两个页面的 协议 端口号 和 域名 相同 则两个页面 同源

php.ini的一些安全配置
打开安全模式
关闭危险函数
关闭注册全局变量
关闭错误回显
限制活动目录
增加错误日志

如何进行信息收集
获取真实ip
敏感目录扫描
子域名爆破
端口扫描
c段扫描
cms识别
中间件版本

myslq注入 5.0 以上和5.0 以下有什么区别
5.0以下没有information_schema 这个表

SSRF 和 CSRF 有什么区别
SSRF 由服务器发起
CSRF 有客户端发起

cookie 与session 的区别
cookie 存在于本地
sesion 存在于服务器 返回一个ID 作为一个cookie

响应码了解多少
404 文件不存在不
403 禁止访问
500 服务器错误
302 重定向
401 请求未经授权

常见端口号
22 ssh
21 ftp
23 telnet
443 https

七层模型结构
应用层 http ftp dns
表示层 进行 解码与编码 加密解密
会话层 验证用户 断点续传
传输层 tip udp 建立连接
网络层 ip 进行选路
数据链路层
物理层

XSS 和 CSRF 的区别?
XSS:跨站脚本攻击,注重的是脚本,一般来说,吃什么吐什么 有脚本的参与,黑客构造好各种各样功能的脚本让你来触发。

CSRF:跨站请求伪造,注重的是跨站,伪造,也就是说重点在借刀杀人 借你的手触发某些操作。