首 页 ┆ 源码下载 ┆ IT学院 ┆ 字体下载 ┆ 模板下载 ┆ 源码发布 ┆ 广告合作 ┆ 网站地图 ┆ 虚拟主机 ┆ 中文域名
► 设为首页
► 加入收藏
► 联系我们
源码下载 >> ASP源码 | PHP源码 | ASP.net源码 | JSP源码 | CGI源码 | VC/C++源码 | VB源码 | Delphi源码 | Flash源码
文章学院 >> 网络编程 | 网页设计 | 图形图象 | 数据库 | 服务器 | 网络媒体 | 网络安全 | 操作系统 | 办公软件 | 软件开发 | 黑客知识
字体下载 >> 精制字体 | 非英字体 | 艺术字体 | 著名字体 | 哥特式 | 简单字体 | 手写体 | 节假日 | 图案字体 | 精度像素 | 中文字体
模板下载 >> 企业门户 | 数码网络 | 休闲娱乐 | 影视音乐 | 旅游名胜 | 文化艺术 | 电子商务 | 个性展示 | 登陆导航 | Flash模板
►►您当前的位置:源码园 → IT学院 → 黑客知识 → 网管专题 → 文章内容

wordpress绝对路径泄露分析--wordpress,绝对路径,泄露,分析

作者:佚名  来源:网上收集  发布时间:2007-1-16 0:24:21
无意中改下就暴路径了,应该所有版本都有,测试了正式版和几个beta版,具体版本漏洞代码所在行数不同而已,又是数组和变量的老问题,相信很多地方都还存在。
问题出在搜索的参数,http://XXX.com/index.php?s= 改成 http://XXX.com/index.php?s[]=
Warning: rawurlencode() expects parameter 1 to be string, array given in /home/xxx/public_html/wp-includes/classes.php on line 227

问题很小,突然想起一件很有意义的事,就看了下代码,写个比较完整点的文档
看URL就知道变量s的问题,找sgeneral-template.php 878行:
function the_search_query() {
global $s;
echo wp_specialchars( stripslashes($s), 1 );
}
怎么过滤的,找函数wp_specialchars:
formatting.php 107行:
function wp_specialchars( $text, $quotes = 0 ) {
// Like htmlspecialchars except don't double-encode HTML entities
$text = str_replace('&&', '&&', $text);
$text = str_replace('&&', '&&', $text);
$text = preg_replace('/&(?:$|([^#])(?![a-z1-4]{1,8};))/', '&$1', $text);
$text = str_replace('<', '<', $text);
$text = str_replace('>', '>', $text);
if ( 'double' === $quotes ) {
$text = str_replace('"', '"', $text);
} elseif ( 'single' === $quotes ) {
$text = str_replace("'", ''', $text);
} elseif ( $quotes ) {
$text = str_replace('"', '"', $text);
$text = str_replace("'", ''', $text);
}
return $text;
}
过滤的很好但不是关键,看报错找rawurlencode()函数:
classes.php 222行:
function build_query_string() {
$this->query_string = '';
foreach (array_keys($this->query_vars) as $wpvar) {
if ( '' != $this->query_vars[$wpvar] ) {
$this->query_string .= (strlen($this->query_string) < 1) ? '' : '&';
$this->query_string .= $wpvar . '=' . rawurlencode($this->query_vars[$wpvar]);
}
}
$wpvar被传到rawurlencode函数里,导致函数出错,那$wpvar的值是什么呢?跟变量s有什么关系?往上看,第4行:
var $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'debug', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots');
前面s已经global了,看到s被包含在数组中,接着找$wpvar,137行:
$this->public_query_vars = apply_filters('query_vars', $this->public_query_vars);

for ($i=0; $i<count($this->public_query_vars); $i += 1) {
$wpvar = $this->public_query_vars[$i];
if (isset($this->extra_query_vars[$wpvar]))
$this->query_vars[$wpvar] = $this->extra_query_vars[$wpvar];
elseif (isset($GLOBALS[$wpvar]))
$this->query_vars[$wpvar] = $GLOBALS[$wpvar];
elseif (!empty($_POST[$wpvar]))
$this->query_vars[$wpvar] = $_POST[$wpvar];
elseif (!empty($_GET[$wpvar]))
$this->query_vars[$wpvar] = $_GET[$wpvar];
elseif (!empty($perma_query_vars[$wpvar]))
$this->query_vars[$wpvar] = $perma_query_vars[$wpvar];
}
$wpvar这里获得了s的值,接着就把变量s带入函数rawurlencode里做转换,这里把变量s改为数组提交,漏洞就产生了,很清楚的看到报错提示:
Warning: rawurlencode() expects parameter 1 to be string, array given in....

over!
[] [返回上一页] [打 印]
  • 上一篇文章:熊猫烧香变种 感染文件 修改网页 nvscv32.exe 解决方案--熊猫烧香,变种,感染文件,修改网页,nvscv32.exe,解决方案
  • 下一篇文章:nProtect技术详细介绍及破解--nProtect,技术,详细介绍,破解

  • 相关文章:
  • Delphi与Word之间的融合技术
  • 用Delphi4实现风Word97格的工具栏
  • 如何模拟《WORD》的窗口形式
  • 利用键盘快捷键快速操作Word
  • [图文]随心所欲控制Word下划线与文字的距离
  • Word|2000|快速|文字|处理|技巧
  • 学习Word功能键
  • [图文]用Word巧妙复制表格
  • [组图]创建便携式Word文档
  • [图文]Word 2000符号栏小技巧
  • 让Word XP“开口”讲笑话
  • [图文]合用Word XP与Excel XP批量打印信封
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 源码发布
Copyright © 2003-2009 Ymyasp.Com. All Rights Reserved .
备案序号:粤ICP备07029071号