大家好,你們好嗎?我希望你一切都好,然後聽。聽聽當我離開美國來到亞洲或歐洲以及所有其他國家時,我總是會發生什麼。我開始表演,我站在舞台上,開始與人們交談,我告訴他們……我該如何從政治角度講這件事……非美國人也是非常好的人,我喜歡看到和聽到他們。

聽著,我想你會正確理解我的意思,所以放鬆一點,挺直你的肩膀,我是認真的!好的,當我在這裡做我的事情時,我希望你能與我保持聯繫。我有一個無線熱點和幾個完全混亂的易受攻擊的應用程序,我有一個如何搞亂你的程序的想法......去年我在舞台上表演並喝醉了,然後後來一位評論家找到了我並說:「嘿,喬,你的演示很不錯,但演示還不夠!因此,今天我的整個演示將是一個可靠的演示,我想知道您可能不喜歡什麼。
因此,“在安全性增強的情況下滲透測試的演變。”我已經對網路進行了整整十年的打擊,儘管它們曾經很糟糕,但它們仍然如此。我不知道你是否有過使用它們的經驗,但網路仍然很糟糕。而且這些應用程式仍然很糟糕。現在發生了什麼事?我們現在有 10 萬個安全產品保護您的應用程序,哪些是? - 太糟糕了! – 然後你跟他們一起上網,什麼? - 太糟糕了! “我們有很多東西可以保護這些垃圾!”
那麼,我今天的工作是什麼呢?我是誰?大多數網路人員都認識我,我是安全會議上的黑人,是的,那就是我,就是他們通常說的同一個人:「好吧,他叫什麼名字......一個有色非洲人. .....我以前見過他」!
好吧,夥計們,我從事網路攻擊已經有一段時間了。所以,我是一個餅乾,我是一個詛咒者,任何認識我的人都知道我喜歡喝朗姆酒和可口可樂。但我的生活發生了一些變化,我交了一個新女朋友,她很瘋狂,因為我喝太多了,她真的不喜歡我吃的方式,這就是為什麼我需要旅行,這就是為什麼我必須來這裡,我不得不吃掉所有肥膩的燉牛肉。所以請不要告訴她我吃什麼、喝什麼。
這張投影片你看到了我10年前在DefCon上的第一次演講,你看,那時候還有CRT顯示器,還有人記得嗎?

我和那裡的許多人交談過,我們確實和他們一起奪取了國旗。奪旗是一次奇妙的經歷,它以一種絕對神奇的方式改變了我的生活,就像耶穌一樣,我準備好大喊「哈利路亞!」這太神奇了。
所以我想做的是為初學者創造一個奪旗挑戰。如果您是新手,您可能從未參加過奪旗遊戲。為這個測試準備一個為期一個月的課程,其中包括學習加密和解密問題、網路測試、惡意軟體測試、學習逆向工程問題、利用漏洞利用等。這是一次非常紮實又有趣的活動。簡而言之,讓我們嘗試類似的事情。
在投影片上您可以看到無線網路的設置,我請您不要破壞它。如果您想進入名為 joe-hacktivity-demo 的網絡,則可以使用此密碼。

Здесь имеется текстовый файл, причина его создания – просто позволить вам копировать и вставлять информацию в адресную строку браузера. Обычно люди делают подобное с помощью таких вещей, как Windows 7, но всё, что вам нужно в данном случае — это просто веб-браузер. Так что если у вас есть Firefox, Chrome, всё, что вам нужно для взлома – просто открыть свой iPad или ноутбук, скопировать этот текст и войти на сайт книжного интернет-магазина. У меня есть система обнаружения вторжений IDS, у меня запущен Snort Box, и мы просто собираемся сохранить эту сеть в рабочем состоянии. Мы собираемся применить кучу веб-приложений, кучу SQL-инъекций, кучу межсайтовых скриптов против этого хоста, у которого есть это веб-приложение. Затем у нас имеется другая «коробка», в которой есть файрвол, настроенный так, что я смогу провести вас в обход некоторых ID и файрволов. Мы просто проникнем туда, обсудим это и проделаем там некоторые интересные вещи.
那麼,我需要繼續解釋還是可以開始呢?好吧,好吧,讓我們開始吧。我的筆記型電腦上有一個聰明的篡改偵測系統。現在我將放大顯示文字檔案的螢幕。您可以在瀏覽器行中查看其地址,這是我們的文字檔案。

我將使用簡單的 SQL 來實現跨站點腳本,但如果您想修改更嚴肅的應用程序,您可以查看此文字文件,其中有兩個應用程式。 2.6 版本的應用程式在 ASP.NET 平台上開發,用於檢查網路的運作狀況,它是 DotNet 平台的更新版本,具有跨站點腳本庫和其他一些安全機制,以及修改後的 web.config檔案來加載其他安全庫。
2.7 的應用程式與先前的應用程式相同,但它不僅具有 DotNet 的所有安全功能,而且還具有網路應用程式的防火牆。所以,我想在2.35參與這個應用,我就來聊聊。

如果您熟悉跨站腳本和 SQL 注入的基礎知識,您就會明白 2.6、2.5 和 2.7 是什麼。這樣我們就有了可以複製和貼上的文字檔。讓我們談談我插入到我們網站地址欄中的參數。這是 bookdetail.aspx?id=2 ,問號表示我們需要的參數 ID 是 2。 ID 相關的值為2。

我們現在要做的是檢查 SQL 注入是否有效。因此,我們將在此處添加一些簡單的程式碼,例如末尾的引號,並查看這會導致錯誤訊息「在字串後打開引號」。當您用引號替換參數或直接使用引號作為參數時,這是最常見的測試之一。這種情況經常發生,這並不奇怪。

讓我們試試看稍微不同的做法。我將用值 bookdetail.aspx?id=4 取代選項行。請注意 - 當我用 4 替換 4 時,顯示的頁面會發生變化,頁面頂部的圖片也會發生變化。現在我們試著把兩者放在括號裡,畫面又變了。如果我在行尾寫上(2-2),那麼圖片就會變得跟行尾寫著4一樣。如果我在括號中寫(1-3),頁面看起來就像我把數字XNUMX放在最後一樣,也就是說,我把ID等同於XNUMX。

那麼,你們當中有多少人透過滲透測試深入研究這些事情呢?你在想,「好吧,我將一些 SQL 程式碼貼到網址列中,它會將我重定向到主頁,現在我將對其進行更改,以便它可以將我發送到我想要的位置,或者返回主頁。實際上,您抑制了錯誤訊息,並且沒有 ODBS 錯誤訊息讓您高興得手舞足蹈,因為您成功地註入了 SQL 程式碼。
我發現有些問題,但我無法修復它。會發生什麼事?您的開發人員認為他是最聰明的,因為他設法刪除了錯誤訊息。但是,當您強制資料庫執行所有這些算術計算時,實際上會發生什麼?
因此資料庫執行以下計算:(4-1),我們得到第 3 頁。所以你可以回到開發人員那裡說:“不,不,不,夥計,即使沒有錯誤訊息,你仍然有 SQL 注入的可能性!”你只能稍微修復一下,而這種情況隨時隨地都會發生。
我已經使用過這些類型的技巧,但遊戲正在發生變化,許多人現在使用稱為 Web 應用程式防火牆的東西。因此,如果您在位址參數行中輸入類似:2 或 1 in (select user)— 的內容,您通常會收到錯誤訊息,因為該資料類型的 DBO(資料庫擁有者)名稱前綴不正確。在這種情況下,防火牆就陷入了用戶選擇的這個階段,並說:「不,不,不,我無法做出選擇」!

因此,當您看到這樣的事情時,這意味著即使您還沒有弄清楚是否遇到了 Web 應用程式防火牆,或者您沒有執行這些算術技巧,仍然有一個好方法來確定是否存在給定情況下的SQL 注入以及此Web 應用程式是否受防火牆保護。
我告訴你,有一件可怕的事情——這就是需要進行零售連鎖滲透測試。你們有人知道這在英語中意味著什麼嗎? PCI?我討厭 PCI,但我一直在進行零售連鎖滲透測試。 PCI 是基於 2008 年支付卡產業資料安全標準 (PCI DSS) 的資料安全標準。 「零售網路滲透測試」可讓您檢查資料是否符合 PCI 標準並識別真正的威脅。
這個標準是說真話的無限智慧:“他們應該…應該…”,你應該按照世界上的認證標準使用安全編碼標準,你就會…或者你可以防火牆你的Web應用程式。
與我合作的所有用戶都做了正確的事情,他們進行了威脅建模,然後召開了一次會議,然後又召開了一次會議,然後再次會面,最後修復了問題。你這樣認為嗎?但不是!他們正在“倒車”,停車感應器發出這樣的倒車訊號。他們只是把問題藏在衣櫥裡,看不見,然後說:「我們解決了它」!
現在我將向您展示另一件我認為非常有趣的東西。看這裡。到目前為止我所做的只是實作 SQL。我現在要做的是選擇主資料庫地址,將其複製並貼上到瀏覽器的地址欄中。當位址參數行的最後一個參數為0時,我們看到第一個資料庫稱為「BookApp」。

現在我將把這個 0 替換為 1,你會看到會發生什麼 - 我們看到第二個資料庫被稱為「master」。

然後我們將1改為2,看到下一個資料庫名為「tempdb」。

現在幫我吧!您認為我們已經識別出 SQL 注入嗎?是的,沒錯,很棒!但問題是我的 IDS 入侵偵測程式中沒有任何東西變紅!螢幕上的這個東西,它不是紅色的,當我們進行 SQL 注入時,沒有偵測到威脅!

太好了,現在看這裡 - 我一定做錯了什麼。我不是直接從資料庫獲取資料庫信息,那麼我用紅色底線的這個東西告訴我什麼呢?

不,等一下!我會嘗試以不同的方式來做這件事。我們不使用資料庫編號,而是使用上面顯示「SQL 注入錯誤 - 提取 1 個資料庫表」的表格行中的編號。

我將複製此資料並將其貼上到瀏覽器的網址列中。看看我們現在有什麼 - 短語 (select top 1 name from subjects where xtype = char (85)) - 它給了什麼?
沒錯,主資料庫的名稱是BOOKMASTER。我認為這是 SQL 注入,其他人也有同樣的想法嗎?連 Stevie Wonder 也能看出這是 SQL 注入!

但讓我們看看這裡 - 0 威脅!但這是一個廉價的系統,它有缺陷,而且規則還沒有更新。

我認為 IDS 驗證規則有點過時了,我今天早上下載了它們,它們已經有點過時了。也許我在這裡做錯了什麼,我下載了舊規則,但我應該下載最新規則,這些規則不超過 3 小時 - 我不知道。
但讓我們看得更遠。如果我們嘗試複製上面寫著「SQL 注入錯誤 - 檢索 2 個資料庫表」的其他數據,該怎麼辦?

因此,第二個資料庫的記錄為我們提供了所謂的「sysdiagrams」。

也就是我們提出的問題,參數xtype = char(85))和名字'BOOKMASTER'能否給出比BOOKMASTER高一級的名字?換句話說,系統可以給我後面的表的名稱嗎?這就是我們列出資料庫的方式 - 一旦您檢索到資料庫名稱和表格名稱,您就會不斷地問:“嘿夥計,我可以獲得比我現在正在查看的表大的表的名稱嗎?”,您只需繼續此過程並獲得新的表名稱即可。
但讓我們回頭看看我的程式 - 它再次顯示獨特安全威脅的數量為 0。

如果我嘗試基於聯合的 SQL 注入會怎麼樣?我這裡有一些其他類型的 SQL 注入,現在我們將插入一行直接指向 ID 為 100 的記錄。

結果,我們將收到數字 100 超出可接受值範圍的答案。因為如果我有 10 列,我可以選擇 5 列嗎?當然!我可以從 20 列中選擇 10 列嗎?當然不!也就是說,資料庫回應:“抱歉,夥計,但我沒有那麼多列!”太好了,然後我將 100 更改為 50,它再次告訴我「50 超出範圍」。好吧,25 怎麼樣?不,25 也超出了範圍。告訴我還需要輸入什麼? 13?這是一個不吉利的數字,不過好吧,我們撥13吧,它也在範圍之外。
我們拿9吧!太棒了,九個成功了!這是正確的條目,我需要超過 9 但小於限制值,所以讓我們再玩一些來找出我們的表有多少列。

那我們要如何確定一個表中有多少列呢?現在我們將在網址列中插入一個從 1 到 9 的序列,這稱為「聯合語句」或「聯合指令」。

但是您必須為兩個指令選項提供正確的數字數量,才能確定您的列以哪個數字結束。讓我們來做這個技巧-為數字2賦一個負值,即將網址列中的2改為-2。

書的封面圖片消失了,但所有這些數字都出現了——這些是資料庫表中的列號。來來來,告訴我號碼!二?好的,我們將其設為 2。

如果我去3號怎麼辦?我將與數字 3 一起寫@@version。您看到頁面上現在有什麼了嗎?

好的,現在大家幫幫我吧!現在我們可以說我們有 SQL 注入嗎?

依然沒有!安全系統沒有發現任何SQL注入。
我的安全職涯始於 IDS 入侵偵測系統分析師。那是一種可怕的生活,你必須整天監控資料包攔截,除了婚姻之外,可能沒有其他事情會讓你想朝自己的頭開槍。
我的意思是,我就像其他人一樣,我整天都在看著非常糟糕的事情,當你開始看到這些事情從你身邊溜走時,這真是令人興奮,令人發狂。
假設我們要做一些有趣的事。也許我會把它拉到這裡,複製它,然後拖到這裡。因此,我將資料庫版本、伺服器名稱,然後 master.sys.fn_varbintohexstr(password_hash) 貼到網址列 - 沒什麼有趣的,對吧?

現在我們在頁面上獲得此類數據,我認為頂行對我們很有用。

重要的是我們可以了解到 IDS 是我們可以使用的一個偉大的東西!那麼誰和我在一起呢?立即運行並購買其中一個程式!
螢幕顯示程式再次沒有偵測到任何 SQL 注入。

這只是一個很棒的程序,它比我們想像的還要好,因為它可以編譯所有那些沒有人看過的無用用戶日誌,這太酷了!好吧,讓我們假設我們畢竟做了一些有趣的事情。我們使用這些參數:1=1、1=2 和 1*1。一等於一嗎?是的。一等於二嗎?不,不平等。但我們需要做的是檢查更改是否會出現在我們想要「列出」的正確頁面上。

我將第一行1=1的參數複製並貼上到網址列中,查看頁面,然後將此表達式變更為1=2。如果頁面以某種「不公平」的方式發生變化——正如我們所看到的,它確實發生了變化——那麼基於此,從程式設計的角度來看,我可以得出結論,存在 SQL 注入。因為如果我使用1=1和1=2,那麼我可以這樣算:「好吧,如果我取用戶名dbo並且1=1,因為根據說明,如果用戶名是dbo並且1=1,那麼我們得到了正確的頁面,因此我知道用戶名確實是dbo。天氣晴朗?好吧,讓我們再看看 IDS 程式選項卡 - 沒有威脅!我告訴你,這是一個了不起的產品。
現在讓我們來做這個有趣的事。讓我們看看這些值。一大於負一嗎?顯然還有更多。但接下來發生的事情是我真正喜歡的。這就是「1小於1」的表達方式。

再說一遍,這些只是提出相同問題的不同方式。如果您有孩子,您就會知道他們善於提問。 「我可以吃這些餅乾嗎? - 你不能! – 也許我可以擁有這些籌碼? - 不,沒有餅乾! “那我可以吃這些奧利奧嗎?”我知道這一點,我經歷過。
25:50 分鐘

一些廣告🙂
感謝您與我們在一起。 你喜歡我們的文章嗎? 想看更多有趣的內容? 通過下訂單或推薦給朋友來支持我們, , 我們為您發明的入門級服務器的獨特模擬: (適用於 RAID1 和 RAID10,最多 24 個內核和最多 40GB DDR4)。
Dell R730xd 在阿姆斯特丹的 Equinix Tier IV 數據中心便宜 2 倍? 只有這裡 在荷蘭! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - 99 美元起! 閱讀
來源: www.habr.com
