第1次正式的审一次CMS,虽然只是一个很小的博客系统(提交都不必定收的那种),漏洞亦都很简单,然则亦算是累积了不少经验,因此最后想来还是这里做个分享,博客系统的CMS就不说了,毕竟有个官网挂着。。。缘起某日翻阅某伴侣博客的时候无意间发掘有个小型的CMS,反正暑假闲的无聊就去审了一下代码(正好拿来练练手),问题挺严重的,好多参数都无进行过滤,光注入就有好多处,由于文案篇幅有限,这儿就不一一列举了,这儿只把我找到的漏洞中每类最典型的剖析一下。 身份验证漏洞
首要一上来便是一个很简单的洞,后台就能够万能秘码绕过,问题出在这儿ad/login.php先看代码
这儿咱们并无对POST和GET参数进行过滤(一起始我还以为定义了全局过滤,结果找了半天没找到,发掘基本就无过滤)因此登陆能够直接万能秘码绕过
username=qweq or 1=1#
password=123
任意文件修改引起getshell
进了后台以后咱们先大致浏览一下功能,发掘这儿有个修改站点信息的功能,进入后台找到相应的setconfig.php
咱们先看一下大致的表单提交格式
这儿咱们咱们能够很容易发掘它对咱们的输入并无进行任何过滤就直接替换了原文件的内容,咱们跟踪到源文件
因此咱们能够构造一句话插进
";@eval($_POST[cmd]);/*而后用菜刀链接cmsconfig.php文件
XSS
既然是博客系统,那样最重要的一定是发布文案的模块,因此咱们跟进去看一下,问题出在art.php先大致看一下代码有没有过滤
添加文案
这儿乍一看是无进行过滤的,接着找一下表单结构
这儿对$content编码进行了标签转义,检测了一下输出点后发掘绕不外,想到试试别的参数,于是找到了tags参数
添加文案的函数的确无过率,然而到保留页面的时候发掘存在问题,作者自己定义了一个过滤函数
跟进去过滤函数
写了一堆替换,亦没想到啥绕过办法,而后又换了另一个参数title这回发掘这个参数并无进行过滤,这是在输入的时候给了个不要输入特殊字符的警告。
前台查看文案
当然这儿亦是存在二次注入的
CSRF
问题出在/ad/admin.php,关键代码如下
这儿并没有做相应的token认证因此可能存在csrf漏洞,咱们用burp截包
这儿有个小技巧能够直接用burp直接生成csrf钓鱼页面 完成后丢弃这个包,咱们先看咱们的管理员有几个
点击html页面的提交
再后来看咱们的管理员
任意文件删除
问题处在/app/dbbackup/index.php中
关键代码如下
这儿大概看一眼就能明白,p参数可控,且无进行过滤,因此能够直接删除任意文件,这种任意文件删除通常能够删除install.lock从而引起重装漏洞,这儿这个博客系统是安装完成后自动把安装页面直接删除了,因此暂不存在该漏洞
SQL注入
问题出在hit.php,关键代码如下
看到这儿可能非常多朋友认为id是咱们可控并且没有进行任何过滤的,其实作者这儿是做了过滤,关键点在这儿
这儿引用了c_other.php的sqlguolv函数,咱们跟进去看一下
关键代码
这儿是把$_SERVER[QUERY_STRING])与关键字做了比较,起到了必定的过滤效果,然而过滤并不完全,咱们依然能够利用盲注绕过
绕过很简单,这儿就只贴一个payload了
脚本懒得写了
做个总结吧,代码审计还是那2种老招数,第1是通读代码,这般的好处是能够挖掘有些规律漏洞,例如要求竞争之类的,第二是直接全局搜索,找关键函数,看变量是不是可控,是不是存在过滤balabala的,针对初学者来讲个人认为最快的办法是找一篇老旧的CMS自己尝试审计一下,通常来讲是前台(浏览器)找到php,后台对应找php源码瞧瞧,主抓有些危险函数及waf函数瞧瞧有无绕过可能。
本文作者: Pupil
本文标题: 浅谈代码审计入门实战:某博客系统最新版审计之旅
本文链接: http://pupiles.com/code-check.html
发布时间:2017年8月8日 - 12时08分
版权声明:
本文由 Pupil 原创,采用 保存署名-非商场性运用-禁止演绎 4.0-国际许可协议 转载请保存以上声明信息!点击“阅读全文”,得到更佳阅读体验
|