<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Diary of Michael Daw &#187; Projects</title>
	<atom:link href="http://michaeldaw.org/category/projects/feed" rel="self" type="application/rss+xml" />
	<link>http://michaeldaw.org</link>
	<description>Weekly humour</description>
	<lastBuildDate>Thu, 21 May 2009 15:45:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Technika Security Framework</title>
		<link>http://michaeldaw.org/projects/technika-security-framework</link>
		<comments>http://michaeldaw.org/projects/technika-security-framework#comments</comments>
		<pubDate>Fri, 03 Aug 2007 00:54:24 +0000</pubDate>
		<dc:creator>dk</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://michaeldaw.org/projects/technika-security-framework/</guid>
		<description><![CDATA[I have been pre-occupied the last 2 weeks, developing an automated security framework for Technika.
Technika is a Firefox plugin that myself and pdp was toying with some months back. The original idea behind this project was to provide independent self-contained security tools based on JavaScript which can be loaded and executed from the browser. TS [...]]]></description>
			<content:encoded><![CDATA[<p>I have been pre-occupied the last 2 weeks, developing an automated security framework for Technika.</p>
<p><a href="http://www.gnucitizen.org/projects/technika/">Technika is a Firefox plugin</a> that <a href="http://gnucitizen.org/about/dk">myself</a> and <a href="http://gnucitizen.org/about/pdp">pdp</a> was toying with some months back. The original idea behind this project was to provide independent self-contained security tools based on JavaScript which can be loaded and executed from the browser. TS Framework v1.0 is almost ready for release.</p>
<p>If you haven&#8217;t already checked it out, get more info <a href="http://www.gnucitizen.org/blog/introducing-technika-security-framework/">here</a>.</p>
<p>Also, I just finished a write up on some of my thoughts around automated web application tools, now that I&#8217;ve started writing one. It&#8217;ll most likely be published on GNUCITIZEN tomorrow.</p>
]]></content:encoded>
			<wfw:commentRss>http://michaeldaw.org/projects/technika-security-framework/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Securify</title>
		<link>http://michaeldaw.org/projects/wpsec</link>
		<comments>http://michaeldaw.org/projects/wpsec#comments</comments>
		<pubDate>Tue, 16 Jan 2007 23:57:52 +0000</pubDate>
		<dc:creator>dk</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://michaeldaw.org/projects/wpsec/</guid>
		<description><![CDATA[WordPress Securify Plugin (WPSec)
Table of Contents:
Introduction
Installation
Development Documentation
Download

Introduction

WordPress has become one of the the most popular open source blogging software packages on the net. One of the reasons for its popularity is its powerful plugin API.


WordPress Securify (WPSec) is a security plugin for WordPress. Every hour the tests specified within WPSec will be executed. A count [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress Securify Plugin (WPSec)</p>
<p>Table of Contents:<br />
<a href="#intro">Introduction</a><br />
<a href="#install">Installation</a><br />
<a href="#devdoc">Development Documentation</a><br />
<a href="#download">Download</a></p>
<p><a id="intro"></a></p>
<h3>Introduction</h3>
<p>
WordPress has become one of the the most popular open source blogging software packages on the net. One of the reasons for its popularity is its powerful plugin API.
</p>
<p>
WordPress Securify (WPSec) is a security plugin for WordPress. Every hour the tests specified within WPSec will be executed. A count of &#8220;warnings&#8221; is displayed in the top right of the WordPress Admin panel. The security feature list currently supports 3 tests:</p>
<ul>
<li>WordPress Version Check</li>
<li>Admin Panel SSL Check</li>
<li>WordPress Default Admin username check</li>
</ul>
<p>It is fairly trivial to add security tests to this project. I am sure the project will move quickly as feedback and new tests are submitted and contributed. The first version of this plugin is mainly to get the framework working (although useful nonetheless). The next release will include an email alert system.
</p>
<p>
As a side note this plugin was already really useful with the <a href="http://michaeldaw.org/alerts/wordpress-207-released/">recent WordPress version release fun.</a>
</p>
<p><a id="install"></a></p>
<h3>Intallation</h3>
<p>
<b>NOTE: Please perform backups before you do anything. This is a BETA release meaning it may contain bugs. I do not recommend running this plugin unless you are a fairly advanced user.</b><br />
To install WPSec, simply untar the package in the wp-content/plugins directory (eg: tar -zxvf wp-securify.tar.gz)
</p>
<p><a id="devdoc"></a></p>
<h3>Development Documentation</h3>
<p>
<b>Writing additional tests for WPSec</b><br />
WPSec was designed to be modular; meaning that you can contribute additional &#8220;securify tests&#8221; without to much hastle. In fact, I would encourage it. If the test is useful it will be added to a later release. The author has the option to take credit for the test or to remain anonymous.
</p>
<p>
<b>Basic WPSec test layout</b><br />
A WPSec test consists of:</p>
<ul>
<li>The actual test code ([plugins-dir]/securify/tests/wps-$TESTNAME)
<ul>
<li>It must contain a WPSec database entry to allow other features of WPSec to function.</li>
<li>The database entry must include values: (test,testval) where test is the testname and testval is either &#8216;true&#8217; (securified) or &#8216;false&#8217; (vulnerable).</li>
</ul>
</li>
<li>Add the test into securify.php</li>
</ul>
<p><i>Note: When in doubt use the existing tests as a guideline.</i>
</p>
<p><a id="download"></a></p>
<h3>Download</h3>
<p>
The package can be downloaded <a href="http://michaeldaw.org/projects/wpsec.tar.gz">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://michaeldaw.org/projects/wpsec/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Web Backdoor Compilation</title>
		<link>http://michaeldaw.org/projects/web-backdoor-compilation</link>
		<comments>http://michaeldaw.org/projects/web-backdoor-compilation#comments</comments>
		<pubDate>Mon, 18 Dec 2006 17:08:03 +0000</pubDate>
		<dc:creator>dk</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://michaeldaw.org/projects/web-backdoor-compilation/</guid>
		<description><![CDATA[Web Backdoor Compilation (wbc)
DK (http://michaeldaw.org)
Changelog



Date
Change


24 Apr 07
Anti-Virus Capabilities (Work done by Dancho Danchev)


14 Apr 07
Version 1b (pre 1.2 release):
perlcmd.cgi,
cfexec.cfm,
cmdasp.aspx


Dec/06
Version 1 release.



I have collected some WEB backdoors in the past to exploit vulnerable file upload facilities
and others. I think a library like this may be useful in a variety of situations.
Understanding how these backdoors work can [...]]]></description>
			<content:encoded><![CDATA[<p>Web Backdoor Compilation (wbc)<br />
DK (<a href="http://michaeldaw.org">http://michaeldaw.org</a>)</p>
<h4>Changelog</h4>
<table border="0">
<tbody>
<tr>
<td>Date</td>
<td>Change</td>
</tr>
<tr>
<td>24 Apr 07</td>
<td>Anti-Virus Capabilities (Work done by <a href="http://ddanchev.blogspot.com/2007/04/compilation-of-web-backdoors.html">Dancho Danchev</a>)</td>
</tr>
<tr>
<td>14 Apr 07</td>
<td>Version 1b (pre 1.2 release):<br />
perlcmd.cgi,<br />
cfexec.cfm,<br />
cmdasp.aspx</td>
</tr>
<tr>
<td>Dec/06</td>
<td>Version 1 release.</td>
</tr>
</tbody>
</table>
<p>I have collected some WEB backdoors in the past to exploit vulnerable file upload facilities<br />
and others. I think a library like this may be useful in a variety of situations.</p>
<p>Understanding how these backdoors work can help security administrators<br />
implement firewalling and security policies to mitigate obvious attacks.</p>
<p>The package includes:</p>
<table border="0">
<tbody>
<tr>
<td>Filename</td>
<td>Contributer</td>
<td>Anti-Virus Detection</td>
<td>MD5</td>
<td>Risk</td>
</tr>
<tr>
<td>cmd-asp-5.1.asp</td>
<td><a href="http://www.security-assessment.com">Brett Moore</a></td>
<td>Webwasher-Gateway 6.0.1/20070419</td>
<td>8baa99666bf3734c<br />
bdfdd10088e0cd9f</td>
<td>HIGH</td>
</tr>
<tr>
<td>cmdasp.asp</td>
<td><a href="mailto:maceo _at_ dogmile.com">Maceo</a></td>
<td>Authentium 4.93.8 04.14.2007<br />
Avast 4.7.981.0 04.16.2007<br />
BitDefender 7.2 04.16.2007<br />
ClamAV devel-20070312 04.16.2007<br />
DrWeb 4.33 04.16.2007<br />
Ewido 4.0 04.16.2007<br />
F-Prot 4.3.2.48 04.13.2007<br />
F-Secure 6.70.13030.0 04.16.2007<br />
Kaspersky 4.0.2.24 04.16.2007<br />
Microsoft 1.2405 04.16.2007<br />
Symantec 10 04.16.2007<br />
VBA32 3.11.3 04.14.2007<br />
Webwasher-Gateway 6.0.1 04.16.2007</td>
<td>57b51418a799d2d0<br />
16be546f399c2e9b</td>
<td>Low</td>
</tr>
<tr>
<td>cmdasp.aspx</td>
<td><a href="http://digitalapocalypse.blogspot.com/">Dominic Chell</a></td>
<td>None</td>
<td>5e83b6ed422399de<br />
04408b80f3e5470e</td>
<td>CRITICAL</td>
</tr>
<tr>
<td>cmdjsp.jsp</td>
<td>Unknown</td>
<td>None</td>
<td>b815611cc39f17f05a<br />
73444d699341d4</td>
<td>CRITICAL</td>
</tr>
<tr>
<td>jsp-reverse.jsp</td>
<td><a href="http://www.security.org.sg/code/jspreverse.html">Tan Chew Keong</a></td>
<td>None</td>
<td>8b0e6779f25a17f0<br />
ffb3df14122ba594</td>
<td>CRITICAL</td>
</tr>
<tr>
<td>php-backdoor.php</td>
<td><a href="http://freenet.am/~zombie">z0mbie</a></td>
<td>AhnLab-V3 2007.4.19.1/20070419<br />
AntiVir 7.3.1.53/20070419<br />
Authentium 4.93.8/20070418<br />
AVG 7.5.0.464/20070419<br />
BitDefender 7.2/20070419<br />
F-Prot 4.3.2.48/20070418<br />
F-Secure 6.70.13030.0/20070419<br />
Ikarus T3.1.1.5/20070419<br />
Kaspersky 4.0.2.24/20070420<br />
McAfee 5013/20070419<br />
Microsoft 1.2405/20070419<br />
NOD32v2 2205/20070419<br />
Norman 5.80.02/20070419<br />
VBA32 3.11.3/20070419<br />
Webwasher-Gateway 6.0.1/20070419<br />
AVG Free 8.0.233</td>
<td>2b5cb105c4ea9b5e<br />
bc64705b4bd86bf7</td>
<td>Low</td>
</tr>
<tr>
<td>simple-backdoor.php</td>
<td><a href="http://michaeldaw.org">David Kierznowski</a></td>
<td>None</td>
<td>f091d1b9274c881f<br />
8e41b2f96e6b9936</td>
<td>CRITICAL</td>
</tr>
<tr>
<td>perlcmd.cgi</td>
<td><a href="http://michaeldaw.org">David Kierznowski</a></td>
<td>None</td>
<td>97ae7222d7f13e90<br />
8c6d7f563cb1e72b</td>
<td>CRITICAL</td>
</tr>
<tr>
<td>cfexec.cfm</td>
<td><a href="http://grutz.jingojango.net/exploits/">Kurt Grutzmacher</a></td>
<td>None</td>
<td>bd04f47283c53ca0<br />
ce6436a79ccd600f</td>
<td>CRITICAL</td>
</tr>
</tbody>
</table>
<p><em>Note: readme.txt is also included in this package but not listed here.</em></p>
<p>If you have contributions please let me know so that I can add them into a later<br />
release.</p>
<p><!--adsense#mdaw_imgbanner--></p>
<p>Download <a href="http://michaeldaw.org/projects/wbc-v1b.tar.gz">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://michaeldaw.org/projects/web-backdoor-compilation/feed</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Load Balancer Enumeration</title>
		<link>http://michaeldaw.org/projects/load-balance-enum</link>
		<comments>http://michaeldaw.org/projects/load-balance-enum#comments</comments>
		<pubDate>Mon, 20 Nov 2006 22:44:01 +0000</pubDate>
		<dc:creator>dk</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://michaeldaw.org/projects/load-balance-enum/</guid>
		<description><![CDATA[
Load Balancer Enumeration
author: david.kierznowski_at_gmail.com
http://michaeldaw.org

Table of Contents:
0. Introduction
1. Dynamic DNS
2. Proxies
2a. Cookie Analysis
2b. Web Server Configuration issues
2c. Using the TCP/IP Stack
2d. Using HTTP Date: field
3. References


0. Introduction

Load balancing (performed by a load balancer) is a type of service performed by a computer that assigns work loads to a set of networked computer servers in such a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://michaeldaw.org/images/road.jpg" alt="" /></p>
<p>Load Balancer Enumeration<br />
author: david.kierznowski_at_gmail.com<br />
<a href="http://michaeldaw.org">http://michaeldaw.org</a></p>
<p>
Table of Contents:<br />
<a href="#intro">0. Introduction</a><br />
<a href="#sec1">1. Dynamic DNS</a><br />
<a href="#sec2">2. Proxies</a><br />
<a href="#sec2a">2a. Cookie Analysis</a><br />
<a href="#sec2b">2b. Web Server Configuration issues</a><br />
<a href="#sec2c">2c. Using the TCP/IP Stack</a><br />
<a href="#sec2d">2d. Using HTTP Date: field</a><br />
<a href="#ref">3. References</a>
</p>
<div id="intro"></div>
<h2>0. Introduction</h2>
<p>
Load balancing (performed by a load balancer) is a type of service performed by a computer that assigns work loads to a set of networked computer servers in such a manner that the computing resources are used in an optimal manner &#8211; <a href="http://en.wikipedia.org/wiki/Load_balancer">wikipedia</a>
</p>
<p>
As touched upon in <a href="http://michaeldaw.org/news/news-091006-0/">&#8220;http://michaeldaw.org/news/news-091006-0/&#8221;</a>, detecting load balancing is crucial to the security of any web application, yet I have heard very little by way of security testing in this area.
</p>
<p>
This article will discuss some ideas around detecting load balancers but more importantly I will share some techniques to enumerate the web servers behind these load balancers. None of the ideas in this article are new, but offer a collection of techniques that I have often found useful.
</p>
<p>
Note: I do not presume this article to be the end all on the subject, but I hope to encourage the reader to find new and effective techniques to not only detect load balancers, but also to be able to distinctly identify the targets behind the load balancer.
</p>
<div id="sec1"></div>
<h3>1. Dynamic DNS Load Balancing</h3>
<pre>
./check-dns.sh
Connecting to [www.google.com] [20] times
www.l.google.com has address 64.233.183.103
www.l.google.com has address 64.233.183.104
www.l.google.com has address 64.233.183.147
www.l.google.com has address 64.233.183.99
www.l.google.com has address 66.249.85.104
www.l.google.com has address 66.249.85.99
</pre>
<p>
check-dns.sh source <a href="#check-dns">here</a>.
</p>
<p>
As seen above, DNS load balancing is the easiest to spot. It is also one of the easiest to test for as each web server has an external IP address.
</p>
<div id="sec2"></div>
<h3>2. Proxies</h3>
<p>
Proxy type load balancers (i.e. Apache Tomcat, F5&#8217;s BIG-IP) typically forward connections to a cluster of web servers. This can be done sequentially, randomly or by more advanced methods such as by bandwidth utilisation etc.
</p>
<p>
Unlike DNS load balancing, proxies require a method to maintain state (as HTTP is stateless). It is because of this that our techniques in load balancing enumeration once again branch off. These include:<br />
<a href="#sec2a">a. Cookie Analysis</a><br />
<a href="#sec2b">b. Web Server Configuration issues</a><br />
<a href="#sec2c">c. Using the TCP/IP Stack</a><br />
<a href="#sec2d">d. Using HTTP Date: Field </a>
</p>
<div id="sec2a"></div>
<h4>2a. Cookie Analysis</h4>
<p>
This is fairly straight forward. A number of popular load balancers use cookies to maintain state and ultimately manage its connections.
</p>
<p>
<a href="http://www.f5.com/products/bigip/">F5&#8217;s BIG-IP Load Balancer</a> demonstrates this nicely:
</p>
<pre>
Set-Cookie:BIGipServer[poolname]=336268299.20480.0000;expires=Sat,01-Jan-200200:00:00
GMT;path=/
</pre>
<p>
The [poolname] variable above represents an encoding (d*(256^3)+c*(256^2)+b*256+a) of the IP address and port of the server.<br />
See <a href="http://www.nessus.org/plugins/index.php?view=viewsrc&#038;id=20089">http://www.nessus.org/plugins/index.php?view=viewsrc&#038;id=20089</a>
</p>
<div id="sec2b"></div>
<h4>2b. Web Server Configuration issues</h4>
<p>
Web server configuration vulnerabilities can be used to detect load balancing and determine the internal IP addresses (in some cases) of the internal web servers. The following example demonstrates this:
</p>
<pre>
GET / HTTP/1.0

HTTP/1.1 302 Object Moved
Location: http://172.16.14.25/
Server: Microsoft-IIS/5.0
Content-Type: text/html
Content-Length: 148

--snip--
This <a href="http://www.digitaldocumentsllc.com/">document</a> may be found
&lt;a HREF="http://172.16.25.140/pdf/";&gt;here&lt;/a&gt;
--snip--
</pre>
<div id="sec2c"></div>
<h4>2c. Using the TCP/IP Stack</h4>
<p>
Observing and watching IPID increments can often tip you off that multiple stacks are being used.<br />
Example:
</p>
<pre>
$ hping2 *hidden* -S -p 80 -i u1000 -c 30
HPING *hidden* (eth0 x.x.x.x): S set, 40 headers + 0 data bytes
len=46 ip=*hidden* ttl=51 DF <b>id=58489</b> sport=80 flags=SA seq=0 win=24656 rtt=203.9 ms
len=46 ip=*hidden* ttl=51 DF <b>id=16912</b> sport=80 flags=SA seq=2 win=24656 rtt=200.1 ms
len=46 ip=*hidden* ttl=51 DF <b>id=58490</b> sport=80 flags=SA seq=3 win=24656 rtt=197.2 ms
len=46 ip=*hidden* ttl=51 DF <b>id=16913</b> sport=80 flags=SA seq=4 win=24656 rtt=194.2 ms
len=46 ip=*hidden* ttl=51 DF <b>id=58491</b> sport=80 flags=SA seq=5 win=24656 rtt=204.0 ms
len=46 ip=*hidden* ttl=51 DF <b>id=16914</b> sport=80 flags=SA seq=7 win=24656 rtt=199.1 ms
</pre>
<div id="sec2d"></div>
<h4>2d. Using HTTP Date: field</h4>
<p>
Discrepancies in the web server&#8217;s &#8216;Date:&#8217; field.<br />
Example:
</p>
<pre>
# ./check-date.sh
Connecting to [*hidden*] [10] times
Date: Mon, 20 Nov 2006 21:30:30 GMT
Date: Mon, 20 Nov 2006 21:28:22 GMT
Date: Mon, 20 Nov 2006 21:28:23 GMT
Date: Mon, 20 Nov 2006 21:28:24 GMT
Date: Mon, 20 Nov 2006 21:30:43 GMT
Date: Mon, 20 Nov 2006 21:30:44 GMT
Date: Mon, 20 Nov 2006 21:30:45 GMT
Date: Mon, 20 Nov 2006 21:30:45 GMT
Date: Mon, 20 Nov 2006 21:30:46 GMT
Date: Mon, 20 Nov 2006 21:30:47 GMT
</pre>
<p>
check-date.sh source <a href="#check-date">here</a>.
</p>
<div id="ref"></div>
<h3>3. References:</h3>
<p><a href="http://content.websitegear.com/article/load_balance_dns.htm">http://content.websitegear.com/article/load_balance_dns.htm</a><br />
<a href="http://en.wikipedia.org/wiki/Load_balancer">http://en.wikipedia.org/wiki/Load_balancer</a><br />
<a href="http://michaeldaw.org/news/news-091006-0/">http://michaeldaw.org/news/news-091006-0/</a><br />
<a href="http://www.nessus.org/plugins/index.php?view=viewsrc&#038;id=20089">http://www.nessus.org/plugins/index.php?view=viewsrc&#038;id=20089</a><br />
<a href="http://www.f5.com/products/bigip/">F5&#8217;s BIG-IP Load Balancer</a><br />
<a href="http://www.hping.org/">http://www.hping.org/</a></p>
<h3>Appendix</h3>
<div id="check-dns"></div>
<h4>check-dns.sh Source:</h4>
<pre>
#!/bin/sh

# PoC: DNS Load Balancer Check

TARGET="www.google.com"
TIMES=20

echo "Connecting to [$TARGET] [$TIMES] times";

for ((i=0; i<$TIMES; i++)); do
 host www.google.com | grep address >> ,dns.txt;
done

 cat ,dns.txt | sort -u
</pre>
<div id="check-date"></div>
<h4>check-date.sh Source:</h4>
<pre>
#!/bin/sh

# PoC: Grab 'Date:' field from web server

TARGET="www.microsoft.com"
TIMES=10

echo "Connecting to [$TARGET] [$TIMES] times";

for ((i=0; i<$TIMES; i++)); do
 echo -e 'HEAD / HTTP/1.0&#x5C;r&#x5C;n&#x5C;r&#x5C;n' | nc $TARGET 80 | grep 'Date:';
done
</pre>
]]></content:encoded>
			<wfw:commentRss>http://michaeldaw.org/projects/load-balance-enum/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>WordPress Securify</title>
		<link>http://michaeldaw.org/projects/wp-securify</link>
		<comments>http://michaeldaw.org/projects/wp-securify#comments</comments>
		<pubDate>Tue, 14 Nov 2006 04:28:25 +0000</pubDate>
		<dc:creator>dk</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://michaeldaw.org/projects/wp-securify/</guid>
		<description><![CDATA[
Update: 17/Jan/06 &#8211; WordPress Securify Plugin Released.
Update: 18/Nov/06 &#8211; Wordpress Securify v1.0b released
Changes include:
- Added Pre-Check functions to prevent overwriting important values.
- Added file/directory permission check
- Added function to change filenames with wp- extension.
- Added additional sanitity checks.


On the 11/11/06 _ANtrAX_ released a post on full-disclosure  regarding a &#8220;Remote File Inclusion&#8221; vulnerability in WordPress [...]]]></description>
			<content:encoded><![CDATA[<p>
Update: 17/Jan/06 &#8211; <a href="http://michaeldaw.org/projects/wpsec/">WordPress Securify Plugin Released.</a><br />
Update: 18/Nov/06 &#8211; <a href="http://michaeldaw.org/projects/wp-securify-latest.sh.gz">Wordpress Securify v1.0b released</a><br />
Changes include:<br />
- Added Pre-Check functions to prevent overwriting important values.<br />
- Added file/directory permission check<br />
- Added function to change filenames with wp- extension.<br />
- Added additional sanitity checks.
</p>
<p>
On the 11/11/06 <a href="http://foro.c-group.org ">_ANtrAX_</a> released a post on full-disclosure  regarding a &#8220;Remote File Inclusion&#8221; vulnerability in WordPress 2.0.5 (Latest version). This vulnerability (in theory) would allow an attacker to gain access to just about any WordPress web application on the Internet. Getting worried?
</p>
<p>
<a href="http://www.securityfocus.com">Securityfocus</a> has recently disregarded this vulnerability. They <a href="http://www.securityfocus.com/bid/21004/discuss">explain</a>:<br />
&#8220;The vulnerability described in this BID is not exploitable, as the parameter specified can not contain user-specified data. This BID is therefore being retired.&#8221;
</p>
<p>
I thought about how widely used WordPress is. The <a href="http://www.wordpress.com">WordPress</a> website claims: &#8220;join 473 thousand other bloggers&#8230;&#8221;. The question is what are some small things we can do to mitigate <a href="http://en.wikipedia.org/wiki/Zero_day">zero day</a> vulnerabilities?
</p>
<p>
I have written a simple shell script called, &#8220;WordPress Securify v1.0a&#8221; to increase security for WordPress users but also to demonstrate some basic best practise guidelines for implementing web applications of this nature.
</p>
<p>
Let us look at what WordPress Securify currently supports:<br />
[Step 1] Removing .txt/.html/import*.php/install*.php/upgrade*.php files&#8230;<br />
[Step 2] Renaming default directories&#8230;<br />
[Step 3] Changing filename wp-admin.css to $NEW_ADM_DIR.css &#8221;<br />
[Step 4] Remove WordPress Version
</p>
<p>
** Step 1<br />
This step removes default content not required by WordPress following the installation or upgrade. Many web servers have been compromised in the past due to a lone script left after the installation process.
</p>
<p>
** Step 2<br />
WordPress installations uses 3 main directories: &#8220;wp-login, wp-admin, wp-content&#8221;. Worms and trojans can easily identify and propogate when default directories like these are left unchanged. WordPress Securify allows you to choose new directories&#8230; it will then change these for you.
</p>
<p>
** Step 3<br />
Not important from a security point of view.
</p>
<p>
** Step 4<br />
Attackers will always seek after software types and versions for obvious reasons. It allows them to quickly Google search for vulnerabilities with your specific version. WordPress gives out this information by default. Its interesting to note that <a href="http://www.phpbb.com/">phpBB</a> use to do this. In a later version of 2.0 the version was removed for the purposes discussed above. I would not be surprised if the <a href="http://www.wordpress.com">WordPress</a> developers do the same thing in a future release.
</p>
<p>
WordPress Securify currently only removes the version and not the software type. I have left this for two reasons&#8230; primarily because its late (or early) and I actually need some sleep.
</p>
<p>
Future versions of WordPress Securify will include:<br />
&gt;&gt; Removing the software type<br />
&gt;&gt; Rename filenames &#8220;wp-filename&#8221; to &#8220;random_filename&#8221;. (Done in v1.0b)<br />
&gt;&gt; Check file and directory permissions. (Done in v1.0b)
</p>
<p>
<a href="/projects/wp-securify.sh.gz">Download WordPress Securify v1.0a.</a>
</p>
<p>
DISCLAIMER:<br />
This is BETA software use it at your own risk.<br />
It is recommended that you backup your WordPress<br />
directory before using this tool. Also note, I have only tested this with <b>default</b> installs of WordPress 2.0.5.
</p>
<p>
Credits:<br />
Kafkaesqui<br />
       &#8211; <a href="http://wordpress.org/support/topic/32764#post-185346">http://wordpress.org/support/topic/32764#post-185346</a></p>
]]></content:encoded>
			<wfw:commentRss>http://michaeldaw.org/projects/wp-securify/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JSScanner</title>
		<link>http://michaeldaw.org/projects/jsscanner</link>
		<comments>http://michaeldaw.org/projects/jsscanner#comments</comments>
		<pubDate>Mon, 23 Oct 2006 22:46:31 +0000</pubDate>
		<dc:creator>dk</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://michaeldaw.org/projects/jsscanner/</guid>
		<description><![CDATA[
JavaScript Network Mapper (v1.0)
 author: david.kierznowski_at_gmail.com
 http://michaeldaw.org


I have been doing alot of research into JavaScript Port Scanning lately. This tool is an initial attempt to correlate my ideas into a single project.

Download the latest version of jsscan.tar.gz here.

Synopsis:
 function webPingScan() {
  s = new jsscanner(&#8221;192.168.1.1/30&#8243;);
  s.jssWebPing();
 }


Usage:
 s = new jsscanner(&#8221;IP/Range&#8221;);
 s.jssWebPing(); OR
 [...]]]></description>
			<content:encoded><![CDATA[<p>
JavaScript Network Mapper (v1.0)<br />
 author: david.kierznowski_at_gmail.com<br />
 <a href="http://michaeldaw.org">http://michaeldaw.org</a>
</p>
<p>
I have been doing alot of research into JavaScript Port Scanning lately. This tool is an initial attempt to correlate my ideas into a single project.
</p>
<p>Download the latest version of <a href="http://michaeldaw.org/projects/jsscan.tar.gz">jsscan.tar.gz here</a>.</p>
<p>
Synopsis:<br />
 function webPingScan() {<br />
  s = new jsscanner(&#8221;192.168.1.1/30&#8243;);<br />
  s.jssWebPing();<br />
 }
</p>
<p>
Usage:<br />
 s = new jsscanner(&#8221;IP/Range&#8221;);<br />
 <a href="http://michaeldaw.org/projects/jswebping/">s.jssWebPing();</a> OR<br />
 <a href="http://michaeldaw.org/projects/jsescanner/">s.jssWebScript();</a> OR<br />
 <b>s.jssWebImage();</b>
</p>
<p>
 TODO:<br />
 + Complete jssWebScript Scanner (Half done)<br />
        Add Additional Fingerprints<br />
        see: <a href="http://michaeldaw.org/projects/jsescanner/">http://michaeldaw.org/projects/jsescanner/</a><br />
 + Write jssWebImage Scanner (DONE)<br />
        Add OS Fingerprints<br />
        see: <a href="http://www.spidynamics.com/spilabs/js-port-scan/">http://www.spidynamics.com/spilabs/js-port-scan/</a><br />
 + Add port selection<br />
        Include Browser Port Restrictions<br />
        see: <a href="http://michaeldaw.org/projects/web_browser_port_restrictions/">http://michaeldaw.org/projects/web_browser_port_restrictions/</a><br />
 + Add some validation
</p>
<p>
 Credits:<br />
  pdp (<a href="">http://gnucitizen.org</a>)<br />
        I hope to incorporate this project into pdp&#8217;s <a href="http://www.gnucitizen.org/projects/attackapi/">AttackAPI</a> at some point.<br />
        It currently uses AttackAPI&#8217;s IP Calculator script.</p>
]]></content:encoded>
			<wfw:commentRss>http://michaeldaw.org/projects/jsscanner/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Browser Port Restrictions</title>
		<link>http://michaeldaw.org/projects/web_browser_port_restrictions</link>
		<comments>http://michaeldaw.org/projects/web_browser_port_restrictions#comments</comments>
		<pubDate>Fri, 13 Oct 2006 00:26:55 +0000</pubDate>
		<dc:creator>dk</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://michaeldaw.org/projects/web_browser_port_restrictions/</guid>
		<description><![CDATA[
Some of my notes regarding Browser Port Restrictions.

Internet Explorer:

Anything goes. I need to look into this more.

Opera 9:

Resticts access to Ports 22,25,53 and 110. All other services seem accessible, I need to do more work here &#8211; It was interesting to note that my CPU was cranked up to 100% when requesting a restricted port. [...]]]></description>
			<content:encoded><![CDATA[<p>
Some of my notes regarding Browser Port Restrictions.
</p>
<h3>Internet Explorer:</h3>
<p>
<b>Anything goes. I need to look into this more.</b>
</p>
<h3>Opera 9:</h3>
<p>
<b>Resticts access to Ports 22,25,53 and 110. All other services seem accessible, I need to do more work here &#8211; It was interesting to note that my CPU was cranked up to 100% when requesting a restricted port. A &#8220;-1&#8243; port will cause Opera to wrap to 65535 (although this could be the default). Its late and I&#8217;m going to bed.</b>
</p>
<h3>Firefox (tested on 1.5.0.7):</h3>
<p>
<b>Restricts common services such as Telnet and SSH. However, it allows most services. Some of the more interesting ports allowed include:</b>
</p>
<p>
Service | Port<br />
bootps | 67/tcp<br />
snmp                   | 161/tcp<br />
netbios-ns             | 137/tcp<br />
netbios-dgm          | 138/tcp<br />
microsoft-ds           | 445/tcp<br />
ldaps                 | 636/tcp # Firefox blocks ldap (unencrypted version)<br />
imaps                  | 993/tcp # Firefox blocks imap (unencrypted version)<br />
pop3s                  | 995/tcp<br />
socks                  | 1080/tcp<br />
nessusd                | 1241/tcp<br />
ms-sql-s               | 1433/tcp<br />
ms-sql-m               | 1434/tcp<br />
oracle TNS             | 1521/tcp<br />
mysql                  | 3306/tcp<br />
RDP                    | 3389/tcp<br />
postgresql             | 5432/tcp</p>
]]></content:encoded>
			<wfw:commentRss>http://michaeldaw.org/projects/web_browser_port_restrictions/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Client Side Port Scanning</title>
		<link>http://michaeldaw.org/projects/csportscanning</link>
		<comments>http://michaeldaw.org/projects/csportscanning#comments</comments>
		<pubDate>Thu, 05 Oct 2006 11:23:13 +0000</pubDate>
		<dc:creator>dk</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://michaeldaw.org/projects/csportscanning/</guid>
		<description><![CDATA[Current JavaScript or other Client Side Scanning Techniques:
1. IMG Scanner &#8211; using (img src=)
http://www.gnucitizen.org/projects/javascript-port-scanner/
http://www.spidynamics.com/spilabs/js-port-scan/
Limitations:
This is a nice technique for scanning but can be easily mitigated by disallowing external images. This effectively breaks both scanners (tested in Firefox). This includes SPI Dynamics PING feature. You can turn off external images as follows (instructions for Firefox):
> Tools
> [...]]]></description>
			<content:encoded><![CDATA[<p>Current JavaScript or other Client Side Scanning Techniques:</p>
<p>1. IMG Scanner &#8211; using (img src=)<br />
<a href="http://www.gnucitizen.org/projects/javascript-port-scanner/">http://www.gnucitizen.org/projects/javascript-port-scanner/</a><br />
<a href="http://www.spidynamics.com/spilabs/js-port-scan/">http://www.spidynamics.com/spilabs/js-port-scan/</a></p>
<p>Limitations:<br />
This is a nice technique for scanning but can be easily mitigated by disallowing external images. This effectively breaks both scanners (tested in Firefox). This includes SPI Dynamics PING feature. You can turn off external images as follows (instructions for Firefox):<br />
> Tools<br />
> Options<br />
> Click &#8220;for the originating Web Site only&#8221;</p>
<p>2. XML Port Scanning &#8211; Haven&#8217;t looked into this to much<br />
<a href="http://www.sift.com.au/36/172/xml-port-scanning-bypassing-restrictive-perimeter-firewalls.htm">http://www.sift.com.au/36/172/xml-port-scanning-bypassing-restrictive-perimeter-firewalls.htm</a></p>
<p>3. JSEScanner &#8211; using (script src=)<br />
<a href="http://michaeldaw.org/projects/jsescanner/">http://michaeldaw.org/projects/jsescanner/</a></p>
<p>4. JSWebPing &#8211; using iframes<br />
<a href="http://michaeldaw.org/projects/jswebping/">http://michaeldaw.org/projects/jswebping/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://michaeldaw.org/projects/csportscanning/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSWebPing &#8211; JavaScript Web Ping</title>
		<link>http://michaeldaw.org/projects/jswebping</link>
		<comments>http://michaeldaw.org/projects/jswebping#comments</comments>
		<pubDate>Thu, 05 Oct 2006 11:03:58 +0000</pubDate>
		<dc:creator>dk</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://michaeldaw.org/projects/jswebping/</guid>
		<description><![CDATA[

JavaScript Web Ping
Author: david.kierznowski_at_gmail.com
http://michaeldaw.org


The Idea:
1. We setup an Iframe
2. We dynamically load our target address with a timeout
3. If the document is loaded, we flag the host as being up.
4. If the host is down, the timeout is reached and we flag the host as down.


This concept can also be extended to perform port scanning [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/images/sonar.gif" alt="" /></p>
<p>
JavaScript Web Ping<br />
Author: david.kierznowski_at_gmail.com<br />
<a href="http://michaeldaw.org">http://michaeldaw.org</a>
</p>
<p>
The Idea:<br />
1. We setup an Iframe<br />
2. We dynamically load our target address with a timeout<br />
3. If the document is loaded, we flag the host as being up.<br />
4. If the host is down, the timeout is reached and we flag the host as down.
</p>
<p>
This concept can also be extended to perform port scanning for open web services.
</p>
<p>
Also see:<br />
<a href="http://michaeldaw.org/projects/jsescanner/">http://michaeldaw.org/projects/jsescanner/</a><br />
<a href="http://www.gnucitizen.org/projects/javascript-port-scanner/">http://www.gnucitizen.org/projects/javascript-port-scanner/</a><br />
<a href="http://www.spidynamics.com/spilabs/js-port-scan/">http://www.spidynamics.com/spilabs/js-port-scan/</a>
</p>
<p>
The source for the tool is available<a href="/projects/jswebping.js"> here</a><br />
The full tool is available<a href="/projects/jswebping.tar.gz"> here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://michaeldaw.org/projects/jswebping/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>JSEScanner &#8211; JavaScript Port Scanner</title>
		<link>http://michaeldaw.org/projects/jsescanner</link>
		<comments>http://michaeldaw.org/projects/jsescanner#comments</comments>
		<pubDate>Fri, 29 Sep 2006 01:10:35 +0000</pubDate>
		<dc:creator>dk</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://michaeldaw.org/projects/jsescanner/</guid>
		<description><![CDATA[
Update: Removed JavaScript Example
Update: Removed tables due to cross browser issues.


JavaScript External File Scanner (JSEScanner)
Author: david.kierznowski_at_gmail.com
http://michaeldaw.org


JSEScanner is a simple idea:
1. Use uses &#60;script src=&#8221;"&#62; to request a JavaScript file.
2. Use typeof to verify its existence.
3. Use result in fingerprint.


This technique can be used to enumerate internal web servers and/or applications via a clients browser. It [...]]]></description>
			<content:encoded><![CDATA[<p>
Update: Removed JavaScript Example<br />
Update: Removed tables due to cross browser issues.
</p>
<p>
JavaScript External File Scanner (JSEScanner)<br />
Author: david.kierznowski_at_gmail.com<br />
<a href="http://michaeldaw.org">http://michaeldaw.org</a>
</p>
<p>
JSEScanner is a simple idea:<br />
1. Use uses &lt;script src=&#8221;"&gt; to request a JavaScript file.<br />
2. Use typeof to verify its existence.<br />
3. Use result in fingerprint.
</p>
<p>
This technique can be used to enumerate internal web servers and/or applications via a clients browser. It is limited in that it can only detect web servers as it uses &lt;script src=&#8221;"&gt; for connections and relies on detecting JavaScript functions for callback.
</p>
<p>
It is possible to add Iframe Timeouts to extend its port scanning capabilities. However, this is nothing new. I may add it later.
</p>
<p>
This tool was inspired by <a href="http://www.spidynamics.com/spilabs/js-port-scan/">Spidynamics</a> recent IMG based JavaScript port scanner (or was this <a href="http://jeremiahgrossman.blogspot.com">Jeremiah Grossman&#8217;s</a> idea&#8230;?).
</p>
<p>
Due to the limitations of client-side scanning, additional techniques are required to produce more accurate results. I can see a JavaScript Scanning Suite on its way. I wouldn&#8217;t be surprised if it were named, &#8220;jmap&#8221;.
</p>
<p>
Please email fingerprints as you play around.
</p>
<p>
Fingerprinting Web Server Software:<br />
Device | JavaScript File | Valid JavaScript Function<br />
Linksys Wireless Router | Gozila.js | LogButton_check<br />
IIS ASP.NET | $JSVALDIR/$VER/WebUIValidation.js | ValidatorUpdateDisplay
</p>
<p>
Note: See <a href="http://michaeldaw.org/projects/asp-auditor-v2/"> http://michaeldaw.org/projects/asp-auditor-v2/</a> for more information regarding ASP.NET&#8217;s JS Validate directories.
</p>
<p>
Fingerprint Applications on Web Servers:<br />
Device | JavaScript File | Valid JavaScript Function<br />
TWiki | /pub/TWiki/TWikiJavascripts/twiki.js | initForm<br />
bblog | /bblogg/bblog/script/index.js | removeFocusBorders<br />
wordpress | /wp-admin/xfn.js | GetElementsWithClassName
</p>
<p>
The source for the tool is available <a href="http://michaeldaw.org/projects/jse-scanner.js">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://michaeldaw.org/projects/jsescanner/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
