akcms文件任意命名漏洞

2012-09-14 16:35:28 26 3962 1
最近在练习PHP代码审计,随便下了一个akcms源码模版分析了下,貌似这个建站源码用的人也不少。刚进t00ls,请各位多多指教。废话不说了,直接进正文。

0x01 漏洞代码分析

      这个漏洞是由于作者的逻辑错误的导致的,漏洞存在于include\common.func.php文件中的checkfilename函数,代码如下图



      可以看出红线圈出的部分,是做一个逻辑判断,如果文件名中含有php或者有创建权限的用户将返回错误信息。这里作者的原意应该是“若文件名中含有php或者用户没有创建权限时,返回信息”,但是,在iscreator函数前却多了一个!号,导致整个过滤成了摆设。并且,作者只是单纯的过滤了php,如果用户输入PHP,pHp等字样依旧可以创建php脚本。

0x02 漏洞利用

      漏洞重现过程,我使用了后台的模版功能,首先要创建一个带有PHP代码的模版,如下图



     在生成页面的模块下,选择使用这个模版,并将文件名设置为.php结尾,如下图



     保存之后,在根目录下便会生成一个名为T3.php的文件。访问效果如下图



0x03 总结

      1. 这周主要在学习PHP代码审计,那这套cms程序做练习用的,在整个的审计过程中,感觉作者的安全意识不高,尤其是在代码开始部分,代码会先判断PHP魔术引号功能是否打开,如果打开则将转义后的字符串,进行反转义,也就是说将魔术引号的作用取消掉。这个做法,完全是没有一点安全观念的体现

      2. 整个跟踪过程还是苦中有甜的,毕竟是挖到了漏洞。也发现自己在漏洞挖掘的过程中的一些问题,思维不够发散,PHP代码功底不够硬。之后,还是要去再看看PHP代码审计的文章,吸取一些前人总结的经验

关于作者

唐门三少17篇文章105篇回复

评论26次

要评论?请先  登录  或  注册