国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

Discuz!論壇install.php書寫錯誤,可以寫入WEBSHELL漏洞
2006-04-20   

書寫錯誤,導致惡意用戶構造語句可以寫入webshell,進而控制整個服務器。
前幾個晚上,把前臺文件,只要是數據庫調用中的變量都看了一遍。看看是不是有過濾不嚴的地方,看完后覺得,過濾不嚴的地方的確不少,但是都已經被單引號保護起來了。在php中,如果magic_qoute_gpc=on(默認的)編譯器會自動把單引號等特殊字符轉義,而這個時候我們想改變程序的執行流程是非常困難的。這樣大大的增加了入侵的難度,在某種程度上,也的確保證了其安全。這也是為什么朋友提出一定要在magic_qoute_gpc為on的時候依然可以利用的要求。如果需要單引號介入才能利用的漏洞,在Discuz!論壇中基本上是沒什么用處的。
在把所有文件中數據庫連接的地方讀了一個遍后,沒找到任何有價值的東西。這個時候思路開始有一點亂了,我在猶豫自己是否應該試著從程序員的思維邏輯漏洞下手看看,這就意味著我要去通讀所有代碼,找到程序員在寫程序時考慮不周全的地方,這種漏洞多半是上下文邏輯關系錯誤,或者是限定不唯一,還有就是一些本來應該注意,但管理員卻偏偏忽略的地方。
想到這里,看來沒什么能偷懶的了,只能通讀代碼。因為既然目標是邏輯錯誤,那么就一定要細看上下文的關系,所以選擇從入口點開始讀起。入口點就應該是logging.php,因為這是登陸的地方,所有人都會從這里登陸進入論壇。上吧!
老規矩,我們先來看一段代碼:
=========codz begin==========
50 $errorlog = "$username ".substr($password, 0, 2);
......
54 $errorlog .= substr($password, -1)." $onlineip $timestamp ";
55 $password = md5($password);
56 $query = $db->query("SELECT m.username as discuz_user, m.password as discuz_pw, m.status, m.styleid AS styleidmem, m.lastvisit, u.groupid, u.isadmin, u.specifiedusers LIKE '% $username %' AS specifieduser
FROM $table_members m LEFT JOIN $table_usergroups u ON u.specifiedusers LIKE '% $username %' OR (u.status=m.status AND ((u.creditshigher='0' AND u.creditslower='0' AND u.specifiedusers='') OR (m.credit>=u.creditshigher AND m.creditWHERE username='$username' AND password='$password' ORDER BY specifieduser DESC");
......
69 if(!$discuz_user)
{
70 @$fp = fopen($discuz_root.'./forumdata/illegallog.php', 'a');
71 @flock($fp, 3);
72 @fwrite($fp, $errorlog);
73 @fclose($fp);
74 showmessage('login_invalid', 'index.php');
}
=========codz endz==============
這段代碼我們來一句一句看看,他先紀錄輸入的用戶名和密碼,密碼只取前兩位,然后取密碼后一位,并且將ip和時間一起賦過來。然后去密碼的md5值,放到數據庫中去。如果你認為我們可以改變數據庫執行語句的操作流程那就錯了,面對單引號我們沒有什么可以做的(至少是我做不了什么,除非加密)。后面如果用戶名和密碼不對則將紀錄下錯誤用戶名和密碼到illegallog.php中。整個這個記錄錯誤密碼的過程中,變量沒有經過任何驗證,也就是說如果我成心輸入錯誤的用戶名,他也不會作檢查然后直接記錄下來。那么如果我的錯誤的用戶名是一個可執行的代碼,他也會記錄下來。在他記錄下來之后我們去調用這個文件就可以形成一個shell。
到這里你是不是已經興奮了?對不起,你的興奮無效。我是一點都興奮不起來,因為我在前面讀第一遍的時候,特別注意過Discuz!對文件句柄的操作,他的確對個別變量沒有過濾,但是他在install.php中得初始化的時候,已經給所有用到的以.php結尾的數據文件開始的地方添加了一句:。這是初始化的時候寫入的,我們都應該明白這句話的作用。你無法去調用你寫入的東西,因為一開始就已經結束了.這樣顯然是無法成功的。有點煩了,心想不就是5根羊棒么?輸就輸了!一賭氣扔下代碼,自己跑到姥姥的那屋,摟著姥姥撒起嬌來,(在姥姥面前撒嬌、耍賴、搗亂是我最喜歡的事情之一)我在姥姥面前反復咒罵著Discuz!的變態,說我自己如何如何認真的讀代碼。姥姥并不知道我在說什么,也不在乎我給她搗亂,繼續看著自己的電視。過了一會兒,姥姥應了一句:"你這孩子啊,就是粗心,一點都不心細,你看你這什么碼(估計是說代碼)又壞了吧"。我嘎嘎大聲的笑著爬回了自己的屋子。坐在電腦前,喝了杯白開水,冷靜了一下。
做安全的人細心,毅力,自學,善于總結是非常必要的。回過頭又把logging.php文件重新讀一編,看看有沒有什么自己忽略的地方。文件并不長,又看了一遍覺得還是沒什么問題。既然這里沒什么問題,思路就放到那句上,這句話是如何寫入的呢?
于是在install.php中翻到了這段代碼:
==========codz begin==========
29 function loginit($log) {
30 echo '初始化記錄 '.$log;
31 $fp = @fopen('./forumdata/illegallog.php');
32 @fwrite($fp, " ");
33 @fclose($fp);
34 result();
35 }
......
1389 loginit('karmalog');
1390 loginit('illegallog');
1391 loginit('modslog');
1392 loginit('cplog');
1393 dir_clear('./forumdata/templates');
1394 dir_clear('./forumdata/cache');
==========codz endz==========
很顯然,loginit這個函數就是在往illegallog.php中寫入這句話。這樣我們就算寫入了代碼也會因為那句話的存在而無法調用執行。我們已經完全進入了一個死胡同。但我似乎覺得這段代碼哪里有些問題,再仔細看了一下,那個fopen看著怎么那么不順眼啊。如果沒記錯的話fopen的語法格式應該是這樣的:
resource fopen ( string filename, string mode [, int use_include_path [, resource zcontext]])
前面兩個參數,一個是文件句柄,或者指定打開哪個文件。第二個參數是指定打開的方式,比如讀還是寫。這里要提醒大家的是這個兩個參數是必選的。比如我們寫入目錄下的Jambalaya.php,我們的語句是這么寫的:fopen('./Jambalya.php','w'),后面那個打開方式必須選的,否則就會報錯。可是我們注意到,他的代碼中只有一個參數,這樣程序怎么可能正確執行呢?
我們來做一個試驗,創建一個1.php,寫入如下代碼:
===========codz begin==========
$fp = @fopen('./2.php');
@fwrite($fp, " ");
@fclose($fp);
echo "success!";
===========codz endz============
在這里做一個和Discuz!中的一樣的環境,如果這個程序執行成功,那么會在根目錄下產生一個2.php,而2.php的開頭一行應該是,并且屏幕上顯示success,其實這里的success就是用來讓我們了解程序執行所到的位置。我們在url中提交:http://127.0.0.1/myhome/1.php,屏幕上顯示了success,這說明已經執行到程序的尾部。但是檢查目錄時發現并沒有生成名為2.php的文件,也就是說我們寫入失敗了。也許大家會奇怪,寫入失敗應該有出錯信息啊。的確應該有,但是因為在fopen前加上了@,而@在php中是用來抑制所有調用函數產生的錯誤信息的。換句話說就是即使出錯了,也不會報錯。
姥姥教訓的沒錯,我太粗心了!
假設一切都是按我的思路走過的話,也就說在安裝初始化的時候,因為那個fopen的錯誤使用,所以discuz/forumdata目錄下絕對不會產生一個含有代碼的illegallog.php文件,但是因為抑制出錯信息,所安裝的時候會依然顯示初始化成功,其實卻并沒有初始化,更沒有產生illegallog.php。而如果這里沒有初始化,也就意味著illegallog.php的產生和初始化將在logging.php中完成。logging.php的初始化并沒有對文件寫入任何保護語句或者過濾措施來避免用戶調用。到這里,一切都明朗了。說得直白一點,也就是因為install.php文件錯誤的初始化的緣故,我們可以通過logging.php寫入惡意代碼,然后調用那個文件來產生一個shell控制整個網站。

Exploit代碼如下
以下內容可能帶有攻擊性,僅供安全研究與教學之用。使用者風險自負

不用注冊任何賬戶,到登陸頁面,在登陸用戶名的地方先輸入123456,回車。這里大家可能明白了,密碼前兩位是顯示的,這樣illegallog.php里面保存的就是:
*****6 127.0.0.1 1022383175

這就可以查看php的設置了,我們先看一下register_globals這個設置是否為on。(大部分的網站都是on)好,然后我們在登陸口輸入,這里最好不用system(),我在做測試的時候很多網站把這個system()函數禁用了。
然后我們調用http://192.168.0.13/forumdata/illegallog.php?cmd=dir
前面出來一堆垃圾信息,往最下面看是不是可以看到目錄被列出來了?但是這樣寫入有點麻煩,因為在實驗的時候,大的網站注冊用戶有10萬多人,那么這個文件會大的出奇,打開速度奇慢。
那么我們這里其實還可以這樣寫入,我們把php的shell改成jpg格式的圖片,上傳到主機。
在URL中調用:
http://192.168.0.13/forumdata/illegallog.p...chments/Jam.php
然后我們直接提交URL:
http://192.168.0.13/attachments/Jam.php就?...一個shell了吧!

熱詞搜索:

上一篇:在Cisco交換機上實現隔離訪問
下一篇:讓VMWare Workstation成為服務

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
jlzzjlzz国产精品久久| 国产精品白丝jk白祙喷水网站| 国产精品久久久久久久久图文区| 精品电影一区二区| 久久久影院官网| 欧美国产一区二区| 1024成人网| 一区二区三区视频在线观看| 怡红院av一区二区三区| 亚洲成a人片在线不卡一二三区| 亚洲第一主播视频| 美女在线视频一区| 国产精品中文有码| 91麻豆福利精品推荐| 欧美日韩综合在线| 日韩欧美国产三级电影视频| 久久综合久久鬼色| 亚洲精品免费电影| 美腿丝袜一区二区三区| 成人网在线播放| 欧美在线短视频| 欧美zozozo| 亚洲男人天堂一区| 日韩电影网1区2区| 国产成人免费av在线| 91官网在线免费观看| 欧美一级理论片| 国产亲近乱来精品视频| 亚洲综合小说图片| 久久91精品久久久久久秒播| 成人妖精视频yjsp地址| 欧美女孩性生活视频| 久久久久久夜精品精品免费| 亚洲色图一区二区| 久久99热99| 在线视频国内一区二区| www国产成人免费观看视频 深夜成人网 | 91久久精品国产91性色tv| 欧美一区午夜视频在线观看| 91热门视频在线观看| 午夜在线成人av| 国产精品综合av一区二区国产馆| 成人a免费在线看| 欧美精品日韩一区| 亚洲视频图片小说| 国产suv精品一区二区三区| 在线观看av不卡| 国产女人18毛片水真多成人如厕 | 国产精品中文有码| 欧美精品黑人性xxxx| 中文字幕一区不卡| 精品一区二区免费视频| 欧美日韩综合一区| 亚洲精品国产无套在线观| 国产美女一区二区三区| 欧美福利一区二区| 亚洲午夜激情av| 91一区二区三区在线播放| 日本一区二区三区电影| 黄页网站大全一区二区| 欧美高清hd18日本| 三级影片在线观看欧美日韩一区二区| 成人午夜视频在线观看| 久久久噜噜噜久噜久久综合| 国产制服丝袜一区| 精品国产凹凸成av人导航| 美女视频黄免费的久久 | 26uuu国产在线精品一区二区| 亚洲精品va在线观看| 色综合天天综合给合国产| 国产精品久久久久四虎| av在线播放一区二区三区| 国产欧美日韩综合精品一区二区| 国产一区二区看久久| 国产视频在线观看一区二区三区 | 欧美日韩中文国产| 亚洲一区二区av在线| 欧美日韩亚洲综合一区二区三区| 亚洲视频免费观看| 欧美性大战久久| 婷婷久久综合九色国产成人| 日韩一区二区三区在线| 九九精品一区二区| 国产亚洲短视频| 成人美女视频在线观看| 亚洲婷婷综合色高清在线| 一本色道久久综合狠狠躁的推荐| 亚洲欧美视频在线观看| 欧美日韩亚洲另类| 久久99精品国产麻豆婷婷| 国产午夜精品理论片a级大结局| 成人性视频网站| 一区二区激情视频| 91精品国产一区二区三区| 国产综合色在线视频区| 国产精品国产自产拍在线| 日本二三区不卡| 日本不卡的三区四区五区| 久久久91精品国产一区二区精品 | 3751色影院一区二区三区| 另类的小说在线视频另类成人小视频在线| 欧美va在线播放| 成人深夜在线观看| 视频一区国产视频| 久久日一线二线三线suv| 99久精品国产| 久久er99热精品一区二区| 国产精品国产三级国产aⅴ中文| 欧美亚洲高清一区| 国产精品夜夜嗨| 亚洲一区二区在线观看视频| 精品福利视频一区二区三区| 在线观看国产一区二区| 激情综合亚洲精品| 亚洲永久精品大片| 久久久精品2019中文字幕之3| 在线观看免费一区| 成人免费精品视频| 久久精品国产亚洲高清剧情介绍 | 色哟哟日韩精品| 激情另类小说区图片区视频区| 国产精品毛片久久久久久久| 91精品国产综合久久久久| 99久久免费国产| 精品综合久久久久久8888| 亚洲一区二区三区在线看| 久久精品一区四区| 欧美成人性福生活免费看| 色94色欧美sute亚洲线路一久| 国模无码大尺度一区二区三区| 亚洲国产一区二区三区青草影视| 国产区在线观看成人精品| 精品国产一区二区亚洲人成毛片| 欧美丝袜丝nylons| 91免费视频观看| voyeur盗摄精品| 成人小视频免费观看| 精品一区二区三区免费观看| 日韩成人免费看| 石原莉奈在线亚洲二区| 亚洲成人自拍网| 亚洲一区二区3| 亚洲韩国精品一区| 亚洲线精品一区二区三区| 亚洲永久免费av| 亚洲成人av福利| 午夜精品aaa| 日韩av午夜在线观看| 日日欢夜夜爽一区| 日韩精品久久理论片| 婷婷中文字幕一区三区| 亚洲成人免费电影| 视频一区二区不卡| 免费成人在线视频观看| 极品美女销魂一区二区三区 | 日韩和欧美一区二区| 午夜激情一区二区三区| 婷婷成人综合网| 六月丁香综合在线视频| 国产在线精品免费| 大陆成人av片| 91在线视频播放地址| 欧美日韩一区二区三区在线| 91精品国产综合久久久久久久| 日韩精品一区二区三区四区视频| 精品国产亚洲在线| 国产女主播视频一区二区| 国产精品国产精品国产专区不片| 亚洲视频中文字幕| 午夜精品久久久久影视| 久久66热偷产精品| www.亚洲色图.com| 欧美三级电影在线观看| 日韩欧美一区在线观看| 国产日韩欧美一区二区三区综合 | 久久精品av麻豆的观看方式| 国产在线播放一区二区三区| 99视频一区二区三区| 欧美日韩在线观看一区二区 | 91极品美女在线| 日韩欧美中文字幕精品| 中文字幕欧美日韩一区| 亚洲国产美国国产综合一区二区| 日本不卡不码高清免费观看| 丁香啪啪综合成人亚洲小说 | 精品国产91亚洲一区二区三区婷婷| 国产日韩亚洲欧美综合| 亚洲风情在线资源站| 国产成人精品一区二| 欧美日韩在线精品一区二区三区激情| 精品国产自在久精品国产| 国产精品久久久久久久久免费桃花| 一级日本不卡的影视| 国产一区二区三区四区五区入口| 在线观看视频一区二区欧美日韩| 久久久久免费观看| 日韩精品一卡二卡三卡四卡无卡| 成人av第一页| 久久婷婷国产综合精品青草| 丝袜美腿一区二区三区|