2012-01-18 97 views
2

您好我一直負責試圖打破它我的公司使用,我真的不多少運氣專有的Web服務器程序。它建於c。黑客攻擊網絡服務器

它運行爲根,我試圖讓它執行命令。網絡服務器接收URL中發佈的命令並使用前綴執行這些命令。現在我可以通過任何命令,如'& _cmd = gettimeout'或'& _cmd = rm'。該計劃將實際運行「前綴RM」

前綴程序將嘗試在一組目錄,其中沒有有用的UNIX命令是運行該命令,因此將剛報到的命令沒有找到。當php腳本將空格轉換爲+時,也不可能在URL中傳遞空格,例如'&_cmd = rm%20-f'。無論如何格式化& _cmd字符串來運行真正的Unix命令?

位奇怪的任務,但我是一個放置學生做一個安全課程,我的工作,試圖找到我對我的過程中的一些工作。

感謝您的幫助

+0

與&_cmd = RM,會發生什麼; PWD?它運行pwd命令嗎?你可以通過「..」訪問父目錄嗎?你能訪問像「/ usr/bin」這樣的絕對路徑嗎?你能傳遞多個參數嗎?比如「rm%20-rf%20 /」? – vaugham 2012-01-18 11:03:25

+0

爲什麼用C標記?標籤已移除。 – pmg 2012-01-18 11:07:15

+0

命令rm; pwd未找到 看起來它只是將整個文本解析爲一個命令 – 2012-01-18 11:10:01

回答

1

一些想法,可能會奏效,可能不會:

  1. 後引號。幸運的是,他們將在prefix運行之前進行評估。沒有運氣,他們可能仍然會以某種方式爲你服務。
  2. 如果空格不起作用,爲什麼不嘗試其他類型的空白?有標籤,等等。
  3. 你需要找到可以使用哪些命令,並找出它們是否有幫助。
  4. 您可能會在其中一個允許的命令中找到緩衝區溢出。通常情況下,這種超支不是安全風險(如果你接管vi,你無法做任何你無法做到的事情)。但在這種情況下,你可能會利用它們。
  5. 您可能會發現的可執行/proc/,如果你能到達那裏 - 它包含一個鏈接到每個進程的命令。
+0

這很有希望使用帶前綴的back ticks在命令行上讓我先運行命令。然而,似乎在網絡服務器執行呼叫allways運行前綴作爲程序和任何其他論證作爲爭論在執行呼叫:( – 2012-01-18 13:10:11