野外求生系列 - 無工具 WebApi 徒手測試 Part 2

栏目: ASP.NET · 发布时间: 5年前

内容简介:昨天的不過,做為一名身經百戰的老士官長,遇到再惡劣的狀況也要有對策,這點小挑戰嚇不倒我的~ 以下是我所想到無 PowerShell 可用時的替代解法:如果很幸運該台 Windows 有裝 Telnet Client 的話(預設未安裝,需額外勾選),telnet.exe 是我心中首選。理由是 telnet 是 IT 人員熟悉的常用工具,未涉及程式語言較不易引發資安機制的過當反應。(當然,用 telnet 一樣可以做壞事,未必比跑程式安全,但「社會觀感」這玩意兒很難解釋)

昨天的 野外求生系列 - 無工具 WebApi 徒手測試 一文得到不少迴響,我才知道被困在荒島上的工程師還蠻多的 XD,而其中一則讓我震驚的消息是 - 在一些更嚴格的資安規範之下,PowerShell 是被禁用的。

不過,做為一名身經百戰的老士官長,遇到再惡劣的狀況也要有對策,這點小挑戰嚇不倒我的~ 以下是我所想到無 PowerShell 可用時的替代解法:

B 計劃 telnet

如果很幸運該台 Windows 有裝 Telnet Client 的話(預設未安裝,需額外勾選),telnet.exe 是我心中首選。理由是 telnet 是 IT 人員熟悉的常用工具,未涉及程式語言較不易引發資安機制的過當反應。(當然,用 telnet 一樣可以做壞事,未必比跑程式安全,但「社會觀感」這玩意兒很難解釋)

做法是準備一個 ApiTest-1.txt 檔案做好 HTTP POST Request 的原始內容以模擬瀏覽器行為,像是這個樣子:(Content-Length 為 encKey=9527.... 字串的長度)

POST http://localhost:62505/codecapi/encryptstring HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Accept: */*
Host: localhost:62505
Connection: close
Content-Length: 30

encKey=9527&rawText=Darkthread

請 OP 人員操作時,先下指令 type ApiTest-1.txt | clip,將上述內容存入剪貼簿,接著 telnet localhost 62505 連上 IIS 主機,連線後畫面會變黑,此時按滑鼠右鍵貼上放在剪貼簿的內容,即可得到 IIS 回應。實際操作如下:

野外求生系列 - 無工具 WebApi 徒手測試 Part 2

若參數要採 JSON 方式上傳,則 Content-Type 改為 application/json 即可:

POST http://localhost:62505/codecapi/batchdecryptdata HTTP/1.1
Content-Type: application/json
Accept: */*
Host: localhost:62505
Connection: close
Content-Length: 67

{encKey:"9527",encData:["aNcjoi5QprU=","Ql9bsv6d1BVeq/9icNTcUQ=="]}

一樣可以測試成功:

野外求生系列 - 無工具 WebApi 徒手測試 Part 2

至於 Content-Length 值,除了自己數字元,也可讓 Notepad++ 等文字編輯器幫忙算:

野外求生系列 - 無工具 WebApi 徒手測試 Part 2

如果懶得徒手編輯 Request 內文,也可用 Chrome F12 或 Fiddler 側錄 POST 傳送封包抄來用。

C 計劃 IE

由於 telnet.exe 不是預設安裝項目,萬一不幸該 Windows 沒有且無法申請安裝的話,連 IE 都沒得用的機率應該很,就用 IE 吧!

準備一段 JavaScript:

var xhr=new XMLHttpRequest();
xhr.open("POST","http://localhost:62505/codecapi/encryptstring",false);
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send("encKey=9527&rawText=Darkthread");
console.log(xhr.getAllResponseHeaders());
console.log(xhr.responseText);

開啟 IE 先連上該網站不存在的網址使之出現 HTTP 404 畫面,按 F12 開啟開發者 工具 並切到 Console 主控台進行操作。先進入同網站 HTTP 404 畫面的用意是與待測試 WebAPI URL 形成同一網域來源,避免 XHR 請求違反 同源政策(Same-Origin Policy) 被阻擋。(我用 IE11 模擬測試,預估同做法在 IE8 亦可行,如有錯請指正)

野外求生系列 - 無工具 WebApi 徒手測試 Part 2

如上圖所示,透過 IE XMLHttpRequest 可成功送出 WebAPI POST 請求。

以 JSON 傳送參數的做法大同小異:

var xhr=new XMLHttpRequest();
xhr.open("POST","http://localhost:62505/codecapi/batchdecryptdata",false);
xhr.setRequestHeader("Content-Type","application/json");
xhr.send('{encKey:"9527",encData:["aNcjoi5QprU=","Ql9bsv6d1BVeq/9icNTcUQ=="]}');
console.log(xhr.getAllResponseHeaders());
console.log(xhr.responseText);

D 計劃 VBScript

如果線上環境禁用 PowerShell 卻沒封鎖 VBScript 的話? (PowerShell 因危險禁用,寫 VBScript 卻可以? 感覺沒道理呀? 但每一條奇怪規矩的背後都有故事,一切就回歸黑格爾的名言「凡存在必合理」吧!)

C 計劃可以改成 VBScript 版:

Dim xhr
Set xhr = CreateObject("Microsoft.XmlHttp")
Call xhr.open("POST","http://localhost:62505/codecapi/encryptstring",false)
Call xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
Call xhr.send("encKey=9527&rawText=Darkthread")
WScript.Echo(xhr.getAllResponseHeaders())
WScript.Echo(xhr.responseText)

測試成功。

野外求生系列 - 無工具 WebApi 徒手測試 Part 2

再補上三種替代方案,祝大家荒野求生愉快~

Considering the case that PowerShell is prohibited in production environment, this article provider some alternative ways to test web api with built-in tool, including telnet, IE and VBScript.


以上所述就是小编给大家介绍的《野外求生系列 - 無工具 WebApi 徒手測試 Part 2》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

工程问题C++语言求解

工程问题C++语言求解

Delores M.Etter、Jeanine A.Ingber / 冯力、周凯 / 机械工业出版社 / 2014-8 / 79元

本书介绍了如何利用ANSIC++编程语言以基于对象的编程方式来解决工程问题。书中引用了大量来自于不同工程、科学和计算机科学领域的示例,是一本理论和实践结合紧密的教材。针对C++基本语法的各个部分,由浅入深地进行讲解。每讲解一部分基础知识,同时会结合多个相关实例,实例内容详实,紧贴所讲内容,使读者能够立刻对所学知识进行练习,实战性强。一起来看看 《工程问题C++语言求解》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具