「安全工具」利用curl 突破伺服器限制,進行安全滲透測試(一)

curl簡介

今天給大家介紹一個命令行下的網路傳輸客戶端工具、Web神器curl,它支持包Http、Ftp在內的常見網路協議,支持代理,支持Https、證書,支持各種Http方法,在各發行版的Linux和Windows默認都支持,二期linux默認自帶。其底層的C庫libcurl也被很多腳本語言包括PHP(cURL)、Perl(Net::Curl,WWW::Curl)、Python(PyCurl)等打包成模塊調用,直接用於Web客戶端編程,編寫網路爬蟲或者其他Web自動工具。尤其對於php來說由於它缺乏這類工具可以直接做Web客戶端,所以cURL就成了它唯一的選擇了。

關於curl的詳細介紹和各種參數很多很雜,在此不做贅述,請自己搜索或者查看官方文檔。

Advertisements

簡單訪問

最簡單的用法就是在命令行下輸入curl 後面跟個網站Url就可以可以獲取信息了。當然由於獲取的是html文件的內容,不是我們常見的網站的展現形式,有很多Html標籤穿插在內容之間。

咱們先訪問個有趣的網站。(不能直接帖出來文本網址,會被頭條機器人認為是網站廣告)

利用curl下載

curl作為一個支持多協議的工具,可不可代替wget做下載呢?

當然,完全可以用來替代wget做文件下載,而且有不少的優勢。下面就實例演示下:

下載載文檔

我們以頭條上一片文章的配圖為例子,介紹如何下載圖片。先通過瀏覽器訪問,圖片顯示為:

-o表示指定下載後文件的名稱

-O表示下載后的文件名和服務端的文件名一樣。

目錄下下載到的文件信息和瀏覽器顯示效果的文件大小差不多,應該一樣,如下圖。

Advertisements

默認是直接輸出信息到終端的,如果是圖片文件的話,由於是二進位不支持顯示,就會亂碼。

批量下載

注意curl支持對url做模式匹配,這樣一個url就可以表示多個文件,可以一次性下載多個文件:

上圖中的有個錯誤,大家發現問題沒有?小編剛開始用的時候怎麼也沒下載到文件,後來找了半天才發現問題所在。Url最後的模式匹配部分寫錯了,[1-0]是個錯誤寫法,應該是[下限-上限] 把上面的url改成[1-8]立馬就可以了。結果如下:

由於URL是演示需要隨意杜撰的所以都沒下載到文件,文件大小很小為空。

對多個文件我們也能通過-o指定自己的需要名字,不過需要用一個變數#1來表示後面模式的中的參數,如下圖所示:

結果是:

用這招可以一下子把所有序列化的文件都下載來了,是不是很方便。對了,這才是它比一般瀏覽器厲害的地方,取代人,自動做重複性的工作。

curl還有其他很多的下載功能,比如斷點續傳、分段部分下載等等。更多技巧請看官方的文檔或者去搜索,應該都得到。就不在贅述。

用curl做安全滲透

獲取http頭搜集伺服器信息

通過curl快速取得伺服器版本信息,我們可以用curl -I url取得Web服務的Http頭信息,做為信息搜集用,為進一步滲透做準備。例如,我們看看今日頭條旗下的產品悟空問答的首頁:

我們看到https頭中說明悟空用的伺服器是nginx變種淘寶的Tengine,但是屏蔽了版本信息(安全工作做的還是挺到位的)。

Via段信息可能是某個CDN廠商信息(小編瞎猜測的)。

Timing-Allow-Origin: * 表示允許任何資源都可以伺服器看到的計時信息。

我們還看到,我們用curl 訪問時,返回了 403 Forbidden,說明伺服器對客戶端限制了。接著下一節我們將介紹如何通過設定User Agent信息獲得伺服器的信任。

通過設置User Agent 和Porxy代理突破服務限制

上一步驟中我們用curl直接被悟空服務給403拒絕了,我們猜測是伺服器根據User Agent給禁止掉了。這時候該怎麼辦?好辦,我們給它一個瀏覽器的User Agent信息就好了。

設置User Agent信息很簡單,用curl -A "XXX" ,XXX表示User Agent信息就行。比如對悟空首頁,我們給它喂個 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0),偽裝成IE 6,悟空小姐姐立馬就馴服了。

妥妥的,200 OK。

有時候由於你機器訪問太頻繁,比如爬蟲大批量爬數據時候,你的IP可能被伺服器探測到訪問不正常,當成惡意攻擊,或者不正常訪問被防火牆,WAF等給封掉。這時候就需要一個武器Porxy代理來隱藏到我們的實際地址,騙取伺服器的信任。

代理設置也簡單,給curl加個-x參數,隨後緊跟代理伺服器地址即可:

當然問題是你沒有代理伺服器,代理伺服器地址怎麼找,我只說"諸事不宜,找度娘"。

還有curl結果也能配合shell管道和其他神器對獲取的信息進行處理,比如grep:

以上是我們對抓的悟空首頁的內容最篩選,搜索包含"悟空"字串的行。對信息處理然後入庫,這是做一個爬蟲獲取信息的一個必須步驟,不然獲取到都將是垃圾。

突然發現篇幅有點長了,那就分開幾篇發把,今天這篇就到這裡,先休息睡覺把! 蟲蟲明天見

Advertisements

你可能會喜歡