原生开发下的文件安全代码审计-PHP
文件安全
测试功能点:(任意)文件上传,下载,读取,删除
关键词:upload upfile uploadfile | download downfile dowmloadfile| read readfile | delete deletefile
0x01 emlog v2.2.0 任意文件上传

/content/templates
https://www.cnvd.org.cn/flaw/show/CNVD-2023-74536
/admin/plugin.php
https://www.cnvd.org.cn/flaw/show/CNVD-2023-74535
有关文件的关键词
$_FILES[] move_uploaded_file @unlink()-删除给定文件
如何搜索

其实/content/templates和/admin/plugin.php的任意文件上传的漏洞原理都是差不多的。
审计流程:搜索upload关键词——>定位文件——>定位可控变量——>定位漏洞语句——>厘清如何触发利用条件。
/content/templates的任意文件上传发生在/admin/templates.php中的第78行。
上传成功后会将上传的模板文件夹存放在/content/templates目录下,模板文件夹名不改变。

同样,/admin/plugin.php的任意文件上传漏洞发生在/admin/plugin.php第99行,
上传成功后会将上传的插件文件夹存放在/content/templates目录下,插件文件夹名不改变。

)
制作恶意文件,将/content/templates/目录下的default更名为default1模板文件夹添加一个内容为 的shell.php,压缩成一个zip文件。点击安装模板,选择压缩好的恶意文件。

完成后界面如下图,如果不确定哪个是我们上传的恶意文件,可以右键复制链接。得到http://222.16.24.133:84/admin/template.php?action=use&tpl=default1&token=782468c4b5fd527182ac9e8466ca663b29b15b47,tpl=default1的就是我们上传的恶意模板文件,将其启用。

访问/content/templates/default1/shell.php路径,得到下图,即利用成功。

同样的,制作恶意文件,将/content/plugins/目录下的tips插件文件夹添加一个内容为 的shell.php,压缩成一个zip文件。点击安装插件,选择压缩好的恶意文件。

访问/content/plugins/tips/shell.php,出现下面的界面,说明上传恶意文件利用成功。

漏洞产生原因:没有对用户导入的模板/插件文件进行过滤,导致了任意文件上传getshell。
0x02 emlog v6.0.0 任意文件删除
删除关键词:@unlink()
漏洞产生关键:可控变量+函数能执行
审计流程:搜索关键词@unlink()——>寻找可控变量

将备份数据库导入到服务器空间,我们尝试导入5份。然后使用burpsuite做以下操作(不要手动改成POST,右键改POST),为啥不用hackbar,因为hackbar不好使啊。
POST /admin/data.php?action=dell_all_bak
bak[]=../content/backup/emlog_20231025_2d7d1ca261e45fa37c.sql



回到/admin/data.php可以看到只有四份备份数据库文件了,删除成功!

0x03 通达OA v11.3 任意文件上传&文件包含
emmm,通达oa的源码实在是太大了,CPU都直接给我跑满了,我那垃圾电脑带不起来啊。
在审计通达OA源码的时候,遇到的第一个难点就是源码被加密了,需要解密。我们需要根据被加密源码的一些特点或者是找资料进一步找到具体的加密算法,从而将源码进行解密。
第二个难点就是源码文件太多了,将文件上传后,想找到上传的文件比较困难。则我们可以使用文件监控,找出上传后文件所在位置。
第三个点就是马上传到了网站根目录的上一级文件夹attach中,是无法访问到的。想要利用马,就必须找一个文件包含的函数来加载该木马进行利用。

浙公网安备 33010602011771号