2011-01-07 50 views
-1

我需要獲取存儲在我公司服務器上的aspx頁面的源,我沒有訪問服務器(或任何服務器 - 所以服務器語言不是考慮),我在我的PC上使用HTA localy。使用telnet和JavaScript檢索html/aspx源代碼

我寫了這個代碼:(JavaScript的)

var WshShell = new ActiveXObject("WScript.Shell"); 
     WshShell.Run("telnet -fh:/telnetlog.txt xxx.xxx.xxx.com 80"); //The host address 


setTimeout("WshShell.SendKeys('GET /subfolder/page.aspx HTTP/1.0~~')",1000); 

它工作在家裏多頁,但現在我已經得到了HTTP/1.1 401 ..

我能做些什麼呢?我從IE瀏覽器到這個頁面沒有任何問題。 任何其他的想法也被認爲是!

感謝, Rotem公司

+0

我很困惑...假設一個配置正確的服務器,telnet到Web服務器的80端口並請求頁面(不管是aspx還是html)將返回一個HTML頁面,而不是aspx源代碼。在瀏覽器中查看源代碼會得到同樣的結果。怎麼可能得到aspx代碼? – Jeff 2011-01-07 17:37:47

+0

@傑夫:有兩種方法。第一個涉及配置錯誤的服務器:沒有安裝.net的服務器,因此IIS僅提供它找到的.aspx頁面的內容,就好像它是一個文本文件。第二個涉及一個未修補的服務器(可能使用填充oracle攻擊),這會迫使服務器放棄它的內容。無論如何,你是對的,因爲這絕對不適用於生產系統。 – NotMe 2011-01-07 18:43:32

回答

1

401意味着服務器要你驗證,可能與NTLM。我嚴重懷疑可以使用JScript和Telnet來實現NTLM。

HTA的運行安全性低於常規網頁 - 因此,您可能可以通過跨站點XmlHttpRequest獲取頁面。這將通過IE的安全層,它應該(?)通過瀏覽器向請求提供NTLM證書。


使用從HTA XMLHttpRequest是就像使用一個從瀏覽器:

var url = "http://my-server/my-page.aspx"; 
var xhr = new XMLHttpRequest(); 
xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4) { 
     do_something(xhr.responseText); 
    } 
} 
xhr.open("GET", url, true); 
xhr.send(); 

responseText參數將包含服務器的響應(HTML)。

您應該也可以使用像jQuery這樣的JavaScript庫,而不是編寫自己的支持代碼。

+0

這是行不通的,我在'xhr.open(「GET」,url,true)行中出錯。 「也許因爲這不是我的服務器 - 再次? – Rotem 2011-01-09 16:06:33

1

就這樣我明白了: 你想下載一個你無法訪問的服務器上的網頁的aspx代碼?真的嗎?

只需撥打網絡管理員即可。如果你真的爲該公司工作,並有權獲得這些信息,那麼他們可以幫助你。

如果不是那麼,我希望其他人能夠更好地存在,而不是試圖爲你打黑機。