#01 敏感路径泄露X1
/core/lib/core/App.class.php 第14行
class App extends Pfa {
/* initialization */
public function __construct() {
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
set_error_handler(array('App', 'app_error'));
//[RUNTIME]
App::build(); // pre-compile
//[/RUNTIME]
Url::dispatch(); // URL dispatch and define CTRLR_NAME, ACTN_NAME
其中 Pfa 父类没有验证是否存在 导致直接访问
http://localhost/core/lib/core/App.class.php
会导致爆出绝对路径
此问题在cms中多处存在请务必详查对于父类的继承相关代码
#02 敏感路径泄露X2
/core/tpl/page_trace.php 第17行
<div id="pfa_page_trace" style="padding:10px;margin:10px;color:#666;line-height:18px;background:#fff;border:1px solid #e5e5e5;">
<p style="padding:0;margin:0;border-bottom:1px solid #ccc;font-size:14px;color:#f60;"><?php echo L('_PAGE_TRACE_INFO_') ?></p>
<p style="padding:0 margin:5px 0 0;overflow:auto;height:300px;text-align:left;font-size:12px;">
<?php foreach($_trace as $key=>$info){echo $key . ' : ' . $info . "<br />\r\n";}?>
</p>
</div>
文件并未define function文件 并直接调用函数导致报错
#03 SQL injection
/core/lib/ext/AServer.class.php 第14-111行的定义类AServer时 第16-37行代码如下
public static function get_ip() {
$ip = '';
if(!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
if($ip) {
array_unshift($ips, $ip);
$ip = '';
}
for($i = 0; $i < count($ips); $i++) {
if(!preg_match("/^(10|172\.16|192\.168)\./i", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
$ip = $ip ? $ip : $_SERVER['REMOTE_ADDR'];
$long = sprintf("%u", ip2long($ip));
return $long ? $ip : '0.0.0.0';
}
对于HTTP_CLIENT_IP和HTTP_X_FORWARDED_FOR都木有过滤 所以导致可以进行注入。
由于木有火狐就先不进行测试了 具体应用在/admin.php进行登录时会记录IP 对于IP却没有过滤,Ps:sqlmap使用要加--level=3