记一次新手入门级别的代码审计
2021-01-29 10:50:47 Author: xz.aliyun.com(查看原文) 阅读量:237 收藏

0x00写在前面

下载地址:http://www.igoldway.com/

金微手机商城 V0.3.7版本
本人简单看法,先测试,再看代码,主要测试功能点交互点,然后再去代码中寻找漏洞,第一次写审计文章,文笔不好师傅们凑活看。
用到工具:
Phpstudy
Burp
Phpstorm+xdebug

0x01小试牛刀

我们先看安装文件
install.php

在这个地方可以看到数组$n[5]没有进行任何过滤我们暂定可能存在SQL注入,在代码中我们可以看到是直接执行SQL语句,这个地方我们先保留备注一下,继续审~

看到这个地方就是完成安装了,我们进行断点,可以配合xdebug+burp的组合来进行调试,在这个版本中,rename("install.php","install.bak");这个语句对于install.php文件名字直接改成了bak,在我们调试时候这句直接注释掉方便我们调试

到这里就清晰很多了,看到$n[5]这个地方写的是表名前缀。这个地方也就是存在了SQL注入,后面我们继续审,这个地方后面我们构造payload。
还是这个文件中存在这么一行代码:

file_put_contents('config.php','<?php'.PHP_EOL.'$cfg=\'{"DB":{"host":"'.$n[1].'","user":"'.$n[2].'","pass":"'.$n[3].'","name":"'.$n[4].'","pre":"'.$n[5].'"},"An":"金微手机商城","Aw":"'.str_replace("/","\\/",$n[9]).

$n[5]在前面我们审的时候知道了这个地方没有对于这个变量进行过滤。
我们用burp抓包尝试进行这个$n[5]进行写入config.php文件代码和注入的尝试,

回去继续看上面的代码,我们又有了新的发现,

这个地方用了json_decode函数(贴个学习地址:https://www.w3cschool.cn/php/php-rxi22oqv.html
其实在这里我先进行的是写入config.php,在这个地方可以写一句话可以phpinfo(),我在这里构造了一个payload。

单引号闭合前面然后phpinfo();//后面直接注释掉了。我们再去访问config文件

成功!
接下来需要绕过前面$m的josn_decode。

payload:\"}} '; phpinfo();//"

这个部分主要就是去看config文件写入了,我们可以执行php语句,之后看他的加密吧(我也不知道算不算加密)之后我们进行写入的绕过。


成功。
之前提到的SQL注入奈何技术有限,构造绕不过去,师傅们可以尝试一下。

0x02 由浅入深

这里我们直接重新发包把我们的payload去掉之后就正常安装成功了

之后跳转到admin.php后台登录页面

这个地方提到了Dec函数,在admin.php文件中调用了的只有common.php遂直接去这个文件中查找这个Dec函数

这个和之前说的decode加密,我们看返回的Rpl函数继续跟进

作者写代码不规范,都是自己打回车方便自己查看,这个地方是个防注入过滤,对于危险字符进行了转换。
再回到admin.php中查看代码

这个地方引入了新的变量$pre。看到后面的admin,admin应该是个表名,那么这个pre应该就是表前缀

这个地方的cfg,就是之前我们看到的config中的cfg

在这里解读一下代码,其实就是cfg变量通过Dec函数josn_decode解密了一次然后我们在config文件中看到的BD和pre这就连接上了,所以pre这个变量就是表前缀。

继续在这个admin.php登录页面我们断点之后可以看到变量Nm和Np的值是什么,同时这个地方执行了SQL语句,大概我们也可以看出来Select ID,Nr From Jms_admin where Nm='admin' And Np='123"(这个地方的Np进行了一次md5加密)

这个地方尝试注入会被之前提到的编码实体化,其实在这里我们知道SQL语句之后去执行一下尝试看看。

在这里我本来感觉有万能密码可以利用,结果发现并不是那么简单,这个地方还是之前提到的实体化编码,奈何技术太菜没办法绕过。

0x03 干就完了!

在后台页面存在上传文件,还是抓包研究

报错了这个地方,我们去看代码找到文件上传部分

通过上传抓包分析之后

很难过,没办法直接绕过上传php去getshell。
不过呢在这里上传上去了之后,存在一个改名字post包可以利用

成功getshell。技术不够,姿势来凑,这篇文章废话挺多的,大部分都是代码讲解,其实感觉更像一篇随笔,师傅们别喷哈。

0x04 意外收获

在刚才上图中上传文件中,这个地方有个删除,尝试了一下存在任意文件删除


这个地方删除burp抓包

在根目录下新建一个2.txt;然后修改dir:./穿越回根目录直接可以删除文件

后续查看相关代码分析

这个地方没有任何过滤限制,所以直接可以删除任意文件。

0x05 写在最后

其实这个应该有挺多洞的,文件总体来说也不大,我这php也是班门弄斧,边审计边学习,刚好在cnvd看到的,正好来练练手。第一次在先知发表文章,欢迎各位师傅们斧正,共同学习,共同进步!


文章来源: http://xz.aliyun.com/t/9114
如有侵权请联系:admin#unsafe.sh