靶机下载地址: https://www.vulnhub.com/entry/presidential-1,500/
# 确认攻击目标
攻击机 KALI: 192.168.31.135
靶机 PRESIDENTIAL:桥接于 192.168.31.1 的网卡,ip 未知
1 )确定靶机 ip 地址
sudo arp-sacn -l

-> 靶机 ip:192.168.0.153
2 )确认靶机 ip 开放的端口信息
sudo nmap -p 192.168.0.153

-> 靶机开放端口 21,2082
发现了一个比较奇怪的端口,用 nmap 扫描其详细信息,发现是 ssh 服务

# 网站信息收集
打开 http://192.168.0.153 进行信息收集

没有明显发现,对其目录结构进行扫描

查看目录:http://192.168.0.153/config.php

查看目录:http://192.168.0.153/config.php.bak

-> 发现了数据库的账户名密码 votebox:casoj3FFASPsbyoRP
但是没有数据库的端口开通,发现没法利用,查看 80 端口的网站,看能否找到更多敏感的信息,发现了一个域名,我们就用这个域名做 DNS 解析指向其 ip 地址

修改本地 hosts 文件,指定规则如下

访问 http://votenow.local 成功显示出来该网站

做一波目录扫描,发现和原 ip 的扫描内容一模一样

# wfuzz 扫描子域名
既然是域名,何不进行一波子域名的收集,用 subDomainsBrute 爆破子域名
python subDomainsBrute.py votenow.local

但是没有扫描到任何目录,需要注意的是我们去识别此域名的子域名,其解析的 ip 地址依然要指向靶机的 IP 地址
用 wfuzz 来枚举子域名
wfuzz -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -H "Host: FUZZ.votenow.local" --hw 854 --hc 400 votenow.local
通过这种方法收集的子域名的解析地址都是目标靶机的 ip

将扫描到的子域名加入到本地 hosts 文件中

访问网站 http://datasafe.votenow.local , 输入之前泄漏的数据库账户密码

-> 拿到 phpmyadmin 的权限
# phpmyadmin 后台写 shell
点击 SQL,尝试执行敏感的 sql 语句,写入 webshell

1 | 显示目录 |

1 | 数据库当前操作用户拥有写权限: |

- secure_file_priv 参数:
NULL 不允许导入或导出;/tmp 只允许在 /tmp 目录导入导出;空 不限制目录
1 | 写入一句话后门: |

写入失败,可能被过滤掉了,找到密码,看能否修改密码进行破解

用 john 破解密码破解失败(此密码应能破解,破解为 Stella)admin:Stella

# phpmyadmin 漏洞提权
接下来可以看一下这个 phpmyadmin 的版本是多少,如果较低的话是可以直接利用现成的 payload 进行提权的

通过 searchsploit 搜索 phpmyadmin4.8.1 找到了 RCE 漏洞的 payload

将 paylaod 复制到一个目录下,查阅后开始利用
python 50457.py datasafe.votenow.local 80 / votebox casoj3FFASPsbyoRP whoami

根据代码内容输入命令之后没有报错说明可以正常使用此 payload, 修改代码中的拿到权限后的执行的操作,让其反弹 shell

但是依然没有反弹 shell 成功,需要进行手动复现
1 | 在SQL语句上写入执行反弹shell的代码 |

写入恶意 payload 成功后,拿取到此页面保存的 cookie 的值

同时需要在 kali 机器上准备好反弹 shell 的代码,等待靶机执行

访问如下网址,最后的后缀是页面的 cookie 的值,成功拿到网站权限
http://datasafe.votenow.local/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_q6brk6uh6kbpb5t9888v47b3epgcoltl


-> 成功拿到了 apache 用户的网站权限
# 恶意 tar 命令提权
搜索一下有没有相关文件的权限设置错误
find / -group admin 2>/dev/null | grep -v 'proc\|home'
发现找到一个 admin 组下的一个命令 tarS

查看 /etc/passwd 确认我们能提权的账户有哪些 cat /etc/passwd | grep bash
发现有 admin 和 root 两个账户都存在 bash
john 破解 phpmyadmin 后台时可得到 admin:Stella, su admin
尝试提权

确认一下 admin 用户下是否有某些可执行文件的特权
1 | find |
用此有错误权限的 tarS 命令去压缩并解压 root 账户下的 ssh 私钥

将私钥文件发送到自己的 kali 机器上,修改权限为 600 ,进行连接需要注意目标机器的 ssh 开放在了 2082 端口
ssh -p 2082 root@192.168.0.154 -i root/.ssh/id_rsa

-> 成功拿到了 root 权限