膠州專業(yè)建站湖北seo服務(wù)
提示
- ssti模板注入
- head頭x-forwarded-for
每一次做題的最開始流程都大致因該是
- 信息收集
- 找可以操控的地方
查看hint頁(yè)面的源代碼又發(fā)現(xiàn)它提示說(shuō)
####你知道為什么會(huì)知道你的ip嗎
查看flag頁(yè)面
從剛才給我的提示以及他這里顯示的我的ip,大概找到了我可操作的可控點(diǎn)
既然它會(huì)讀取我訪問它的ip并顯示,那么我可以通過修改我的ip以達(dá)到執(zhí)行命令的效果
這里抓包使用x-forwarded-for驗(yàn)證
從它返回的頁(yè)面來(lái)看是可以利用的
現(xiàn)在就是判斷這里應(yīng)該怎樣去利用
從經(jīng)驗(yàn)上來(lái)判斷這里很像是ssti模板注入
嘗試驗(yàn)證一下
這里傳入了${7*7}頁(yè)面返回了執(zhí)行過后的結(jié)果說(shuō)明這里存在ssti注入
!!!!如果報(bào)錯(cuò)或者不執(zhí)行也不一定是錯(cuò)的,最后會(huì)講解
現(xiàn)在判斷是那種模板
這里傳入a{*comment*}b后回顯ab,說(shuō)明這里是smarty模板
應(yīng)為smarty是php的模板所以直接嘗試rce
{system('ls')}
這里回顯出flag.php文件,直接cat
這里并沒有回顯
猜測(cè)這里只是一個(gè)障眼法
看一下跟目錄
出現(xiàn)flag,這里應(yīng)該就沒問題了
獲得flag
SSTI模板注入
SSTI就是服務(wù)器端模板注入
當(dāng)前使用的一些框架,比如python的flask,php的tp,java的spring等一般都采用成熟的的MVC的模式,用戶的輸入先進(jìn)入Controller控制器,然后根據(jù)請(qǐng)求類型和請(qǐng)求的指令發(fā)送給對(duì)應(yīng)Model業(yè)務(wù)模型進(jìn)行業(yè)務(wù)邏輯判斷,數(shù)據(jù)庫(kù)存取,最后把結(jié)果返回給View視圖層,經(jīng)過模板渲染展示給用戶。
漏洞觸發(fā)的原因未經(jīng)任何處理就將其作為 Web 應(yīng)用模板內(nèi)容的一部分,模板引擎在進(jìn)行目標(biāo)編譯渲染的過程中,執(zhí)行了用戶插入的可以破壞模板的語(yǔ)句,因而可能導(dǎo)致了敏感信息泄露、代碼執(zhí)行、GetShell 等問題。其影響范圍主要取決于模版引擎的復(fù)雜性。
大致意思呢就是:
沒有將數(shù)據(jù)區(qū)于語(yǔ)句分開,導(dǎo)致他們被當(dāng)成一個(gè)整體了
$output = $twig->render("Dear {first_name},", array("first_name" => $user.first_name) );
以上并不會(huì)早場(chǎng)ssti漏洞注入,應(yīng)為執(zhí)行區(qū)域和數(shù)據(jù)區(qū)域不在同一個(gè)地方$output = $twig->render("Dear " . $_GET['name']);
這里呢就會(huì)造成ssti漏洞,這里接受數(shù)據(jù)后就直接執(zhí)行了,可能會(huì)方便用戶使用,但是也同時(shí)會(huì)被別有用心的人構(gòu)造payload來(lái)注入可通過一下方式來(lái)判斷是什么模板從而進(jìn)行下一步的滲透
輸入{{7*'7'}}返回49的是jinja2模板。返回7個(gè)7的是twig模板
!!!!!!!!!!最后,ssti主要的還是知道他是那種模板,知道了以后去網(wǎng)上搜怎么注入,怎么查版本信息,就能獲得更過注入點(diǎn)。