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