0x01 任意文件删除

这次对与yxcms的审计都是分析后台的, 后台的洞要利用要突破身份验证,CSRF是一种理论可行的方法, 所以找后台的洞的时候如果可以csrf那么利用价值就会增大。
这次师傅在protected/apps/admin/controller/filesController.php中找到一个任意文件删除

屏幕快照 2019-11-07 上午10.26.11.png

屏幕快照 2019-11-07 上午10.32.14.png
显然这是个任意文件删除, .,/都没有过滤可以遍历目录且可以csrf。

0x02 SESSION会话固定漏洞

这个洞利用**protected\include\lib\common.function.php**中的session屏幕快照 2019-11-07 上午11.31.29.png

如果管理员已经开了一个session,且在663行用户可控,那么我们就可以在665处写入一个自己指定seesionid的新session,这个id的内容会和访问者之前的session里内容一样。
屏幕快照 2019-11-07 上午11.38.06.png
admin登陆时的sessionid如图
发送伪造包以后

屏幕快照 2019-11-07 上午11.40.18.png
屏幕快照 2019-11-07 上午11.40.29.png
多出一个内容和管理员一毛一样的session,用它就能登陆后台。
那么数据怎么过来的。
在访问后台时,也就是admin控制器下的index方法,要先出实话构造函数,构造函数会调用父类的构造函数,也就是commonController
屏幕快照 2019-11-07 上午11.55.48.png
common会在12行处检查登陆,这里开启了session并调用了session方法触发了攻击。
屏幕快照 2019-11-07 上午11.58.34.png跳跳,就跳进了session()函数了。
这是控制流, source点是通过$sessionId = request('request.sessionid');传入的,这个方法会将字符串点分,拿值,这里拿的是request方法里的sessionid数据,做了一道html编码。可控。

0x03 利用

这里需要让管理员触发一个get请求,用csrf, 这里作者用了一个img标签没有过滤src,虽然不能调用js,但是可以发包静态csrf。