1.代理
·首先关注几个点:端口,网卡,协议,服务


·判断网络连通性的方法
bash
ping xx.xx.xx.xx
nc -v/-uv/-zv/-v -w 5(s) example.com 80/80 443/8080-8090
curl xx.xx.xx.xx:80
ping在网络层 ,检测的是基础连通性,不通可能是:ip错误、禁ping、主机网络错误
nc是在传输层,测试tcp连接,不通可能是:火墙、ACL、端口错误、端口无服务、只监听本地(绑在127.0.0.1而不是0.0.0.0)
nc下载并将nc.exe所在文件路径添加至环境变量:
https://eternallybored.org/misc/netcat/
nc测试两台主机之间的连通性:
bash
#目标主机
nc -l 12345
#源主机
echo "Hello, world!" | nc <target_host> 12345
curl是在应用层,测试web服务是否响应http请求,不通可能是:服务异常、需要https、waf。
可能遇到的情况:
MySQL的user表中的host字段是用来控制用户可以从哪些主机/IP地址连接到MySQL服务器的。
%是通配符,如果你的ip不在host字段中,访问MySQL服务器自然是不通的。
sql
-- 只允许从特定IP连接
'user1'@'192.168.1.100'
-- 允许从网段连接(通配)
'user1'@'192.168.1.%'
'user1'@'192.168.%.%'
-- 允许从域名连接
'user1'@'%.example.com'
·到xx.xx.xx.xx不通,该如何debug?
确认ip可达:ping,tracert/traceroute(windows/linux)
服务开启:telnet
自身网络正常:排除dns:nslookup、dig
·区分正反向代理技巧
渗透层面:第一次连接由服务器连客户端->反向
开发层面:隐藏服务器->反向


·ipcinfig查看网络配置的时候常常能看到下面三个网络适配器(网络接口):
VMnet0:桥接模式(等同于同网段创建了一台物理机)
VMnet1:仅主机模式(完全无法访问外部互联网)
VMnet8:NAT模式(虚拟机可以通过宿主机的NAT访问外部互联网)
·别人如何访问我的NAT虚拟机,端口转发:

端口映射就是将内网中的主机的一个端口映射到外网主机的一个端口,提供相应的服务。当用户访问外网IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。
在NAT设置里添加端口映射规则,将虚拟机的端口映射到宿主机,局域网内其他主机 访问http://<宿主机IP>:<映射的宿主机端口>,互联网用户 还需要在上级路由器或云防火墙中配置公网IP的端口转发,访问http://<公网IP>:<映射的公网端口>。
以VMware Workstation(17.0.0)为例:



·代理常用工具
- ssh:正向、端口映射都可以
- frp:反向代理,稳定,轻。http/socks5
- nps:反向代理,稳定,重一点。http/socks5
- Venom:好用,多级,没有持久化。socks5
- vshell:远控、持久化、代理(本质好像是nps
- suo5:正向代理,性能高,支持java、.net、php,支持内存马。socks5
- Neo-reGeorg:正向代理,吃性能,全语言,支持在服务端监听端口做代理。socks5/端口转发
- Behinder:自带socks5代理。不靠谱
- 哥斯拉:自带socks5代理。
- shadowsocks:也可以做加密隧道
主机上通用代理
Linux:proxychains4,Windows:proxifier
Burp:socks5代理(下游),可以浏览器走Burp,Burp走socks5
浏览器:Zero Omega
·理解代理本质
数据库、SSH、FTP等的本质:开端口允许其他人访问
代理本质:打破网络隔离
e.g frp:在攻击机上起frps,在靶机上起frpc;注意修改ini文件,在使用其他服务时要配置代理走这个隧道。
2.名词概念理解
·理解网卡
网卡本身是一个物理硬件,有它的mac地址。
vpn软件会建立一个虚拟网卡,写进路由表:为了"欺骗"操作系统并接管所有的网络流量(分割)。e.g. openvpn会配置内网ip的路由
当OS识别到一个网卡(无论是物理的还是虚拟的),它会为其创建一个对应的网络接口(interface,如'eth0'),网络接口可以配置对应的IP地址(可以有多个,别名)。
如果网卡不配置IP,仅能在同一局域网内进行通信(ARP)。
当需要与不同网段的设备通信时,就必须用到IP地址和网关。
bash
route print
路由表中metric(跃点数)值越小越优先
内外网常规架构:双网卡/多网卡
比如内网网卡配置ip如192.168.1.1,外网网卡配置为203.0.113.10
如果只用一张网卡处理内外网流量,则需要划分多个虚拟接口,每个接口有自己的IP地址,并关联到不同的VLAN。
·理解子网掩码
子网掩码(用连续的1表示网络位,连续的0表示主机位)的作用是告诉计算机和网络设备:IP地址中的那一部分是"网络位",哪一部分是主机位。
网络号相同=在同一网段/子网
当本机IP想要访问目的IP时,首先将两个IP与各自的子网掩码进行&运算然后对比,如果相同只需要(ARP广播->获取MAC地址->以太网帧直接发送)。
如果不同则会发送到默认网关(路由器),然后查询路由表寻找下一条直到调到目的IP。
网关是一个网络节点(通常是一台专用的硬件设备或服务器软件),充当两个不同网络之间的"关卡"或"翻译"。
·理解局域网
LAN:局域网
WLAN:无线局域网
VLAN:虚拟局域网
·理解nginx
Nginx(发音为"engine-x")是一款高性能的Web服务器和反向代理服务器。它也可以作为负载均衡器和HTTP缓存,广泛应用于Web应用的部署中。Nginx最初由俄罗斯的程序员Igor Sysoev开发,目的是解决C10k问题(即如何高效处理成千上万的并发连接),目前已成为全球最流行的Web服务器之一。
Nginx的主要功能
-
Web服务器:Nginx能够服务静态文件(如HTML、CSS、JavaScript、图片等),响应用户的HTTP请求。
-
反向代理:Nginx常用作反向代理服务器,将客户端的请求转发到其他服务器(如应用服务器、数据库服务器等)。它还可以进行负载均衡,分发流量到多个服务器实例。
-
负载均衡:Nginx可以将流量根据不同的策略(如轮询、IP哈希、最少连接等)分配给多个后端服务器,从而实现高可用性和可扩展性。
-
HTTP缓存:Nginx具有内建的缓存功能,可以缓存HTTP响应,减少服务器的压力并提高响应速度。
-
TLS/SSL终端:Nginx支持SSL/TLS加密,可以作为HTTPS的终端,处理加密通信,保证数据安全。
-
WebSocket支持:Nginx也可以用于WebSocket通信,它能高效地处理长时间保持连接的应用场景(例如实时聊天、在线游戏等)。
-
HTTP/2支持:Nginx从1.9.5版本开始支持HTTP/2,改进了传输性能和效率,减少了延迟。
Nginx的优点
-
高性能:Nginx采用事件驱动模型,能够在单个线程中处理数千个并发连接,性能非常高,适合高流量网站。
-
轻量级:相比传统的Apache等Web服务器,Nginx的资源消耗更小,启动速度更快。
-
模块化:Nginx具有模块化的设计,用户可以根据需求启用不同的功能模块,如负载均衡、缓存、SSL等。
-
配置简单:Nginx的配置文件采用简单的文本格式,易于理解和修改。
常见的使用场景
-
反向代理和负载均衡:Nginx在大规模分布式系统中,作为反向代理和负载均衡器,能够有效地分担后端服务器的压力,提供高可用性。
-
内容分发网络(CDN):Nginx的缓存功能非常适合用作CDN的边缘服务器,提升资源的访问速度。
-
API网关:Nginx可以作为API网关,处理API请求的路由、认证和负载均衡。
-
静态资源服务器:Nginx非常适合用来提供静态文件(如图片、视频、HTML页面等),因为它能非常高效地处理这些资源。
Nginx和Apache的区别
-
架构设计:Nginx使用事件驱动架构,处理请求时不需要为每个请求创建新的线程或进程,这使得它能够在高并发情况下保持高效性能。而Apache采用多进程或多线程模型,每个请求通常会分配一个独立的进程或线程,相对消耗更多的系统资源。
-
性能:Nginx通常在处理大量并发连接时表现更好,而Apache则适用于较为复杂的应用场景,支持更多的功能和灵活性。
-
配置方式:Nginx的配置文件结构简洁清晰,而Apache的配置较为复杂。
总的来说,Nginx是一款非常适合高并发、需要高效处理静态资源和反向代理的场景。它的高性能、低资源占用和丰富的功能使它成为现代Web应用架构中不可或缺的一部分。
·理解http代码
5xx server(500内部服务器错误502错误网关503服务不可用504网关超时)
4xx client(400错误请求,401未授权,403禁止访问,404未找到)
3xx 重定向
2xx ok
1xx 请求已收到,继续处理