akcms代码执行漏洞
上周挖出的akcms的后台模版getshell感觉没什么新意
然后又仔细看了看代码,发现了一个比较有“前途”的洞,代码执行漏洞
而且出问题函数是作者提供给建站用户进行二次开发时使用的
也就是说这个问题放大的程度也会要大些
0x01、原理分析
漏洞问题主要存在于include\common.func.php文件中的ak_if函数,先看下代码
可以发现,相差了eval函数调用的语句。在4.1.4之前的版本中,这个函数并没有调用eval函数
但是在4.1.4中,作者为了增加ak_if对复杂逻辑的判断,添加了这条语句。
这导致了,如果用户对于$variable变量可控,将会执行任意php代码
0x02、漏洞验证
为了重现漏洞,我下载了作者基于akcms2.4.2的blog系统
在\cache\templates\%%7D^7D3^7D3A5C77%%comments.htm.php模板中调用了这个函数
经过跟踪变量发现,这个模版是在用户回复浏览者提问时用到的
所以,要利用这个漏洞需要有一个可以回复浏览者提问的后台账号
下图为利用过程
0x03、总结
漏洞函数是提供给建站者自行扩展的,如果
建站者将ak_if函数利用在前台用户交互的地方,后果将不堪设想



