Linux系統下由論壇到SSH的入侵分析
發表于:2007-05-26來源:作者:點擊數:
標簽:
本來我不習慣開QQ,可好友打來電話說有事找我,遂上線。因為我用的QQ是能顯示IP地址的木子版本,所以看到好友的IP:xxx.xxx.19.24,發現好友是在學校的實驗室上網。我忽發奇想,想看看他們實驗室的機器里都有些什么東西,因為以前我知道他們實驗室的機子在一
本來我不習慣開QQ,可好友打來電話說有事找我,遂上線。因為我用的QQ是能顯示IP地址的木子版本,所以看到好友的IP:xxx.xxx.19.24,發現好友是在學校的實驗室上網。我忽發奇想,想看看他們實驗室的機器里都有些什么東西,因為以前我知道他們實驗室的機子在一個C段里——什么?你讓我直接給好友發木馬?那小子比猴都精,況且那小子的技術也不是省油燈,還是用迂回戰略吧!
從百寶箱里隨便祭出個掃描器,我用的是這個小東東:BluesPortScan,它的掃描速度超快,可惜會漏報。先掃三十臺機器吧,端口1—150。掃描完后,一臺機器引起了我的注意:機器IP為xxx.xxx.19.7,開了22和80端口。開了22端口,八成就是臺Linux機器了。拿 SecureCRT連一下22端口:
小知識:22號端口對應Linux下的SSH,這一服務有許多弱點,建議在其它端口運行SSH。
79端口的Finger也沒開,用戶名目前只知道可能的是ROOT,密碼先來個123,返回錯誤,看來要從別處入手了。別處好像只開了80,后來擴大了端口掃描范圍又掃出個Oracle的3306端口,不過那個數據庫用戶ROOT的密碼不是空,總不能讓我掛本字典去跑吧?還是轉到80端口吧。
Te.net上它的80端口,然后GET,返回服務器信息:Server: Apache/1.3.27 (Unix) PHP/4.2.3。用的阿帕奇服務器,不要考慮WEB服務器本身的漏洞了,去網站轉悠吧。地址欄里敲入它的地址:xxx.xxx.19.7,回車。網頁出來了,看來沒有用虛擬主機什么的,八成是學生自己作的東西,不過,雖然網頁內容比較官方,但感覺網站好像千瘡百孔。用PHP和HTML做的,有好像改得面目全非或自己做的新聞系統,在文章管理系統里找了幾個點試了試SQL注入,沒有成功,算了,到論壇里看看吧。
進了論壇里,先習慣性的用admin密碼 admin登錄,竟然成功了,倒啊倒!找個上傳點扔個PHP后門上去!接下來卻讓我大失所望,管理面板里轉了半天也找不到個上傳點,別說上傳頭像了,用戶資料里就沒頭像這一項。哪個論壇這么氣人?看看網頁底部:本論壇代碼來自xxx.com,管理員還不錯,沒改版權信息??吹搅诉@兒想到了什么?趕緊去你自己的網站改敏感字符?呵呵,晚了,地址中打入xxx.com回車,哦,原來是個不錯的個人主頁,看他的作品里有個微型PHP文本論壇,就是這個了,呵呵,幸虧剛才在論壇里沒試SQL注入,不然就白費傻勁了。不管三七二十一,下載下來再說。
下載完成,解壓,發現論壇根目錄下有個DB文件夾,這就應該是所謂的論壇“數據庫”了,打開此文件夾,發現里面都是些.dat文件,用記事本打開,果然是文本格式。警覺的雙眼一下子就盯到了那個user.dat上。打開,內容如下:
admin<~>p|lcv<~>3<~>ecawen@21cn.com<~>peking<~>http://<~><~><~><~><~>3<~>
2004-01-01<~>1
admin是默認用戶,p|1cv應該就是加密后的密碼了,緊接的“3”代表管理員,后面的就不用看了。迫不及待地在地址欄里里輸入:xxx.xxx.19.7 /forums/db/user.dat,天,把里面的內容全打到IE里了,趕緊保存下來。
好了,找關鍵的地方,最原先的用戶,一般就是第一二個,找到了,是管理員權限,用戶名為aaa,密碼為4$@A%G,破解出了這個密碼,按人的習慣,系統密碼不是這個也不遠了,至少會前進一大步。重新分析論壇代碼,發現用以下的方法做的加密:
function t_encrypt($text, $key)
{
$crypt = "";
for($i=0;$i<strlen($text);$i++)
{
$i_key = ord(substr($key, $i, 1));
$i_text = ord(substr($text, $i, 1));
$n_key = ord(substr($key, $i+1, 1));
$i_crypt = $i_text + $i_key;
$i_crypt = $i_crypt - $n_key;
$crypt .= chr($i_crypt);
}
return $crypt;
}
還有個key,key在哪呢?在db下的一個mishi.php里,打開內容如下:
<? $key="jpjtvdomfmawwttsdhoxurmygjjtauefjuimueurisecggpymneslwowuqnzmmgmvjvclearcase/" target="_blank" >ccmeye
uselymzoinxvqonmhjqjhljywixrdxboqdmmfidlhzrcoatnldlmwvinljayirwqcgazyvfrwvgbgroqfxiqruu
rtkpogbkgdibeqejehfamujlqasitbizcxasobkl"; ?>
分析加密函數的算法:從密碼第一位開始,取密碼的一個字符,取key對應位的一個字符,轉換成Ascii碼相加,然后相加結果再減去key中下一位的Ascii,然后把最后結果再轉換成字符即所謂密文存儲。
Substr(string,i,j)函數的作用是將字符串string的第 i 位起取出 j 個字符。Ord()和chr()則分別是字符到 Ascii和Ascii到字符的轉換函數。簡化一下上面算法就是:$i_crypt=$i_text+$i_key-$i+1_key。先拿第一位算吧,假設原密碼第一位Ascii碼為x,則:
x+ascii(j)-ascii(p)=ascii(4)
用Ascii碼算就是x+106-112=52
x=58轉換成字符就是“:”,好奇怪。把六位密碼全部還原回來,再去論壇登錄,糟了,希望破滅了,提示密碼錯誤!管理員大概不會去改代碼中加密部分的算法的,難道,管理員把key改了?
重又回到論壇,注冊一個新用戶ecawen,密碼mygod,然后打開它的user.dat觀看,加密后的密文為p|lcv,按下載回來的論壇源代碼中的密鑰算了算,不對,果然key被改了。但包含key的文件是個mishi.php,key也在PHP語句里,遠程根本無法得到,瀏覽器里打 /forums/db/mishi.php返回的只是空白頁面,因為傳出時PHP語句早被服務器過濾了。怎么辦,想了大約幾秒鐘,還是有辦法的,我們不一定要知道確切密鑰,知道密文和算法了,這么簡單的算法我們應該能把需要的搞出來。
假設未知密鑰第一位是Ascii碼a,每二位是b,依此類推……
我的用戶ecawen的密碼(我注冊的,當然知道,我輸的是mygod)加密后密文是p|lcv,所以我們可以這樣算:
?。榱丝粗啙峚scii(m)我們直接用ascii碼109)
109+a-b=112
121+b-c=124
103+c-d=108
.
.
.
看暈了吧,其實,我們加個()就豁然開朗了。
109+(a-b)=112
121+(b-c)=124
103+(c-d)=108
.
.
.
好了,拿出他的管理員密文來算吧:
x+(a-b)=52
x+(b-c)=36
x+(c-d)=64
.
.
.
把x再還原成字符,好了,原密碼出來了吧?有點復雜?越這樣你會越激動的!不過,有點要注意的是,你注冊的用戶密碼位數要不少于管理員密碼位數,此處管理員密碼是六位,我一不小心注冊了個五位的,到第六位不能算了,還得另注冊個用戶,走了彎路。
好了,拿解出的密碼登錄論壇,成功登錄。打開secureCRT通過SSH登錄其系統,用戶名ROOT,密碼為剛解出的那個密碼,懷著激動的心情默念到第N聲芝麻開門的時候,門開了!進去轉吧,因為是好友學校的機器,代理我都沒用,有事CALL好友出來墊背!
后來還發現系統中存在與論壇管理員同名的那個aaa用戶且密碼也相同,就不再詳述了。那些ida/idq、webdav什么的早已遠去了, 沖擊波那個漏洞滿城風雨后也早銷聲匿跡了,現在專門找系統漏洞的攻擊及入侵已經快跟不上時代了,況且網上很多主機前面又是防火墻又是IDS的。而轉而分析網站綜合缺陷,從網站數據庫入手,SQL注入等這些手段正是熱潮,所以,管理員同志們,看好你們的每道關口、每個細節!
原文轉自:http://www.anti-gravitydesign.com
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97
|