最近看着瑞友天翼爆洞,跟去年6月挖得一个洞差不多,索性发出来
当时还是7.0.4.1版本,因为瑞友后面的php会转义引号,所以注入需要闭合的都不行了,不知道最近另一个洞为啥可以(未做测试,大胆猜测回滚了代码,导致转义问题没了)
进入主题,进入文件IndexController.class.php
public function index()
{
if (!$this->checklogin()) return;
跟进checklogin()函数
private function checklogin()
{
// if (!array_key_exists('LonginSucceed', $_SESSION)) //if (!$_SESSION['LonginSucceed'])
// $mUser = M('cuser');
// $cuser = $mUser->where("name='{$UName}' and is_group=0 AND is_admin !=1")->find();
$mUser = M('cuser');
$sessionpath = session_save_path();
$pathName = $this->openpath($sessionpath);
$path = $_REQUEST['sessId'] ? ($sessionpath . "/sess_" . $_REQUEST['sessId']) : ($sessionpath . "/" . $pathName['name'][0]);
var_dump($path);
$content = file_get_contents($path);
$tmp = explode("|", $content);
$tmp3 = unserialize($tmp[3]);
$userId = $tmp3['user_id'];
$cuser = $mUser->where("user_id='{$userId}' AND is_group=0 AND is_admin !=1")->find();
if (sizeof($cuser) > 0) {
$_SESSION['UserInfo'] = $cuser;
$_SESSION['sessId'] = $_REQUEST['sessId'];
$this->assign('sessId', $_REQUEST['sessId']);
return true;
}
if ($_SESSION['LonginSucceed'] == false) { //尚未登录
$this->login(); //$this->redirect('index');
return false;
} else {
return true;
}
}
查看函数checklogin
通过获取sessId参数进行拼接后得到路径,读取文件内容然后取数组下标为3的值进行反序列化,接着就是sql注入了。
作者是通过日志来进行getshell,第一步payload就不放了(大家都没放,大家简单看下就能轻松构造出来)
第二步通过获取日志内容来反序列化
图均为笔记当时记录的。
(PS:转载请注明来源)
原文始发于微信公众号(安全学习与分享):瑞友天翼应用虚拟化系统<=7.0.5.1
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论