为什么我的 Hydra 命令攻击自己的网站时会出现语法错误?

问题描述 投票:0回答:1

我目前正在尝试为 IT 安全项目记录一次使用 Hydra 的暴力攻击。因此,我创建了两台 Ubuntu 虚拟机(一台攻击者和一台受害者)。在受害者虚拟机上,我使用 pyhton 设置了一个带有简单登录界面的 http 网站(它返回 Invalid Login 或 )。它似乎运行正确并且可以从网络中的其他计算机访问。

    from http.server import HTTPServer, BaseHTTPRequestHandler
    import urllib.parse
    
    class RequestHandler(BaseHTTPRequestHandler):
        def do_POST(self):
            if self.path == '/login':
                content_length = int(self.headers['Content-Length'])
                post_data = self.rfile.read(content_length).decode('utf-8')
                post_data = urllib.parse.parse_qs(post_data)
                username = post_data.get('username', [None])[0]
                password = post_data.get('password', [None])[0]
    
                if username == 'user' and password == 'pass':
                    self.send_response(200)
                    self.end_headers()
                    self.wfile.write(b"Login successful")
                else:
                    self.send_response(403)
                    self.end_headers()
                    self.wfile.write(b"Invalid login")
            else:
                self.send_response(404)
                self.end_headers()
                self.wfile.write(b"Not found")
    
        def do_GET(self):
            if self.path == '/login':
                self.send_response(200)
                self.send_header('Content-type', 'text/html')
                self.end_headers()
                self.wfile.write(b"""
                    <html>
                    <body>
                    <form action="/login" method="post">
                        <label for="username">Username:</label><br>
                        <input type="text" id="username" name="username"><br>
                        <label for="password">Password:</label><br>
                        <input type="password" id="password" name="password"><br><br>
                        <input type="submit" value="Login">
                    </form>
                    </body>
                    </html>
                """)
            else:
                self.send_response(404)
                self.end_headers()
                self.wfile.write(b"Not found")
    
    def run(server_class=HTTPServer, handler_class=RequestHandler, port=8000):
        server_address = ('', port)
        httpd = server_class(server_address, handler_class)
        print(f'Starting httpd on port {port}...')
        httpd.serve_forever()
    
    if __name__ == "__main__":
        run()

尝试使用以下命令从攻击者虚拟机中使用 Hydra 攻击网站,我收到以下语法错误。我用冒号分隔了三个参数,并且已经尝试了很多方法来运行命令。有谁知道那里可能出了什么问题吗?

hydra -l user -P /home/user/Documents/passwords.txt http-post-form://192.168.178.91:8000/login:username=^USER^&password=^PASS^:F=Invalid login

[ERROR] Wrong syntax, requires three arguments separated by a colon which may not be null: /login

python http virtualbox brute-force hydra
1个回答
0
投票

您似乎忘记为

login
参数添加双引号。这是对您的命令的更正:

hydra -l user -P /home/user/Documents/passwords.txt http-post-form://192.168.178.91:8000/login:"username=^USER^&password=^PASS^:F=Invalid login"

您应该将登录凭据添加为字符串才能正常工作。 希望这可以帮助你:)

© www.soinside.com 2019 - 2024. All rights reserved.