Ryan, On Mon, Jun 8, 2009 at 10:18 AM, Ryan Dewhurst<ryandewhu...@gmail.com> wrote: > 2009/6/7 Andres Riancho <andres.rian...@gmail.com>: >> Ryan, >> >> On Sun, Jun 7, 2009 at 12:31 PM, Ryan Dewhurst<ryandewhu...@gmail.com> wrote: >>> Here is the final version. (I hope) >> >> I just tried your plugin with http://www.bonsai-sec.com/blog/ as a >> target, and it's failing to find anything. I think that the problem is >> in: >> >> base_url = urlParser.baseUrl( fuzzableRequest.getURL() ) >> wp_unique_url = urlParser.urlJoin( base_url , '/wp-login.php' ) >> >> Which will always return http://host.tld/wp-login.php , no matter what >> the fuzzableRequest.getURL() was: in my case it was >> http://www.bonsai-sec.com/blog/ . >> > > Fixed this with: > > wp_unique_url = fuzzableRequest.getURL() + '/wp-login.php' > response = self._urlOpener.GET( wp_unique_url, useCache=True )
If the URL is http://www.bonsai-sec.com/blog/ and you perform that, you end up with http://www.bonsai-sec.com/blog//wp-login.php , which is not what you want. I think that the solution was this one: base_url = urlParser.getDomainPath( fuzzableRequest.getURL() ) wp_unique_url = urlParser.urlJoin( base_url , 'wp-login.php' ) But I'm not sure, you should test it. >> And also on the way that self._exec is ALWAYS set to false. I think >> that self._exec should be set to false only after actually finding a >> wordpress installation and fingerprinting it. >> > > Implemented this. Cool, >> Please test the plugin a little more with different wordpress >> installs, and then let us know how it worked out =) >> > > Tested on about 5 different installations so far, all working. Cool, >> PS: Please use inline for answering emails, top posting sucks. >> > > Sorry, always forget about this, lol. > > Any other changes/feedback let me know. Attached is the latest version. :) I think we're almost ready to put it in the trunk, what do you think? >>> 2009/6/7 Ryan Dewhurst <ryandewhu...@gmail.com>: >>>> Found a bug that I am working on now. >>>> >>>> 2009/6/7 Ryan Dewhurst <ryandewhu...@gmail.com>: >>>>> w00t w00t! >>>>> >>>>> All tested and working! >>>>> >>>>> Thanks to everyone for their help especially Andres for putting up >>>>> with my noobness. I will look into implementing the vulns for each >>>>> version and then eventually a wp plugin version finder. >>>>> >>>>> Feedback and suggestions welcome! :-) >>>>> >>>>> 2009/6/7 Andres Riancho <andres.rian...@gmail.com>: >>>>>> Ryan, >>>>>> >>>>>> On Sat, Jun 6, 2009 at 10:20 PM, Ryan Dewhurst<ryandewhu...@gmail.com> >>>>>> wrote: >>>>>>> I decided to move over to my Linux box for the development of the >>>>>>> plugin. One of the reasons I could not get the plugin to run through >>>>>>> w3af was that the plugin file name was not the same as the class name. >>>>>> >>>>>> Ok, makes sense, >>>>>> >>>>>>> It now runs through w3af with out any errors. The only thing is that >>>>>>> the info output is not showing in kb. >>>>>> >>>>>> Are you saving it to the kb? >>>>>> >>>>>>> Im using this which I found in another plugin: >>>>>>> >>>>>>> # Save it to the kb! >>>>>>> i = info.info() >>>>>>> i.setName('WordPress version') >>>>>>> i.setURL( wp_index_url ) >>>>>>> i.setId( http_response.id ) >>>>>>> i.setDesc( 'WordPress version "'+ self._version +'" found in the >>>>>>> index header.' ) >>>>>>> kb.kb.append( self, 'WordPress version', i ) >>>>>>> om.out.information( i.getDesc() ) >>>>>> >>>>>> That seems to be enough to save the version to the kb, >>>>>> >>>>>>> Attached is the latest version. >>>>>> >>>>>> I applied some minor changes: >>>>>> >>>>>> - Changed the name of the plugin to wordpress_plugin, because >>>>>> wpvChecker is cryptic to users. >>>>>> - The code has some serious errors, that are possibly the reason you >>>>>> don't see anything: >>>>>> >>>>>> ...@brick:~/w3af/w3af/trunk$ pylint >>>>>> --rcfile=../extras/misc/pylint.rc /tmp/wordpress_version.py -e >>>>>> ************* Module wordpress_version >>>>>> E: 98:wordpress_version.discover: Undefined variable 're' >>>>>> E:109:wordpress_version.discover: Undefined variable 'http_response' >>>>>> E:150:wordpress_version.discover: Undefined variable 'http_response' >>>>>> >>>>>> Have you tested the plugin? Do you get a big traceback when running it? >>>>>> >>>>>> - This line in the fingerprint DB: >>>>>> >>>>>> ('/wp-admin/async-upload.php','200','2.5'), >>>>>> >>>>>> Doesn't match this line: >>>>>> >>>>>> if self._wp_fingerprint[1] == 200 and not >>>>>> is_404(response): >>>>>> >>>>>> '200' and 200 aren't equal in python: >>>>>> >>>>>> >>> '200' == 200 >>>>>> False >>>>>> >>>>>> You should change your database to 200, instead of '200' where necessary. >>>>>> >>>>>> - One more detail, is that it would be nice to compare the version in >>>>>> the HTML header, with the fingerprinted version, and report if they >>>>>> differ. >>>>>> >>>>>> You're on the right path, I think that with these recommendations >>>>>> you'll be able to complete the development of your first w3af plugin >>>>>> =) >>>>>> >>>>>> PS: You should answer inline. >>>>>> >>>>>>> Ryan >>>>>>> >>>>>>> 2009/6/6 Andres Riancho <andres.rian...@gmail.com>: >>>>>>>> Ryan, >>>>>>>> >>>>>>>> On Sat, Jun 6, 2009 at 6:22 PM, Ryan Dewhurst<ryandewhu...@gmail.com> >>>>>>>> wrote: >>>>>>>>>>Also delete the .pyc file, and no reinstall is needed. >>>>>>>>> >>>>>>>>> There was none. >>>>>>>>> >>>>>>>>>> Yes, many. >>>>>>>>>> You are missing some required methods, like setOptions, getOptions, >>>>>>>>>> getLongDescription, etc. Please see other plugins for a complete >>>>>>>>>> list, >>>>>>>>> >>>>>>>>> They are already in the code: >>>>>>>>> >>>>>>>>> # W3af options and output >>>>>>>>> def getOptions( self ): >>>>>>>>> ''' >>>>>>>>> �...@return: A list of option objects for this plugin. >>>>>>>>> ''' >>>>>>>>> ol = optionList() >>>>>>>>> return ol >>>>>>>>> >>>>>>>>> def setOptions( self, OptionList ): >>>>>>>>> ''' >>>>>>>>> This method sets all the options that are configured using the >>>>>>>>> user interface >>>>>>>>> generated by the framework using the result of getOptions(). >>>>>>>>> >>>>>>>>> �...@parameter OptionList: A dictionary with the options for >>>>>>>>> the plugin. >>>>>>>>> �...@return: No value is returned. >>>>>>>>> ''' >>>>>>>>> pass >>>>>>>>> >>>>>>>>> def getPluginDeps( self ): >>>>>>>>> ''' >>>>>>>>> �...@return: A list with the names of the plugins that should be >>>>>>>>> runned before the >>>>>>>>> current one. >>>>>>>>> ''' >>>>>>>>> return [] >>>>>>>>> >>>>>>>>> def getLongDesc( self ): >>>>>>>>> ''' >>>>>>>>> �...@return: A DETAILED description of the plugin functions and >>>>>>>>> features. >>>>>>>>> ''' >>>>>>>>> return ''' >>>>>>>>> This plugin searches for client side differences between >>>>>>>>> different versions of WordPress. >>>>>>>>> ''' >>>>>>>> >>>>>>>> Then try to run w3af from a console: >>>>>>>> >>>>>>>> in cmd.exe run python w3af_console.py >>>>>>>> >>>>>>>>> >>>>>>>>> 2009/6/6 Andres Riancho <andres.rian...@gmail.com>: >>>>>>>>>> Ryan, >>>>>>>>>> >>>>>>>>>> On Sat, Jun 6, 2009 at 1:57 PM, Ryan Dewhurst >>>>>>>>>> <ryandewhu...@gmail.com> wrote: >>>>>>>>>>> I moved the wpvchecker.py file into the /plugin/discovery folder. >>>>>>>>>>> When >>>>>>>>>>> I try to launch w3af I get an error (screenshot attached), the >>>>>>>>>>> prompt >>>>>>>>>>> only lasts a few seconds so could not copy/paste the full error >>>>>>>>>>> output. >>>>>>>>>>> >>>>>>>>>>> When I remove the wpvchecker.py file out of the dir the error >>>>>>>>>>> persists >>>>>>>>>>> and I have to un/re install w3af to get it working again. >>>>>>>>>> >>>>>>>>>> Also delete the .pyc file, and no reinstall is needed. >>>>>>>>>> >>>>>>>>>>> Any ideas? >>>>>>>>>> >>>>>>>>>> Yes, many. >>>>>>>>>> You are missing some required methods, like setOptions, getOptions, >>>>>>>>>> getLongDescription, etc. Please see other plugins for a complete >>>>>>>>>> list, >>>>>>>>>> >>>>>>>>>>> Thanks again, >>>>>>>>>>> Ryan >>>>>>>>>>> >>>>>>>>>>> 2009/6/6 Andres Riancho <andres.rian...@gmail.com>: >>>>>>>>>>>> Ryan, >>>>>>>>>>>> >>>>>>>>>>>> On Sat, Jun 6, 2009 at 10:59 AM, Ryan Dewhurst >>>>>>>>>>>> <ryandewhu...@gmail.com> wrote: >>>>>>>>>>>>> Hello, >>>>>>>>>>>>> Sorry its been so long with the wrodpress version checker plugin, >>>>>>>>>>>>> had >>>>>>>>>>>>> some life problems. >>>>>>>>>>>> >>>>>>>>>>>> No problem man, I hope things are going better now. >>>>>>>>>>>> >>>>>>>>>>>>> Anyway... >>>>>>>>>>>>> >>>>>>>>>>>>> I have come to a logic problem which I cannot seem to solve and >>>>>>>>>>>>> was >>>>>>>>>>>>> wondering if any one could give me some pointers... >>>>>>>>>>>>> >>>>>>>>>>>>> Versions '2.5', '2.3.1, 2.3.2 or 2.3.3' and '2.2' are detected by >>>>>>>>>>>>> a >>>>>>>>>>>>> file/image being present i.e status 200 >>>>>>>>>>>>> >>>>>>>>>>>>> I cannot figure out how to check for this while using the >>>>>>>>>>>>> self._wp_fingerprint array. >>>>>>>>>>>> >>>>>>>>>>>> The for loop that works with the array looks like this: >>>>>>>>>>>> >>>>>>>>>>>> for data in self._wp_fingerprint: >>>>>>>>>>>> >>>>>>>>>>>> # Complete URL to test, url+file >>>>>>>>>>>> test_URL = urlParser.urlJoin( base_url, >>>>>>>>>>>> self._wp_fingerprint[0] ) >>>>>>>>>>>> >>>>>>>>>>>> if self._wp_fingerprint[1] in response: >>>>>>>>>>>> version = self._wp_fingerprint[2] >>>>>>>>>>>> break >>>>>>>>>>>> else: >>>>>>>>>>>> version = 'Version lower than 2.2' >>>>>>>>>>>> >>>>>>>>>>>> But there are some parts missing, like actually requesting to the >>>>>>>>>>>> server the test_URL. On the other part, the "200" logic could be >>>>>>>>>>>> easily done like this: >>>>>>>>>>>> >>>>>>>>>>>> if self._wp_fingerprint[1] == 200 and not >>>>>>>>>>>> is_404(response): >>>>>>>>>>>> # it was found! >>>>>>>>>>>> elif self._wp_fingerprint[1] in response: >>>>>>>>>>>> version = self._wp_fingerprint[2] >>>>>>>>>>>> break >>>>>>>>>>>> else: >>>>>>>>>>>> version = 'Version lower than 2.2' >>>>>>>>>>>> >>>>>>>>>>>> To make this work, you should change the '' in the fingerprint >>>>>>>>>>>> array >>>>>>>>>>>> by a 200, and it should all work. >>>>>>>>>>>> >>>>>>>>>>>>> Here is the code so far, I have not yet tested it out, but should >>>>>>>>>>>>> give >>>>>>>>>>>>> you a basic idea of how it will run. >>>>>>>>>>>> >>>>>>>>>>>> Yes, and it makes much more sense to me this way. The older version >>>>>>>>>>>> was "ugly" :) >>>>>>>>>>>> >>>>>>>>>>>>> I was also thinking of >>>>>>>>>>>>> implementing a plugin version checker as there are many plugins >>>>>>>>>>>>> with >>>>>>>>>>>>> vulns. >>>>>>>>>>>> >>>>>>>>>>>> Sure, but lets go step by step, lets finish this plugin, test it a >>>>>>>>>>>> little bit, and then we can go for the next one. >>>>>>>>>>>> >>>>>>>>>>>>> Thank you, >>>>>>>>>>>>> Ryan >>>>>>>>>>>>> >>>>>>>>>>>>> P.S. To test it through w3af, do I just pop the py file into the >>>>>>>>>>>>> plugin folder or is there any other code to be changed? >>>>>>>>>>>> >>>>>>>>>>>> Yes, you have to move this file to the discovery directory and >>>>>>>>>>>> that's it. >>>>>>>>>>>> >>>>>>>>>>>>> 2009/5/31 Ryan Dewhurst <ryandewhu...@gmail.com>: >>>>>>>>>>>>>> Just to let everyone know where I am with the plugin. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I'm a complete n00b at re and couldnt get backbone's code to >>>>>>>>>>>>>> work, so >>>>>>>>>>>>>> I read a couple of manuals and finally got it working with: >>>>>>>>>>>>>> <meta name="generator" content="[Ww]ord[Pp]ress (\d\.\d\.?\d?)" >>>>>>>>>>>>>> /> >>>>>>>>>>>>>> >>>>>>>>>>>>>> An explanation of what the plugin will do: >>>>>>>>>>>>>> ----------------------------------------------------------- >>>>>>>>>>>>>> >>>>>>>>>>>>>> It will first check to see if the server has the following file >>>>>>>>>>>>>> "/wp-admin/index.php". >>>>>>>>>>>>>> >>>>>>>>>>>>>> If it does >>>>>>>>>>>>>> >>>>>>>>>>>>>> It will check to see whether or not the version is in the index >>>>>>>>>>>>>> header. >>>>>>>>>>>>>> >>>>>>>>>>>>>> If it finds the version it will store it in a variable. >>>>>>>>>>>>>> >>>>>>>>>>>>>> It will then run through the checks from my original code to try >>>>>>>>>>>>>> and >>>>>>>>>>>>>> guess the version. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> The output will be as follows: >>>>>>>>>>>>>> ------------------------------------------ >>>>>>>>>>>>>> >>>>>>>>>>>>>> If the version is not in the index and not found with the data = >>>>>>>>>>>>>> "version under 2.2" >>>>>>>>>>>>>> If the version is in the index and in the data are the same = >>>>>>>>>>>>>> "whatever version was found" >>>>>>>>>>>>>> If the version is in the index and in the data are different = >>>>>>>>>>>>>> ""Version shows as $version in index header however the data >>>>>>>>>>>>>> shows >>>>>>>>>>>>>> $version" >>>>>>>>>>>>>> >>>>>>>>>>>>>> I still need to implement the data checks however my girlfriend >>>>>>>>>>>>>> has >>>>>>>>>>>>>> fallen ill and has been admitted to hospital for an emergency >>>>>>>>>>>>>> operation. I don't think I will be able to finish the plugin this >>>>>>>>>>>>>> weekend as promised earlier however will still be working on it >>>>>>>>>>>>>> next >>>>>>>>>>>>>> week. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I was also thinking on listing the vulnerabilitys for each >>>>>>>>>>>>>> version (if >>>>>>>>>>>>>> any) on the output. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Ryan >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> 2009/5/29 Andres Riancho <andres.rian...@gmail.com>: >>>>>>>>>>>>>>> Ryan, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Thu, May 28, 2009 at 10:11 PM, Ryan Dewhurst >>>>>>>>>>>>>>> <ryandewhu...@gmail.com> wrote: >>>>>>>>>>>>>>>> Im loooking into searching the response html of the index page >>>>>>>>>>>>>>>> for the >>>>>>>>>>>>>>>> following string: >>>>>>>>>>>>>>>> <meta name="generator" content="WordPress $version" /> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Ive tried with regular expressions and am unable to get it to >>>>>>>>>>>>>>>> work, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> backbone sent you a solution, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Ive read that re is bad for parsing HTML and that BeautifulSoup >>>>>>>>>>>>>>>> should be used. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Does w3af already have BeautifulSoup in its dependency list? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Yes, it's in the dependency list, but we aren't using it "for >>>>>>>>>>>>>>> that". >>>>>>>>>>>>>>> Long story short, please use the re =) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Ryan >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> P.S. Thanks for the advice backbone46, I'll have a look into >>>>>>>>>>>>>>>> that once >>>>>>>>>>>>>>>> Ive sorted this out. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 2009/5/28 <backbon...@gmail.com>: >>>>>>>>>>>>>>>>> Sorry to bump in just like that in the discussion, about the >>>>>>>>>>>>>>>>> meta tag that >>>>>>>>>>>>>>>>> displays >>>>>>>>>>>>>>>>> the WordPress version. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Only since version 2.7 the generator function is in the core >>>>>>>>>>>>>>>>> of WordPress, >>>>>>>>>>>>>>>>> on >>>>>>>>>>>>>>>>> earlier versions it was only in the theme. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Just wanted to mention that. :) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> --- >>>>>>>>>>>>>>>>> http://insanesecurity.info >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Thu, May 28, 2009 at 10:53 PM, Ryan Dewhurst >>>>>>>>>>>>>>>>> <ryandewhu...@gmail.com> >>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Yes, I dont see why not. Should be easy enough tro implement. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> You mentioned during our email conversation that wordpress >>>>>>>>>>>>>>>>>> echos its >>>>>>>>>>>>>>>>>> version number in the page head. I managed to find an >>>>>>>>>>>>>>>>>> example of it. >>>>>>>>>>>>>>>>>> Your right I do have a security plugin installed which must >>>>>>>>>>>>>>>>>> have >>>>>>>>>>>>>>>>>> removed it from my blog. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Here is an example: >>>>>>>>>>>>>>>>>> <meta name="generator" content="WordPress 2.7.1" /> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> 2009/5/28 Andres Riancho <andres.rian...@gmail.com>: >>>>>>>>>>>>>>>>>> > Ryan, >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> > On Wed, May 27, 2009 at 10:18 PM, Andres Riancho >>>>>>>>>>>>>>>>>> > <andres.rian...@gmail.com> wrote: >>>>>>>>>>>>>>>>>> >> Ryan, >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >> On Wed, May 27, 2009 at 9:58 PM, Ryan Dewhurst >>>>>>>>>>>>>>>>>> >> <ryandewhu...@gmail.com> >>>>>>>>>>>>>>>>>> >> wrote: >>>>>>>>>>>>>>>>>> >>> Hello, >>>>>>>>>>>>>>>>>> >>> Im new to mailing lists so im not sure if this will be >>>>>>>>>>>>>>>>>> >>> sent there. >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >> It depends on the mailing list. This one is configured to >>>>>>>>>>>>>>>>>> >> accept >>>>>>>>>>>>>>>>>> >> attachments, >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >>> I'll have a look into intergrating the script into w3af >>>>>>>>>>>>>>>>>> >>> over the next >>>>>>>>>>>>>>>>>> >>> couple of days and hopefully have a working version by >>>>>>>>>>>>>>>>>> >>> the weekend. >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >> Excellent, if you need ANY help, just let us know. >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >>> The script is quite simple once you have the gathered >>>>>>>>>>>>>>>>>> >>> the nesesary >>>>>>>>>>>>>>>>>> >>> data. I went through versions 2.2 to 2.7.1 and manually >>>>>>>>>>>>>>>>>> >>> found client >>>>>>>>>>>>>>>>>> >>> side differences in most of them, I also used the >>>>>>>>>>>>>>>>>> >>> official changelogs >>>>>>>>>>>>>>>>>> >>> to help identify them. >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >> Ohhh, you are the guy that wrote that blog post with the >>>>>>>>>>>>>>>>>> >> "diffs" of >>>>>>>>>>>>>>>>>> >> different wordpress release packages? >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >>> The client side differences are in files such as CSS, >>>>>>>>>>>>>>>>>> >>> javascript and >>>>>>>>>>>>>>>>>> >>> HTML. Some versions did not have any differences apart >>>>>>>>>>>>>>>>>> >>> from having >>>>>>>>>>>>>>>>>> >>> extra files, which can easliy be identified with HTTP >>>>>>>>>>>>>>>>>> >>> response codes. >>>>>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>>>>> >>> It works as such... >>>>>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>>>>> >>> Starting from version 2.7.1 (latest), the script tries >>>>>>>>>>>>>>>>>> >>> to find >>>>>>>>>>>>>>>>>> >>> something that 2.7 doesnt have, if it finds that >>>>>>>>>>>>>>>>>> >>> something then the >>>>>>>>>>>>>>>>>> >>> script stops and echos the version number. >>>>>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>>>>> >>> If the script doesnt find the difference it moves onto >>>>>>>>>>>>>>>>>> >>> identifying the >>>>>>>>>>>>>>>>>> >>> next version, i.e. does 2.7 have something the earlier >>>>>>>>>>>>>>>>>> >>> version doesnt >>>>>>>>>>>>>>>>>> >>> have. and so on and so forth. >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >> Ok, makes sense. >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >> Some comments regarding your code: >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >> - w3af uses PEP-8, with among other things says 4-spaces >>>>>>>>>>>>>>>>>> >> for >>>>>>>>>>>>>>>>>> >> indentations. Your code has 1-space (?) indentations. >>>>>>>>>>>>>>>>>> >> Please correct >>>>>>>>>>>>>>>>>> >> that. >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >> - The code is pretty simple, but i think it could be done >>>>>>>>>>>>>>>>>> >> in a better >>>>>>>>>>>>>>>>>> >> way. Having that many functions (wp22 to wp271) doesn't >>>>>>>>>>>>>>>>>> >> seem to be a >>>>>>>>>>>>>>>>>> >> good option. Do you think that the code could be changed >>>>>>>>>>>>>>>>>> >> a little bit, >>>>>>>>>>>>>>>>>> >> and create a database (which can be easily updated) and >>>>>>>>>>>>>>>>>> >> then use that >>>>>>>>>>>>>>>>>> >> database to store the information? Example of the databse >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >> self._wp_fingerprint = >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >> [('/wp-includes/js/thickbox/thickbox.css','-ms-filter:'),('/wp-admin/css/farbtastic.css', >>>>>>>>>>>>>>>>>> >> 'farbtastic')] >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >> - Also, by default wordpress publishes the version number >>>>>>>>>>>>>>>>>> >> in every >>>>>>>>>>>>>>>>>> >> page head. Maybe it would be a good idea to parse that, >>>>>>>>>>>>>>>>>> >> and compare it >>>>>>>>>>>>>>>>>> >> with the result of the fingerprinting. What do you think? >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> > A good idea would be to have a first step, before all the >>>>>>>>>>>>>>>>>> > version >>>>>>>>>>>>>>>>>> > specific checks, that verifies something that's true for >>>>>>>>>>>>>>>>>> > all wordpress >>>>>>>>>>>>>>>>>> > installations (some X file has to be present) before even >>>>>>>>>>>>>>>>>> > starting the >>>>>>>>>>>>>>>>>> > fingerprinting. Could this be done? >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> >> Cheers, >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >>> Ryan >>>>>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>>>>> >>> 2009/5/28 Andres Riancho <andres.rian...@gmail.com>: >>>>>>>>>>>>>>>>>> >>>> Ryan, >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> On Wed, May 27, 2009 at 5:07 PM, Ryan Dewhurst >>>>>>>>>>>>>>>>>> >>>> <ryandewhu...@gmail.com> wrote: >>>>>>>>>>>>>>>>>> >>>>> Hello, >>>>>>>>>>>>>>>>>> >>>>> I have developed a python script that can detect the >>>>>>>>>>>>>>>>>> >>>>> version of a >>>>>>>>>>>>>>>>>> >>>>> wordpress installation. I think it would fit well >>>>>>>>>>>>>>>>>> >>>>> within w3af, >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> Yes, it seems that it's something good to have in the >>>>>>>>>>>>>>>>>> >>>> framework. >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> I have like a ton of questions about how it works, >>>>>>>>>>>>>>>>>> >>>> could you please >>>>>>>>>>>>>>>>>> >>>> send the script (as it is) to this mailing list for us >>>>>>>>>>>>>>>>>> >>>> to read it? >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>>> the >>>>>>>>>>>>>>>>>> >>>>> only problem being is that I have been unable to find >>>>>>>>>>>>>>>>>> >>>>> a plugin >>>>>>>>>>>>>>>>>> >>>>> development manual to be able to implement my script. >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> There is no development manual :( >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> For the type of feature that you want to add, the >>>>>>>>>>>>>>>>>> >>>> correct thing is to >>>>>>>>>>>>>>>>>> >>>> use a discovery plugin. discovery plugins are simple, >>>>>>>>>>>>>>>>>> >>>> they follow >>>>>>>>>>>>>>>>>> >>>> these rules: >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> - the entry point is the discover method >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> - the discover method takes a fuzzable request object >>>>>>>>>>>>>>>>>> >>>> as a parameter, >>>>>>>>>>>>>>>>>> >>>> and returns a list of fuzzable requests >>>>>>>>>>>>>>>>>> >>>> (fuzzable requests are representations of GET/POST >>>>>>>>>>>>>>>>>> >>>> requests, which >>>>>>>>>>>>>>>>>> >>>> represent links, and forms) >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> - the discover method is called several times in the >>>>>>>>>>>>>>>>>> >>>> same scan, with >>>>>>>>>>>>>>>>>> >>>> the different links that (for example) the webSpider >>>>>>>>>>>>>>>>>> >>>> finds. >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> I think that the best thing you can do is to read one >>>>>>>>>>>>>>>>>> >>>> or two >>>>>>>>>>>>>>>>>> >>>> discovery >>>>>>>>>>>>>>>>>> >>>> plugins (my recommendations are discovery.crossDomain >>>>>>>>>>>>>>>>>> >>>> and >>>>>>>>>>>>>>>>>> >>>> discovery.userDir), and start building your own plugin >>>>>>>>>>>>>>>>>> >>>> based on one >>>>>>>>>>>>>>>>>> >>>> of >>>>>>>>>>>>>>>>>> >>>> those. >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>>> Is there a dev manual out there? >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> No >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>>> Does any one have some tips/advice on writting a >>>>>>>>>>>>>>>>>> >>>>> plugin? >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> Yes, see above, >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>>> Does any one want me to send them the script for them >>>>>>>>>>>>>>>>>> >>>>> to develop the >>>>>>>>>>>>>>>>>> >>>>> plugin? >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> You should develop the plugin yourself, is fun and good >>>>>>>>>>>>>>>>>> >>>> for the >>>>>>>>>>>>>>>>>> >>>> project =) >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> Cheers, >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>>> Thank you, >>>>>>>>>>>>>>>>>> >>>>> Ryan >>>>>>>>>>>>>>>>>> >>>>> >>>>>>>>>>>>>>>>>> >>>>> >>>>>>>>>>>>>>>>>> >>>>> ------------------------------------------------------------------------------ >>>>>>>>>>>>>>>>>> >>>>> Register Now for Creativity and Technology (CaT), June >>>>>>>>>>>>>>>>>> >>>>> 3rd, NYC. CaT >>>>>>>>>>>>>>>>>> >>>>> is a gathering of tech-side developers & brand >>>>>>>>>>>>>>>>>> >>>>> creativity >>>>>>>>>>>>>>>>>> >>>>> professionals. Meet >>>>>>>>>>>>>>>>>> >>>>> the minds behind Google Creative Lab, Visual >>>>>>>>>>>>>>>>>> >>>>> Complexity, Processing, >>>>>>>>>>>>>>>>>> >>>>> & >>>>>>>>>>>>>>>>>> >>>>> iPhoneDevCamp as they present alongside digital >>>>>>>>>>>>>>>>>> >>>>> heavyweights like >>>>>>>>>>>>>>>>>> >>>>> Barbarian >>>>>>>>>>>>>>>>>> >>>>> Group, R/GA, & Big Spaceship. >>>>>>>>>>>>>>>>>> >>>>> http://p.sf.net/sfu/creativitycat-com >>>>>>>>>>>>>>>>>> >>>>> _______________________________________________ >>>>>>>>>>>>>>>>>> >>>>> W3af-develop mailing list >>>>>>>>>>>>>>>>>> >>>>> W3af-develop@lists.sourceforge.net >>>>>>>>>>>>>>>>>> >>>>> https://lists.sourceforge.net/lists/listinfo/w3af-develop >>>>>>>>>>>>>>>>>> >>>>> >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>>> -- >>>>>>>>>>>>>>>>>> >>>> Andrés Riancho >>>>>>>>>>>>>>>>>> >>>> Founder, Bonsai - Information Security >>>>>>>>>>>>>>>>>> >>>> http://www.bonsai-sec.com/ >>>>>>>>>>>>>>>>>> >>>> http://w3af.sf.net/ >>>>>>>>>>>>>>>>>> >>>> >>>>>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> >> -- >>>>>>>>>>>>>>>>>> >> Andrés Riancho >>>>>>>>>>>>>>>>>> >> Founder, Bonsai - Information Security >>>>>>>>>>>>>>>>>> >> http://www.bonsai-sec.com/ >>>>>>>>>>>>>>>>>> >> http://w3af.sf.net/ >>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> > -- >>>>>>>>>>>>>>>>>> > Andrés Riancho >>>>>>>>>>>>>>>>>> > Founder, Bonsai - Information Security >>>>>>>>>>>>>>>>>> > http://www.bonsai-sec.com/ >>>>>>>>>>>>>>>>>> > http://w3af.sf.net/ >>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> ------------------------------------------------------------------------------ >>>>>>>>>>>>>>>>>> Register Now for Creativity and Technology (CaT), June 3rd, >>>>>>>>>>>>>>>>>> NYC. CaT >>>>>>>>>>>>>>>>>> is a gathering of tech-side developers & brand creativity >>>>>>>>>>>>>>>>>> professionals. >>>>>>>>>>>>>>>>>> Meet >>>>>>>>>>>>>>>>>> the minds behind Google Creative Lab, Visual Complexity, >>>>>>>>>>>>>>>>>> Processing, & >>>>>>>>>>>>>>>>>> iPhoneDevCamp as they present alongside digital heavyweights >>>>>>>>>>>>>>>>>> like >>>>>>>>>>>>>>>>>> Barbarian >>>>>>>>>>>>>>>>>> Group, R/GA, & Big Spaceship. >>>>>>>>>>>>>>>>>> http://p.sf.net/sfu/creativitycat-com >>>>>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>>>>> W3af-develop mailing list >>>>>>>>>>>>>>>>>> W3af-develop@lists.sourceforge.net >>>>>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/w3af-develop >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> Andrés Riancho >>>>>>>>>>>>>>> Founder, Bonsai - Information Security >>>>>>>>>>>>>>> http://www.bonsai-sec.com/ >>>>>>>>>>>>>>> http://w3af.sf.net/ >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Andrés Riancho >>>>>>>>>>>> Founder, Bonsai - Information Security >>>>>>>>>>>> http://www.bonsai-sec.com/ >>>>>>>>>>>> http://w3af.sf.net/ >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Andrés Riancho >>>>>>>>>> Founder, Bonsai - Information Security >>>>>>>>>> http://www.bonsai-sec.com/ >>>>>>>>>> http://w3af.sf.net/ >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Andrés Riancho >>>>>>>> Founder, Bonsai - Information Security >>>>>>>> http://www.bonsai-sec.com/ >>>>>>>> http://w3af.sf.net/ >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Andrés Riancho >>>>>> Founder, Bonsai - Information Security >>>>>> http://www.bonsai-sec.com/ >>>>>> http://w3af.sf.net/ >>>>>> >>>>> >>>> >>> >> >> >> >> -- >> Andrés Riancho >> Founder, Bonsai - Information Security >> http://www.bonsai-sec.com/ >> http://w3af.sf.net/ >> > -- Andrés Riancho Founder, Bonsai - Information Security http://www.bonsai-sec.com/ http://w3af.sf.net/ ------------------------------------------------------------------------------ OpenSolaris 2009.06 is a cutting edge operating system for enterprises looking to deploy the next generation of Solaris that includes the latest innovations from Sun and the OpenSource community. Download a copy and enjoy capabilities such as Networking, Storage and Virtualization. Go to: http://p.sf.net/sfu/opensolaris-get _______________________________________________ W3af-develop mailing list W3af-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/w3af-develop