Pikachu靶場練習總結
前輩們好!作為一個進入安全行業的初學者,靶場練習必不可少,我將我對某些靶場練習的總結寫在這里,錯誤之處請多多指正,
靶場:pikachu
關卡:暴力破解
- 基于表單的暴力破解:
先看提示:

用戶名和密碼我們都是不清楚的,可建立密碼庫利用burp中的Intruder功能進行暴力破解,先通過Proxy截取報文,發送到Intruder中,


因為用戶名和密碼都是不清楚的,那么我們要添加username和password2個爆破選項,且type選擇Cluster bomb模式,設定Payloads,添加密碼庫,

設定完成后,start attack!
得到結果為:

現在可以思考原理,暴力破解用戶名和密碼是在所有未知的情況下得到用戶名和密碼,若密碼或者用戶名不正確,那么回傳的報文長度有明顯不一樣,點擊Length進行長度排序,

點擊查看回傳報文,找到了登錄成功的提示,

經驗之談:在暴力破解某些用戶名或密碼時,回傳報文長度可能略有不同,這時候就需要分類查看回傳報文包,每組相同長度的用戶名和密碼可分為一類查看,
XSS漏洞
- 反射型xss(get):
首先查看提示,按照提示直接輸入kobe,

然后利用查看器看這張圖片位置的前端碼,

發現除了字數限制,沒有其他限制條件,那么可用萬能XSS陳述句進行輸入,先修改長度達到可輸入的長度,即可彈出,


- XSS之htmlspecialchars
‘οnclick=’alert(/anything/)’ 注意開頭的 ’ ,這個符號為閉合前面的陳述句,使下面的陳述句可以執行,

CSRF
跨站請求偽造,
在抓取的包中修改資訊后生成鏈接,進入該鏈接可看到修改完成后的個人資訊,
SQL-Inject
經驗之談,含有方框的查詢、搜索,注冊等按鈕,洗掉,還有url中出現id、message等資訊出現的時候,可進行抓包,修改id、message等資訊進行注入,
數字型注入,字符型注入,搜索型注入,xx型注入(制造閉合即可注入),insert/update注入,delete注入(進行洗掉操作時),http header注入(修改報文的http header進行注入),盲注(盲注陳述句,時間盲注),寬位元組注入(%df),
RCE
- Exec “ping”:
在一般的路由器、防火墻、入侵檢測等設備的web管理界面,會給用戶提供一個ping操作的web界面,在web界面可以提供IP,提交后會對該IP進行測驗,若這個提交IP界面沒有進行安全防護,攻擊者通過該介面提交“意想不到”的命令,從而讓后臺進行執行,從而控制整個后臺服務器,

這是輸入正常指令提供IP的回傳,

在輸入指令時加入“&&”+系統指令,其意義是執行ping IP和whoami的指令,相當與“與”符號,

在輸入指令時加入“||”+系統指令,(相當于判斷陳述句,假+真為真,真+假為真,假+假為真(pass:不清楚)),但是僅僅執行了whoami指令,
- Exec “evel”:
先看回傳效果:


危險函式“eval”,只能說如果真的遇到這個函式,開發大鍋,
File inclusion(檔案包含)
開發語言中有內置的檔案包含函式,方便開發人員在一個代碼檔案中直接包含(引入)另外一個代碼檔案,但當檔案包含的代碼檔案被寫成一個變數,且可通過前端用戶傳來時,若沒有足夠的安全防護,則會引發檔案包含漏洞,攻擊者會指定一個檔案讓包含函式去執行,這個指定的檔案的執行就是讓我們獲得重要資訊的途徑,
File inclusion(local)

這個URL中存在filename=xxx.xxx,作為一個敏銳的審核人員,當對這類函式非常注意,在該路徑下若存在刻意制造的檔案,即可獲得敏感資訊,


- File inclusion(remote)(遠程檔案包含)
不同于本地檔案包含,遠程檔案包含通過修改URL地址對遠程檔案進行包含,攻擊者可以輸入任意代碼,
先是創建函式到另外一個地址,

然后修改URL


這個函式是“溫柔”的,獲取的是重要資訊,若制造一個POST,GET,EVAL等函式,通過菜刀經過密碼連接,那么就不僅僅是重要資訊了,還有系統的操作權限,可控制,修改,下載敏感資訊,這部分將在upload靶場練習的時候實作,
Unsafe filedownload(不安全檔案下載)
我們當點擊下載鏈接,便會向后臺發送一個下載請求,一般這個請求會包含一個需要下載的檔案名稱,后臺在收到請求后 會開始執行下載代碼,將該檔案名對應的檔案response給瀏覽器,從而完成下載,如果后臺在收到請求的檔案名后,將其直接拼進下載檔案的路徑中而不對其進行安全判斷的話,則可能會引發不安全的檔案下載漏洞,
既然想到了請求包,那么可非常容易的想到利用burp進行抓包修改,

在點擊下載時刻進行抓包,修改download后下載的檔案

發送出去這個包,可以下載phpinfo檔案,

題外話:關于路徑修改的問題,. ./. ./xxx.xxx’可通過加入任意. ./來回傳目錄的上層檔案達到下載的目的,測驗測驗,一步一步回傳測驗,路無止境,
Unsafe fileupload(不安全的檔案上傳)
檔案上傳功能在web應用系統中很常見,在很多網站注冊時需要上傳頭像,附件等,當用戶點擊上傳按鈕后,后臺會對上傳的檔案進行判斷 比如是否是指定的型別、后綴名、大小等等,然后將其按照設計的格式進行重命名后存盤在指定的目錄, 如果說后臺對上傳的檔案沒有進行任何的安全判斷或者判斷條件不夠嚴謹,則攻擊著可能會上傳一些惡意的檔案,比如一句話木馬,從而導致后臺服務器被webshell,
所以,在設計檔案上傳功能時,一定要對傳進來的檔案進行嚴格的安全考慮:比如驗證檔案型別、后綴名、大小,檔案的上傳方式,對檔案進行的復雜的重命名,以及不能暴露檔案上傳后的路徑,
Client check(客戶端check)
在客戶端網頁上,利用查看器查看檢查函式,可以將檢查函式洗掉,這樣可以任意上傳檔案,


當洗掉檢查函式后,可上傳任意檔案,
(出現問題,上傳檔案失敗,該檔案路徑下沒有權限創建檔案夾,修改上層檔案目錄權限仍然無法創建,但在upload靶場上可以完成相同的操作,且pikachu與upload靶場在相同虛擬機內,后面再在upload靶場總結時具體總結,)
簡略總結:若在前端檢查上傳檔案的型別,可洗掉檢查函式,使任意檔案上傳;若在發送包中限制了檔案型別,那么通過burp抓包修改檔案型別,再發送包即可完成上傳;若真正只允許上傳圖片,那么繼續使用burp抓包,在圖片末尾加上自己想要寫的函式,再通過回傳的路徑進入同樣可以達到相同的目的,
Over Permission(越權)
越權漏洞容易出現在權限頁面(需要登錄的頁面)增、刪、改、查的的地方,當用戶對權限頁面內的資訊進行這些操作時,后臺需要對 對當前用戶的權限進行校驗,看其是否具備操作的權限,從而給出回應,而如果校驗的規則過于簡單則容易出現越權漏洞,
- 水平越權:相同權限的用戶可查看到另外用戶的資訊,(修改url中的名字,ID,數字等,即可查看,其他用戶的資訊)
- 垂直越權:
登錄管理員帳號,新增用戶,提交請求抓包;退出管理員帳號,重放新增用戶請求,發現不能成功新增用戶;登錄普通用戶,發現沒有新增用戶權限,但替換掉1中抓包的請求cookie部分,重放新增用戶請求;用戶新增成功,垂直越權漏洞驗證成功,
目錄遍歷
就像不安全檔案下載一樣,因為后臺沒有對前端傳來的值進行嚴格的安全考慮,攻擊者可通過“…/”來讓后臺打開或執行一些其他檔案,使后臺服務器上其他目錄的檔案結果被遍歷出來,從而形成遍歷漏洞,


利用…/…/…/README.md,執行了README.md檔案,
敏感資訊泄露
由于后臺忽略或設計不當,導致不應該被前端用戶看到的資料被輕易的訪問到,同樣時目錄遍歷,通過修改url的目錄,可執行某些重要檔案得到敏感資訊;還有輸入錯誤得url引數后的報錯資訊可能也包含作業系統、中間件、開發語言的版本或其他資訊;前端的原始碼(html,css,js)里面包含了敏感資訊,比如后臺登錄地址、內網介面資訊、甚至賬號密碼等,雖然敏感資訊泄露屬于低危漏洞,但是攻擊者可通過這些敏感資訊實施下一步的進攻計劃,若知道了開發語言的版本號,可通過版本未更新漏洞進行攻擊,還有js網頁,若找到某些關鍵單詞,那么操作性就更高,利用工具進行反序列化,等等等等,往往高危漏洞是通過這些低危漏洞進行衍生,細節之處不可忽略,
IcanseeyourABC
查看頁面源代碼

可看到賬號密碼被寫成了注釋,
PHP反序列化
對于序列化和反序列化的解釋:
序列化serialize()
序列化說通俗點就是把一個物件變成可以傳輸的字串,比如下面是一個物件:
class S{
public $test="pikachu";
}
$s=new S(); //創建一個物件
serialize($s); //把這個物件進行序列化
序列化后得到的結果是這個樣子的:O:1:"S":1:{s:4:"test";s:7:"pikachu";}
O:代表object
1:代表物件名字長度為一個字符
S:物件的名稱
1:代表物件里面有一個變數
s:資料型別
4:變數名稱的長度
test:變數名稱
s:資料型別
7:變數值的長度
pikachu:變數值
反序列化unserialize()
就是把被序列化的字串還原為物件,然后在接下來的代碼中繼續使用,
$u=unserialize("O:1:"S":1:{s:4:"test";s:7:"pikachu";}");
echo $u->test; //得到的結果為pikachu
序列化和反序列化本身沒有問題,但是如果反序列化的內容是用戶可以控制的,且后臺不正當的使用了PHP中的魔法函式,就會導致安全問題
常見的幾個魔法函式:
__construct()當一個物件創建時被呼叫
__destruct()當一個物件銷毀時被呼叫
__toString()當一個物件被當作一個字串使用
__sleep() 在物件在被序列化之前運行
__wakeup將在序列化之后立即被呼叫
PHP反序列化漏洞
提交的反序列化資料的api為:O:1:“S”:1:{s:4:“test”;s:29:“”;}

原理在這里了,但是序列化的道道不是這么簡單的,更多更復雜的反序列化還需要我們繼續去探索,詳情可以去github上查找更多關于反序列化的漏洞,
XEE
Xml外部物體注入漏洞,概括一下就是攻擊者通過向服務器注入指定的xml物體內容,從而讓服務器按照指定的配置進行執行,導致問題,即服務端接收和決議了來自用戶端的xml資料,而又沒有做嚴格的安全控制,從而導致xml外部物體注入,
構造payload,放入接收xml資料的api:
Payload為:
]>
&f;

URL重定向
在執行了url跳轉的地方可能存在不安全的url跳轉問題,如果后端采用了前端傳來的(可能是用戶傳參,或者之前預埋在前端頁面的url地址)引數作為了跳轉的目的地,而又沒有做判斷的話,就可能發生"跳錯物件"的問題,url跳轉的直接危害就是我們較為熟悉的“釣魚”,攻擊者使用漏洞方的域名做掩蓋,最終跳轉的是釣魚網站,
點擊之后仔細看url

后面存在url跳轉輸入,輸入百度地址,可跳轉到百度搜索界面,


SSRF(服務端請求偽造)
其形成原因大都是服務器端提供了從其他服務器應用獲取資料的功能,但又沒有對目標地址做嚴格過濾與限制,導致攻擊者可以傳入任意的地址來讓后端服務器對其發起請求,并回傳對該目標地址請求的資料,
- SSRF(curl)
與URL重定向相同,

同樣可改變url地址為百度地址跳轉到百度搜索,
- SSRF(file_get_content)
file_get_content()函式是用于將檔案的內容讀入到一個字串中的首選方法,邏輯和前面一樣,它支持讀取遠程檔案或者本地檔案,也支持多種協議,更多的,它還支持php偽協議,我們可以利用偽協議方法讀取本地原始碼,


得到的是經過base64加密的頁面源代碼,
總結
OK,pikachu漏洞練習平臺練習幾乎完成,
關于暴力破解者方面,只是描述了表單的暴力破解,驗證碼繞過和token防爆破這2個方面也是相同的,注意的是burp工具的用法(設定值,重放包);
xss 只寫了2個部分,但無非都是構造xss陳述句,當這個被限制時用另一個陳述句,總會有適合的;
csrf是需要偽造欺騙點擊的,只要用戶點擊了這個請求,攻擊就完成了,所以也稱之為“one click”攻擊;
SQL注入沒有寫相關的東西,在另外一個sqli-labs靶場將會仔細把每種注入方法給列出;
還有不安全上傳這個方面,也會在upload-labs靶機上進行仔細描述,每種限制上傳的原始碼都有其對應的繞過技巧;
反序列化這方面需要更多的了解才能達到一定的水平,各種奇巧方法都可以用上,這對滲透測驗幫助很大,我還得繼續學習前輩們的方法;
XEE漏洞現在幾乎是無法看到了,可以學習構造技巧,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/266778.html
標籤:其他
