大家好,我是聂风,在此,我做一个简略的代码审计文章共享来便利同学们学习。BlueCMS v1.6 sp1一直以来便是PHP代码审计入门的更佳良品。这次咱们就挑选这一个事例进行学习。我先声明,我的代码审计办法是针对代码根底较为单薄较单薄的人群进行代码审计。
0×01 环境建立
Phpstudy
BlueCMS v1.6 sp1源码
代码审计东西(Seay源代码审计体系)
0×02 代码审计进程
拿到一个CMS,有许多审计办法,我这儿的审计办法是黑盒+白盒测验,偏黑盒较多的代码审计。拿到代码后咱们应该先对其进行功用点的剖析,看一看该CMS存在哪些功用,由于咱们寻觅缝隙,肯定是从网站中的正常功用进行测验,这是黑盒测验的一个办法,发掘缝隙的中心我以为在于传参,知道每个传参的含义是不是就等于知道了代码会做什么,要做什么呢?
这是我总结的BlueCMS v1.6 sp1的功用点:
正常而言,咱们先将CMS进行一个装置,正常而言CMS的源码放入web目录下后咱们会拜访install目录,然后进行装置。装置完后咱们是不是应该以安全工程师的身份去想一想,咱们是否能够再次拜访install目录,进行重新装置呢?假如能够进行重新装置,是不是就能够将整个网站的数据悉数重装,然后拿到设置新的管理员账号,然后经过后台拿到webshell?
然后咱们去拜访该页面,正常,能够重装:
所以咱们审计出了代码的之一个问题,能够重复装置呢!是不是很简略?
然后咱们再来看这个网站,一般来说网站有展现类和功用类:
展现类(比方新闻站、门户站)
功用类(比方商城、OA、体系)
可是无论是展现类仍是功用假如咱们能够拿到一个普通用户的权限是不是愈加简单浸透测验?测验的点是不是更多?
那么咱们去注册一个账户吧!
注册一个账号,咱们想一想,是不是能够测验进行一个XSS,咱们先注册一个账号,然后抓包看看,然后咱们输入了用户名后,咱们发现burp抓了一个包:
很明显这个数据包是用来检测你的用户名是否有人注册过,那么咱们是不是能够经过爆炸user_name传参进行爆炸出用户名。(爆炸出用户名后爆炸暗码更简单)
然后填完一切内容,提交,然后抓到了数据包,咱们发现是被提交到user.php:
然后咱们经过代码审计东西去找那个文件。
在传参中咱们看到了我自己输入的“账号|暗码|邮箱|验证码”,然后最终呈现了一个act传参,翻开这个user.php咱们能够看出这个文件有好几个功用,act便是决议我的数据包是干什么的传参,所以乎仿制这个传参值去源码中寻觅这个传参:
这段源码便是关于你的注册,咱们能够看到INSERT INTO刺进,然后咱们看是否存在过滤,很明显这儿没有过滤,那么咱们测验进行XSS以及SQL注入。
咱们就先看XSS。
先抓包,正常的填写注册,然后将数据包阻拦(这是为了避免前端检测)
修正数据包,参加XSS句子,我是在邮件的当地加的。
成功弹窗:
事实证明这儿存在一个存储型XSS,然后咱们再去看看SQL注入:
这很明显是他的SQL句子,然后咱们测验运用updatexml的报错。
构建下句子:
' or updatexml(1,concat(0x7e,(SELECT database())),1),1,1)#
然后履行,竟然成功履行了。没有过滤?竟然能成功履行,阐明单引号没有起作用,是不是存在戏法引号?试试宽字节![1][2][3]黑客接单网