关于WordPress的简单分析
WordPress分析
wordpress系统本身代码,很少出现漏洞,主要是第三方的插件出现太多太多的漏洞
部分源码解读
1、 入口文件index.php
前端入口,基本没有内容。
1)定义WP_USE_THEMES常量,当该常量定义为false时,站点会显示为空白;为true时则正常显示。
2)加载wp-blog-header.php
文件。
2、 接下来查看/wp-blog-header.php
文件
加载wp环境和模板
1)设置$wp_did_header变量,相当于一个flag,确保wp-blog-header.php
文件只在第一次被加载时执行。
2)加载wp-load.php
文件。
3)调用wp()函数。
4)加载wp-includes/template-loader.php
文件
3、 查看/wp-load.php
文件
启动引导(Bootstrap)文件,用于设置ABSPATH常量和加载wp-config.php
文件。wp-config.php
将会加载wp-settings.php
文件,它将用于建立WP的环境。
如果找不到wp-config.php文件,则会提示错误信息,要求用户设置wp-config.php
文件。
wp-load.php还会自动搜索WP的上级文件夹寻找wp-config.php
文件,因此可以保护WP文件夹不被暴露。
1)设置ABSPATH常量为到WP文件夹的路径。
2)设置错误报告模式。
3)加载wp-config.php文件(a.直接加载、b.从上级文件夹加载、c.找不到则报错,使用wp_die()函数)。
4、 查看wp-config.php
WordPress基础配置文件。本文件包含以下配置选项: MySQL设置, 数据库表名前缀,密匙, WordPress语言设定以及ABSPATH。
1)设置数据库名、用户名、密码、数据库主机、数据库编码、数据库整理类型、数据库表前缀。
2)设置身份密匙,用于进行cookie加密。
3)设置WP语言。
4)设置WordPress目录的绝对路径ABSPATH。
5)包含wp-settings.php
文件。
5、 查看wp-settings.php
用于设置和修复公共变量,包括WordPress过程和类库。
1)存储函数、类和核心内容的WordPress目录和位置
2)当前WordPress的版本信息、数据库版本、TinyMCE版本、所需PHP版本及MySQL扩展或数据库插件等。
3)包含许多类库文件,多站点特定文件。
WordPress 测试方法
1 扫描
使用工具:wpscan(Kali 自带)
[官网][https://wpscan.org]
针对所有 Wordpress 网站的测试,首先都应该使用 wpscan 进行扫描:
wpscan --url http://IP/
扫描结果中中重点关注 WordPress 的版本?使用了什么 Plugin ?Plugin 版本是什么?
然后使用 searchsloit 来查询漏洞。
常用的命令
#更新漏洞库
wpscan --update
#扫描指定用户
wpscan --url http://IP/ --enumerate u
#爆破
wpscan --url http://IP/ -e u --wordlist dic_path
#扫描插件漏洞
wpscan --url http://IP/ -e u --enumerate vp
#扫描主题
wpscan --url http://IP/ -e u --enumerate t
#列出所有信息
wpscan --url http://IP/ -e at -e ap -e u
2 暴力破解
使用工具:Wfuzz(Kali 自带)
很多 WordPress 的漏洞都需要登录到后台才能利用,这里使用 Wfzuu 工具进行爆破:
# 按照实际情况调整-hh 参数
wfuzz -w /usr/share/wordlists/fast* -d "log=admin&pwd=FUZZ&wp-submit=Log+In&redirect_to=http%3A%2F%2F10.1.1.1%2Fwp-admin%2F&testcookie=1" -c --hh=3358 http://10.1.1.1/wp-login.php
参数解释:
-w
指定字典-d
POST 的数据-c
带颜色输出--hh
过滤掉响应包长度为3358字节的结果