技术: 通过动网 upload.asp 漏洞所看到与想到的

翟二喜
摘要

如果提交内容为: “myattack.asp”&chr(0)&”a.gif” 时,在ASP中验证 .gif 扩展名是通过的,而保存文件时却成了 myattack.asp

今天发现一个 asp/com 在传输文件方面出现的漏洞:


页面程序由用户提交的内容作为文件名在服务器上存储文件。ASP程序在处理的时候对于文件名进行判断,比如,判断文件扩展名(文件名字符串后缀)是否为 .gif 等。最后通过 ADODB.Stream 服务器组件将文件保存。


这里,如果用户提交的内容中包含有 ascii 0,就出现了问题。ASP程序在进行文件名字符串后缀判断时,将整个文件名字符串做为一个统一的字符串处理。但 ADODB.Stream 在进行文件保存时,却认为 ascii 0 为这个字符串的结束符。也就是说,如果提交内容为: "myattack.asp"&chr(0)&"a.gif" 时,在ASP中验证 .gif 扩展名是通过的,而保存文件时却成了 myattack.asp。如果恶意用户通过此法上传一个带有恶意代码的ASP程序的话,就可以做进一步的攻击。


通过这个问题,又想到了许多相关问题。在用户提交的内容通过ASP到COM组件中进行处理时,如果没有对 ascii 0 进行有效判断,很可能会导致恶意代码执行。


要记住的是:C语言是多以 ascii 0 为字符串结束符的,而ASP看样子并不是以 ascii 0 作为结束。Delphi(Pascal)语言中的 string 虽然不是以 ascii 0 为字符串结束,但操作系统也免不了有这些问题。所以,开发内容如果涉及这方面内容的话,还是多想想各种情况吧。


见“动网论坛上传文件漏洞的原理以及攻击的代码实现”:http://www.xfocus.net/articles/200405/700.html

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:6   其中:访客  6   博主  0

  1. 乌烟 5

    太好了,这么有意义的帖子,一定要顶!

  2. sea026 5

    顶!

  3. pal 5

    这儿顶,能上上冒吗?

  4. OYJT 5
  5. pcplayer 5

    那么,干脆判断文件名是否是A..z,0..9

  6. dfd 5

    顶。。。。