Skip to content

Commit

Permalink
日期 2021.2.2~2021.3.22
Browse files Browse the repository at this point in the history
Security
    >> 安全工具
        1. BurpSuite
            + 通过 proxifier 分流 burp
        2. CobaltStrike
            + argue、CrossC2、通信扩展(Malleable C2)
        3. Hashcat
            + mscash、net-NTLMv1
        4. Mimikatz
            + 辅助、衍生项目
            + ssp、dll方法
            + 后渗透、DPAPI
        5. nuclei
            + 添加基本内容
        6. Volatility
            + volatility3 部分内容
    >> BlueTeam
        >> 实验
            1. 安防设施搭建使用
                + HFish
            2. ClamAV 部署
                + 添加基本内容
        1. 分析
            + 添加基本内容
        2. 取证
            + 向日葵工具的取证
        3. 应急
            + 补充一些案例、资源链接
    >> RedTeam
        >> 安防设备
            1. SecDevice-Exploits
                + 蜜罐相关内容
        >> 后渗透
            >> 实验
                1. C2 实验
                    + 添加基本内容
            1. 后渗透
                + C2隐藏技术
            2. 权限维持
                + Payload Generation、Loader、Tricks
        >> 信息收集
            1. 空间测绘
                + 添加几个工具、文章、引擎
            2. 信息收集
                + SAST资源、网站在线信息收集工具
        >> 语言安全
            1. 语言安全
                + 添加基本内容
            2. 云安全
                + 添加案例
        >> OS安全
            >> 实验
                1. NTLM中继
                    + 添加基本内容
                2. Responder欺骗
                    + 添加基本内容
            1. Windows安全
                + RDP攻击利用手段、hash 本地利用手段、工作组环境下利用手段
        >> Web安全
            >> Web_Generic
                1. SSRF
                    + 绕过方法
                2. Upload
                    + 添加基本内容
                3. Web_Generic
                    + 添加案例、工具
            >> Web_Tricks
                1. JWT安全
                    + 绕过思路
            1. BS-Exploits
                + 添加 POC
            2. IDOR
                + 各类 Tips
        >> Reverse
            1. Reverse
                + 添加基本内容

Integrated

    >> Linux
        >> 实验
            1. Docker
            + 添加基本内容
    >> Windows
        1. Secure-Win
            + 防御密码抓取
            + 防御Responder欺骗
  • Loading branch information
No-Github committed Mar 22, 2021
1 parent 2b21706 commit 7503b37
Show file tree
Hide file tree
Showing 217 changed files with 4,604 additions and 1,299 deletions.
16 changes: 12 additions & 4 deletions 1earn/Develop/Web/笔记/认证&授权.md
Original file line number Diff line number Diff line change
Expand Up @@ -261,11 +261,18 @@ header.payload.signature
# OAuth
OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 OAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 OAuth 是安全的。OAuth 是 Open Authorization 的简写。OAuth 已经有 2.0 版本了,2007 年发布了 OAuth1.0 协议,2011 年发布会了 OAuth2.0,2.0 与 1.0 之间不兼容。OAuth2.0 是目前最流行的授权机制,用来授权第三方应用,获取用户数据。
**相关文章**
- [理解OAuth 2.0](https://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html)
- [OAuth 2.0 的一个简单解释](https://www.ruanyifeng.com/blog/2019/04/oauth_design.html)
- [关于 OAuth2.0 安全性你应该要知道的一些事](https://www.chrisyue.com/security-issue-about-oauth-2-0-you-should-know.html)
- [OAuth 2.0 的四种方式](https://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html)
- [OAuth2.0 认证](https://mp.weixin.qq.com/s/JYb26bWL99i46Bc77rCKUQ)
**OAuth 的应用举例**
开发者 A 注册某 IT 论坛后,发现可以在信息栏中填写自己的 Github 个人信息和仓库项目,但是他又觉得手工填写十分麻烦,但是直接提供 Github 账户和密码给论坛又是非常危险的事情。开发者 A 发现在该论坛处,可以点击 “导入” 按钮,授权该论坛访问自己的 Github 账户并限制其只具备读权限。这样一来, Github 中的所有仓库和相关信息就可以很方便地被导入到信息栏中,账户隐私信息也不会泄露。
**OAuth 如何授权**
Expand All @@ -275,7 +282,8 @@ OAuth 引入了一个授权层,用来分离两种不同的角色:客户端
RFC 6749 标准定义了获得令牌的四种授权方式
> 注意,不管哪一种授权方式,第三方应用申请令牌之前,都必须先到系统备案,说明自己的身份,然后会拿到两个身份识别码:客户端 ID(client ID)和客户端密钥(client secret)。这是为了防止令牌被滥用,没有备案过的第三方应用,是不会拿到令牌的。
- 授权码(authorization-code) : 第三方应用先申请一个授权码,然后再用该码获取令牌。
- 授权码(authorization-code) : 第三方应用先申请一个授权码,然后再用该码获取令牌,适用于所有有 Server 端的应用,如 Web 站点、有 Server 端的手机客户端
这种方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信都在后端完成。这样的前后端分离,可以避免令牌泄漏。
Expand Down Expand Up @@ -347,7 +355,7 @@ RFC 6749 标准定义了获得令牌的四种授权方式
上面 JSON 数据中,`access_token` 字段就是令牌,A 网站在后端拿到了。
- 隐藏式/简化模式(implicit): 允许直接向前端颁发令牌。这种方式没有授权码这个中间步骤,所以称为(授权码)"隐藏式"(implicit)
- 隐藏式/简化模式(implicit): 允许直接向前端颁发令牌。这种方式没有授权码这个中间步骤,所以称为(授权码)"隐藏式"(implicit),结合移动应用或 Web App 使用.
有些 Web 应用是纯前端应用,没有后端。这时就不能用上面的方式了,必须将令牌储存在前端。
Expand Down Expand Up @@ -385,7 +393,7 @@ RFC 6749 标准定义了获得令牌的四种授权方式
这种方式把令牌直接传给前端,是很不安全的。因此,只能用于一些安全要求不高的场景,并且令牌的有效期必须非常短,通常就是会话期间(session)有效,浏览器关掉,令牌就失效了。
- 密码式(password):如果你高度信任某个应用,RFC 6749 也允许用户把用户名和密码,直接告诉该应用。该应用就使用你的密码,申请令牌,这种方式称为"密码式"(password)
- 密码式(password):如果你高度信任某个应用,RFC 6749 也允许用户把用户名和密码,直接告诉该应用。该应用就使用你的密码,申请令牌,这种方式称为"密码式"(password),例如同个组织的内部或外部应用.
- 第一步
Expand All @@ -411,7 +419,7 @@ RFC 6749 标准定义了获得令牌的四种授权方式
这种方式需要用户给出自己的用户名/密码,显然风险很大,因此只适用于其他授权方式都无法采用的情况,而且必须是用户高度信任的应用。
- 客户端凭证(client credentials) : 命令行下请求令牌
- 客户端凭证(client credentials) : 命令行下请求令牌,比如百度 API Store.
- 第一步
Expand Down
23 changes: 23 additions & 0 deletions 1earn/Develop/版本控制/Git学习笔记.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
* [撤销Git操作](#撤销git操作)
* [跳转](#跳转)
* [子模块](#子模块)
* [大小写](#大小写)

* **[远程操作](#远程操作)**
* [clone](#clone)
Expand Down Expand Up @@ -386,6 +387,17 @@ $ git push origin master

---

## 大小写

git 默认对于文件名大小写是不敏感的,所以你修改了首字母大写,但是 git 并没有发现代码任何改动.

可以配置 git 使其对文件名大小写敏感
```bash
git config core.ignorecase false
```

---

# 远程操作

![](../../../assets/img/Develop/版本控制/git/3.png)
Expand Down Expand Up @@ -545,6 +557,17 @@ git push --force origin
git push --force origin # 如果报错可以强行推送
```

- **重建版本库**

```bash
rm -rf .git
git init
git add .
git cm "first commit"
git remote add origin <your_github_repo_url>
git push -f -u origin master
```

- **Github 进行 fork 后如何与原仓库同步**

```bash
Expand Down
52 changes: 47 additions & 5 deletions 1earn/Integrated/Linux/Power-Linux.md
Original file line number Diff line number Diff line change
Expand Up @@ -417,6 +417,11 @@ vim AdGuardHome.yaml
./AdGuardHome -s restart
```

**Tips**

配合下列项目获得更好的体验
- https://github.com/privacy-protection-tools/anti-AD

---

## butterfly
Expand Down Expand Up @@ -2280,11 +2285,12 @@ forever -h # 查看帮助

- **源代码编译安装**

自己下载好包 https://nginx.org/en/download.html,传到服务器上,这里以1.14.2 举例
自己下载好包 https://nginx.org/en/download.html ,传到服务器上,这里以 1.16.1 举例

```bash
tar -zxvf nginx-1.14.2.tar.gz
cd nginx-1.14.2/
wget https://nginx.org/download/nginx-1.16.1.tar.gz
tar -zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1/
./configure
make
make install
Expand Down Expand Up @@ -2486,7 +2492,11 @@ rabbitmqctl set_user_tags [账号] administrator # 修改用户角色
add-apt-repository universe
apt-get update
apt-get install -y git build-essential libxslt-dev python-dev python-virtualenv python-babel zlib1g-dev libffi-dev libssl-dev vim lrzsz unzip
sudo -H apt-get install -y \
python3-dev python3-babel python3-venv \
uwsgi uwsgi-plugin-python3 \
git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev \
shellcheck
```

安装 searx
Expand Down Expand Up @@ -5115,12 +5125,14 @@ setenforce 0 # 关闭 selinux
```bash
docker version # 查看 docker 版本
docker run -it [docker_id] bash # 运行一个容器实例
docker run -d -p 物理端口1:容器端口1 -p 物理端口2:物理端口2 --name 容器名 <image-name>:<tag>
docker run --name=test -p 1234:1234 -itd ubuntu /bin/bash
# 使用本地 1234 端口连接 docker 的 1234 端口运行 ubuntu 镜像,并将其临时命名为 test
# test:为临时名称,可以自定义填写。
# -p: 第一个端口为本机的端口,第二个端口为 Docker 的端口。
# -itd:意思是在后台运行,交互式运行,并且输出当前的信息
# /bin/bash:调用 Shell
docker run -d -p 8080:80 -v 本机路径:容器路径 --name 容器名 <image-name>:<tag> # 磁盘挂载
docker stop [docker_name/docker_id] # 停止容器
docker start [options] container [container...] # 启动一个或多个已停止的容器
docker exec -it [docker_id] bash # 获取容器的 shell
Expand All @@ -5145,6 +5157,33 @@ setenforce 0 # 关闭 selinux
docker rmi -f [docker_image_id] # 删除本地的 docker 镜像
```
- 打包上传
```bash
# 容器打包镜像
docker commit -a "作者" -m "备注" 容器ID <image-name>:<tag>
# 将容器打包成规范的镜像
docker commit -m <exiting-Container> <hub-user>/<repo-name>[:<tag>]
# 登录 Docker Hub
docker login
# 上传推送镜像到公共仓库
docker push <hub-user>/<repo-name>:<tag>
# 当前目录的 Dockerfile 创建镜像
docker build -t <image-name>:<tag> .
# 指定文件构建镜像
docker build -f /path/to/a/Dockerfile -t <image-name>:<tag> .
# 将镜像保存 tar 包
docker save -o image-name.tar <image-name>:<tag>
# 导入 tar 镜像
docker load --input image-name.tar
```
- 默认情况下,只有管理员权限能够运行 docker 命令.考虑到安全问题,你不会想用 root 用户或使用 sudo 来运行 Docker 的.要解决这个问题,你需要将自己的用户加入到 docker 组中.
```bash
usermod -a -G docker $USER
Expand All @@ -5159,6 +5198,9 @@ setenforce 0 # 关闭 selinux
**加速**
- [Docker 镜像加速](../../Plan/Misc-Plan.md#Docker)
**实验**
- [Docker](./实验/Docker.md)
**常见报错**
- Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
```bash
Expand Down Expand Up @@ -5252,7 +5294,7 @@ docker-compose exec [service] sh # 进入容器内
```bash
docker pull portainer/portainer # 拉取镜像
docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer # 部署
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce # 部署
```
访问 ip:9000 进入到设置密码界面.
Expand Down
2 changes: 1 addition & 1 deletion 1earn/Integrated/Linux/Secure-Linux.md
Original file line number Diff line number Diff line change
Expand Up @@ -522,7 +522,7 @@ chkconfig --list
通过 rpm 自带的 -Va 来校验检查所有的 rpm 软件包,查看哪些命令是否被替换了
```bash
rpm -Va > rpm.log
rpm -Va
# 如果一切均校验正常将不会产生任何输出,如果有不一致的地方,就会显示出来,输出格式是8位长字符串,每个字符都用以表示文件与RPM数据库中一种属性的比较结果 ,如果是. (点) 则表示测试通过。
验证内容中的8个信息的具体内容如下:
Expand Down
74 changes: 51 additions & 23 deletions 1earn/Integrated/Linux/Speed-Linux.md
Original file line number Diff line number Diff line change
Expand Up @@ -267,8 +267,8 @@ souce ~/.config/fish/config.fish

# e.g.
sort namesd.txt | uniq # 使用 uniq 命令从文件中删除重复项
sort namesd.txt | uniq c # 使用 Uniq 显示重复的行数
sort namesd.txt | uniq cd # 使用 Uniq 仅显示重复的行
sort namesd.txt | uniq -c # 使用 Uniq 显示重复的行数
sort namesd.txt | uniq -cd # 使用 Uniq 仅显示重复的行
grep name /proc/cpuinfo | uniq # 查询 cpuinfo 信息合并成一条
cat /proc/cpuinfo | grep name |cut -f2 -d ":" | uniq # 查询 cpuinfo 信息合并成一条并只输出: 后的内容
```
Expand All @@ -290,8 +290,8 @@ souce ~/.config/fish/config.fish

# e.g.
find ~ -name '*.tmp' -print0 | xargs -0 rm -f # 尝试使用 rm 删除所有 tmp 文件
find /etc -name "*.conf" | xargs ls l # 获取 /etc/ 下所有 *.conf 文件的列表
cat url-list.txt | xargs wget c # 如果需要从文件读取要下载的 URL 列表
find /etc -name "*.conf" | xargs ls -l # 获取 /etc/ 下所有 *.conf 文件的列表
cat url-list.txt | xargs wget -c # 如果需要从文件读取要下载的 URL 列表
find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz # 找出所有 jpg 图像并将其存档
ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory # 将所有图像复制到外部硬盘驱动器
```
Expand All @@ -303,8 +303,8 @@ souce ~/.config/fish/config.fish
# e.g.
ls | tee file # 将输出既写入屏幕(stdout),又写入文件
ls | tee file1 file2 file3 # 输出写入多个文件
ls | tee a file # 追加而不是覆盖
crontab -l | tee crontab-backup.txt | sed 's/old/new/' | crontab # 对 crontab 条目进行备份,并将 crontab 条目作为 sed 命令的输入,由 sed 命令进行替换。替换后,它将被添加为一个新的cron作业。
ls | tee -a file # 追加而不是覆盖
crontab -l | tee crontab-backup.txt | sed 's/old/new/' | crontab - # 对 crontab 条目进行备份,并将 crontab 条目作为 sed 命令的输入,由 sed 命令进行替换。替换后,它将被添加为一个新的cron作业。
```

**其他符号工具**
Expand All @@ -317,6 +317,13 @@ tail # 显示文件中的尾部内容.默认下,显示文件的末尾 10 行内

## 会话

**清屏**
```bash
clear # 刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息
reset # 完全刷新终端屏幕
printf "\033c"
```

**查看用户信息**
```bash
id
Expand All @@ -333,6 +340,7 @@ Ctrl+R # 搜索历史命令
Ctrl+P # 切换上一个命令
alt+F1-F6 # 切换虚拟控制台
Alt+F7 # 图形界面
Ctrl+L # 清除命令
```

**screen**
Expand Down Expand Up @@ -552,7 +560,7 @@ which <Command> # 指令搜索,查找并显示给定命令的绝对路径
# e.g.
find / -name conf* # 查找根目录及子目录下所有 conf 文件
find / -name site-packages -d # 查找 site-packages 目录
find . mtime -2 # 查找最近两天在当前目录下修改过的所有文件
find . -mtime -2 # 查找最近两天在当前目录下修改过的所有文件
find / -type f -size + 100M # 列出系统中大于100MB的所有文件
```

Expand Down Expand Up @@ -1925,6 +1933,8 @@ vim /etc/crontab # 编辑系统任务调度的配置文件
30 6 */10 * * ls # 意思是每月 1、11、21、31 日的 6:30 执行一次 ls 命令
```

可以使用在线的 CRON 表达式工具辅助 : https://tool.lu/crontab/

**at**

> 在特定的时间执行一次性的任务
Expand Down Expand Up @@ -2113,7 +2123,7 @@ setfacl -b <File/Folder> # 删除 ACL
ps -l # 长格式显示详细的信息
ps -a # 显示一个终端的所有进程,除会话引线外
ps -A # 显示所有进程信息
ps u root # 指定用户的所有进程信息
ps -u root # 指定用户的所有进程信息
ps -e # 显示所有进程信息
ps aux # 查看系统中所有的进程显示所有包含其他使用者的行程
ps -axjf # 以程序树的方式显示
Expand Down Expand Up @@ -2162,6 +2172,12 @@ watch <Command> # 以周期性的方式执行给定的指令,指令输出以全
killall <PID> # 使用进程的名称来杀死进程
```

- pkill
```bash
# pkill 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程
pkill -9 php-fpm # 结束所有的 php-fpm 进程
```

```bash
ctrl+z # 将前台运行的任务暂停,仅仅是暂停,而不是将任务终止.
bg # 转后台运行
Expand Down Expand Up @@ -2261,12 +2277,34 @@ echo 'kernel.nmi_watchdog=0' >>/etc/sysctl.conf # 重启自动关闭

## 设备管理

**查看硬件信息**
更多内容见笔记 [信息](./笔记/信息.md)

### 内存

**虚拟内存**

```bash
free -h # 查看 swap 分区
vmstat
swapon -s
```

如果机器没有安装 swap 分区可以自己分配一个
```bash
lspci # 打印有关系统中所有 PCI 总线和设备的详细信息
lsmod # 显示可加载内核模块
lsusb # 查看 usb 设备
lsblk # 列出所有可用块设备的信息
# 创建一个swap文件,大小为1G
dd if=/dev/zero of=/home/f8xswap bs=1M count=1024

# 将文件格式转换为swap格式的
mkswap /home/f8xswap

# 把这个文件分区挂载swap分区
swapon /home/f8xswap

```

长期挂载
```
echo "/home/f8xswap swap swap default 0 0" >> /etc/fstab
```

### 磁盘
Expand Down Expand Up @@ -2296,16 +2334,6 @@ fdisk /dev/sdb # 创建系统分区
w # 写入分区表
```

如果机器没有安装 swap 分区可以自己分配一个
```bash
dd if=/dev/zero of=/home/swap bs=1024 count=512000
/sbin/mkswap /home/swap
/sbin/swapon /home/swap
```
```bash
free -h # 查看 swap 分区
```

**挂载**
```bash
cat /etc/fstab
Expand Down
Loading

0 comments on commit 7503b37

Please sign in to comment.