参考文章:https://mp.weixin.qq.com/s/z1d3yvp14GWakyonTh_b8A
浅谈原理:
在.Net中,HttpModule 其实就是实现了 IHttpModule 接口的程序集。在 IIS 中 Http 请求会通过一系列 HttpModule,而在经过这些 HttpModule 时,这些 HttpModule 对 Http 请求具有完全的控制权。
而我们这时就可以根据这些 http 请求判断是否是后门请求如果是就触发后门,如果不是就什么也不做交给后面的模块,在经过所有的 HttpModule 之后,它会被 HttpHandler 处理,在 HttpHandler 处理完以后 http 请求返回包会再一次经历 HttpModule,最后到达客户端!
操作流程:
1、创建一个目录file,再创建一个images目录,配置web.config文件如下
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<modules>
<add name="IIS_backdoor" type="IIS_backdoor_dll.IISModule" />
</modules>
</system.webServer>
</configuration>
2、在images目录下创建bin目录,放置后门文件,文件名字随意,但是需要和web.config中的名字对应
3、然后对images目录设置转换为应用程序,如果直接在根目录的话就不需要了,因为根目录本身就是应用程序,我们这里为了隐蔽,参考了黑无常的做法
4、运行后门程序,发现执行命令成功
总结
1、基于80端口的后门,比较隐蔽
2、注意的坑 应用池需要设置为DefaultAppPool
继续走吧,这里我们用C来实现一个模块的编写
注意的:
Ensure that you have specified __stdcall for your exported functions, or that you have configured compilation by using the __stdcall (/Gz) calling convention,意思是确保声明的导出函数的调用约定位__stdcall类型
Ensure that IIS has loaded HelloWorld.dll,确保你加载了指定的模块文件,可以通过appcmd.exe module list来进行查看
Ensure that you have added the correct RegisterModule export to your definition file,意思是色湖之了RegisterModule位导出函数在def的我呢见中