世界那麼大,謝謝你來看我!!關注我你就是個網絡、電腦、手機小達人
越來越多的網站以及App手機端客戶注重安全滲透測試服務,上線前必須要對平臺進行全面的預滲透測試找出安全漏洞以及BUG,很多客戶找我們,做滲透測試服務的時候對具體的流程可能不太了解,下面我們把具體的滲透測試方法流程大體寫的全面一點給大家呈現。
滲透測試
一、滲透流程
信息收集
漏洞驗證/漏洞攻擊
提權,權限維持
日誌清理
信息收集
一般先運行埠掃描和漏洞掃描獲取可以利用的漏洞。多利用搜尋引擎
埠掃描
有授權的情況下直接使用 nmap 、masscan 、自己寫py腳本等埠掃描工具直接獲取開放的埠和獲取服務端的 banner 信息。
漏洞掃描
使用北極熊掃描器、Nessus、awvs等漏掃工具直接掃描目標,可以直接看到存活主機和主機的漏洞情況。
二、漏洞攻擊
如果只是使用埠掃描,只是發現開放的埠,在獲取 banner 信息後需要在漏洞庫(seebug,ExploitDB )上查找對應 CVE,後面就是驗證漏洞是否存在。安全檢查一般是儘可能的發現所有漏洞,對漏洞的風險進行評估和修復。入侵的話只關注高危遠程代碼執行和敏感信息洩露漏洞等可以直接利用的漏洞。漏洞驗證可以找對應的 CVE 編號的 POC、EXP,利用代碼在 ExploitDB 、seebug上查看或者在 github 上搜索是否有相關的漏洞驗證或利用的工具。
2.1 Web應用
可以直接尋找注入、上傳、代碼執行、文件包含、跨站腳本、等漏洞,來進行攻擊。一般可以使用 AWVS 直接掃描常見漏洞。
2.1.2 Web 中間件
(1)Tomcat
Tomcat是Apache Jakarta軟體組織的一個子項目,Tomcat是一個JSP/Servlet容器,它是在SUN公司的JSWDK(JAVA Server Web Development Kit)基礎上發展起來的一個JSP和Servlet規範的標準實現,使用Tomcat可以體驗JSP和Servlet的最新規範。
(2) Jboss
是一個運行EJB的J2EE應用伺服器。它是開放原始碼的項目,遵循最新的J2EE規範。從JBoss項目開始至今,它已經從一個EJB容器發展成為一個基於的 J2EE 的一個Web 作業系統(operating system for web),它體現了 J2EE 規範中最新的技術。
埠:8080
攻擊方法:
弱口令,爆破
管理後臺部署 war 後門
反序列化
遠程代碼執行
參考:
(3)WebLogic
WebLogic是美國Oracle公司出品的一個Application Server,確切的說是一個基於JAVAEE架構的中間件,WebLogic是用於開發、集成、部署和管理大型分布式Web應用、網絡應用和資料庫應用的Java應用伺服器。將Java的動態功能和Java Enterprise標準的安全性引入大型網絡應用的開發、集成、部署和管理之中。
(4) WebSphere
IBM公司一套典型的電子商務應用開發工具及運行環境。
(5) Glassfish
2.1.3 Web 框架
(1) Struts2
Struts2是一個優雅的,可擴展的框架,用於創建企業準備的Java Web應用程式。出現的漏洞也著實的多每爆一個各大漏洞平臺上就會被刷屏。
可利用漏洞
S2-046 CVE-2017-5638 Struts 2.3.5-2.3.31,Struts 2.5-2.5.10
S2-045 CVE-2017-5638 Struts 2.3.5-2.3.31,Struts 2.5-2.5.10
S2-037 CVE-2016-4438 Struts 2.3.20-2.3.28.1
S2-032 CVE-2016-3081 Struts 2.3.18-2.3.28
S2-020 CVE-2014-0094 Struts 2.0.0-2.3.16
S2-019 CVE-2013-4316 Struts 2.0.0-2.3.15.1
S2-016 CVE-2013-2251 Struts 2.0.0-2.3.15
S2-013 CVE-2013-1966 Struts 2.0.0-2.3.14
S2-009 CVE-2011-3923 Struts 2.0.0-2.3.1.1
S2-005 CVE-2010-1870 Struts 2.0.0-2.1.8.1
(2)Spring 框架
Spring Framework 是一個開源的Java/Java EE全功能棧(full-stack)的應用程式框架,以Apache License 2.0開源許可協議的形式發布,也有.NET平臺上的移植版本。Spring Framework提供了一個簡易的開發方式,這種開發方式,將避免那些可能致使底層代碼變得繁雜混亂的大量的屬性文件和幫助類。
可利用漏洞
CVE-2010-1622
CVE-2018-1274
CVE-2018-1270
CVE-2018-1273
反序列化
目錄穿越
2.1.4 Web 伺服器
2.2 常見運維系統
滲透測試運維
一般分自動化部署和運維監控相關的的工具。漏洞可以通過搜尋引擎搜索,github搜索,ExploitDB搜索,官網上的安全通告獲取。內網的通用類應用比較常見的問題是弱口令,如果一個管理員可以登錄幾個系統,那在這幾個系統的帳號、密碼也基本上是一樣的。
2.2.1 Gitlab
GitLab是一個利用 Ruby on Rails 開發的開源應用程式,實現一個自託管的項目倉庫,可通過Web界面進行訪問公開的或者私人項目。
可利用漏洞:
任意文件讀取漏洞
意用戶 token 洩露漏洞
命令執行漏洞
2.2.2 Jenkins
Jenkins是一種跨平臺的持續集成和交付的應用軟體,它便於不斷穩定地交付新的軟體版本,並提高你的工作效率。這款開發運維工具還讓開發人員更容易把項目的變化整合起來,並使用大量的測試和部署技術。
可利用漏洞:
遠程代碼執行漏洞
反序列化漏洞
未授權訪問漏洞
登錄入口爆破
2.2.3 Puppet
Puppet Enterprise專門管理基礎設施即代碼(IAC),在這種類型的IT基礎設施配置過程中,系統用代碼而不是腳本流程來自動構建、管理和配置。由於它是代碼,整個過程易於重複。Puppet有助於更容易控制版本、自動化測試和持續交付,可以更快速地響應問題或錯誤。
2.2.4 Ansible
Ansible是一種配置和管理工具,面向客戶端的軟體部署和配置,支持Unix、linux和Windows。它使 用JSON和YAML,而不是IAC,根本不需要節點代理就可以安裝。它可以通過OpenStack在內部系統上使用,也可以在亞馬遜EC2上使用。
2.2.5 NagIOS
Nagios是一款開源的電腦系統和網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設置,印表機等。在系統或服務狀態異常時發出郵件或簡訊報警第一時間通知網站運維人員,在狀態恢復後發出正常的郵件或簡訊通知。
2.2.6 Zabbix
Zabbix 是一款強大的開源分布式監控系統, 能夠將SNMP、JMX、Zabbix Agent提供的數據通過WEB GUI的方式進行展示.
2.2.7 Cacit
Cacti是一套基於php,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具。
可利用漏洞
任意代碼執行
SQLi
登錄爆破
默認密碼admin/admin
2.2.8 Splunk
Splunk Enterprise 可以從任何來源監控和分析機器數據,以提供操作智能,從而優化您的 IT、安全和業務績效。Splunk Enterprise 具有直觀的分析功能、機器學習、打包應用程式和開放式 API,是一個靈活的平臺,可從重點用例擴展到企業範圍的分析主幹。
可利用漏洞
信息洩露
命令注入
服務端請求偽造
參考
ExploitDB 搜索
2.3 常見 Web 應用
還有常見郵件應用、CMS 應用,在搜尋引擎上查找對應的漏洞,利用已知漏洞進行攻擊。
2.3.1 郵件系統
一部分是使用騰訊企業郵箱、阿里企業郵箱的,很難有可利用的漏洞,另外一種是能獨立部署的郵件系統,政企常用的郵箱應用:
Coremail
億郵
35互聯
TurboMail
Exchange
IBM Lotus
2.3.2 CMS 應用
2.4 資料庫/緩存/消息服務
2.4.1 MySQL資料庫
2.4.2 MSSQL資料庫
2.4.3 Oracle資料庫
2.4.4 PostgreSQL資料庫
PostgreSQL是一種特性非常齊全的自由軟體的對象–關係型資料庫管理系統,可以說是目前世界上最先進,功能最強大的自由資料庫管理系統。包括kali系統中msf也使用這個資料庫;淺談postgresql資料庫攻擊技術 大部分關於它的攻擊依舊是sql注入,所以注入才是資料庫不變的話題。
默認埠:5432
攻擊方法:
爆破:弱口令:postgres postgres
緩衝區溢出:CVE-2014-2669
2.4.5 MongoDB資料庫
MongoDB,NoSQL資料庫;攻擊方法與其他資料庫類似》
默認埠:27017
攻擊方法:
爆破:弱口令
未授權訪問;github有攻擊代碼;請點擊
2.4.6 redis資料庫
Redis是一個開源的使用C語言寫的,支持網絡、可基於內存亦可持久化的日誌型、key-value資料庫。關於這個資料庫這兩年還是很火的,暴露出來的問題也很多。特別是前段時間暴露的未授權訪問。
攻擊方法:
爆破:弱口令
未授權訪問+配合ssh key提權;
2.4.7 SysBase資料庫
2.4.8 DB2 資料庫
2.5 常見服務/協議
2.5.1 FTP 服務
FTP服務:ftp服務我分為兩種情況,第一種是使用系統軟體來配置,比如IIS中的FTP文件共享或Linux中的默認服務軟體;第二種是通過第三方軟體來配置,比如Serv-U還有一些網上寫的簡易ftp伺服器等;默認埠:20(數據埠);21(控制埠);69(tftp小型文件傳輸協議)
攻擊方式:
爆破:ftp的爆破工具有很多,這裡我推薦owasp的Bruter 以及msf中ftp爆破模塊;
匿名訪問:用戶名:anonymous 密碼:為空或任意郵箱
嗅探:ftp使用明文傳輸技術(但是嗅探給予區域網並需要欺騙或監聽網關)
後門 vsftp
遠程溢出
跳轉攻擊
2.5.2 NFS 服務
NFS(Network File System)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它允許網絡中的計算機之間通過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS伺服器上的文件,就像訪問本地文件一樣。如今NFS具備了防止被利用導出文件夾的功能,但遺留系統中的NFS服務配置不當,則仍可能遭到惡意攻擊者的利用。
2.5.3 Samba服務
Samba是linux和unix系統上實現SMB/CIFS協議的一個免費軟體,由伺服器和客戶端程序構成。而SMB是區域網支持共享文件和印表機的一種通信協議,為區域網內不同計算機之間提供文件及印表機等資源的共享服務。
攻擊方法
遠程代碼執行
弱口令
未授權訪問(public)
2.5.4 SSH 服務
SSH 是協議,通常使用 OpenSSH 軟體實現協議應用。SSH 為 Secure Shell 的縮寫,由 IETF 的網絡工作小組(Network Working Group)所制定;SSH 為建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其它網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息洩露問題。
埠:22
攻擊方法:
爆破
後門
漏洞:28退格漏洞、OpenSSL漏洞
2.5.5 Telnet 服務
Telnet協議是TCP/IP協議族中的一員,是Internet遠程登陸服務的標準協議和主要方式。它為用戶提供了在本地計算機上完成遠程主機工作的能力。在終端使用者的電腦上使用telnet程序,用它連接到伺服器。終端使用者可以在telnet程序中輸入命令,這些命令會在伺服器上運行,就像直接在伺服器的控制臺上輸入一樣。可以在本地就能控制伺服器。
2.5.6 Windows 遠程連接
默認埠:3389
攻擊方法
爆破
Shift粘滯鍵後門:5次shift後門
利用ms12-020攻擊3389埠
2.5.7 VNC服務
VNC(Virtual Network Computing),為一種使用RFB協議的顯示屏畫面分享及遠程操作軟體。此軟體藉由網絡,可發送鍵盤與滑鼠的動作及即時的顯示屏畫面。
2.5.8 SMTP協議
smtp:郵件協議,在linux中默認開啟這個服務,可以向對方發送釣魚郵件!
默認埠:25(smtp)、465(smtps)
攻擊方式:
爆破:弱口令
未授權訪問
2.5.9 POP3協議
2.5.10 DNS服務
2.5.11 IMAP協議
2.5.12 SNMP協議
2.5.13 DHCP服務
2.6 雲環境
2.6.1 VMware
使用 VMware vCloud 可將現有數據中心內的虛擬基礎架構資源池化,並將其作為基於目錄的服務交付。通過與雲計算基礎架構的最佳平臺 VMware vSphere 配合使用,VMware vCloud Director 可為客戶提供構建安全的私有雲,從而改變 IT 部門交付和管理基礎架構服務以及用戶訪問和使用這些服務的方式。一般組織中很多獨立安裝的 Esxi 形式的私有雲,或獨立部署的虛擬化系統。
埠(很多)
漏洞
主機逃逸
CVE-2017-5638
參考:
2.6.2 OpenStack
OpenStack是基礎設施即服務(IaaS)軟體,讓任何人都可以自行創建和提供雲計算服務。此外,OpenStack也用作創建防火牆內的「私有雲」(Private Cloud),提供機構或企業內各部門共享資源。
2.6.3 Docker
Docker是一個開放原始碼軟體項目,讓應用程式布署在軟體容器下的工作可以自動化進行,藉此在Linux作業系統上,提供一個額外的軟體抽象層,以及作業系統層虛擬化的自動管理機制[1]。Docker利用Linux核心中的資源分脫機制,例如cgroups,以及Linux核心名字空間(name space),來創建獨立的軟體容器(containers)。這可以在單一Linux實體下運作,避免引導一個虛擬機造成的額外負擔。Linux核心對名字空間的支持完全隔離了工作環境中應用程式的視野,包括進程樹、網絡、用戶ID與掛載文件系統,而核心的cgroup提供資源隔離,包括CPU、內存、block I/O與網絡。從0.9版本起,Dockers在使用抽象虛擬是經由libvirt的LXC與systemd – nspawn提供界面的基礎上,開始包括libcontainer函數庫做為以自己的方式開始直接使用由Linux核心提供的虛擬化的設施。
安全問題(很少有漏洞的POC,安全檢查也是基於最佳實踐和官方安全建議進行):
CVE-2015-3630 1.6.0 Docker Libcontainer 安全繞過漏洞
CVE-2015-3627 1.6.1 Libcontainer和Docker Engine 權限許可和訪問控制漏洞
CVE-2015-3630 1.6.1 Docker Engine 安全繞過漏洞
CVE-2014-9358 1.3.3 Docker 目錄遍歷漏洞
CVE-2014-9357 1.3.2 Docker 權限許可和訪問控制漏洞
CVE-2014-6408 1.3.1 Docker 權限許可和訪問控制漏洞
CVE-2014-5277 1.3.0 Docker和docker-py 代碼注入漏洞
內核漏洞(Kernel exploits) 容器是基於內核的虛擬化,主機(host)和主機上的所有容器共享一套內核。如果某個容器的操作造成了內核崩潰,那麼反過來整臺機器上的容器都會受到影響。
拒絕服務攻擊(Denial-of-service attacks) 所有的容器都共享了內核資源,如果一個容器獨佔了某一個資源(內存、CPU、各種ID),可能會造成其他容器因為資源匱乏無法工作(形成DoS攻擊)。
容器突破(Container breakouts) Linux的namespace機制是容器的核心之一,它允許容器內部擁有一個PID=1的進程而在容器外部這個進程號又是不一樣的(比如1234)。現在問題在於如果一個PID=1的進程突破了namespace的限制,那麼他將會在主機上獲得root權限。
有毒鏡像(Poisoned images) 主要是考慮到鏡像本身的安全性,沒太多好說的。
2.7 大數據
2.7.1 Elsaticsearch
Elasticsearch 是一個分布式的搜索和分析引擎,可以用於全文檢索、結構化檢索和分析,並能將這三者結合起來。Elasticsearch 基於 Lucene 開發,現在是使用最廣的開源搜尋引擎之一,Wikipedia、Stack Overflow、GitHub 等都基於 Elasticsearch 來構建他們的搜尋引擎。
默認埠:9200()、9300()
攻擊方法:
未授權訪問;
遠程命令執行;
文件遍歷;
低版本webshell植入;
2.7.2 hadoop
Hadoop是一個開源的框架,可編寫和運行分布式應用處理大規模數據,是專為離線和大規模數據分析而設計的,並不適合那種對幾個記錄隨機讀寫的在線事務處理模式。Hadoop=HDFS(文件系統,數據存儲技術相關)+ Mapreduce(數據處理),Hadoop的數據來源可以是任何形式,在處理半結構化和非結構化數據上與關係型資料庫相比有更好的性能,具有更靈活的處理能力,不管任何數據形式最終會轉化為key/value,key/value是基本數據單元。用函數式變成Mapreduce代替SQL,SQL是查詢語句,而Mapreduce則是使用腳本和代碼,而對於適用於關係型資料庫,習慣SQL的Hadoop有開源工具hive代替。Hadoop就是一個分布式計算的解決方案。
2.7.3 Hive
Hive是Hadoop家族中一款數據倉庫產品,Hive最大的特點就是提供了類SQL的語法,封裝了底層的MapReduce過程,讓有SQL基礎的業務人員,也可以直接利用Hadoop進行大數據的操作。
2.7.4 Sqoop
Apache Sqoop(SQL-to-Hadoop) 項目旨在協助 RDBMS 與 Hadoop 之間進行高效的大數據交流。用戶可以在 Sqoop 的幫助下,輕鬆地把關係型資料庫的數據導入到 Hadoop 與其相關的系統 (如HBase和Hive)中;同時也可以把數據從 Hadoop 系統裡抽取並導出到關係型資料庫裡。除了這些主要的功能外,Sqoop 也提供了一些諸如查看資料庫表等實用的小工具。
2.7.5 HBase
HBase建立在HDFS之上,提供高可靠性、高性能、列存儲、可伸縮、實時讀寫的資料庫系統。它介於NoSQL和RDBMS之間,僅能通過行鍵(row key)和行鍵序列來檢索數據,僅支持單行事務(可通過Hive支持來實現多表聯合等複雜操作)。主要用來存儲非結構化和半結構化的鬆散數據。與Hadoop一樣,HBase目標主要依靠橫向擴展,通過不斷增加廉價的商用伺服器,來增加計算和存儲能力。
2.7.6 Spark
Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用的並行計算框架,Spark基於map reduce算法實現的分布式計算,擁有Hadoop MapReduce所具有的優點;但不同於MapReduce的是Job中間輸出和結果可以保存在內存中,從而不再需要讀寫HDFS。參考:
三、提權權限維持3.1 提權
SecWiki 總結了:
3.2建立後門/埠轉發
埠轉發及代理類工具
LCX:windows下面的埠轉發軟體。
sockscap:主要針對windows平臺的埠轉發和代理轉發。
proxifier:跨平臺的埠轉發和代理工具,適用windows,linux, macos平臺,代理轉發利器
Rsscoks:*nix平臺下的埠轉發和代理工具,配合proxychains好用 到不行。
Proxychains:*nix平臺下老牌的socks代理工具,一般的系統都會自 帶,誰用誰知道。
ssh proxy:通過ssh做埠代理和轉發,一般*nix系統都自帶。
netcat:socat,hping,在很多情況下可以做埠轉發和數據代理轉 發。
metasploit:metasploit的後滲透模塊中有不少代理模塊和埠轉發 模塊。
在中轉伺服器上下載埠轉發工具(加密壓縮):
能連接網際網路下載
通過 mstsc 的磁碟加載
通過入口伺服器中轉
通過遠程控制軟體上傳
3.3 傳輸文件
3.3.1 文件打包
關於打包
Rar文件打包,壓縮d:\data\目錄下所有2013-01-01後修改的doc文件,100M/包密碼為Pass,-x為排除選項
rar.exe a–r –v100m new.rar –ta20130101000000 –hpPass –n*.doc –x*.exe d:\data\
7z加密,壓縮d:\data下所有文件,密碼為Pass,分卷100M/包
7z.exe a c:\\xx.7z -pPass -mhe d:\data -v100m
Linux用 tar 打包文件是可以加密碼,要跟openssl結合使用。
tar -zcvf - pma|openssl des3 -salt -k password | dd of=pma.des3
使用 tar 對加密文件解壓:
dd if=pma.des3 |openssl des3 -d -k password|tar zxf -
### 3.4.2 文件傳輸 幾個思路
使用埠轉發直接傳送數據;
搭建 FTP、HTTP 協議;
上傳到雲端再下載;
3.4 製作後門/木馬程序
一般用Matisploit 的 msfvenom
SET 也可以生成後門程序,另外也可以關注一下最新的 office、PDF 的漏洞
四、日誌清理在做日誌清理前需要了解以下的內容:
Windows日誌類型
Linux操作日誌
Linux歷史操作
unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null;
SSHD登陸記錄 刪除~/.ssh/known_hosts中記錄
修改文件時間戳 touch –r 原文件要修改文件
刪除臨時使用文件,尤其是tmp目錄
logtamper
5 工具和其他
滲透測試工具
1.內網使用工具滲透的一些原則
使用適合自己的工具,工具沒必要收集太多,夠用就行;
能根據實際情況編寫適用的工具;
不能確保安全的工具均要在虛擬機中運行(很 多捆綁病毒木馬);
做安全檢查的話,儘量使用 GitHub 上開源的工具。
工具介紹 個人習慣使用 kali 自帶工具,特定 POC 先從 Github 上搜索。
滲透注意事項
滲透測試服務需要很多的實戰經驗來保障網站的安全穩定運行防止被攻擊被篡改等危險行為避免給客戶帶來更多的損失,把安全風險降到最低,如果對此有滲透需求可以聯繫專業的網站安全公司來進行全面的滲透服務檢測。
聲明:本人分享該教程是希望大家,通過這個教程了解信息安全並提高警惕!本教程僅限於教學使用,不得用於其他用途觸犯法律,本人一概不負責,請知悉!
免責聲明:本文旨在傳遞更多市場信息,不構成任何投資建議和其他非法用途。文章僅代表作者觀點,不代表手機電腦雙黑客立場。以上文章之對於正確的用途,僅適用於學習