tianticms代码审计——伊拉克版本

tianticms代码审计——伊拉克版本
正所谓伊拉克版本必有缺陷
缺陷

前台环境没有搭建好,但前台没啥功能点

环境搭建
使用maven阿里源进行打包即可,全文搜索jdbc修改三处配置文件下的数据库连接,数据库文件在

tianti-modules/tianti-module-admin/src/main/webapp/scripts/tianti_stage.sql

我设置admin.war在admin路径下,getway为空不成功,所以这里仅测试后台功能,伊拉克版本见谅(前台也只是静态界面)

代码审计
组件漏洞
查看pom.xml
发现组件

log4j 1.2.17 可能存在漏洞 CVE-2019-17571  但需要SimpleSocketServer 开启端口
fastjson 1.2.20 可能存在反序列化漏洞
shiro 1.3.2 可能存在命令执行漏洞
hibernate 可能存在hql注入

验证 log4j1.2.17 CVE-2019-17571
使用全文搜索没有发现使用SimpleSocketServer开启端口,无法利用

fastjson
查找序列化方法parseObject,木有,利用不了

shiro反序列化 查找key在shiro配置文件
在这里插入图片描述
使用shiro综合利用工具,使用该key进行爆破利用链,找到利用链并且可以成功执行,漏洞存在

hibernate组件
全文查找select,发现基本上都采用了预编译写法,也就是

where username = :username

无法利用,有两个存在漏洞的写法分别为

public int getCount(String sql){
	String sqlCount="select count(0) count_num from ("+sql+") as total";
	List<Map<String, Object>> list = this.querySqlObjects(sqlCount);
	if(list.size() > 0){
		int countNum=((BigInteger) list.get(0).get("count_num")).intValue();
		return countNum;
	}else{
		return 0;
	}
}
public List<User> findUserListByRoleCondition(String roleId,String name){
	String hql="select urr.user from UserRoleRel urr where 1=1 ";
	if(roleId != null){
		hql+=" and urr.role.id = "+roleId;
	}
	if(StringUtils.isNotBlank(name)){
		hql+=" and urr.user.realName like '%"+name+"%' ";
	}
	return this.queryForList(hql);
}

可惜没有找到相关方法调用,注入失败

文件上传
全文搜索upload,发现路径user/upload/uploadAttach路径,但是由于使用随机校验码进行重命名已经用.分割验证后缀的方式进行验证,无法利用

查看后台功能,在其他的数据操作方面,使用了spring-data框架进行数据库更新操作,进行了预编译操作,无法注入,更新用户名密码位置,采用的是session获取用户id与数据库进行比对,也无法利用

或许前台有些查找功能,但是这种预编译写法,仍无法利用

至于xss之类的,后台的xss木有用

菜菜,大佬, 带带

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值