将ASPX文件编译成一个独立的dll文件,加强隐蔽性。

2014-03-21 15:05:29 30 6150
aspx的webshell作为一个文本文件,很容易被识别和查杀,如果将其编译成dll文件,放到网站bin目录下,隐蔽性就要高很多。使用ASP.NET的预编译指令,可以简单的实现这个目的。详细的说明可以参考:http://msdn.microsoft.com/zh-cn/library/ms228015(v=vs.80).aspx
下面是编译方法:
1)先新建一个old目录,目录下只放一个aspx的webshell。可以用iis测试一下页面能不能正常访问。

2)确认能正常访问后清空c:\inetpub\wwwroot目录(可以先找个空目录运行,完了把所有文件复制过去即可),执行如下命令:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe -p D:\old -v / c:\inetpub\wwwroot
-p参数是网站源文件,如果只打算编译一个webshell的话,就新建个空文件夹,里面放一个aspx文件;
-v参数是网站虚拟路径,“/”就是根目录,一般就使用根目录。
后面的c:\inetpub\wwwroot是目标路径,编译好的文件都在里面。
系统内如果安装了多个版本的.NET Framwork就会有相应的编译环境,也就是在C:\Windows\Microsoft.NET\Framework\下会有多个版本的文件夹,根据需要选择合适的即可。一般来说,2.0比较合适。
预编译时可能会产生一些warning,只要你的webshell代码是正确的就可以忽略。

3)这时在c:\inetpub\wwwroot目录下会生成以下文件:

Header_01.aspx里是一句中文,其实该文件只是个引导符号,里面内容可以是任意的,可以放点有迷惑性的文本,但是文件名必须是Header_01.aspx。
bin里面的两个文件就是编译好的webshell了。
另外PrecompiledApp.Config文件不是必须的,可以直接删掉。
4)将bin目录和Header_01.aspx复制到网站根目录下,访问一下该页面。


注意:实际测试时发现,只有放到根目录才能成功。

关于作者

intosec27篇文章419篇回复

评论30次

要评论?请先  登录  或  注册
  • 10楼
    2014-3-21 18:58

    好思路,收藏

  • 9楼
    2014-3-21 18:39
    Agile

    楼主,请问你这个是不是 编译了以后。aspx shell不能删掉?而不是只要一个dll就可以的吗?

    1

    Header_01.aspx里是一句中文,其实该文件只是个引导符号,里面内容可以是任意的,可以放点有迷惑性的文本,但是文件名必须是Header_01.aspx。 只要之前丢个Header_01.aspx文件上去内容无所谓就可以的吧。 Header_01.aspx这个文件名在编译之前应该也可以改个更具迷惑性的文件名这样应该长久保留应该问题不大。

  • 8楼
    2014-3-21 18:10

    还是有一定的局限性

  • 7楼
    2014-3-21 16:49

    楼主思路不错,我见过他们为了自己的程序源代码不被发现,编译成dll,然后调用。这招还是可以的。

  • 6楼
    2014-3-21 16:41

    mark 好方法 谢谢楼主

  • 5楼
    2014-3-21 16:37

    楼主测试能过哪些?

  • 4楼
    2014-3-21 16:33

    楼主的方法还是有局限性的,2L说的我也见到过。。

  • 3楼
    2014-3-21 16:06

    MARk 记录一下

  • 2楼
    2014-3-21 15:31

    楼主,请问你这个是不是 编译了以后。aspx shell不能删掉?而不是只要一个dll就可以的吗?

  • 1楼
    2014-3-21 15:30

    这个只是个想法,看到其他大牛成功过。