[轉貼]phpBB 2.0.5 的潛在性 SQL 弱點

phpBB Installation & Usage Support
phpBB 2 安裝於各類型作業平台之問題討論;外掛問題,請到相關版面依發問格式發表!
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

版面規則
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
蒼浩
竹貓好朋友
竹貓好朋友
文章: 62
註冊時間: 2002-02-26 22:21
來自: 遊戲炸彈
聯繫:

[轉貼]phpBB 2.0.5 的潛在性 SQL 弱點

文章 蒼浩 »

http://www.phpbb.com/phpBB/viewtopic.php?t=112052
psoTFX 寫:We've been informed that a possible SQL injection vulnerability has been released to various lists and sites. The issue is unlikely to affect many users given the requirements that surround it.
"SQL injection vulnerability" 資料庫查詢植入攻擊,phpBB 官網在 6 月 20 日公布了這個訊息,不過因為各個伺服器都有著不同的防護措施,使得這個問題只會在某些伺服器上發生。

如果你對此有所疑慮,你可以參考以下的修正方式。

open viewtopic.php
-----------------------------------------------------------------------------------------
尋找\r

代碼: 選擇全部

if ( isset($HTTP_GET_VARS[POST_TOPIC_URL]) )
{
      $topic_id = intval($HTTP_GET_VARS[POST_TOPIC_URL]);
}
else if ( isset($HTTP_GET_VARS['topic']) )
{
      $topic_id = intval($HTTP_GET_VARS['topic']);
} 
在前面加上

代碼: 選擇全部

$topic_id = $post_id = false; 
在下面尋找\r

代碼: 選擇全部

$join_sql_table = ( !isset($post_id) ) ? '' : ", " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2 ";
$join_sql = ( !isset($post_id) ) ? "t.topic_id = $topic_id" : "p.post_id = $post_id AND t.topic_id = p.topic_id AND p2.topic_id = p.topic_id AND p2.post_id <= $post_id";
$count_sql = ( !isset($post_id) ) ? '' : ", COUNT(p2.post_id) AS prev_posts";

$order_sql = ( !isset($post_id) ) ? '' : "GROUP BY p.post_id, t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, t.topic_type, t.topic_vote, t.topic_last_post_id, f.forum_name, f.forum_status, f.forum_id, f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate, f.auth_vote, f.auth_attachments ORDER BY p.post_id ASC";
更改為\r

代碼: 選擇全部

$join_sql_table = ( empty($post_id) ) ? '' : ", " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2 ";
$join_sql = ( empty($post_id) ) ? "t.topic_id = $topic_id" : "p.post_id = $post_id AND t.topic_id = p.topic_id AND p2.topic_id = p.topic_id AND p2.post_id <= $post_id";
$count_sql = ( empty($post_id) ) ? '' : ", COUNT(p2.post_id) AS prev_posts";

$order_sql = ( empty($post_id) ) ? '' : "GROUP BY p.post_id, t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, t.topic_type, t.topic_vote, t.topic_last_post_id, f.forum_name, f.forum_status, f.forum_id, f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate, f.auth_vote, f.auth_attachments ORDER BY p.post_id ASC";
完成。
-----------------------------------------------------------------------------------------

關於 "SQL injection vulnerability",你可以透過Google來查詢相關訊息。
最後由 蒼浩 於 2003-06-22 11:54 編輯,總共編輯了 1 次。
Alextwl
星球普通子民
星球普通子民
文章: 4
註冊時間: 2003-02-07 21:34
來自: Taiwan
聯繫:

文章 Alextwl »

以上的參考修正方式經測試後會出問題。 :-(

代碼: 選擇全部

Could not obtain topic information

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND f.forum_id = t.forum_id' at line 4

SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, t.topic_type, t.topic_vote, t.topic_last_post_id, f.forum_name, f.forum_status, f.forum_id, f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate, f.auth_vote, f.auth_attachments FROM histcham_phpbb_topics t, histcham_phpbb_forums f WHERE t.topic_id = AND f.forum_id = t.forum_id
Line : 160
File : viewtopic.php
問題出在這裡。

代碼: 選擇全部

$topic_id = $post_id = false;
為什麼$topic_id與$post_id會以布林值寫入?這是個很奇怪的一點。
導致SQL指令在末端出現 WHERE t.topic_id = (沒有值?) Syntax 錯誤。

不知您的測試結果有沒有問題呢?
~歷史戰友~
以歷史為戰場,讓全體戰友共同為將來奮鬥吧!
蒼浩
竹貓好朋友
竹貓好朋友
文章: 62
註冊時間: 2002-02-26 22:21
來自: 遊戲炸彈
聯繫:

文章 蒼浩 »

抱歉,那是我的翻譯有誤。

代碼: 選擇全部

$topic_id = $post_id = false;
應該是要加在前面吧,而不是加在後面。

我本身還沒升級 2.0.5,所以我也不太清楚。
salamander
星球普通子民
星球普通子民
文章: 6
註冊時間: 2002-11-13 14:31

文章 salamander »

2.0.1~2.0.4都有此sql injection問題

可以取得網站管理者的密碼\r
縱使是取得MD5的格式
但只要丟進破解密碼的程式去run...
就可以還原出原始密碼
Alextwl
星球普通子民
星球普通子民
文章: 4
註冊時間: 2003-02-07 21:34
來自: Taiwan
聯繫:

文章 Alextwl »

謝謝你,在修改後已經可以正常運作。 :-D
不過話說回來 2.0.5 少掉 Invalid Session 的問題真是好爽快啊~
~歷史戰友~
以歷史為戰場,讓全體戰友共同為將來奮鬥吧!
頭像
HeartIcy
竹貓好朋友
竹貓好朋友
文章: 132
註冊時間: 2002-02-20 23:06
來自: 祖國大陸
聯繫:

文章 HeartIcy »

感觉上来说还是蛮不错用,等过些日子就可以用2.2系列了,蛮期待的说。嘻嘻嘻
ALL SITE DONE!!!:(
pcboy
星球普通子民
星球普通子民
文章: 11
註冊時間: 2002-06-15 02:46

文章 pcboy »

代碼: 選擇全部

$topic_id = $post_id = false; 
小弟是加在前面, 但是仍然有

代碼: 選擇全部

代碼: 
Could not obtain topic information 

DEBUG MODE 

SQL Error : 1064 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND f.forum_id = t.forum_id' at line 4 

SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, t.topic_type, t.topic_vote, t.topic_last_post_id, f.forum_name, f.forum_status, f.forum_id, f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate, f.auth_vote, f.auth_attachments FROM histcham_phpbb_topics t, histcham_phpbb_forums f WHERE t.topic_id = AND f.forum_id = t.forum_id 
Line : 160 
File : viewtopic.php 

請問還有哪裡要改 ?
Alextwl
星球普通子民
星球普通子民
文章: 4
註冊時間: 2003-02-07 21:34
來自: Taiwan
聯繫:

文章 Alextwl »

pcboy: 請再檢查一次是否有沒有改錯。

代碼: 選擇全部

//
// Start initial var setup
//
$topic_id = $post_id = false; // SQL injection vulnerability fix

if ( isset($HTTP_GET_VARS[POST_TOPIC_URL]) )
{
	$topic_id = intval($HTTP_GET_VARS[POST_TOPIC_URL]);
}
else if ( isset($HTTP_GET_VARS['topic']) )
{
	$topic_id = intval($HTTP_GET_VARS['topic']);
}
絕對不要把這行加在讀入$HTTP_GET_VARS['topic']與$HTTP_GET_VARS[POST_POST_URL]之後,否則會出錯。
~歷史戰友~
以歷史為戰場,讓全體戰友共同為將來奮鬥吧!
design
竹貓忠實會員
竹貓忠實會員
文章: 330
註冊時間: 2003-10-31 00:36
聯繫:

文章 design »

salamander 寫:2.0.1~2.0.4都有此sql injection問題

可以取得網站管理者的密碼\r
縱使是取得MD5的格式
但只要丟進破解密碼的程式去run...
就可以還原出原始密碼
有那種程式阿 :?:
竹貓忠實會員
竹貓忠實會員
文章: 1058
註冊時間: 2003-05-15 00:30
來自: Game.Hack-遊戲駭客
聯繫:

文章 »

design 寫:
salamander 寫:2.0.1~2.0.4都有此sql injection問題

可以取得網站管理者的密碼\r
縱使是取得MD5的格式
但只要丟進破解密碼的程式去run...
就可以還原出原始密碼
有那種程式阿 :?:
MD5已經有人可以反解了?半年前就已經成功了?

發表於: 2003-06-22 13:08
有事問問題,沒事答問題。
廣告不是這樣打滴!遊戲駭客
messagebox
竹貓忠實會員
竹貓忠實會員
文章: 981
註冊時間: 2003-02-24 23:34

文章 messagebox »

據我所知~~~MD5到現在還算是不可逆的加密編碼~~

不知道是不是能貼出相關連結~~
[ffs]hunej
星球公民
星球公民
文章: 260
註冊時間: 2004-08-22 14:34

文章 [ffs]hunej »

MD5被一個中國教授破解了
http://free.tnc.edu.tw/modules/news/art ... oryid=1389
密碼學領域重大發現:山東大學王小云教授成功破解MD5

2004年8月17日的美國加州聖巴巴拉,正在召開的國際密碼學會議(Crypto’2004)安排了三場關于雜湊函數的特別報告。在國際著名密碼學家Eli Biham和Antoine Joux相繼做了對SHA-1的分析與給出SHA-0的一個碰撞之後,來自山東大學的王小云教授做了破譯MD5、HAVAL-128、 MD4和RIPEMD算法的報告。在會場上,當她公布了MD系列算法的破解結果之後,報告被激動的掌聲打斷。王小云教授的報告轟動了全場,得到了與會專家的贊嘆。報告結束時,與會者長時間熱烈鼓掌,部分學者起立鼓掌致敬,這在密碼學會議上是少見的盛況。王小云教授的報告緣何引起如此大的反響?因為她的研究成果作為密碼學領域的重大發現宣告了固若金湯的世界通行密碼標准MD5的堡壘轟然倒塌,引發了密碼學界的軒然大波。會議總結報告這樣寫道:“我們該怎麼辦?MD5被重創了;它即將從應用中淘汰。SHA-1仍然活著,但也見到了它的末日。現在就得開始更換SHA-1了。”

關鍵詞:碰撞=漏洞=別人可以偽造和冒用數字簽名。
Hash函數與數字簽名(數字手印)
HASH函數,又稱雜湊函數,是在信息安全領域有廣泛和重要應用的密碼算法,它有一種類似于指紋的應用。在網絡安全協議中,雜湊函數用來處理電子簽名,將冗長的簽名文件壓縮為一段獨特的數字信息,像指紋鑑別身份一樣保證原來數字簽名文件的合法性和安全性。在前面提到的SHA-1和MD5都是目前最常用的雜湊函數。經過這些算法的處理,原始信息即使只更動一個字母,對應的壓縮信息也會變為截然不同的“指紋”,這就保證了經過處理信息的唯一性。為電子商務等提供了數字認證的可能性。
安全的雜湊函數在設計時必須滿足兩個要求:其一是尋找兩個輸入得到相同的輸出值在計算上是不可行的,這就是我們通常所說的抗碰撞的;其二是找一個輸入,能得到給定的輸出在計算上是不可行的,即不可從結果推導出它的初始狀態。現在使用的重要計算機安全協議,如SSL,PGP都用雜湊函數來進行簽名,一旦找到兩個文件可以產生相同的壓縮值,就可以偽造簽名,給網絡安全領域帶來巨大隱患。
MD5就是這樣一個在國內外有著廣泛的應用的雜湊函數算法,它曾一度被認為是非常安全的。然而,王小云教授發現,可以很快的找到MD5的“碰撞”,就是兩個文件可以產生相同的“指紋”。這意味著,當你在網絡上使用電子簽名簽署一份合同後,還可能找到另外一份具有相同簽名但內容迥異的合同,這樣兩份合同的真偽性便無從辨別。王小云教授的研究成果證實了利用MD5算法的碰撞可以嚴重威脅信息系統安全,這一發現使目前電子簽名的法律效力和技術體系受到挑戰。因此,業界專家普林斯頓計算機教授Edward Felten等強烈呼吁信息系統的設計者盡快更換簽名算法,而且他們強調這是一個需要立即解決的問題。

國際講壇 王氏發現豔驚四座\r
面對Hash函數領域取得的重大研究進展,Crypto 2004 會議總主席StorageTek高級研究員Jim Hughes 17 日早晨表示,此消息太重要了,因此他已籌辦該會成立24年來的首次網絡廣播(Webcast )。Hughes在會議上宣布:“會中將提出三份探討雜湊碰撞(hash collisions )重要的研究報告。”其中一份是王小云等幾位中國研究人員的研究發現。17日晚,王小云教授在會上把他們的研究成果做了宣讀。這篇由王小云、馮登國、來學嘉、于紅波四人共同完成的文章,囊括了對MD5、HAVAL-128、 MD4和RIPEMD四個著名HASH算法的破譯結果。在王小云教授僅公布到他們的第三個驚人成果的時候,會場上已經是掌聲四起,報告不得不一度中斷。報告結束後,所有與會專家對他們的突出工作報以長時的熱烈掌聲,有些學者甚至起立鼓掌以示他們的祝賀和敬佩。當人們掌聲漸息,來學嘉教授又對文章進行了一點頗有趣味的補充說明。由于版本問題,作者在提交會議論文時使用的一組常數和先行標准不同;在會議發現這一問題之後,王小云教授立即改變了那個常數,在很短的時間內就完成了新的數據分析,這段有驚無險的小插曲倒更加證明了他們論文的信服力,攻擊方法的有效性,反而凸顯了研究工作的成功。
會議結束時,很多專家圍攏到王小云教授身邊,既有簡短的探討,又有由衷的祝賀,褒譽之詞不絕。包含公鑰密碼的主要創始人R. L. Rivest和A. Shamir在內的世界頂級的密碼學專家也上前表示他們的欣喜和祝賀。
國際密碼學專家對王小云教授等人的論文給予高度評價。
MD5的設計者,同時也是國際著名的公鑰加密算法標准RSA的第一設計者R.Rivest在郵件中寫道:“這些結果無疑給人非常深刻的印象,她應當得到我最熱烈的祝賀,當然,我並不希望看到MD5就這樣倒下,但人必須尊崇真理。”
Francois Grieu這樣說:“王小云、馮登國、來學嘉和于紅波的最新成果表明他們已經成功破譯了MD4、MD5、HAVAL-128、RIPEMD-128。並且有望以更低的復雜度完成對SHA-0的攻擊。一些初步的問題已經解決。他們贏得了非常熱烈的掌聲。”
另一位專家Greg Rose如此評價:“我剛剛聽了Joux和王小云的報告,王所使用的技術能在任何初始值下用2^40次hash運算找出SHA-0的碰撞。她在報告中對四種HASH函數都給出了碰撞,她贏得了長時間的起立喝彩,(這在我印象中還是第一次)。…… 她是當今密碼學界的巾幗英雄。……(王小云教授的工作)技術雖然沒有公開,但結果是無庸質疑的,這種技術確實存在。…… 我坐在Ron Rivest前面,我聽到他評論道:‘我們不得不做很多的重新思考了。’”

石破驚天 MD5堡壘轟然倒塌
一石擊起千層浪,MD5的破譯引起了密碼學界的激烈反響。專家稱這是密碼學界近年來“最具實質性的研究進展”,各個密碼學相關網站競相報導這一驚人突破。
MD5破解專項網站關閉
MD5破解工程權威網站http://www.md5crk.com/ 是為了公開征集專門針對MD5的攻擊而設立的,網站于2004年8月17日宣布:“中國研究人員發現了完整MD5算法的碰撞;Wang, Feng, Lai與Yu公布了MD5、MD4、HAVAL-128、RIPEMD-128幾個 Hash函數的碰撞。這是近年來密碼學領域最具實質性的研究進展。使用他們的技術,在數個小時內就可以找到MD5碰撞。……由于這個里程碑式的發現, MD5CRK項目將在隨後48小時內結束”。
對此�Ahttp://www.readyresponse.org主頁專門轉載了該報道http://w ... 其它網站也進行了報道
權威網站相繼發表評論或者報告這一重大研究成果
經過統計,在論文發布兩周之內,已經有近400個網站發布、引用和評論了這一成果。國內的許多新聞網站也以“演算法安全加密功能露出破綻 密碼學界一片嘩然”為題報道了這一密碼學界的重大事件。(報導見http://www.technewsworld.com/perl/board/mboard ... 各新聞網站上多次轉載。)
撿到一疊鈔票,原來是玩具鈔票,空歡喜一場。~~卡好勒

http://www.freepgs.com/hunej/phpBB2/
phpBB2 portal project+foxfireXD templates
hpo14
竹貓忠實會員
竹貓忠實會員
文章: 414
註冊時間: 2003-05-10 16:37
來自: M Starbucks

文章 hpo14 »

原來是這篇文章,我之前有看過了!
真的很強...不過程式應該沒有流出來吧!
非官方外掛問題區公告: [必看]請配合發問格式及明確主題發問(2004 02/16更新)

竹貓星球發問規則:
http://phpbb-tw.net/phpbb/viewtopic.php?t=16149

請不要濫用 私人訊息 或是 MSN 問問題...你以為竹貓是架好看的阿
wyyok
星球普通子民
星球普通子民
文章: 1
註冊時間: 2004-04-19 15:17

文章 wyyok »

我的版本是2.05,
照著各位大大的方式修正, 還是出現下面的狀況耶,
這個錯誤畫面出現的時機, 就是網友按文章連結後, 需要登入才能閱讀, 輸入帳號密碼送出後, 應該要直接看到文張內容ㄌ, 但是卻出現以下錯誤.

Could not obtain topic information

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND f.forum_id = t.forum_id' at line 4

SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, t.topic_type, t.topic_vote, t.topic_last_post_id, f.forum_name, f.forum_status, f.forum_id, f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate, f.auth_vote, f.auth_attachments, f.auth_download, t.topic_attachment, f.auth_ban, f.auth_greencard, f.auth_bluecard FROM phpbb_topics t, phpbb_forums f WHERE t.topic_id = AND f.forum_id = t.forum_id

Line : 154
File : /home/xxx/public_html/phpbb2/viewtopic.php
偶應該要再修正哪個地方呢?
Kill
竹貓忠實會員
竹貓忠實會員
文章: 874
註冊時間: 2003-07-31 12:40
來自: CKD Studio
聯繫:

文章 Kill »

升級成2.0.16
喜歡...就是淡淡ㄉ愛... ...則是深深ㄉ喜歡...
圖檔
提供phpBB代架服務以及外掛安裝

有付費服務的問題請移駕至CKD Studio發問 ╮( ̄▽ ̄)╭
主題已鎖定

回到「phpBB 2 安裝與使用」