ONENAV小白级代审
2022-4-9 12:48:10 Author: www.freebuf.com(查看原文) 阅读量:12 收藏

GitHub项目地址: https://github.com/helloxz/onenav


  • 版本:v0.9.12-20210726

一、信息泄露

安装:

if( !file_exists('./data/config.php') ) {
	exit('<h3>配置文件不存在,请将站点目录下的config.simple.php复制为data/config.php</h3>');
}
//检查数据库是否存在,不存在则复制数据库
if( !file_exists('./data/onenav.db3') ) {
	copy('db/onenav.simple.db3','data/onenav.db3');
	// copy('db/.htaccess','data/.htaccess');
}

//载入配置文件
require("./data/config.php");

//根据不同的请求载入不同的方法
//如果没有请求控制器
if((!isset($c)) || ($c == '')){
	//载入主页
    include_once("./controller/index.php");
    
}

else{
	include_once("./controller/".$c.'.php');
}

默认数据库路径 'data/onenav.db3'

修复方案:

https://www.yuque.com/helloz/onenav/install#ImLOx

如果您使用得Nginx,请务必将以下规则添加到站点配置中,否则数据库可能被下载(非常危险):

#安全设置
location ~* ^/(class|controller|db|data|functions|templates)/.*.(db3|php|php5)$ {
    return 403;
}
location /db {
        deny all;
}

#伪静态

rewrite ^/click/(.*) /index.php?c=click&id=$1 break;

rewrite ^/api/(.*)?(.*) /index.php?c=api&method=$1&$2 break;

rewrite /login /index.php?c=login break;

如果使用得Apache则无需设置,已内置.htaccess进行屏蔽。

如果url合法,直接curl访问。未检测链接是否在内网。以及一些请求协议控制。

1、CVE-2021-38138

未过滤参数

function add_link($api){
    //add_link($token,$fid,$title,$url,$description = '',$weight = 0,$property = 0)
    //获取token
    $token = $_POST['token'];
    
    //获取fid
    $fid = intval(@$_POST['fid']);
    $title = $_POST['title'];
    $url = $_POST['url'];
    $description = empty($_POST['description']) ? '' : $_POST['description'];
    $weight = empty($_POST['weight']) ? 0 : intval($_POST['weight']);
    $property = empty($_POST['property']) ? 0 : 1;
    
    $api->add_link($token,$fid,$title,$url,$description,$weight,$property);
    
}

未对title过滤,导致XSS存在

修复方案:

实体化相关参数,正则匹配过滤等增加过滤方式

2、跨域的XSS存储漏洞

直接获取网站标题、描述,未进行任何过滤,只要在被添加的网站标题或描述上写上payload就能进行XSS攻击。

修复方案:

实体化相关参数,正则匹配过滤等增加过滤方式

成因:TOKEN值未在安装的时候更改。token生成方式过于简单

auth函数功能:设置token 其算法是 md5(用户名+TOKEN) 其中的   TOKEN值在设置中是默认值为:xiaoz.me

config.php:

所以,我们只需要知道用户名就能进行未授权操作,制作token,实现api调用从而控制后台例如利用XSS获取其cookie,cookie生成方式无时间校验,在不改密码的情况下可一直用,进入后台管理界面(有token跟管理员一样了,打XSS是方便持久控制。其他的无意义) token放post请求里

猜一波token:

默认用户:xiaoz

token:7860b4762c20b1496ca027882d945ad7

用户admin

token:92234ece708b0cd6f3c2d9e8fcde010f

修复方案:

改默认的TOKEN值

最后:关于文章,第一次投稿,有错误的地方请指正。


文章来源: https://www.freebuf.com/articles/web/328236.html
如有侵权请联系:admin#unsafe.sh