有没有办法使用目录遍历攻击来执行命令?
例如,我etc/passwd
像这样访问服务器的文件
http://server.com/..%01/..%01/..%01//etc/passwd
有没有办法代替运行命令?像...
http://server.com/..%01/..%01/..%01//ls
.....并获得输出?
在这里要清楚一点,我在我们公司的服务器中找到了这个漏洞。我希望通过证明它可以让攻击者完全访问系统来提高风险级别(或对我来说加分)
有没有办法使用目录遍历攻击来执行命令?
例如,我etc/passwd
像这样访问服务器的文件
http://server.com/..%01/..%01/..%01//etc/passwd
有没有办法代替运行命令?像...
http://server.com/..%01/..%01/..%01//ls
.....并获得输出?
在这里要清楚一点,我在我们公司的服务器中找到了这个漏洞。我希望通过证明它可以让攻击者完全访问系统来提高风险级别(或对我来说加分)
Linux 上的 Chroot 很容易被破解(不像 FreeBSD)。更好的解决方案是打开 SELinux 并在 SELinux 沙箱中运行 Apache:
run_init /etc/init.d/httpd restart
确保您已安装并正确配置了 mod_security。
如果您能够查看 /etc/passwd 作为文档根目录或对服务器上未正确配置的目录的访问权限,则此漏洞的存在并不自动意味着您可以执行您选择的命令。
另一方面,如果由于 Web 应用程序在诸如 popen、exec、system、shell_exec 或未经过充分清理的变体等调用中使用用户输入(文件名)而能够查看 /etc/passwd 中的条目,那么您可能能够执行任意命令。
除非 Web 服务器是完全由不知道自己在做什么的人编写的,否则尝试ls
使用它进行访问(假设它甚至可以工作)将导致您看到ls
二进制文件的内容,而没有其他内容。
这可能不是很有用。
编辑#2:我已经删除了我的评论,因为它们被认为是讽刺和直率的。好的,现在随着更多信息来自 gAMBOOKa,Apache with Fedora - 你应该提出这个问题 - 我建议:
希望这会有所帮助,最好的问候,汤姆。
是的,如果应用程序真的很糟糕(就安全性而言),这是可能的(第一个问题)。
http://www.owasp.org/index.php/Top_10_2007-Malicious_File_Execution
如果你已经可以查看etc/passwd那么服务器一定配置不好...如果你真的要执行命令那么你需要知道服务器中运行的php脚本是否有任何system()命令这样你才能通过通过 url 的命令.. 例如: url?command=ls 尝试查看 .htaccess 文件.. 它可能会成功..