php代码审计实战(一)

前言:这套漏洞好水,为什么审他呢?原因是虽然一直挖漏洞 也用白盒摸出过不少洞,但是还没有彻彻底底的通审过一套系统
所以就找了套简单的摸摸鱼

源码:熊海CMS_1.0

安装方法:这里是用宝塔直接搭建的

①数据库
需要宝塔建立一个数据库导入那个数据库文件就好了
然后安装的时候输入的数据库,账户,密码跟宝塔的数据库是一样的就好了
②php版本问题:需要将php设置为5.6才可以进行运行
且注意:如果无法运行<?php phpinfo(); ?>需要去查看短标签和php配置禁用函数

审计过程

看个人习惯和时间去确定自己的审计方法吧
我的话

快审的话:
1.过一遍功能点,然后猜存在的漏洞,找到对应的代码进行审计
2.直接seay这些审计系统通审一遍,一个一个去逆推细审。
慢审:
通审全部代码,这种最好的就是可以审到别人审不到的逻辑漏洞

这里因为学习为主,所以选择的方式是通审
①目录结构
在这里插入图片描述

前台

index.php入口文件
漏洞
①任意文件包含

发觉这里是通过r这个值来判断接受的文件名字-->然后直接包含在include里面
且r这个值可控

利用条件:必须在该文件的什么目录下拥有相应的文件,才可以拿到shell 这里的文件指的是txt之类的 不是shell.php别误解

在这里插入图片描述
复现
在files目录下建立一个shell文件
文件内容为<?php phpinfo();?>
在这里插入图片描述

接着通读files/index.php文件
简单的分为三部分
php部分:包含三个文件是简单的2个功能 第一个包含文件里面啥都无,第二个文件是作为获取数据库文件值即进行简单的连接,第三个文件是获取当前时间的
一个外部实体声明
html里面:写死了几个sql查询语句即查询功能的含义,其他的话就是简单的展示功能模块,没啥东西
所以重点看php的包含部门

很简单的处理逻辑,可能mysql_error可能会导致一些问题
但是先不急,先跟踪到die()命令中的/install模块去看看
在这里插入图片描述
install模块里面只有一个index.php文件
一样也是分为三个部分
php处理部分,外部实体模块部分,html展示部分
php里面的逻辑
这里简单说一下

根据是否存在InstallLock.txt文件来进行判断是否成功安装,如果安装即退出

在这里插入图片描述

然后写完后即向InstallLock.txt文件中写入内容防止重复安装的情况出现.
这里防止了重装的这个漏洞情况

html的内容就不说了 就一个简单的展示功能

自此安装与整个数据库连接的模块就到此结束,只有一个任意文件包含的漏洞

又回头了
回头看files/index.php模块,看里面的html内容
获取一些基础的title这些东西,然后加载头文件模块和body内容
尾文件模块

在这里插入图片描述
header模块里面没啥东西
在这里插入图片描述
就是一个获取页面的
利用这玩意来获取标签
在这里插入图片描述
跟数据库里面的内容相关的这个中间的
界面对应就这样

在这里插入图片描述

接着跟踪吧,因为header里面的头是写死了的,所以这里直接跟踪这个
在这里插入图片描述
即对应这些功能点–>翻数据库可以看的到
在这里插入图片描述

r=about
r=list
这些
这些功能点的php里面倒是有些sql可控的参数
但是被addslashes过滤了 绕的话太麻烦了
在这里插入图片描述
回到files/index.php里面接着审
发觉就是传数据库的值的
没啥东西
自此整个前台的洞就审完了

接着去审后台的洞

后台

一样的道理 从admin/index.php入手
又是一个文件包含
在这里插入图片描述
直接包含

在这里插入图片描述
然后接着摸admin/files/index.php这个文件
和前台的差不多
就是多了一些js文件的包含而已
在这里插入图片描述
老规矩接着审包含的文件
这玩意就是一个checklogin.php 然后就连接

在这里插入图片描述
而对于这个这里就简单的判断了下cookie是否为空
这不是又是一个漏洞吗?
登录绕过
在这里插入图片描述
在这里插入图片描述

然后接着审

top.php这些文件
在这里插入图片描述
这不是又是一个sql注入
在这里插入图片描述
接着审
?r=manageinfo和?r=outlogin
manageinfo这个逻辑挺简单的–>一样也要经过checklogin.php文件判断 绕就完事

存入需要更改资料的值
然后对2次输入的密码判断是否相同和文件传输进行判断
最后通过判断后更改该资料的值
在这里插入图片描述
这里重点分析处理图片上传的机制
大概就是先获取上传的名字
然后在判断最开始文件的名字是否为空 为空的话即进入到里面进行上传
然后获取上传文件的名字与将密码加密为md5的

在这里插入图片描述

r=outlogin
即将cookie设置为0
在这里插入图片描述
接着审header.php
这里面没啥东西 sql语句几乎都写死了的
siderbar.php
就一个输出内容的
审这些文件就完事
在这里插入图片描述
newwz.php文件
又是一堆sql注入

在这里插入图片描述

除了内容有简单的过滤外
其他的内容全是直接就插进去的

在这里插入图片描述
且插入后会进行一次query判断是否插入成功
在这里插入图片描述

newsoft.php也是一样
在这里插入图片描述
wzlist
一样直接拼接query

在这里插入图片描述
在这里插入图片描述
softlist
一样的情况
在这里插入图片描述

newcolumn.php,conlumnlist,newlink,linklist,commentlist,siteset,seniorset,imageset这几个文件几乎都是一样的问题 插入或者删除的时候没有进行任何过滤 全都有sql注入
在这里插入图片描述
审到这里大部分的漏洞就审的差不多了

不过也要回过头去看看login这个文件
因为cookie可以伪造 所以就一直没分析他
login.php
漏洞
①开局送sql注入

在这里插入图片描述
user没进行任何过滤,注就完事

在这里插入图片描述

②password通过MD5进行比较的
在这里插入图片描述
可以绕过

对这套cms的审计差不多到这里就结束了

大概的漏洞点

①两个文件包含
②后台登录绕过
③sql注入-->无数个

当然这里面肯定还有一堆的xss漏洞 因为全局没有经过任何过滤
但是懒得审了,xss审出来也挺简单的

反向审:直接搜echo语句,从输出的点然后回头看相关的变量是否有过滤
正向审:看存储没有过滤的变量是否在其他地方输出

修复方法的话

①sql注入的话
用mysql_real_escape_string进行过滤就好了
②登录绕过的话 更改判定方式吧 这玩意不是很好修
③文件包含 写死自己要包含的文件
然后根据返回的key进行修复
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

goddemon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值