https://www.freebuf.com/news/203795.html
安装模块
不同目录下的放着不同对应文件,我们可以对这些目录下手
我们可以看到上图中数据都是闭合了的,那么是不是也可以?
但是很明显报错了
然后我们通过白盒审计,发现有魔术引号
触及知识盲区
开始我们的写马
写入后,还是失败,
其实这个之所以不成功,是因为这个双引号解析漏洞要在php版本5.5以上才行。
换到5.5以上版本,
执行成功
前台模块
注册一个新用户
然后抓个包,发现她会提交到user.php
既然会跳转,那肯定会有标识,前面的数据一看就是我们自己填的,后面一个不知道。
用审计软件一查,发现是一个非常标准的用户注册页面。仔细看了后,发现并没有什么过滤。
既然没有检测,那就找个地方来个xss,发现不行,然后也没抓到包,说明是一个前段检测。
但是
既然前段存在检测,那我们就抓包修改
注册成功
然后弹窗了。
既然前台都可以看到,我们在后台,能不能看到呢?
(从前台达到后台)
一点会员信息,马上弹窗。说明是一个存储型xss
sql注入
我们再看下,好像啥过滤都没有,会不会存在sql注入呢?
我们也来亲自试一下
我们在注册用户这里开始写入
抓包注入
我们看到上图的单双引号和井号都没生效。那么是不是不存在sql注入呢?
别急,我们这个是白盒,我们有源码,我们来看源码是怎么记录的
审计工具
mysql监控
然后我们重新登录一下用户
用mysql监控系统,可以看到mysql数据
重新注册一个后,抓包sql注入
可以看到我们刚刚插入的mysql数据
把她单独拿出来
提到魔术引号,我们可以想到宽字节给她注入
我们抓到的包是post,所以可以直接写汉字
但是发现写不进去,那我们可以用hex来写
把之前的a的值换成df,相当于一个字节,而一个汉字是二个字节,魔术引号一个字节+我们给的一个字节,那么就可以拼凑成一个汉字,那么我们就把魔术引号给闭合了
a的ascii码是61,单引号的ascii码是27
我们把61替换为df就好
然后放包,可以看到报错了,那么就肯定存在sql注入了。
题外话
我们新注册用户,回去数据库检查是否有这个用户,那么我们就可以去爆破用户。
宽字节注入后,我们来看下mysql记录的数据。
提取出来后
分析
我们这样使用报错注入,发现有效,接下来就实战,宽字节注入+报错注入
正常注册
在抓包这里改一下
我们发现报错了,那么宽字节注入成功。
然后我们去掉\xDF\,然后在本地测试,注意前面的数据不要重复哟。不然会错误。
爆出数据库名字 blue
。
放入cms,看看效果,但是还是报错了,但是我们这个语句之前测试的时候都没有问题,那么说明这个cms可能在某个地方做了拦截的,所以我们才不会看到显示。
cms做了防护,可能是会不会丢数据库的错误给我们看,而是丢语法错误给我们看,
更甚至,什么报错也不给,直接跳转。
既然报错注入+宽字节注入不行,我们就用另一种骚姿势。
插入的语句 一次能否插入多条数据。
可以插入多条数据,但是不能有单引号和双引号
成功执行
,1,1),(100,0x79696e677169616e,md5(12345),(select database()),1,1)#
然后我们来看数据库是否写入,可以看到成功写入!!!!
那我们现在就登录这个账号试试
成功注入,我们可以在邮箱这个地方看到数据库名称
然后我们在注册一个新的账号来得到新的mysql数据(密码)
执行成功!!!
我们来看下数据库
那我们现在就登录这个账号试试
成功注入,我们可以在邮箱这个地方看到数据库里的pwd字段,也就是密码字段
一看是个md5值拿去解密
万能密码
然后我们试试登录界面
mysql 监控
发现密码在md5 框里
那我们就加一个框框来把他闭合
结果还是错,可以发现汉字没有和魔术引号结合。
既然密码字段这么麻烦,我们就在账号字段尝试注入
结果账号字段还是错,但是不去效验密码字段了,那说明不能在账号字段注入的。我们只能在密码字段注入。
我们来重试。我们勤快一点,把汉字改成a,然后抓包修改。
抓包后,我们发现单引号自动变成了url编码
那我们就直接把a换成%df,就不用hex里去改了
放包,然后就成功登录了!!!!!!!!!!
总结
这盘文章也是我断断续续才写好,原谅我鸽了好久
说是代码审计,其次这个cms的话,并不需要什么代码功底
关键是掌握这个思路,然后去测试这个cms的每一个功能点
对!!!没错,是测试,这个cms的每一个功能点
看能不能找出来。找出来后顺便复习下以前的top 10漏洞。