1. 程式人生 > >網站滲透思路全方面總結(針對新手思路介紹)

網站滲透思路全方面總結(針對新手思路介紹)

針對新手寫一點滲透的小思路、小技巧,主要講的是思路,所有不會太詳細。

經常逛一些好的部落格或者門戶站,堅持下來,每天學一點思路,你會積累到很多東西,記住:技術需要時間沉澱。

(一)針對網站程式,不考慮伺服器。

一、查詢注入,注意資料庫使用者許可權和站庫是否同服。

二、查詢XSS,最近盲打很流行,不管怎樣我們的目的是進入後臺。

三、查詢上傳,一些能上傳的頁面,比如申請友鏈、會員頭像、和一些敏感頁面等等,注意檢視驗證方式是否能繞過,注意結合伺服器的解析特性,比如典型的IIS6.0、阿帕奇等。

四、查詢編輯器,比較典型的ewebeditor、fckeditor等等。

五、查詢phpmyadmin等管理程式,可以嘗試弱口令,或者尋找其

漏洞

六、百度、谷歌搜尋程式公開漏洞。

七、猜解檔案,如知道某檔案為admin_login.php,我們可嘗試admin_add.php、admin_upload.php檔案是否存在,也可以谷歌搜尋site:exehack.net inurl:edit等等,很多時候可以找到一些敏感檔案,接著看是否驗證許可權或能否繞過驗證。

八、會員註冊、修改、刪除、評論等一切需要操作資料庫的地方記得加單引號之類檢視是否存在insert、update等型別注入。

九、會員或低許可權管理登陸後可抓包分析,嘗試修改超級管理員密碼,許可權提升。

十、通常有下載功能的站我們可以嘗試修改下URL檔名,看能否下載站點敏感檔案,如資料庫配置檔案等,資料庫不可外連情況下可以嘗試資料庫密碼登陸後臺,也可下載上傳、登陸驗證等檔案進行程式碼審計。

十一、備份檔案和後門,某些主站子目錄存在分站,比如www.2cto.com/software,我們可以嘗試www.2cto.com/software.zip/zip等壓縮檔案是否存在,可能就是子站的原始碼。也有一些站類似這樣www.2cto.com/old/,一般都是以前的老站,通常老站會比較容易拿。

還有就是資料庫備份、前人的後門等,具體這些目錄上的東西就要看你的字典了。

十二、0day漏洞,不管是別人給你的,還是自己挖的,總之好使就行。

十三、。。。

(二)針對伺服器

一、通常先掃下伺服器開放的埠,再考慮對策。

二、比較常見的解析漏洞,比如IIS6.0、阿帕奇、nginx/IIS7.0(php-fpm)解析漏洞等,還有就是cer、asa之類的解析,.htaccess檔案解析配置等。

三、弱口令和everyone許可權,先掃描伺服器開放的埠,比如21對應的FTP、1433對應的MSSQL、3306對應的MYSQL、3389對應的遠端桌面、1521對應的Oracle等等,平時可以多蒐集下字典,有時候效果也是不錯的(通常在cain嗅探的時候,經常能嗅到別人不停的掃…很蛋疼)。

四、溢位,這點要看系統補丁和伺服器使用的軟體等等,比如FTP等工具,這裡不詳解。

五、針對一些伺服器管理程式,比如tomcat、jboss等等,這種比較常見於大中型的站點伺服器。

六、IIS、apache等各種漏洞,這個要平時多關注。

七、目錄瀏覽,伺服器配置不當,可直接瀏覽目錄。

八、共享…
九、。。。

(三)針對人,社工

社工在滲透中通常能起到驚人的效果,主要還是利用人的弱點,博大精深,這裡不詳細討論,注意平時多看一些社工文章,學習一些思路、技巧。

(四)迂迴戰術,旁註和C段

一、旁註,針對旁站,我們可以運用到上面說到的方法,這裡不多說。

二、C段,基本想到C段就會想到cain,針對C段的站點和伺服器,結合上面說的針對目標站、伺服器、人、旁站的思路,一個道理,當然如果你的目的僅僅是黑站的話,不妨試試NetFuke之類。

三、…
(五)提權常用手段

一、使用系統溢位提權EXP,這類在提權中最常用,使用的方法大都一致,比如比較常見的巴西烤肉、pr等等,溢位提權通常在Linux上也利用的比較多,注意多收集EXP。

二、第三方軟體提權,主要還是利用伺服器上安裝的第三方軟體擁有比較高的許可權,或者軟體的溢位漏洞,比如典型的mssqlmysql、serv-u等等,還有各種遠端控制軟體,比如pcanywhere、Radmin這類。

三、劫持提權,說到這個,想必肯定會想到lpk.dll這類工具,有時候在蛋疼怎麼都加不上賬戶的時候,可以試試劫持shift、新增開機啟動等等思路。

四、弱口令技巧,我們可以看看有木有什麼hack、或者隱藏賬戶之類的,一般這種使用者密碼都比較簡單,可以嘗試下弱口令,還有之前說過的各種資料庫、遠端控制軟體、FTP軟體的弱口令,沒辦法的時候就去掃掃碰碰運氣吧。

五、資訊收集,注意翻下硬碟各種文件,說不定各種密碼就在裡面。在內網滲透時,資訊收集是非常重要的,記得拿下伺服器了GET一下明文密碼,德國那個mimikatz不錯,還有就是域、ARP。。。貌似扯多跑題了。

六、社工…不多說。

暫時總結到這裡,滲透博大精深,不是這麼幾段字就能說清楚的,具體還是要看具體情形,隨機應變。

一定要養成在滲透過程中資訊收集的好習慣,特別是針對大中型站點,注意收集子站域名、目錄、密碼等等敏感資訊,這對於我們後面的滲透非常有用,內網經常弱口令,同密碼比較多。很多時候,或許一個主站就死在子站的一個小漏洞上。

入侵滲透涉及許多知識和技術,並不是一些人用一兩招就可以搞定的。

一,踩點

踩點可以瞭解目標主機和網路的一些基本的安全資訊,主要有;

1,管理員聯絡資訊,電話號,傳真號;

2,IP地址範圍;

3,DNS伺服器;

4,郵件伺服器。

相關搜尋方法:

1,搜尋網頁。 site:xxx.com

2,連結搜尋

  目標網站所在的伺服器可能有其他具有弱點的網站,可以進行迂迴入侵,而且可 以發現某些隱含的資訊。

搜尋方法介紹:

二,查點

A,確定目標的域名和相關的網路資訊。

搜尋方法;

Whois查詢,通過Whois資料庫查詢可以得到以下的資訊:

1,註冊機構:顯示相關的註冊資訊和相關的Whois伺服器;

2,機構本身:顯示與某個特定機構相關的所有資訊;

3,域名:顯示與某個特定域名相關的所有資訊

4,網路:顯示與某個特定網路或單個IP地址相關的所有資訊;

5,聯絡點:顯示與某位特定人員相關的所有資訊

B,利用ARIN資料庫可以查詢某個域名所對應的網路地址分配資訊。

有關的網路資訊:

知道了目標所在的網路,可以進行迂迴滲透,尋找薄弱點,進入目標網路,然後在 攻擊目標。

C,DNS資訊查詢

域名系統允許把一個DNS名稱空間分割成多個區,各個去分別儲存一個或多個DNS域 的名字資訊。

區複製和區傳送:DNS伺服器之間是採用區傳送的機制來同步和複製區內資料的。

區傳送的安全問題不在於所傳輸的域名資訊,而在於其配置是否正確。因為有些域 名資訊當中包含了不應該公開的內部主機和伺服器的域名資訊。

相關工具:

1,Windows下,nslookup,SamSpade;

2, UNIX下:nslookup,dig,host,axfr

在Windows下的使用方法:

c:\>nslookup

Default server: 目標的DNS伺服器

Address: 目標的IP地址

>set type=ANY //表示接受任何可能的DNS記錄

>ls -d 163.com >zone.163.com.txt   //獲得目標域的相關記錄,結果儲存在zon e.163.com.txt

D,通過Traceroute獲得網路的拓撲結構以及網路網路裝置的地址。

相關工具;

Windows下:Tracert 支援ICMP協議

UNIX下:Traceroute 支援ICMP和DNS協議,由於多數防火牆已經過濾了ICMP,所以 UNIX下的Traceroute是不錯的選擇,而且使用-p n選項可以自己指定使用的埠。

三,網路掃描

面對不同的網路,應該採用不用的掃描方法:

1,對於內部網路,可用型別很多,ICMP協議是普遍要裝上的,在內部網廣播ICMP數 據包可以區分WINDOWS和UNIX系統,

傳送型別為8的ICMP的ECHO請求,如果可以受到型別為0的ECHO迴應,表明對方主機 是存活的。

相關工具介紹:

UNIX下的:fping&gping

WINDOWS下:Pinger 特點:速度快,多執行緒。

2,對於外部網路,可用型別也很多,涉及到的原理也有很多,例如:TCP掃描,UD P掃描,

其實我是很不願意用掃描工具的,很容易使對方感覺到入侵事件的發生,不論是防 火牆還是入侵檢測系統都會或多或少的留下我們的腳印,如果遇到一個勤快的管理 員的話,那麼這次入侵很可能以失敗告終。

但使用與否依各個喜好而定了:),有時候我們在測試網路或者主機的安全性時, 就不能忽視他的存在了,首先,安全測試不是入侵,全面的測試對抵禦黑客和蠕蟲 的攻擊是必要的,在這裡推薦的埠掃描工具是NMAP,因為他帶有躲避IDS檢測的機 制,重組了TCP的三次握手機制,慢掃描機制等等都是其他掃描工具無法比擬的,U DP掃描是很不可靠的,原因有下幾點:

這種掃描依靠ICMP埠不可達訊息,如果傳送端給目標一個感興趣的埠傳送了一個 UDP資料包後,沒有收到ICMP埠不可打訊息,那麼我們認為該埠處於開啟狀態。

不可靠的原因:

1,路由器可能丟棄UDP分組;

2,很多的UDP服務不也不產生響應;

3,防火牆的常規配置是丟棄UDP分組(除DNS外);

4,休眠狀態的UDP埠是不會發送一個ICMP埠不可到達訊息。

還有的掃描工具就是弱點掃描工具,這些工具綜合各種漏洞資訊構造漏洞資料庫, 去探究存在漏洞沒有打補丁的主機,當然也有針對特定漏洞的檢測發現工具(指令碼小 子能用,網路安全人員也弄用--雙刃劍-:)

這裡詳細介紹對目標作業系統型別的檢測原理:

Telnet標識和TCP/IP堆疊指紋:

1,網上許多的系統可以直接Telnet到目標,大多會返回歡迎資訊的,返回的資訊包 含了該埠所對應的服務軟體的版本號,這個對於尋找這個版本的軟體的漏洞很重 要,如果對方開了Telnet,那麼可以直接得到對方的系統型別和版本號,這個對於 挖掘系統的漏洞很重要(對於溢位來說,不同版本的系統和語言版本的系統來說, RET地址,JMP ESP,地址是不同的)。

2,如今越來越多的管理員懂的了關閉功能標誌,甚至提供偽造的歡迎資訊。那麼T CP/IP堆疊指紋是區分不同系統的好方法。

1,FIN掃描

給開啟的埠傳送FIN包,RFC 793規定不返回任何響應,例外的系統是: MS Wind ows,BSDI,CISCO,HP/UX,MVS和IRIX都返回一個RESET包。

2,TCP初始序列號(ISN)取樣

這種方法利用了在實現TCP連線時使用不同的ISN模式識別系統,可以分成多種模式 :傳統的64K增加(舊

UNIX OS),隨機增加(新版的Solaris,IRIX,FreeBSD,Digital UNIX和Cray等), 真正隨機(Linux 2.0.*,OpenVMS和新版AIX等),Windows系統使用所謂的“時間依 賴性”模型,即ISN的增加同某一個短固定的時間間隔有關係,有些主機始終使用固 定的ISN,例如3COM集線器(使用0x803)和AppleLaserWriter印表機(0xC7001)。

3,不分片位

目前許多系統在他們傳送的包中使用IP“不分片”位,這主要是想獲得好的執行性 能,不過也不是所有的作業系統都有此功能,即使有,其實現的方式可能也不同。 因此利用次位或許有利於我們收集更多的有關目標OS的資訊。

4,TCP初始窗

TCP初始窗只是簡單地測試返回包的視窗尺寸。Queso和Nmap可以對實際的視窗進行 視窗跟蹤。在很多作業系統中是一個常數。例如:AIX是唯一使用0x3F25的作業系統 。對於完全重新編寫程式碼的NT 5的TCP堆疊,使用0x402E.

5,ACK值

如果傳送一個FIN|PSH|URG,許多作業系統設定ACK等於初始序列號,而Windows和某 些印表機將傳送seq+1.如果傳送一個SYN|FIN|PSH|URG到開啟的埠,不同的Windo ws系統的實現將很不一致,有時返回seq,有時返回seq+1,甚至返回完全隨機的數值 。

6,ICMP錯誤訊息機制

某些作業系統按照RFC 1812的建議,限制不同錯誤訊息的傳送速率。例如:Linux內 核(在net/ipv4/icmp.h中定義)限制目標不可到達訊息的產生速率為4秒種內80個 ,如果超過這個限制將有1/4的懲罰。測試方法是傳送一大串包到某些隨機選取的高 埠,然後計算返回的不可到達包的數目。

7,ICMP訊息引用(Message Quoting)

RFC規定:ICMP錯誤訊息將引用一小部分導致錯誤訊息包的ICMP訊息內容。對於埠 不可達訊息,幾乎所有的實現都只發送所需要的IP頭+8位元組。不過Solaris傳送的內 容更多,而Linux傳送的東西最多。這就是我們識別沒有開啟任何埠的Linux和So laris主機。

8,ICMP錯誤訊息回射完整性

主機對埠不可打錯誤訊息將送回一小部分於是訊息的內容。某些機器送回的包中 包括的協議頭部分已經被改變。例如,AIX和BSDI送回的IP總長度是20位元組。而系統 BSDI,FreeBSD,OpenBSD,ULTRIX和VAXen則將原樣送回你所傳送的IP識別符號。某些系 統(AIX和FreeBSD等)將送回不一致或等於0的校驗和。這同樣適用於UDP校驗和。 Nmap對ICMP錯誤訊息包進行九種不同的測試以標識系統之間的微笑差別。

9,TCP選項

是實現TCP/IP協議時可選的一個部分功能,這跟不同的系統實現有關,這些選項都 是挖掘可用資訊的好方法。原因是:

1,他們都是可選項,不是所有主機都可以實現的;

2,如果你所傳送的包中對某個選項進行了設定,只要目標支援,那麼目標主機就返 回此選項;

3,可以在包中設定所有的選項進行測試。

例如:Nmap在每個探測包中設定所有的選項來進行測試:

Windows Scale=10;NOP;Max Segment Size=265;Timestamp;End of Ops;

從返回的的包中檢視這些選項,就知道了什麼系統支援他們。

還有一種被動作業系統識別方法,就是監控不同系統之間網路包的情況來判斷目標 的作業系統型別,siphon被用來進行這方面的測試,這個工作原理如下:

簽名:

主要TCP的四個欄位判斷:

1,TTL:出站的包的存活時間;

2,Window size:視窗大小;

3,DF:是否設定了不準分片位;

4,TOS:是否設定了服務型別。

綜合這些資訊可以大概判斷出目標的系統,但不能%100。

四,查點

利用查點技術可以得到比前面講的更多更具體的有用資訊,例如:帳戶資訊等。

1,Windows系統查點技術

利用NetBIOS規則,首先介紹NetBIOS,NetBOIS位於TCP/IP之上,定義了多個TCP和U DP埠。

----TCP

(1),139:nbsession:NetBOIS會話。

例如:net use \\IP\ipc$ " " /user:" ".

(2),42:WINS:Windows Internet名字系統(UDP埠也是42)。

----UDP

(1)137:nbname:名字查詢。

例如:nbtstat -A IP //03中顯示的不是計算機名就是使用者名稱

(2)138:nbdatagram:UDP資料報服務

例如:net send /d:domain-name "Hello"

得到使用者名稱利用到了IPC$空會話和sid工具。sid工具由兩個小工具組成:user2sid 和sid2user.user2sid獲得使用者名稱或組名的sid;sid2user則是輸入一個sid而獲得相 應使用者名稱的和組名,sid就是在建立使用者時而建立的,相當於UNIX系統下的UID,WIN 系統許可權的檢查就是通過對SID的檢查的。一個sid是由一長串數字組成的,其中包 括兩個部分,前一部分用來唯一標識一個域,後一部分唯一標識一個使用者名稱,這部 分數字被稱作rid,既相對識別符號,rid有一定的規律,其取值總是從500開始的,超 級管理員的rid總是500,而GUEST使用者的rid總是501;而新建立的帳戶的rid從1000 開始。

具體的步驟:

c:\net use \\IP\ipc$ " " /user:" "

c:\user2sid \\IP guest //得到了SID的前半部分

s-1-5-21-1123561945-1580818891-1957994488-501

s是sid的字首,後面跟的是1表示版本號,5用於標識發放sid的授權實體,5指NT/2 000。21-1123561945-1580818891-1957994488唯一地標識域和工作組。不同的使用者 只是最後的相對識別符號不一樣。現在用sid2user查詢系統的使用者名稱了:

c:\sid2user \\IP 5 21 1123561945 1580818891 1957994488 500

name is cookie

domain is condor

c:\sid2user \\IP 5 21 1123561945 1580818891 1957994488 1001

SNMP查點:通過預設的管理群字串PUBLIC讀取特性,可以得到系統的一些資訊, 具體有:介面表,路由表及ARP表,TCP表和UDP表,裝置表和儲存表,程序表和軟體 表,使用者表,共享表。

SNMP工具,snmputil.exe

例如:

1,或者網路介面數目:

c:\snmputil get localhost public .1.3.6.1.2.1.2.1.0

2,顯示所有的SNMP變數內容

c:\snmputil walk localhost public .1.3

2UNIX類系統的查點技術

1,$showmount -e www.target.com   //前提2049號埠開著(NFS)

2,$finger @www.target.com //還有rusers

  vrfy root   //證實是否有root

  expn adm

  quit

五,具體的分析漏洞

針對特定目標進行了以上分析後,總結出最好的入侵思路,選擇入侵工具,做好入 侵的準備工作是必須,有時入侵時間的選擇也是很重要的,因為會涉及到正常的公 司網路的正常通訊,甚至會使惡意的網路在你入侵測試就發生了,最直接的漏洞利 用方法,我認為是溢位漏洞了,因為他直接就可以得到對方的系統許可權,返回一個 和在本地一樣的SHELL環境,此時無所不能:

溢位攻擊的分類有:

1,WINDOWS下的和UNIN下的

一般原理,就使用者提交的引數範圍超過了在記憶體中儲存的本地變數的範圍,而程式 或者系統並沒有對輸入的引數進行合理的長度檢查,導致了被呼叫函式的返回地址 被覆蓋,如果用一個跳轉到我們提交的shellcode的地方的地址代替,那麼我們的s hellcode就可以執行,成功得到了目標的系統許可權。

此外還有格式化串漏洞,導致這個漏洞的原因是在處理使用者資料的引數時沒有過濾 使用者提交的,格式化符號,例如%n這個將允許輸出的引數的個數儲存在記憶體中,惡 意構造此漏洞使用者將會向記憶體的任何位置寫SHELLCODE的地址。

2,常見漏洞型別

UNIX下的本地漏洞很多,挖掘起來也較容易,他主要有以下幾種型別:

1,環境欺騙

一般指PATH環境變數的欺騙,就是說如果一個特權的程式執行了一個外部的命令, 那麼我們可以簡單的構造這個外部命令程式,然後修改PATH使這個特權程式能夠去 首先執行我們構造的外部命令程式,而這個外部的命令程式是一個去得SHELL的程式 例如:

bash$cat >ps <<EOF

>#!/bin/sh

>EOF

而這個特權程式是:

bash$cat >test.c <<EOF

>int main()

>{

>setuid(0);

>system("ps -ef");   /*程式呼叫了外部命令,但沒有給出這個命令的絕對路徑, 這個是PATH欺騙的前提*/

>}

>EOF

編譯後的test檔案具有s為,屬主是root.這樣設定是因為程式test執行時會以root 身份執行特權命令,這樣在他執行時由於呼叫的是我們偽造的ps命令程式,所以會 產生一個root許可權的SHELL環境。

2,競爭條件

一般指時序競爭,例如:

fp=fopen("test.log","w+");

chown("test.log",getuid(),getgid());

原理也很簡單,就是如果當前的程式執行時許可權是euid=root,uid=當前使用者,由於 檔案test.log在開啟會執行將檔案的屬主改為當前使用者,所以我們可以在執行完fo pen之後,chown之前刪了test.log,而建立了一個到/etc/passwd的符號連結,這樣 就會將/etc/passwd檔案的屬主改為當前的使用者,當前的使用者就可以在passwd檔案中 將自己的uid改為0,這樣就取得了system許可權。

3,溢位和格式串漏洞

導致這些漏洞的資料來源主要是:

1,命令列引數

2,環境變數

3,特定格式檔案的讀取

4,使用者互動十的輸入

緩衝溢位的漏洞是有以下一些函式引起的:

1,strcpy

2, strcat

3, sprintf

4, vsprintf

格式化串的漏洞和以下一些函式有關:

1, print/vprintf

2, fprintf/vfprintf

3, sprintf/vsprintf

4, snprintf/vsnprintf

利用工具有objdump,elfedump檢視目標是否有不安全的以上不安全的函式,如果有 可以進行黑盒測試,進而進行返彙編分析程式的上下文和執行流程,利用strings可 以靜態查詢目標的環境變數。

六,攻擊WWW

現在的入侵事件,攻擊WWW居多,原因也很簡單,那就是程式設計師在編寫WEB指令碼程式 時更本不注重安全因素,導致了上傳shell,提升許可權之類的嚴重後果,入侵滲透測 試主要通過以下幾個方面進行測試:

1,搜尋SQL注入點;

2,搜尋特定目錄和檔案,例如:上傳程式檔案,這個利用價值也很大;

3,尋找管理員登陸網頁,進行字典或者SQL饒過入侵;

4,尋找WEB程式的原始碼,進行漏洞挖掘,主要涉及的漏洞型別有:SQL注入,檔案 包含漏洞,目錄跳轉漏洞,以指令碼檔案格式儲存錯誤日誌漏洞,上傳漏洞;

5,在程式碼稽核時,不要忘記對程式設計師犯的邏輯錯誤進行檢視,例如:函式書寫錯誤

6,總是,漏洞的成因歸根到底是由於對使用者的輸入沒有進行嚴格的過濾。

七,其他的入侵

1,針對資料庫MSSQL,MYSQL,ORACLE等資料庫的入侵;

2,針對路由,防火牆,IDS等網路裝置的滲透

3,無線入侵滲透

八,入侵滲透以後

1,在成功得到系統級別的許可權以後,就要在目標留下後門方便以後進入,當然清楚 日誌是最為重要的收尾工作,這些方面也有很多的技術可以討論,例如:後門的隱 藏(WIN下的ADS是一個不錯的隱藏程式的東東,日誌的有選擇刪除及其偽造等等, 這裡就不詳談了。。