1 渗透基础
目录
基础前沿
1 vulhub环境搭建
1 proxychains工具:编辑配置文件
2 docker
docker环境搭建
配置docker的代理:
2 nginx编译安装--FPM
1 php.ini
2 php-fpm
3 nginx
4 nginx php-fpm php
1 基本角色分工
2. 请求处理全流程
步骤 1:客户端发送请求
步骤 2:Nginx 接收请求
步骤 3:Nginx 配置示例
步骤 4:Nginx 与 PHP-FPM 通信
步骤 5:PHP-FPM 处理请求
步骤 6:PHP 脚本执行
步骤 7:结果返回
步骤 8:Nginx 返回响应
总结
3 DNS
命令解释
1 dig
2 nslookup
DNS的解析过程
基础前沿
1 vulhub环境搭建
1 proxychains工具:编辑配置文件
vim /etc/proxychains.conf
查看代理端口号:7890
查看本机网卡,一般虚拟机都是vmnet8:
设置配置文件,改代理IP和端口号
测试: proxychains curl http://www.google.com
后面又去访问了google发现不行了,但是访问其他的外网可以正常访问
2 docker
docker环境搭建
需要下载以下的包,如果下载失败可以先apt upgrade 或者 --fix-missing解决问题
sudo apt-get install --fix-missing docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
配置docker的代理:
先创建配置目录
mkdir -p /etc/systemd/system/docker.service.d
写代理:
sudo tee /etc/systemd/system/docker.service.d/proxy.conf <<-'EOF'
[Service]
Environment="HTTP_PROXY=http://192.168.37.1:7890"
Environment="HTTPS_PROXY=http://192.168.37.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,192.168.37.0/24" # 不代理本地和局域网地址 EOF
测试:拉取环境
docker ps -a
docker rm -f $(docker ps -aq)
docker images
docker rmi $(docker images | awk '{print $3}')
删除第三列的ID
然后构建镜像环境:
docker compose up -d
部署完成,查看镜像和容器:
docker ps -a
docker images
本地访问查看是否成功:
ok!部署完成
进入容器:
docker exec -it 9b7a360a3476 /bin/bash
这里有一个.dockerenv文件,说明我是在docker容器里面,如果说拿下一个网站有这个说明是在容器里面,并没有进入真实的物理机(所以有docker逃逸)
因为docker是最小化的安装,所以他的很多命令都没有
修改docker文件的方法:
1,直接下载软件安装包或者更新源
apt-get upgrade
2,将文件名复制出来,在本地进行修改
docker cp 9b7a360a3476:/var/www/html/color.php /tmp
打开进行修改再复制回去,因为cp是覆盖
3,vscode直接修改
2 nginx编译安装--FPM
1 php.ini
2 php-fpm
3 nginx
进入此配置目录
修改nginx的配置文件,配置与php联动的文件
root@yang:/usr/local/nginx/conf#vim nginx.conf
4 nginx php-fpm php
1 基本角色分工
- Nginx:高性能的 Web 服务器和反向代理服务器,负责接收客户端请求、静态文件处理和请求转发。
- PHP-FPM:PHP FastCGI 进程管理器,负责管理 PHP 进程池并处理 PHP 脚本的执行。
- PHP:脚本语言,执行 PHP 代码并生成动态内容
2. 请求处理全流程
步骤 1:客户端发送请求
用户通过浏览器或其他客户端工具(如 curl
)访问网站,例如请 求 http://example.com/index.php
。
步骤 2:Nginx 接收请求
Nginx 作为 Web 服务器监听 80/443 端口,接收到请求后根据配置文件(nginx.conf
中的配置)决定如何处理:
- 静态文件请求:直接返回 HTML、CSS、JS、图片等静态资源。
- PHP 脚本请求:通过
fastcgi_pass
指令将请求转发给 PHP-FPM 处理
步骤 3:Nginx 配置示例
步骤 4:Nginx 与 PHP-FPM 通信
Nginx 通过 FastCGI 协议 将请求转发给 PHP-FPM:
- 通信方式:
- TCP 套接字(如
127.0.0.1:9000
):适合跨服务器通信或调试。 - Unix 套接字(如
/run/php/php7.4-fpm.sock
):性能更高,适合本地通信。
- TCP 套接字(如
- 传递参数:Nginx 将请求信息(如
SCRIPT_FILENAME
、QUERY_STRING
、HTTP_HOST
等)封装为 FastCGI 参数传递给 PHP-FPM。
步骤 5:PHP-FPM 处理请求
PHP-FPM 接收到请求后:
- 进程池管理:从空闲进程池中选择一个 PHP 进程(若没有则创建新进程,需配置允许)。
- 执行 PHP 脚本:PHP 进程读取并执行指定的 PHP 文件(如
index.php
)。 - 环境准备:PHP 进程会加载
php.ini
配置,并根据脚本需求加载扩展(如mysqli
、redis
等)。
步骤 6:PHP 脚本执行
PHP 解释器执行脚本,可能涉及:
- 数据库查询(如 MySQL、PostgreSQL)。
- 文件读写。
- 调用第三方 API。
- 生成动态内容(如 HTML、JSON)。
步骤 7:结果返回
PHP 执行完成后,将生成的内容(如 HTML 页面)返回给 PHP-FPM,PHP-FPM 再通过 FastCGI 协议将结果返回给 Nginx。
步骤 8:Nginx 返回响应
Nginx 收到 PHP-FPM 的响应后,添加 HTTP 头(如 Content-Type
、Cache-Control
),并将内容返回给客户端浏览器。
总结
- Nginx 负责请求分发:静态文件自己处理,PHP 脚本转发给 PHP-FPM。
- PHP-FPM 管理进程池:提高 PHP 脚本执行效率,避免频繁创建进程。
- PHP 专注业务逻辑:执行代码并生成动态内容。
3 DNS
命令解释
此节介绍了DNS查询常用命令nslookup和dig。nslookup可进行正向解析、查询指定数据类型和TTL值等,支持指定域名服务器;dig能正向、反向解析,查询特定记录及追踪解析过程。nslookup适合基本查询和诊断,dig功能更强大全面。
1 dig
1.正向解析:使用 dig 域名 @server-ip 的格式,其中server-ip是指定的DNS服务器IP地址。
2.反向解析:使用 dig –x ip @server-ip 的格式,可以查询指定IP地址对应的域名。
3.查询特定类型的记录:使用 dig 域名 type 的格式,其中type是想要查询的记录类型,如A、AAAA、MX、NS、SOA等。
4.追踪解析过程:使用 dig +trace 域名 的格式,可以追踪域名的解析过程,显示从根域名服务器开始到最终权威服务器的解析路径。
2 nslookup
1.正向解析:直接输入 nslookup 域名,例如 nslookup www.baidu.com,即可查询指定域名的IP地址。
2.查询域名制定数据类型:使用 nslookup type=类型 域名 的格式,其中类型可以是A、AAAA、MX、NS、SOA等,用于查询指定类型的记录。 3.查询域名TTL值:使用 nslookup –d 域名 的格式,可以查询指定域名的TTL值。 此外,nslookup还支持指定域名服务器进行查询。例如,nslookup server 8.8.8.8 可以将Google的公共DNS服务器8.8.8.8设置为默认服务器进行查询。
nslookup更适合基本的DNS查询和网络诊断,而dig则提供了更为深入和全面的DNS查询和分析功能。
DNS的解析过程
①客户机向其本地域名服务器发出DNS请求报文。
②本地域名服务器收到请求后,查询本地缓存,若没有该记录,则以DNS客户的身份向根域名服务器发出解析请求。
③根域名服务器收到请求后,判断该域名属于.com域,将对应的顶级域名服务器dns.com的IP地址返回给本地域名服务器。 ④本地域名服务器向顶级域名服务器dns.com发出解析请求报文。
⑤顶级域名服务器dns.com收到请求后,判断该域名属于abc.com域,因此将对应的授权域名服务器dns.abc.com的IP地址返回给本地域名服务器。
⑥本地域名服务器向授权域名服务器dns.abc.com发起解析请求报文。
⑦授权域名服务器dns.abc.com收到请求后,将查询结果返回给本地域名服务器。
⑧本地域名服务器将查询结果保存到本地缓存,同时返回给客户机