面试复习
前言
突然接到一场面试,从今天到周一,有三天的复习时间,但我学的比较偏向渗透方面,而该岗位比较偏向等保和运维那一块的,所以我得要多关注一下这方面的。
这里先从个人简历写的技能入手复习,再复习公司的招聘需求,最后研究一下这个公司
一、简历复习
1、简历技能陈述
项目经历要点剖析:
原文:
渗透工具(如brupsuit、nmap、xsstrike等)的基本使用方法讲解
使用python中的scapy模块开发基于arp协议的主机发现脚本
对目前流行或非流行漏洞进行漏洞环境搭建(比如docker),漏洞复现(比如vulhub)
挖掘过短信轰炸、任意文件下载、验证码绕过等漏洞
精简一下:
burpsuit nmap xsstrike 使用方法
arp协议主机发现脚本
漏洞复现 shiro反序列化和S2-052
短信轰炸 任意文件下载 验证码绕过
个人能力要点剖析:
xss 注入
csrf sql注入
文件读取 文件上传 文件包含 命令注入
ssrf 目录穿越 xxe
渗透测试流程
安全工具 sqlmap Hydra metasploit
2、技能知识点整理
burpsuit
介绍:web应用程序渗透测试集成平台
功能
- proxy 代理拦截查看
- spider 爬行网站
- scanner 扫描 分主动扫描和被动扫描
- intruder 自动化攻击 枚举 收集数据 模糊测试
- repeater 重发
- sequencer 定序器
- decoder 解码
- comparer 比较差异
nmap
介绍:嗅探工具
功能:
nmap [<扫描类型>…] [<选项>] {<扫描目标说明>}
排除目标
–exclude <host1 [, host2] [, host3] … >
–excludefile
主机发现
- -sL列出扫描目标
- -sn/-sP 跳过主机扫描(ping扫描而不用端口扫描)
- -Pn/P0 跳过主机发现 (无ping扫描)
- -sS (tcp syn扫描) 半开放扫描
- -sT tcp连接扫描(准确性高)
端口扫描
- -PS TCP SYN ping
- -PA TCP ACK ping
- -PU UDP ping
- -PR ARP ping
- -p 扫描指定端口
- -F 极速模式,仅扫描100个常用端口
服务和版本探测
- -sV 版本探测
操作系统扫描
- -O 操作系统扫描
输出
- -oN 标准输出
- -oX XML输出
- -oG Grep输出
- -oA 输出至所有格式
细节和调试
- -v 信息详细程度
扫描漏洞
- –script 利用脚本扫描漏洞
- –script=vuln
Masscan
介绍:嗅探工具
- –ports 指定端口范围
- –rate 指定速率
- –source-ip 指定源IP
xsstrike
介绍:跨站点脚本检测套件
- -u 扫描单个 URL --data 提供 POST 数据
- –crawl 爬行 -l 爬行深度 默认为2
- –seeds 抓取 URL
- -f 加载文件的payload进行测试
- –params 查找隐藏参数
- –fuzzer 模糊测试
- –skip-dom 跳过 DOM 扫描
arp协议主机发现脚本
ARP协议:根据IP地址获取物理地址的一个TCP/IP协议
原理:主机发送ARP请求会广播到局域网络所有主机
scapy介绍:构造数据包、发送数据包、分析数据包
Scapy采用分层的形式来构造数据包
结构为
再上一层 TCP协议/UDP协议
上一层 IP协议 IP(src=“xxx.xxx.xxx.xxx”,dst=“xxx.xxx.xxx.xxx”,ttl=32)
最下层协议 Ether(以太网协议) Ether(dst=“ff:ff:ff:ff:ff:ff”)
主要思路:
- 输入ip和网卡
- 三个功能:添加mac地址 添加ip地址 利用scapy进行arp扫描
- 添加mac地址功能:将网卡中的mac地址通过ifconfig和正则表达式提取
- 添加ip地址功能:将ip地址用split以点拆分,放到列表中,再利用循环提取前三个即通一个网段的,最后一个设为i,循环从1-255,扫描整个网段。
- arp扫描功能: 发送数据包,接受数据包,提取数据包的mac地址
- 主函数最后输出发现的ip地址和mac地址
shiro反序列化
Apache Shiro介绍:Java安全框架,
Shiro弱点功能:RememberMe
Shiro对rememberme的cookie做了加密处理
加密顺序:序列化->AES->base64
弱点成因:AES密钥Key被硬编码在代码里
弱点利用:构造恶意对象,对其序列化,AES加密,base64编码后,作为cookie的rememberme字段发送,Shiro将remembere进行解密并且反序列化
漏洞复现:
- 找到RememberMe
- 对反弹shell的命令加密
- 修改脚本中的已知Key
- 运行脚本结合反弹命令生成payload的cookie
- 开启监听
- 发送恶意数据包
- 成功反弹
S2-052
Apache Struts2介绍:Java Web的MVC框架
弱点成因:XStream组件对XML进行反序列操作,数据内容无验证
漏洞复现:
- 编辑页面
- 抓数据包
- 修改POST数据包的Content-Type头使其可以传输XML,再写入POC
- 成功执行命令
短信轰炸
漏洞利用:
- 发送手机号验证码处
- bp抓包,传到intruder处
- 填payload,轰炸
漏洞防范:
- 增加图形验证码
- 限制用户短信请求间隔
任意文件下载
漏洞利用:
- 某站点有资源下载功能
- 抓包,有path和name两个参数
- 在file文件路径用…/回溯上级目录成功
- 读取敏感文件/etc/passwd
- 存在任意文件下载漏洞
验证码绕过
漏洞利用:
- 登录框
- 抓包
- 修改密码重发数据包
- 验证码未过期
- 暴力破解
XSS注入
xss介绍:网站页面注入了恶意代码脚本
xss分类:
- 反射型
恶意代码存在 URL 里
常见于通过 URL 传递参数的功能,如网站搜索、跳转等 - 存储型
恶意代码存在数据库里
常见于带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等 - dom型
取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,其他两种属于服务端的安全漏洞
xss防护:过滤特殊字符,HTML 转义,CSP,HTTP-only cookie,验证码
危害:
- 获取cookie,SessionID
- 可以结合csrf执行危险操作
- 蠕虫
CSRF
csrf介绍:挟制用户在当前已登录的Web应用程序上执行非本意的操作
csrf危害:欺骗用户的浏览器,让其以用户的名义运行操作
csrf和xss区别:
XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
csrf防范:检查Referer字段,添加校验token(令牌),令牌同步模式(STP)
SQL注入
sql注入:恶意的sql 查询或添加语句插入到输入参数中,再被数据库服务器解析执行
sql分类:
第一种
- 直接回显
- 盲注 --布尔盲注(利用应用返回判断对错),时间盲注(利用特定时间判断)
- 报错注入 显示全部或者部分的报错信息(updatexml/extractvalue-mysql XMLType-Oracle )
- 堆叠注入 加入;后一次执行多条语句
- 带外注入 通过其他传输方式来获得数据,mysql-DnsLog注入 MsSQL-跨库查询 Oracle-带外函数
第二种
- 数字型
- 字符型
Mysql:
- 读取敏感文件函数:load_file()
- sql写shell:into dumpfile() into outfile()
- phpmyadmin写日志文件拿shell
- UDF提权
解释一下这里不用记,UDF(User Defined Function,用户自定义函数)是MySQL提供的一个功能,可以通过编写DLL扩展为MySQL添加新函数,扩充其功能。可通过上传自定义的扩展文件,从MySQL中执行系统命令。
Mssql:
- 利用OpenDataSource函数进行反弹注入
这个解释一下不用记
OpenDataSource(provider_name,init_string)
provider_name为用于访问数据源的OLE DB 提供程序的PROGID的名称
init_string为连接地址、端口、用户名、密码、数据库名
server=连接地址,端口;uid=用户名;pwd=密码;database=数据库名称
将当前数据库的数据通过这个函数的连接插入到自己搭建的数据库中
- sql写shell:利用存储过程,xp_cmdshell
sql注入防御:预编译
文件系列攻击
- 文件读取
读取可能有敏感信息的文件,比如.svn和.swp等
- 文件上传
绕过
1.更改请求绕过
2.Magic检测绕过(修改文件头字节)
3.后缀绕过
4.竞争上传绕过(反复上传直至getshell)
5.系统命名绕过(像index.php%20 ,index.php:1.jpg,index.php::$DATA等 )
攻击技巧
1.Apache重写GetShell
Apache可根据是否允许重定向考虑上传.htaccess
2.软链接任意读文件
上传的压缩包文件会被解压时,上传含符号链接的文件,实现任意文件读取
防范
1.白名单
2.严格的文件类型检查
3.限制Web Server对上传文件的解析
解析漏洞
解析漏洞:指web服务器因对http请求处理不当,导致将非可执行文件当做可执行文件执行
1.iis
2.apache
3.nginx
4.tomcat
- 文件包含
文件包含:把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,不用再次编写
本地文件包含
被包含的文件在服务器本地时
远程文件包含
被包含的文件在第三方服务器时
漏洞成因:包含了Web根目录以外的文件,导致文件信息泄露甚至注入恶意代码
绕过
1.url编码
2.%00截断
3.伪协议
(1)远程包含
(2)PHP input
(3)Base64
(4)data
命令注入
漏洞成因:Web应用在服务器上拼接系统命令
注入方式
- 分号分割
- 管道符
危险函数
- PHP/Python
system
popen - PHP/Java
exec
Linux命令注入:bash反弹shell
防御:输入格式检查,禁用相应危险函数
SSRF
跨服务器端请求伪造:
- 滥用服务器功能来访问或操作无法被直接访问的信息
- 利用存在缺陷的web应用作为代理攻击远程和本地的服务器
csrf与ssrf区别
CSRF是服务器端没有对用户提交的数据进行严格的把控,导致攻击者可以利用用户的Cookie信息伪造用户请求发送至服务器。
SSRF是服务器对用户提供的可控URL地址过于信任,没有经过严格检测,导致攻击者可以以此为跳板攻击内网或其他服务器。
危害:
- 对外网和内网以及服务器端口扫描,获取banner
- 利用file协议读取本地文件
- 利用Redis写webshell
防范:
- 过滤返回信息
- 限制请求端口
- 统一错误信息
- 禁止不常用协议
目录穿越/目录遍历
通过使用 …/ 等目录控制序列或者文件的绝对路径来访问存储在文件系统上的任意文件和目录
目录遍历的漏洞通过…/…/…/形式读取服务器文件,…/…/…/越多多好,因为在终端中,…/是返回上一级目录,到根目录使用…/会返回当前页面
注:/etc/passwd是某些Unix系统的密码存储文件
漏洞利用过程:
探测敏感目录,弱口令登录,查找利用的webshell上传点,最后可以利用目录遍历路径访问webshell
XXE
XML:可扩展标记语言
DTD:定义 XML 文档的合法构建模块。
XXE:XML外部实体注入攻击
存在漏洞的web服务存在xml传输数据,在http头的content-type中可查看,或根据url常见的关键字判断
一般的XXE攻击,只有在服务器有回显或者报错的基础上才能使用XXE漏洞来读取服务器端文件,多数XXE漏洞都是不可见的,采用带外通道进行返回信息的记录
攻击方式
- 拒绝服务攻击
- 文件读取
- SSRF
- 远程代码执行
渗透测试流程
- 信息收集
- 扫描漏洞
- 漏洞利用
- 提权
- 痕迹清理
- 留后门
- 写报告
sqlmap
sql注入工具
常用参数:
- -d 直接连目标后端接数据库
例子:-d “mysql://user:password@192.168.75.128:3389/databasename” --dbs
-u 指定目标url
例子:-u “www.abc.com/index.php?id=1” - -m 从文本中获取多个目标扫描,文件中是多个url
例子:-m target.txt - -r 将post请求方式的数据包保存在一个txt中,通过post方式检测目标
例子:-r post.txt - –data=DATA 以POST方式提交数据
例子:-u “www.abc.com/index.php?id=1” --data=“name=1&pass=2”、 - –delay 设置请求间的延迟
- –timeout 指定超时时间
- –user-agent=AGENT 指定user-agent的值进行测试
- –random-agent 随机user-agent进行测试
- –dbms=DBMS 指定目标数据库类型
例子:–dbms=“MySQL<5.0>” Oracle<11i> Microsoft SQL Server<2005> - –os=OS 指定目标操作系统
例子:–os=“Linux/Windows” - –tamper 指定tamper来绕过waf和ips
- –level 指定探测等级(1-5,默认为1)
- –risk 指定风险等级(1-4,默认1)
- –technique 注入技术
B:布尔盲注;
E:报错注入;
U:联合查询注入;
S:文件系统,操作系统,注册表相关注入;
T:时间盲注;
默认全部使用
具体命令可看:https://blog.csdn.net/Breeze_CAT/article/details/80628392
Hydra
九头蛇
爆破工具
- -l 指定确定用户名
hydra.exe -l administrator -P e:\pass.txt 10.1.1.1 smb -vV - -p 指定确定密码
- -L 指定用户名字典
hydra.exe -L e:\user.txt -P e:\pass.txt 10.1.1.1 telnet - -P 指定密码字典
- -vV显示暴力破解详细过程
- -M 指定目标列表文件一行一条
- -o 指定结果输出文件
具体使用方法:https://www.cnblogs.com/zhaijiahui/p/8371336.html
metasploit
安全漏洞检测工具
具体功能:漏洞验证、漏洞利用、内网渗透等
auxiliary 漏洞辅助模块,多用于扫描
encoders 编码器模块,对payloads进行编码
evasion 创建反杀毒软件的木马
exploits 攻击模块,实施精准打击
payloads 漏洞载荷模块,通常作用是为渗透测试者打开在目标系统上的控制会话连接
nops 空指令模块,最典型的空指令就是空操作等等
msfconsole:命令行启动
show <模块>:显示模块中所有信息
search命令可以用来检索所需要的模块的一些信息
use <模块名称> 使用该模块(攻击模块或辅助模块)
options:显示需要配置的信息
set/unsetset payload<载荷名称>:使用该攻击载荷
save:保存参数
run和exploit :实施攻击
总结
简历上涉及到的知识点就这么多,但起码这上面的知识我得能够理解并且很流利的说出来,其他一些知识点就看自己印象够不够深刻了,或者说,基础够不够牢固。
其实简历自我介绍也是一项很重要的知识点,想了个老套的模板,像这个样子。
您好,我叫+姓名,就读于+学校+专业,因为个人比较感兴趣,所以选择了安全这个方向,在学校关于这方面的课程学过+主修课程,平时也有参加一些比赛+比赛项目,也有跟着老师参加过+项目经历。前几天对公司和这个岗位我也摸索了一下,对公司+公司理解,对岗位+岗位理解,学校学到的东西太理论化,希望能在公司积累一些项目经验。emm,大概就这些了,我对还不太了解的知识也会多花时间学习的。