目录
-
- 什么是代理
-
- 正向代理
- 反向代理
- ew
-
- ew正向代理
- ew反向代理
- ssh
-
- ssh正向代理
-
- 语法
- 演示
- ssh反向代理
- frp内网穿透
-
-
- 服务器端(1)
- 客户端(1)
- 服务端(2)
- 客户端(2)
-
- DNS隧道
- HTTPS隧道
- 利用知名网站的子域名
什么是代理
客户端无法直接请求服务器,只能将请求发往转发代理服务器(简称代理服务器),代理服务器将请求转发给服务器,接收到服务器响应后再将响应转发回客户端。适用于客户端从内部网络访问外部网络时,可能由于防火墙的存在无法直接访问外网,这时需要借助转发代理服务器访问外部网络
正向代理
内网不能直接访问外网,要通过代理服务器访问外网。
此时是代理服务器
去访问服务器
,用户知道我要请求哪个服务器。但是服务器不知道是哪个用户请求的,用户被隐藏了。
反向代理
服务器在内网,用户访问不了。于是服务器把自己的信息放到代理服务器上
,然后用户是去访问代理服务器。比如我用我的个人电脑做服务器,搭个网站,可以说我的服务器在内网。显然不能直接从公网上访问到我的网站。这时就需要一个反向代理了。
假设代理服务器的80端口只能从内网访问,8080端口能从公网访问。
用户从公网访问代理服务器的8080端口,上一段说了,服务器将自己的信息放到代理服务器上
。代理服务器就在自个身上找,看用户请求的服务器有没有在自己身上留信息。
有的话,代理服务器将用户的请求通过nat等方式转发给80端口,然后代理服务器的80端口去访问处在内网的服务器。
如果用户请求的服务器没有再代理服务器上留下信息。那就不好意思,访问不了。(很显然,我用代理服务器给我内网里的服务器做了代理,所以你能从公网通过代理服务器来访问我的服务器。但是你不能通过这个代理服务器上去访问别人在内网上的服务器吧,他又没在代理服务器上做代理)
ew
-l 指定要监听的本地端口
-d 指定要反弹到的机器 ip
-e 指定要反弹到的机器端口
-f 指定要主动连接的机器 ip
-g 指定要主动连接的机器端口
-t 指定超时时长,默认为 1000
ew正向代理
kali ip : 172.16.11.83
windows 1 ip :192.168.177.134
windows 2 ip :192.168.0.114
直接用windows 2(192.168.0.114)远程连接windows 1(192.168.177.134)不行。
于是win 2访问kali,kali访问win 1.间接达到了目的。
./ew_for_Linux32 -s lcx_tran -l 1080 -f 192.168.177.134 -g 3389
………………
ew反向代理
./ew_for_linux64 -s lcx_listen -l 1080 -e 8080
ew_for_Win.exe -s lcx_slave -d 192.168.0.114 -e 8080 -f 192.168.177.134 -g 3389
参考资料
https://blog.csdn.net/ws13129/article/details/94445378
https://www.dazhuanlan.com/2019/12/09/5dee274f7ea0d/?cf_chl_jschl_tk=58d918e555ad103b0904672529e4a4934315b53c-1601314345-0-ATMs1q7lqiUsMuHW4PYa5DJxYMDjI9Y1sQCHDu9EPxt_JIgezyh6wLP-4N9fp3glhSsdLlXpdHNcG6768r5R7J0faIp-_g4gDKl8MJWidMXNnE-UZzjHMvaSbUU3ke0xgTgJo3oKmLNkyTPYtE4-3P4r0_4wGqqnn9462FH5ZbRJqLvghisABV2XZYmEefXpJBW3qm2rh1LJv5Kxz6q-cCvrNWDvfn6qxC47FgduwZgbO2usj7k6VCdB5PppBJ6l1kW6Z9r4QyfnW4giO21ByeVIns5mXR7I4RjcvsP8254qM4G-01LB4pV55IGc__0I-Q
ssh
centos ip :172.16.11.78
kali ip:172.16.11.83
首先,centos开启web服务
这里在网站根目录下新建一个123.html文件
内容是 i am 172.16.11.78.也就是centos的ip地址。
ssh正向代理
语法
ssh -L [客户端IP或省略]:[客户端端口]:[服务器侧能访问的IP]:[服务器侧能访问的IP的端口] [登陆服务器的用户名@服务器IP]
-g:允许远程主机连接主机(host)的转发端口;
-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地主机指定的端口 //即反向代理
-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口 //即正向代理
-p 指定远程主机的端口
演示
在kali里输入
ssh -CfNg -L 172.16.11.83:80:172.16.11.78:80 root@172.16.11.78
(直接访问172.16.11.78,访问不了。172.16.11.83可以访问172.16.11.78)
此时,在浏览器里访问172.16.11.83,显示的是172.16.11.78的内容。
ssh反向代理
/etc/ssh/sshd_config
GatewayPorts yes
ssh -R 80:192.168.177.134:22 root@47.*.*.232
Ssh root@localhost –p 80
参考
http://www.toxingwang.com/linux-unix/2581.html
frp内网穿透
客户端:kali 172.16.11.83
服务端:centos 47.*.*.232
(远程主机)
服务器端(1)
服务端将关于客户端的文件删了
rm -rf frpc*
然后修改服务器配置文件(frps.ini)
vi frps.ini
[common]
bind_port = 7000
vhost_http_port = 8080
[common]
部分是必须有的配置
bind_port
是frp服务端端口
vhost_http_port
是http访问端口
然后保存,启动frp服务器端
./frps -c ./frps.ini
客户端(1)
同样,为了避免敲错。客户端将关于服务端的文件都删了。
rm -rf frps*
然后改配置文件
vi frpc.ini
[common]
server_addr = 47.*.*.232
server_port = 7000
# server_addr填frp服务端的ip(也就是外网主机的IP),server_port填frp服务端的bind_prot。
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
# local_port 是本地的ssh端口
[web]
type = http
local_port = 80
custom_domains = www.*.cn
# local_port 是本地的web端口,custom_domains为要映射的域名,记得域名的A记录要解析到外网主机的IP(当然,也可以改hosts文件)
然后保存,运行frp客户端
./frps -c ./frps.ini
时间超时,将远程服务器换成本地虚拟机
服务端(2)
操作同(1),成功操作后反馈如下:
客户端(2)
DNS隧道
……
HTTPS隧道
……
利用知名网站的子域名
比如github、twitter等网站,能允许用户创建子域名。
C&C服务