首先解释一下为什么要做这个玩意:
众所周知.net一句话是不能插入到文件之中的,除非那个页面使用Jscript编写,但是现在看来 Jscript市场很低,遇到的.net站基本都是C#。新建一个SHELL太过于明显,而且其中的eval更是在WEBSHELL扫描工具的淫威下直接 出局。如果不能提权的话,那么过一段时间再打开往往面临的是大大的404。
综上,利用.net会加载bin目录中的类库的特点和命名空间这个神奇 的东西编写了这个程序,将文件放在bin目录并在文件中插入调用代码即可。可能你会说放在bin目录不是更明显?这里要说明一点,相信许多的管理猿/站长 都没有查看bin目录的习惯,而管理猿/站长并不一定是C#程序猿。假如你是一个这样的管理猿/站长,看到一个名叫 System.WebServices.dll、版权写的是微软、产品名称是.Net FrameWork的类库你会不会删?
当然这方法瞒不过聪明的管理猿,但传统方式同样瞒不住。可能这东西有些鸡肋,但在某些时候未必没有用处。
另外,限于菜刀提供的接口,程序功能远远不全,对应的外壳正在开发中,届时会带有更强的功能,敬请期待。
(后续将提供的功能:一键脱裤、注册表管理、以其他用户权限执行程序等)
0x02 使用说明
一、将System.WebServices.dll复制到网站根目录的bin子目录中。
二、在任意.net页面插入<%WebServices.ShowRunnerVersion();%>并访问,出现授权与免责声明页面表示调用成功。
三、删除第二步中插入的代码,重新插入<%WebServices.InitalizeWebServices("fuck");%>,其中fuck为菜刀连接所需的密码。
四、使用中国菜刀连接,类型选择Customize,密码为第三步中约定的密码。
0x03 注意
一、 程序无视预编译,代码可以插在任意aspx页面内,如果连接失败则是因为在先前代码中(.cs或预编译之后的库中)调用了Response.End()方 法,请更换页面。如果是插入到页面对应的.cs代码文件之中,请去除脚本标记<%%>之后插入到Page_Load方法对应的代码块之中。
二、由于菜刀对于Customize的连接方式是非加密的,所以安全狗等防御软件会拦截查询数据库等操作,遇到此情况请换用.net菜刀一句话或使用其他脚本查询(外壳做出来后会换用加密连接)。
三、发现BUG或提出建议请到农村人博客->*之家留言,毕竟是蛋疼的东西还请多多包涵。
四、本程序只为学习.net编程,任何人使用前必须搭建测试站点并在页面之中调用WebServices.ShowRunnerVersion()方法访问以阅读授权及免责声明。对于因使用不当造成的后果本人不负有任何的法律责任。