PageAdmin幾個設計缺陷導致的安全漏洞及修復

2021-12-29 22:11:37 字數 2021 閱讀 8468

1.login_key暴力**

2.偽造任意會員或管理留言

3.刪除任意留言

ps:.net開源了,相信各種特性漏洞會如雨後春筍般湧現,小菜先學點asp.net基礎知識,等大牛們發特性漏洞的時候至少能夠看懂。

1.login_key 暴力**

/e/member/check_repeat.aspx

protected void page_load(object src,eventargs e)

else if(field.tolower()=="userpassword")

string repeat="0";

int counts=0;

if(isstr(field))

dr.close();

conn.close();

if(counts>0)

}response.write(repeat);

}可以看到 我們控制了pa_member表where查詢中的字段和值,因此我們可以定義欄位為login_key,然後暴力列舉值。

我們再來看下login_key的值是什麼?

string loginkey=logindate.addseconds(r.next(3600,86164)).tostring("yyyymmddhhmmss");

login_key為我們登入登入後的1個小時到一天中的任意中的任意一秒,格式如20141121221010,

這樣會有什麼樣的問題呢?就是我們login_key完全可以**,可以用上邊的那段**暴力列舉近幾天的登入會員和管理(會員管理乙個表)的login_key,而1天86400秒,所以難度不大。

下面問題來了,看官一定會問,這個login_key是幹啥的,你可以溫習下wefgod牛的 wooyun: pageadmin可繞過驗證偽造任意使用者身份登入(前台、後台) ,

從wefgod牛的文章當中我們知道pageadmin的許可權驗證用的是uid和valicate的,而valicate以前是用的最後登入時間的md5,現在改為了login_key的md5,也就是登入後未來一天的任意一秒的md5。

現在我們獲取了login_key,但是問題又來了,我們不知道他對應的uid是多少,我們可以直接選擇有許可權驗證的頁面直接加入login_key,然後列舉uid,登入進去就行了。

問題又來了,我們怎麼確定這個使用者是不是管理員,我思來想去,也只有觀察下管理員在**的活動了,比如他發表的最後一篇帖子的時間,最後一天留言的時間,去推測login_key的取值空間。

2.偽造任意會員或管理留言

/e/space/spc_fbk_ascx.cs

private void post_fbk()

else

conn.close();

response.write("");

response.end();}}

這個沒什麼說的,設計缺陷,當前登入名自定義,可以偽造任何人留言,不用登入。

3.刪除任意留言

/e/space/spc_fbk_ascx.cs

private void del_fbk()

conn.close();

response.write("");

response.end();

}這個都很明白,無許可權控制的直接進資料庫刪除任意使用者的任意留言

1.login_key暴力**

a.暴力猜測login_key

2.偽造任意會員或管理留言

3.刪除任意留言

1.過濾

2.許可權驗證

PageAdmin多處設計缺陷可getshell

管理員登陸成功,setcookie 登陸時間 3600,86164 之間隨機的秒數,進行get md5運算。public string get md5 string s return stringbuilder.tostring 將字串s md5之後和pageadmin cms md5之後的字串每2...

jbpm設計缺陷

刪除 只能直接刪除流程部署 而沒有提供刪除流程定義的api test public void testdeletedeployment 想要刪除流程定義 根據key得到所有的流程定義,然後遍歷每乙個流程定義,得到流程部署,然後依次刪除 2 根據taskid查詢任務 taskservice.getta...

js的設計缺陷

原文請搜阮一峰 一 js為什麼有缺陷 1。設計階段過於倉促 設計者只用十天時間完成js的設計,而且設計初衷只是為了完成簡單的網頁互動,並沒有考慮複雜應用的需要 2。設計借鑑太雜 設計者本身擅長函式式程式設計,但由於某些原因又需要將js往物件導向上靠。又因為只想做一種簡單的指令碼語言就放棄了 類 的想...