WASD VMS超文本服务是一款使用在OpenVMS系统上流行的HTTP服务程序。 WASD HTTP服务程序存在多个漏洞,远程攻击者可以利用这些漏洞进行访问系统文件,获得系统敏感信息,以SYSTEM权限执行任意指令等攻击。 * 默认情况下\"Tree\"内部脚本允许生成目录树,通过提交 http://webserver/tree/ 请求,可以获得整个目录树。提交统配符\'\'*.*\'\'可导致获得全部文件信息。 (相关文档:http://wasd.vsm.com.au/ht_root/doc/env/env_0400.html#43 ) * 默认情况下,向WASD HTTP服务程序提交类似如下的请求,可以造成目录遍历攻击: http://webserver/dirname/*.* (相关文档:http://wasd.vsm.com.au/ht_root/doc/env/env_0400.html ) * upd脚本存在目录遍历漏洞,提交http://webserver/upd/dirname/请求可以泄露当前文件信息。(相关文档:http://wasd.vsm.com.au/httpd/-/updhelp.html ) * WASD HTTP服务程序存在多个搜索脚本,可以用来搜索所有文档。(相关文档:http://wasd.vsm.com.au/ht_root/doc/env/env_0700.html#97 ) * 默认情况下server root可访问,系统中文档目录就是服务程序主ROOT目录,包含多个配置文件,脚本,可执行文件,直接访问这些文件可以获得环境变量信息,配置等敏感信息。(相关文档:http://wasd.vsm.com.au/ht_root/doc/htd/htd_0600.html#98 ) * 系统访问控制规则可以很容易的绕过。 如httpd$map.conf配置文件包含如下: pass /ht_root/wwwroot* fail /ht_root/* fail /-/* 在上面这种情况下,服务程序主目录是ht_root,而文档目录是WWWROOT。\"fail\"规则可以通过如下访问绕过: http://theserver/ht_root/wwwroot/-/*.* * 文档ROOT位置容易判别:...
WASD VMS超文本服务是一款使用在OpenVMS系统上流行的HTTP服务程序。 WASD HTTP服务程序存在多个漏洞,远程攻击者可以利用这些漏洞进行访问系统文件,获得系统敏感信息,以SYSTEM权限执行任意指令等攻击。 * 默认情况下\"Tree\"内部脚本允许生成目录树,通过提交 http://webserver/tree/ 请求,可以获得整个目录树。提交统配符\'\'*.*\'\'可导致获得全部文件信息。 (相关文档:http://wasd.vsm.com.au/ht_root/doc/env/env_0400.html#43 ) * 默认情况下,向WASD HTTP服务程序提交类似如下的请求,可以造成目录遍历攻击: http://webserver/dirname/*.* (相关文档:http://wasd.vsm.com.au/ht_root/doc/env/env_0400.html ) * upd脚本存在目录遍历漏洞,提交http://webserver/upd/dirname/请求可以泄露当前文件信息。(相关文档:http://wasd.vsm.com.au/httpd/-/updhelp.html ) * WASD HTTP服务程序存在多个搜索脚本,可以用来搜索所有文档。(相关文档:http://wasd.vsm.com.au/ht_root/doc/env/env_0700.html#97 ) * 默认情况下server root可访问,系统中文档目录就是服务程序主ROOT目录,包含多个配置文件,脚本,可执行文件,直接访问这些文件可以获得环境变量信息,配置等敏感信息。(相关文档:http://wasd.vsm.com.au/ht_root/doc/htd/htd_0600.html#98 ) * 系统访问控制规则可以很容易的绕过。 如httpd$map.conf配置文件包含如下: pass /ht_root/wwwroot* fail /ht_root/* fail /-/* 在上面这种情况下,服务程序主目录是ht_root,而文档目录是WWWROOT。\"fail\"规则可以通过如下访问绕过: http://theserver/ht_root/wwwroot/-/*.* * 文档ROOT位置容易判别: 文档ROOT位置可以方便的通过\"where\"脚本获得(相关文档:http://wasd.vsm.com.au/ht_root/doc/htd/htd_2100.html#364 ) 即使\"where\"脚本没有启用,\"404 not found\"错误页面提供的消息也会返回文档ROOT位置。错误页面会返回包含如下类似的信息: <!-- sts: \\%X00018292 \"$1$DUA2:[HT_ROOT.][WWWROOT]NOTFOUND\" --> * 全部WEB配置文件可以方便的获得: Web服务程序配置信息存放在ht_root/local/httpd$map.conf文件中,一般由如下规则保护: fail /ht_root/local/* 但是可以通过如下方法绕过获得配置文件信息: http://theserver/ht_root/wwwroot/-/local/httpd$map.conf 在一台机器上测试,既然没有\"fail\"规则,配置文件可以通过如下方法获得: http://theserver/local/httpd$map.conf * 所有WEB服务程序LOG可以方便获得: 如果配置文件中设置如下规则: fail /ht_root/log/* 可以通过如下请求获得日志信息: http://theserver/upd/ht_root/src/-/log/ 如果日志由ACLs保护,但你有系统上一个合法用户帐户,可以通过如下方法获得: $ show log HTTPD80$REQUEST \"HTTPD80$REQUEST\" = \"08 11:56:42.200.430.5287.0.9000.<a href=\"http://theserver:\" target=\"_blank\">http://theserver: 80.ip.address.of.caller.GET /filename\" * \"tree\"脚本可以显示隐藏的目录信息: 服务程序日志一般存放在/ht_root/log/server/目录下,由于一般由\"fail\"规则保护,所以子目录一般都隐藏,不过通过\"tree\"脚本可以访问隐藏目录信息: <a href=\"http://theserver/tree/ht_root/\" target=\"_blank\">http://theserver/tree/ht_root/ * CGI脚本列表可以方便的获得: 通过提交 <a href=\"http://theserver/cgi-bin/*.*\" target=\"_blank\">http://theserver/cgi-bin/*.* 访问不能获得CGI脚本列表,但是一般脚本都存放在ht_root/script/或者ht_root/script_local目录下,如果配置文件阻止这些目录访问,一般可以通过如下访问绕过限制获得CGI列表: <a href=\"http://theserver/ht_root/wwwroot/-/script_local/*.*\" target=\"_blank\">http://theserver/ht_root/wwwroot/-/script_local/*.* 各个用户的CGI脚本,可以运行URL: <a href=\"http://theserver/~username/cgi-bin/scriptname\" target=\"_blank\">http://theserver/~username/cgi-bin/scriptname 一般访问如下脚本会失败: <a href=\"http://theserver/~username/cgi-bin/*.*\" target=\"_blank\">http://theserver/~username/cgi-bin/*.* 但是你可以通过提交如下请求获得CGI脚本列表: <a href=\"http://theserver/~username/xxx/-/cgi-bin/*.*\" target=\"_blank\">http://theserver/~username/xxx/-/cgi-bin/*.* <a href=\"http://theserver/~username/.../*.com?search=$\" target=\"_blank\">http://theserver/~username/.../*.com?search=$ * CGI脚本源代码可以获得: 通过上面方法获得CGI脚本列表,可以点击相关连接获得脚本源代码,一般情况下脚本连接如如下形式: <a href=\"http://theserver/ht_root/wwwroot/-/script_local/scriptname\" target=\"_blank\">http://theserver/ht_root/wwwroot/-/script_local/scriptname * OpenVMS系统文件可以读取: 部分站点中,配置规则设置如下,只允许访问选择性的系统部分文件: pass /sys$common/syslib/* /sys$common/syslib/* 不过其他系统文件可以通过如下方法获得: <a href=\"http://theserver/sys$common/syslib/-/sysmgr/systartup_vms.com\" target=\"_blank\">http://theserver/sys$common/syslib/-/sysmgr/systartup_vms.com * 用户HOME目录可以读取: 一般用户目录映射为 <a href=\"http://theserver/~username/web/\" target=\"_blank\">http://theserver/~username/web/ ,如果OpenVMS保护和ACL设置不正确,可能可以以如下方法访问: <a href=\"http://theserver/~username/-/*.*\" target=\"_blank\">http://theserver/~username/-/*.* 不过有设置如下的映射规则会返回错误: pass /*/-/* /ht_root/runtime/*/* 但是可以通过如下方法访问: <a href=\"http://theserver/~username/x/--/*.*\" target=\"_blank\">http://theserver/~username/x/--/*.* 这里\"--\"类似\"../..\"。 * 默认情况下CGI脚本可执行: 默认情况下CGI脚本以http$server用户进程运行httpd.exe或者httpd_ssl.exe,这是个高权限用户,如果某个CGI脚本存在漏洞,可导致整个系统被控制。 * 默认CGI脚本存在多个漏洞: 某个脚本如果在VMS ACL运行的情况下可以写任意文件内容到服务器上,这个漏洞可以导致获得SYSTEM权限。 运行cgi_process.com程序,可以泄露大量系统相关信息给攻击者。 * PerlRTE_example1.pl脚本存在格式字符串漏洞,问题存在于printf (\"$name=\\"$ENV{$name}\\"\n\");调用上,这个$name变量由用户输入,但没有进行充分过滤。攻击者提供恶意格式串可导致覆盖内存任意地址,造成拒绝服务,或者执行任意代码。如<a href=\"http://wasd.vsm.com.au/plrte/PerlRTE_example1/\\%25x\\%25x\\%25x\" target=\"_blank\">http://wasd.vsm.com.au/plrte/PerlRTE_example1/\\%25x\\%25x\\%25x * print.com CGI脚本可以打印任意文件: 默认情况下print.com CGI脚本允许从远程打印文件到服务器上,不过这个脚本访问受IP限制如: $ HPRINTS_ALLOWED = \"131.185.250.*\" 任何这个IP地址范围内的用户可以打印任意文件,可能导致拒绝服务攻击。