Content Spoofing

This excerpt from "Preventing Web Attacks with Apache" explains how content spoofing attacks exploit vulnerabilities and how to use Apache to protect against them.

Preventing Web Attacks with Apache

Ryan C. Barnett

624 pages; $44.99


In this excerpt of Chapter 7 from Preventing Web Attacks with Apache, author Ryan C. Barnett explains how content spoofing attacks exploit vulnerabilities and how to use Apache to protect against them.

Content spoofing is an attack technique used to trick a user into believing that certain content appearing on a Web site is legitimate and not from an external source.

Some Web pages are served using dynamically built HTML content sources. For example, the source location of a frame (frame src="http://foo.example/file.html) could be specified by a URL parameter value (http://foo.example/page?frame_src=http://foo.example/file.html). An attacker may be able to replace the frame_src parameter value with frame_src=http://attacker.example/spoof.html. When the resulting Web page is served, the browser location bar visibly remains under the user expected domain (foo.example), but the foreign data (attacker.example) is shrouded by legitimate content.

Specially crafted links can be sent to a user via e-mail, instant messages, left on bulletin board postings, or forced upon users by a cross-site scripting attack. If an attacker gets a user to visit a Web page designated by their malicious URL, the user will believe he is viewing authentic content from one location when he is not. Users will implicitly trust the spoofed content since the browser location bar displays http://foo.example, when in fact the underlying HTML frame is referencing http://attacker.example.

This attack exploits the trust relationship established between the user and the Web site. The technique has been used to create fake Web pages including login forms, defacements, false press releases, and so on.

Content Spoofing Example

Let's say a Web site uses dynamically created HTML frames for their press release Web pages. A user would visit a link such as http://foo.example/pr?pg=http://foo.example/pr/01012003.html. The resulting Web page HTML would be:
<FRAMESET COLS="100, *">
<FRAME NAME="pr_menu" SRC="menu.html">
<FRAME NAME="pr_content"

The Web application in the preceding example creates the HTML with a static menu and a dynamically generated FRAME SRC. The pr_content frame pulls its source from the URL parameter value of pg to display the requested press release content. But what if an attacker altered the normal URL to http://foo.example/pr?pg=http://attacker.example/spoofed_press_release.html? Without properly sanity checking the pg value, the resulting HTML would be:
<FRAMESET COLS="100, *">
<FRAME NAME="pr_menu" SRC="menu.html">
<FRAME NAME="pr_content" SRC="
http://attacker.example/spoofed_press_release.html"> </FRAMESET> </HTML>

To the end user, the attacker.example spoofed content appears authentic and delivered from a legitimate source.

More on Web attacks

  • Download the rest of chapter 7 to learn how Apache can benefit your organization.
  • Visit our resource center  to learn how to protect against application attacks.

Apache Countermeasures Against Content Spoofing

In order to properly validate the "pg" value shown in the preceding example, we can create an inverted Mod_Security filter to deny all URLs that are not referencing data from our own site. The following filter will accomplish this task:

SecFilterSelective Arg_pg "!^http://foo.example"

Read the rest of Chapter 7 from Preventing Web Attacks with Apache.

This was last published in March 2006

Dig Deeper on Web application and API security best practices