记一次简单的白加黑测试
前一阵子成了小洋人,所以很长的时间也没更新了,今天更一篇PHP代码审计的吧,此次分享的内容十分的简单,大家简单的看看即可
命令注入 -1
从上述代码,我们可以看出来,$ip变量接收过来之后通过合并运算符(??)判断是不是空,是空的话就返回114.114.114.114,否则就返回变量本身,说实话,这里并没有看到对ip参数的任何形式的过滤,但是这里的的确确是修复了。
而后 n u m 变量、 num 变量、 num变量、time变量以及$bit变量,在接收出来之后都进行了强制类型转换(int),所以并没有任何毛病。
但是**$net变量只是将&、&&、|、||以及;**进行替换为空,但是没有过滤%,这就导致命令注入漏洞的一个绕过
我们看一下命令注入的效果
显而易见,我们注入成功了,原谅厚码和角图
命令注入 -2
首先我们可以看到,代码中圈出来的地方,首先校验数据存在与否,如果不存在的话会直接存到数据库里面
而这里就可圈可点了,存进数据库之后,他没有经过任何的处理就直接拿出来了,并且利用nat_exec()函数进行执行,由于这里是无回显的注入,所以我们骚操作一把
命令注入 -3
删除nat配置的时候,会在数据库里面搜索对应的nat配置,而后将搜索到的nat配置直接使用nat_del_exec();进行删除操作,但是在删除的过程中,oldInfo变量与array()数组并没有进行任何形式的过滤,导致命令注入漏洞的产生。
我们先删除第一个配置,删除成功后,其实也就顺带执行了 ls -ll命令
我们接着删除第二个配置,也就顺带执行了 rm 命令
难道是不难,我觉得这种是十分明显的命令注入,笔者同时还找到了几处相似的洞,但是没复现出来,因为找不到接口,这个代码写的不是很好,你说他是MVC架构吧,他还真就不是,但是你说他不是MVC吧,偏偏还魔改了。。。。。。菜是原罪
仅仅几率一次测试的技巧,如果侵权,请私信我,我会删除