野外求生系列 - 無工具 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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

谷歌的断舍离:互联网企业的破坏式创新

谷歌的断舍离:互联网企业的破坏式创新

[日]辻野晃一郎 / 樊颖 / 机械工业出版社 / 2018-1 / 45.00

本书主要分为三部分: 第一部分主要讨论了世界当下如火如荼的互联网企业进军传统产业大潮,并探讨了传统企业在互联网时代的救赎之路。 第二部分主要探讨了成功体验的反面:速度与迭代,并讨论了传统企业之所以无法实现迭代与快速发展的关键原因。介绍互联网公司如何通过组织精简流程来实现高速竞争时代的机动性。 第三部分讨论了互联网时代究竟需要什么样的人才,传统企业的员工应当怎样投身互联网企业才能避......一起来看看 《谷歌的断舍离:互联网企业的破坏式创新》 这本书的介绍吧!

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

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具