免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

SpringBoot框架SpEL表達(dá)式注入漏洞復(fù)現(xiàn)與原理分析( 二 )

SpringBoot框架SpEL表達(dá)式注入漏洞復(fù)現(xiàn)與原理分析
文章插圖
strVal的值變?yōu)閠imestamp,所以在indexOf判斷時(shí),由于沒(méi)出現(xiàn)${,所以變?yōu)榱?1,跳過(guò)了while循環(huán),直接執(zhí)行下邊的return result.toString(); 。
繼續(xù)跟進(jìn),下一步是調(diào)用resolvePlaceholder方法,此函數(shù)的作用是查找this.context中對(duì)應(yīng)參數(shù)的值并返回,如下圖:

SpringBoot框架SpEL表達(dá)式注入漏洞復(fù)現(xiàn)與原理分析

文章插圖
發(fā)現(xiàn)拿到了時(shí)間戳"timestamp" -> "Wed Oct 19 00:38:36 CST 2022",然后賦值給propVal,此時(shí)不為空,進(jìn)入下一個(gè)if循環(huán),再次調(diào)用parseStringValue 。
SpringBoot框架SpEL表達(dá)式注入漏洞復(fù)現(xiàn)與原理分析

文章插圖
接著進(jìn)行replace替換,將原來(lái)的${timestamp}處的值替換成了 Wed Oct 19 00:38:36 CST 2022,最后return result.toString();返回,如下圖:
SpringBoot框架SpEL表達(dá)式注入漏洞復(fù)現(xiàn)與原理分析

文章插圖
然后尋找template中的下一個(gè)參數(shù)位,這次的參數(shù)是error,流程與上面基本一樣,這里不再細(xì)致分析 。
SpringBoot框架SpEL表達(dá)式注入漏洞復(fù)現(xiàn)與原理分析

文章插圖
接著第三個(gè)參數(shù)是status,同理
SpringBoot框架SpEL表達(dá)式注入漏洞復(fù)現(xiàn)與原理分析

文章插圖
最后是第四個(gè)參數(shù)message,重點(diǎn)來(lái)了,這個(gè)值是用戶(hù)輸入的 。接著分析,跟進(jìn)parseStringValue方法
SpringBoot框架SpEL表達(dá)式注入漏洞復(fù)現(xiàn)與原理分析

文章插圖
拿到message對(duì)應(yīng)的值,也就是用戶(hù)輸入的payload
SpringBoot框架SpEL表達(dá)式注入漏洞復(fù)現(xiàn)與原理分析

文章插圖
賦值給propVal,接著調(diào)用parseStringValue
SpringBoot框架SpEL表達(dá)式注入漏洞復(fù)現(xiàn)與原理分析

文章插圖
這次調(diào)用去除了${}
SpringBoot框架SpEL表達(dá)式注入漏洞復(fù)現(xiàn)與原理分析

文章插圖
最后進(jìn)入resolvePlaceholder,成功執(zhí)行T(java.lang.Runtime).getRuntime().exec(new String(new byte[]{0x63,0x61,0x6c,0x63})),彈出計(jì)算器,分析結(jié)束 。
SpringBoot框架SpEL表達(dá)式注入漏洞復(fù)現(xiàn)與原理分析

文章插圖
參考文章https://www.cnblogs.com/litlife/p/10183137.html
https://www.cnblogs.com/zpchcbd/p/15536569.html
https://blog.csdn.net/haduwi/article/details/126326511
https://blog.csdn.net/weixin_54902210/article/details/124533353

經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀