任务实施:
E047-论坛漏洞分析及利用-针对Wordpress论坛进行信息收集与漏洞扫描的探索
任务环境说明:
服务器场景:p9_kali-6(用户名:root;密码:toor)
服务器场景操作系统:Kali Linux 192.168.32.178
服务器场景:p9_linux-7(用户名:root;密码:123456)
服务器场景操作系统:Linux 192.168.32.179
网络结构拓扑
实战复现
使用命令firefox http://192.168.32.179访问目标站点,在页面底部查看版权信息。
发现了网站采用的是有名的5分钟建站的简易Wordpress论坛,然后尝试访问网站根路径的robots.txt文件(robots.txt文件我们写过爬虫的就知道,这个文件是告诉我们哪些目录是禁止爬取的。但是大部分的时候我们都能通过robots.txt文件来判断出cms的类型)
可以看到页面内容中的网站结构wp-xxxx符合我们之前的猜测
进一步检索扫描信息,发现该论坛下有root和test两个用户
nmap结果中收集到的有效信息,比较少,下一步的做法就需要收集更多有关wordpress论坛的信息
Kali中现有的扫描工具中就有一款针对wordpress论坛的专业网站安全漏洞扫描软件wpscan
接下来介绍一下wpscan扫描工具的所有参数
wpscan -u [wordpress url]
——默认针对网站常用插件做检测
wpscan -u [wordpress url] -e
——对网站进行全面检测
wpscan –u [wordpress url]
——扫描可能存在的漏洞网站:
wpscan –u [wordpress url] –wordlist [字典路径] –username [破解的用户] –threads [使用的进程数量]
——暴力破解用户的root密码
wpscan -update
——更新漏洞库
wpscan --force | -f Forces
——对目标站点使用暴力破解的方式无论其使用的是否是wordpress论坛
wpscan -u [wordpress url] --wordlist xxx.lst --threads 50
——使用50线程对枚举出来的用户的密码进行字典暴力破解
wpscan -u [wordpress url] --wordlist xxx.lst --username admin
——只对指定admin用户的密码进行字典暴力破解
wpscan –u [wordpress url] --enumerate p ——枚举安装的插件
vp – only vulnerable plugins 只有脆弱插件
ap – all plugins (can take a long time) 所有插件
wpscan -u [wordpress url] --enumerate t ——枚举安装的主题
vt – only vulnerable themes 只有脆弱主题
at – all themes (can take a long time) 所有主题
wpscan -u [wordpress url] --enumerate u ——枚举用户
使用命令wpscan -u http://172.16.1.21 -e at -e ap -e u 枚举出wordpress的主题,所有插件、以及用户内容。
wpscan -u http://192.168.32.179 -e at -e ap -e u
根据检索信息可知wordpress的版本号为Version 4.6
继续检索发现位于站点的http://172.16.1.21/wp-content/uploads/ 存在目录遍历漏洞:
尝试进行访问,发现管理员没有对站点下的uploads目录进行权限设置:
再往下检阅发现有两个链接存在目录遍历,并且由于网站安装了Pie Register 2.0.14版本的插件导致XSS跨站脚本漏洞可以被利用:
最后枚举出论坛的2个账户信息:
直接使用命令wpscan http://172.16.1.21对该论坛进行漏洞扫描根据扫描的反馈结果发现目标论坛包含目录遍历和SQL注入漏洞,黄色感叹号代表信息泄露级别,红色感叹号代表威胁程度较高的漏洞。
对网站的目录遍历地址逐个排查发现/wp-content/plugins/ultimate-product-catalogue/funtions/Process目录下有文件名为Process_Ajax.php,正好验证了前面反馈结果信息里的SQL注入高危漏洞。
下面为漏洞关键代码部分
Line:147
global $subcategories_table_name;
$Path = ABSPATH . 'wp-load.php';
include_once($Path);
global $wpdb;
$SubCategories = $wpdb->get_results("SELECT SubCategory_ID, SubCategory_Name FROM $subcategories_table_name WHERE Category_ID=" . $_POST['CatID']);
=========================================================
//$_POST[‘CatID’] ——$_POST变量由HTTP POST方法发送的变量名称和值,引起这个漏洞的原因是CatID的参数没有做转义处理导致不法用户可以通过构造SQL语句进行注入操作来获取网站资料。
=========================================================================
在论坛中注册一个账号,admin123密码12345678 使用该账户进行登录。
填写一些基本信息进行注册
注册成功
转到http://172.16.1.21/index.php/login ,使用刚注册的账号进行登录
然后转到地址http://172.16.1.21/wp-admin/admin-ajax.php 下,推测该链接存在sql注入点,尝试使用火狐浏览器对其进行手工注入:
实验结束,关闭虚拟机。