搜索
    Hi~登录注册
    查看: 221|回复: 0
    收起左侧

    webshell免杀从入门到放弃之ASP

    [复制链接]

    27

    主题

    0

    精华

    66 小时

    在线时间

    密圈

    积分
    25
    发表于 2019-10-15 18:47:49 | 显示全部楼层 |阅读模式
    本帖最后由 忘年 于 2019-10-15 06:48 PM 编辑

    前言

    授人以鱼不如授人以渔

    这是大概半个月前给自己星球写的免杀系列文章的第一篇

    觉得可以发出来跟大家分享一下。

    正文

    第一步,确定免杀目标

    比如普通的asp一句话就是

    ``

    或者

    ``

    也就是说你的shell在一系列操作之后要达到这种效果

    因为eval execute在asp中类似一种语言结构,除了大小写之外不能对其进行变化

    所以我们混淆的重点主要是后面的request("mr6")参数

    第二步,打开语法手册

    百度搜一个asp语法手册

    https://www.w3school.com.cn/vbscript/vbscript_ref_functions.asp

    查找到字符串有关的函数,随便选一个

    image

    他这里只是显示了一部分,我就拿unescape来举例子

    第三步,混淆

    unescape在asp中相当于php的urldecode,就是url编码

    所以先把payload给编码一遍

    为了增强混淆的效果,所以采用burp的decoder模块,因为burp是对所有字符进行编码。

    image

    扫一下,发现四级

    提示eval参数xxxx

    image

    那么我们定义个函数传进去呢

    发现已经降到了一级

    image

    但是我们的目标是做到0级

    继续分析一下查杀的原因是参数test(xxxx)

    随便改一下参数内容试一下

    image

    当我们传入123456时还是报一级,说明这时D盾查杀的只是调用,而跟你传什么东西没有关系

    把参数删掉试试

    image

    此时D盾就不再提示了

    所以我们只需要构造一个无参数函数即可

    成功bypass D盾

    image

    使用蚁剑成功连接

    image

    原理都是一样的,一个函数被杀了就换一个函数

    反思拓展

    既然我们可以把任意的payload编码一下然后eval,那么我们是否可以用同样的办法实现对任意文件免杀?

    答案当然是可以的

    但是我们前提是要说明一点区别

    eval与execute

    Eval 计算一个表达式的值并返回结果

    语法:[result = ]Eval(expression)
    expression 为任意有效 VBScript 表达式的字符串
    示例:response.Write(eval("3+2")) '输出 5
    "3+2" 使用引号括起来,表示是一个字符串,但是在 Eval “眼里”,把它当作一个表达式 3+2 来执行。

    Execute 执行一个或多个指定的语句。多个语句间用冒号(:)隔开

    语法:Execute statements
    示例:Execute "response.Write(""abc"")" '输出 abc
    "response.Write(""abc"")" 使用引号括起来,表示是一个字符串,但是在 Execute “眼里”,把它当作一个语句 response.Write("abc") 来执行。

    也就是说对于小马来说只有一句话,所以两者用哪个都可以

    但是大马是多句,就不能用eval来执行了,而要用execute

    实现任意文件免杀

    首先随便找个大马

    回复

    使用道具 举报

    游客
    回复
    您需要登录后才可以回帖 登录 | 获取账号

    快速回复 返回顶部 返回列表