!C99Shell v. 2.1 [PHP 8 Update] [02.02.2022]!

Software: Apache/2.4.53 (Unix) OpenSSL/1.1.1o PHP/7.4.29 mod_perl/2.0.12 Perl/v5.34.1. PHP/7.4.29 

uname -a: Linux vps-2738122-x 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 

uid=1(daemon) gid=1(daemon) grupos=1(daemon) 

Safe-mode: OFF (not secure)

/opt/apex_tdfonline/php/3ros/simplesamlphp/modules/InfoCard/www/   drwxr-xr-x
Free 13.8 GB of 61.93 GB (22.29%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     STS_card_issuer.php (9 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/*
* AUTHOR: Samuel Muñoz Hidalgo
* EMAIL: samuel.mh@gmail.com
* LAST REVISION: 24-APR-09
* DESCRIPTION:
*        Will send cards to other applications via web.
*        Symmetric cryptography and IP filtering are available.
*/


/*
* DESCRIPTION: used to encode the data attribute sent GET method
* TAKEN FROM:  http://es2.php.net/manual/es/function.base64-encode.php#63543
*/
function urlsafe_b64encode($string) {
    
$data base64_encode($string);
    
$data str_replace(array('+','/','='),array('-','_',''),$data);
    return 
$data;
}


/*
* DESCRIPTION: used to decode the data attribute sent GET method
* TAKEN FROM:  http://es2.php.net/manual/es/function.base64-encode.php#63543
*/
function urlsafe_b64decode($string) {
    
$data str_replace(array('-','_'),array('+','/'),$string);
    
$mod4 strlen($data) % 4;
    if (
$mod4) {
        
$data .= substr('===='$mod4);
    }
    return 
base64_decode($data);
}


/*CASE 1 AND 2
* -Has Organization
* -And chains to a trusted root CA
* -NOTE: Based on V1.0, written for compatibility with DigitalMe PPID calculation
*/
function calculate_RP_PPID_Seed_2_2007 ($certs) {
    
$check_cert openssl_x509_read(file_get_contents($certs[0]));
    
$array openssl_x509_parse($check_cert);
    
openssl_x509_free($check_cert);
    
$OrgIdString = ('|O="'.$array['subject']['O'].'"|L="'.$array['subject']['L'].'"|S="'.$array['subject']['ST'].'"|C="'.$array['subject']['C'].'"|');    
    
$numcerts sizeof($certs);
    for(
$i=1;$i<$numcerts;$i++){
        
$check_cert openssl_x509_read(file_get_contents($certs[$i]));
        
$array openssl_x509_parse($check_cert);
        
openssl_x509_free($check_cert);
        
$tmpstring '|ChainElement="CN='.$array['subject']['CN'].', OU='.$array['subject']['OU'].', O='.$array['subject']['O'].', L='.$array['subject']['L'].', S='.$array['subject']['ST'].', C='.$array['subject']['C'].'"';
        
$OrgIdString $tmpstring.$OrgIdString;
    }
    
$OrgIdBytes iconv("UTF-8""UTF-16LE"$OrgIdString);
    
$RPPPIDSeed hash('sha256'$OrgIdBytes,TRUE);
    return 
$RPPPIDSeed;
}


/*
* DESCRIPTION: Calculate the PPID for a card
* INPUT: card ID, and RP certificates
* OUTPUT: PPID asociated to a Relying Party
*/
function calculate_PPID($cardid$rp_cert) {
    
$CardIdBytes iconv("ISO-8859-1""UTF-16LE"$cardid);
    
$CanonicalCardId hash('sha256'$CardIdBytes,TRUE);
    
$RPPPIDSeed calculate_RP_PPID_Seed_2_2007($rp_cert);
    
$PPID hash('sha256'$RPPPIDSeed.$CanonicalCardId,TRUE);
    return 
$PPID;
}


/*
*
* INPUT: VOID
* OUPUT: String with the invoked URL
*/
function curPageURL() {
 
$pageURL 'http';
 if (
$_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 
$pageURL .= "://";
 if (
$_SERVER["SERVER_PORT"] != "80") {
  
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return 
$pageURL;
}




//TAD

/*
* INPUT: String (attribute length + attribute not begginning with a number) n times , number of attributes
* OUPUT: Array with attributes in order
*/
function parse_attributes($parsing_string$num_attrs){
    for (
$i=$i<$num_attrs $i++) {
        if (
preg_match('/^[\d]*/'$parsing_string$res)){
            if (!(
$output[$i] = substr($parsing_string,strlen($res[0]),$res[0]))){
                return 
null;
            }
            
$parsing_string substr($parsing_stringstrlen($res[0])+strlen($output[$i]));
        } else {
            return 
null;
        }
    }
    return 
$output;
}


/*
* Enable downloading an specific card, store Radius request
* INPUT: username, cardid, and radius request time
* OUTPUT; uuid of the stored request
*/
function enable_download($username$cardid){
    
//almacenar existencia
    
    //Add Timestamp to response
    
$time 'x'.time(); //Cannot start with a number    
    
    
$uuid uniqid();
    
$handle fopen(SimpleSAML_Utilities::getTempDir() . "/$uuid",'w');
    if (
$handle) {
        
fwrite($handlestrlen($username).$username.strlen($cardid).$cardid.strlen($time).$time);
        
fclose ($handle);
        return 
$uuid;
    } else {
        return 
false;
    }
}


/*
* Disable downloading an specific card, should be called when ending a request = Infocard is Issued
*
*/
function disable_download($uuid){
    
unlink("/tmp/$uuid");
}


/*
* ¿Should I generate a card?
*
*/
function is_card_enabled($uuid$delivery_time){
    
$now time();    
    
$filename SimpleSAML_Utilities::getTempDir() . "/$uuid";
    
    
//File check
    
if (!file_exists($filename)) return false//File doesn't exist
    
    //Time check
    
$handle fopen($filename,'r');
    if (
$handle) {
        
$data fread($handlefilesize($filename));
        
fclose ($handle);
        
        
$parsed_data parse_attributes($data3);
        
$parsed_data[2] = substr($parsed_data[2],1); //Extracting numeric value
        
        
$time $parsed_data[2];
        
$endtime $time $delivery_time;
        if ((
$now<=$time)||($now>$endtime)) return false//Incorrect time
        
return $parsed_data;
    } else {
        return 
false//Could not read the file
    
}

}


/*
* Check if the user is in the connected table
* Update the row with the created Infocard card_ID
*/
function DB_update_connected_user ($username$DB_params){
    
$card_id sspmod_InfoCard_UserFunctions::generate_card_ID($username);;
    
$dbconn pg_connect('host='.$DB_params['DB_host'].'  port='.$DB_params['DB_port'].'  dbname='.$DB_params['DB_dbname'].' user='.$DB_params['DB_user'].'  password='.$DB_params['DB_password']);
    
$result pg_fetch_all(pg_query_params($dbconn'SELECT * FROM connected_users WHERE name = $1', array("$username")));
    if (
$result[0]){
        
pg_update($dbconn'connected_users', array('card_id'=>$card_id), array('name'=>$username));
        return 
true;
    } else {
        return 
false;
    }
}



$config SimpleSAML_Configuration::getInstance();
$autoconfig $config->copyFromBase('logininfocard''config-login-infocard.php');
$configuredIP =   $autoconfig->getValue('configuredIP');


//RADIUS Request - Send One Time URL
if ( (strcmp($_GET['ident'],'RADIUS')==0) && (($configuredIP == null) || ($_SERVER['REMOTE_ADDR'] == $configuredIP)) ){

    
/* Load the configuration. */
    
$key =   $autoconfig->getValue('symmetric_key');
    
$internalkey hash('sha256'$autoconfig->getValue('internal_key'));

    
$encrequest urlsafe_b64decode($_GET['data']);
    if (!
$encrequest) throw new SimpleSAML_Error_NotFound('The URL wasn\'t found in the module.');

    
// Encryption
    
if ($key!=null) {
        
$iv urlsafe_b64decode($_GET['iv']);
        if (!
$iv)  throw new SimpleSAML_Error_NotFound('The URL wasn\'t found in the module.');
        
$enckey hash('sha256'$key);
        
$request mcrypt_decrypt(MCRYPT_RIJNDAEL_128pack("H*",$enckey), $encrequestMCRYPT_MODE_CBC$iv);
    } else {
        
$request $encrequest;
    }
    
    
//Parse Attributes (username lenght + username + cardid length + cardid)
    
$parsed_request parse_attributes($request2);
    
    
    
//Enable card for downloading (username+cardid+time)
    
$response enable_download($parsed_request[0],$parsed_request[1]);
    if(!
$response) throw new SimpleSAML_Error_NotFound('FUNCTION enable_download, error accessing directory');
    
    
    
// Encrypt response for myself
    
$response mcrypt_encrypt(MCRYPT_RIJNDAEL_128pack("H*",$internalkey), $responseMCRYPT_MODE_CBC$iv);
    
$response preg_replace('/\?.*/','',curPageURL()).'?data='.urlsafe_b64encode($response).'&iv='.urlsafe_b64encode($iv);
    

    
// Encrypt response for RADIUS
    
if ($key!=null){
        
$encresponse  mcrypt_encrypt(MCRYPT_RIJNDAEL_128pack("H*",$enckey), $responseMCRYPT_MODE_CBC$iv);
    } else {
        
$encresponse $response;
    }
    
    
// Send URL
    
print base64_encode($encresponse);

} else {  
//Client Resquest- Send InfoCard
    //Get Attributes
    
$encrequest urlsafe_b64decode($_GET['data']);
    
$iv urlsafe_b64decode($_GET['iv']);
    if ((!
$encrequest)||(!$iv)) throw new SimpleSAML_Error_NotFound('The URL wasn\'t found in the module.');

    
/* Load the configuration. */
    
$internalkey hash('sha256'$autoconfig->getValue('internal_key'));
    
$certificates =   $autoconfig->getValue('certificates');
    
$ICconfig['InfoCard'] = $autoconfig->getValue('InfoCard');
    
$ICconfig['InfoCard']['issuer'] = $autoconfig->getValue('tokenserviceurl');//sspmod_InfoCard_Utils::getIssuer($sts_crt);
    
$ICconfig['tokenserviceurl'] = $autoconfig->getValue('tokenserviceurl');
    
$ICconfig['mexurl'] = $autoconfig->getValue('mexurl');
    
$ICconfig['sts_key'] = $autoconfig->getValue('sts_key');
    
$ICconfig['certificates'] = $autoconfig->getValue('certificates');
    
$ICconfig['UserCredential'] = $autoconfig->getValue('UserCredential');
    
$IC_lifetime_delivery $autoconfig->getValue('IC_lifetime_delivery');
    
$DB_params $autoconfig->getValue('DB_params');
    
    
// Encryption
    
$request mcrypt_decrypt(MCRYPT_RIJNDAEL_128pack("H*",$internalkey), $encrequestMCRYPT_MODE_CBC$iv);
    
    
$parsed_request is_card_enabled($request$IC_lifetime_delivery);
    if (
$parsed_request && DB_update_connected_user($parsed_request[0], $DB_params)) {
        
// Calculate PPID
        
$ppid base64_encode(calculate_PPID($parsed_request[1], $certificates));
    
        
// Create InfoCard
        
$ICdata sspmod_InfoCard_UserFunctions::fillICdata($parsed_request[0],$ICconfig['UserCredential'],$ppid);    
        
$IC sspmod_InfoCard_STS::createCard($ICdata,$ICconfig);
        
        
disable_download($request);
        
        
//Send Infocard
        
print ($IC);
    } else {
        throw new 
SimpleSAML_Error_NotFound('The URL wasn\'t found in the module.');
    }
}


?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.1 [PHP 8 Update] [02.02.2022] maintained byC99Shell Github | Generation time: 0.9978 ]--