-
Notifications
You must be signed in to change notification settings - Fork 47
Expand file tree
/
Copy pathippsec-video-index.json
More file actions
9508 lines (9508 loc) · 492 KB
/
Copy pathippsec-video-index.json
File metadata and controls
9508 lines (9508 loc) · 492 KB
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
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
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"metadata": {
"source": "ippsec.rocks dataset.json + web research",
"total_entries": 9245,
"total_unique_content": 533,
"generated": "2026-04-10",
"ippsec_youtube": "https://youtube.com/ippsec",
"ippsec_search": "https://ippsec.rocks",
"ippsec_github": "https://github.com/IppSec",
"ippsec_contributions": "https://ippsec.rocks/contributions/"
},
"stats": {
"htb_machines": 432,
"uhc_machines": 12,
"vulnhub_machines": 4,
"academy_modules": 17,
"sherlocks_dfir": 7,
"tutorials_methodology": 61
},
"machines": [
{
"name": "Flight",
"os": "Windows",
"difficulty": "Hard",
"techniques": [
"Introduction",
"Start of Nmap",
"Playing with the web page, but everything is static doing a VHOST Bruteforce to discover school.flight.htb",
"Discovering the view parameter and suspecting File Disclosure, testing by including index.php and seeing the source code",
"Since this is a Windows, try to include a file off a SMB Share and steal the NTLMv2 Hash of the webserver then crack it",
"Running CrackMapExec (CME) checking shares, doing a Spider_Plus to see the files in users",
"Running CrackMapExec (CME) to create a list of users on the box then doing a password spray to discover a duplicate password",
"Checking the shares with S.Moon and discovering we can write to the Shared Directory",
"Using NTLM_Theft to create a bunch of files that would attempt to steal NTLM Hashes of users when browsing to a directory getting C.Bum's creds with Desktop.ini",
"C.Bum can write to Web, dropping a reverse shell",
"Reverse shell returned as svc_apache, discovering inetpub directory that c.bum can write to",
"Using RunasCS.EXE to switch users to cbum"
]
},
{
"name": "RegistryTwo",
"os": "",
"difficulty": "",
"techniques": [
"Start of nmap",
"Enumerating port 5000/5001 to see a Docker Registry and Auth Server",
"Creating our auth token for the Docker Registry",
"Adding the SSL Cert to our certificate store, then doing a docker pull to download and run the container",
"Discovering JSESSIONID Cookie, attempting the weird directory traversal bug of /..;/ (nginx directory didn't have a trailing slash on the location)",
"The Examples directory has a sessions example that lets us modify the session, doing this to get a File Disclosure vulnerability then downloading the WAR file hosting the app",
"Opening the WAR in JD-GUI then examining the source code, discovering we can change our user to admin by editing the session",
"Pointing the RMI.HOST back to us, then use YSOSERIAL to host a malicious server",
"YSOSERIAL-MODIFIED Docker is up, using YSOSERIAL to start a JRMP Listener and host a malicious payload",
"Shell on the container, showing where IPv6 addresses are stored (/proc/if_inet6) and that we could have gotten this with the file disclosure which allows for bypassing the firewall, did not need to do",
"Looking at the source code again, discovering we can use the RMI to perform file operations on the host"
]
},
{
"name": "Zipping",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap",
"Discovering a likely LFI in product.php but cannot use filters, likely because there is a file_exists() check",
"Playing with the File Upload functionality",
"Talking about the PHAR wrapper in PHP, showing it will bypass the file_exist and we can go into the ZIP to bypass the .pdf check",
"Uploading the phar archive, and getting RCE through the LFI and PHAR wrapper",
"Showing the intended File Disclosure vulnerability, by uploading a zip with a symlink",
"Creating a python script to automate the file disclosure vulnerability, making it easier for us to download files",
"Script completed, looking at the PHP Code, then showing another unintended solution with a zip file and null byte",
"Explaining what happened with the null byte",
"Showing the intended solution with the null byte, talking about how we can bypass this regex with CRLF Injection due to lack of multi-line",
"Dumping the SQL Database with a union injection"
]
},
{
"name": "Aragog",
"os": "",
"difficulty": "",
"techniques": [
"Start of Recon",
"Notice SSH configured for Pub Key Only. Hint at what to grab later!",
"Grabbing test.txt off ftp server via anonymous auth",
"Determining if I want to go down the \"Exploit VSFTPD\" rabbit hole",
"Viewing test.txt and hosts.php",
"Figuring out how hosts.php works and discovering XXE",
"Start of XXE Discovery",
"Making the XXE Output /etc/passwd",
"Encoding output in Base64 in order to view PHP Files",
"Using Burp Intruder to BruteForce Files",
"Creating a program to bruteforce home directories",
"Program Finished. Finding SSH ID_RSA Key"
]
},
{
"name": "Absolute",
"os": "Windows",
"difficulty": "Insane",
"techniques": [
"Start of nmap discovering Active Directory (AD)",
"Using wget to mirror the website, then a find command with exec to run exiftool and extract all user names in metadata",
"Using Username Anarchy to build a wordlist of users from our dump and then Kerbrute to enumerate valid ones",
"Building Kerbrute from source to get the latest feature of auto ASREP Roasting",
"Kerbrute pulled the wrong type of hash, using the downgrade to pull etype 18 of the hash",
"Running Bloodhound with D.Klay, using Kerberos authentication",
"Going over the bloodhound data and finding some attack paths",
"Manually parsing the Bloodhound with JQ to show descriptions for all users and finding the SVC_SMB password in the Description",
"EDIT: Don't want to use Blodhound? Showing LdapSearch with Kerberos, and why the FQDN has to be first in the /etc/hosts file",
"End of edit: Using SMBClient with SVC_SMB and Kerberos to download files",
"Sharing my internet connection from Linux to Windows, so I can run test.exe on Windows"
]
},
{
"name": "Academy",
"os": "Linux",
"difficulty": "Easy",
"techniques": [
"Start of nmap",
"Adding academy to our host file, then taking a look at the web page",
"Discovering a weird port (33060), attempting to enumerate it manually",
"Discovering admin.php from our gobuster results",
"Playing with having spaces in usernames, then seeing roleid in the parameter",
"Creating and logging in with an admin to see a new vhost",
"Looking for Laravel Exploits, finding a metasploit module",
"Getting the APP_KEY from the laravel error page, which is needed for exploitation",
"Using metasploit to exploit Laravel and send the requests through burpsuite so we can analyze the exploit",
"Analyzing the exploit, going to CyberChef to decrypt the payload",
"Reverse Shell returned"
]
},
{
"name": "Academy Intro",
"os": "",
"difficulty": "",
"techniques": [
"Academy URL: https://academy.hackthebox.eu",
"Accessing Academy",
"Talking about Paths",
"Talking about what a Cube is",
"Showing all the modules and tiers",
"Starting the Intro to Academy Course",
"Showcasing interactive modules by starting a pwnbox instance",
"Spawning a lab to interact with"
]
},
{
"name": "Access",
"os": "Windows",
"difficulty": "Easy",
"techniques": [
"Begin of recon: ftp, telnet, IIS 7.5",
"Downloading all files off an FTP Server with WGET",
"Examining the \"Access Control.zip\" file.",
"Cracking a zip file with John",
"Creating a wordlist for cracking the zip (strings of the mdb file)",
"Exploring the MDB Files (Access Database) with MDBTools (mdb-sql and mdb-tables)",
"Grabbing the same password we cracked by checking the auth_user table",
"Converting the PST File (Outlook Email) to PlainText via readpst",
"Logging into telnet with the credentials from the email",
"Switching to a Nishang Shell to execute powershell",
"Running JAWS (Just Another Windows Scanner)",
"Discovering Stored Credentials on the box for ACCESS\\Administrator"
]
},
{
"name": "Active",
"os": "Windows",
"difficulty": "Easy",
"techniques": [
"Begin of recon",
"Poking at DNS - Nothing really important.",
"Examining what NMAP Scripts are ran.",
"Lets just try out smbclient to list shares available",
"Using SMBMap to show the same thing, a great recon tool!",
"Pillaging the Replication Share with SMBMap",
"Discovering Groups.xml and then decrypting passwords from it",
"Dumping Active Directory users from linux with Impacket GetADUsers",
"Using SMBMap with our user credentials to look for more shares",
"Switching to Windows to run BloodHound against the domain",
"Analyzing BloodHound Output to discover Kerberostable user",
"Performing Kerberoast attack from linux with Impacket GetUsersSPNs"
]
},
{
"name": "Acute",
"os": "Windows",
"difficulty": "Hard",
"techniques": [
"Start of nmap, the Server Header changes based upon DNS",
"Navigating to the website, discovering the \"New Starter Form\" which has some key information like a welcome password and username convention",
"Password spraying the Powershell Web Access (PSWA), discovering a valid credential but wrong host, word document had another host which is valid for edavies",
"Playing around in the PSWA",
"Looking at hidden files, discovering c:\\utils\\desktop.ini which states its a directory that is excluded by AV",
"Making the mistake of running WinPEAS inside the PSWA",
"Setting up ConPtyShell to get a proper PTY reverse shell on windows",
"Making some light modifications to ConPtyShell in order to evade antivirus",
"Getting the ConPtyShell and showing the colors/tab autocomplete",
"Running WinPEAS to show another user is logged on (and the AV Exclusions)",
"Switching to Metasploit, because it makes it easier to migrate into an interactive process, which allows us access to view the desktop of the logged in user"
]
},
{
"name": "Administrator",
"os": "",
"difficulty": "",
"techniques": [
"Introduction, assumed breach box",
"Start of nmap",
"Checking out what the credentials we are given go to, see WinRM but it doesn't give us much",
"Running python bloodhound as olivia",
"Looking at the json output manually to discover non-default groups",
"Examining Olivia's outbound controls to see there is a chain to Benjamin, who has FTP Access",
"Using Net RPC to change Michael and Benjamin's password",
"Downloading the Password Safe database off the FTP Server, then cracking it",
"Extracting the passwords from the password safe and then spraying to find Emily's is still valid",
"Going back to Bloodhound, discovering Emily has GenericWrite over Ethan, who can DCSync.",
"Running TargetedKerberoast to take advantage over GenericWrite and make Ethan's account kerberoastable and then crack it",
"Running SecretsDump then talking about other flags like PasswordHistory"
]
},
{
"name": "Admirer",
"os": "Linux",
"difficulty": "Easy",
"techniques": [
"Doing nmap quickly by not running scripts to get open ports, then using that output to run scripts.",
"Checking out the webserver, discovering robots.txt",
"Running gobuster on the admin-dir with the extensions txt and php",
"Finding credentials.txt within that admin-dir",
"Logging into FTP to discover the web directory source",
"Running gobuster again on utility-scripts to discover adminer.php",
"Going to adminer and trying to login",
"Bypassing adminer authentication by creating a MySQL Database",
"Failing to drop a file in adminer",
"Using LOAD DATA LOCAL to insert a file into our database",
"Uploading the servers index.php to our database and discovering the password",
"SSH into the server with the password found before"
]
},
{
"name": "AdmirerToo",
"os": "Linux",
"difficulty": "Hard",
"techniques": [
"Start of nmap, discovering a webserver and filtered port",
"Discovering a hostname in the 404 not found message in the mailto section",
"Gobuster VHOST Discoery finds the subdomain db.admirer-gallery.htb which is adminer. Playing with the application and raw SQL Commands",
"Trying to write files with INTO OUTFILE, also testing the secure file priv default directory for MySQL which is the most reliable",
"Going to google and finding this version of adminer is vulnerable to a SSRF, but having trouble with this because the login for adminer is different",
"Intercepting the login request, finding a hardcoded password that doesn't really help us",
"Installing adminer in a docker container, so we can play with the application locally which helps us understand the SSRF Exploit",
"Finding a python3 http server redirect example to use for our SSRF",
"Performing the SSRF Vulnerability failing to extract local files",
"The CSRF is annoying, configuring burpsuite to replace variables in our post automatically so we don't need to manually intercept.",
"Having the SSRF access localhost:4242 (the filtered port from nmap), we see the OpenTSDB application, finding an exploit"
]
},
{
"name": "Aero",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap",
"Looking for Windows Exploits around Themes and discovering ThemeBleed (CVE-2023-38146)",
"Creating a DLL that exports VerifyThemeVersion and then compiling from Linux",
"Showing the exports of the DLL to confirm it is there, then hiding the ReverseShell export",
"Testing our DLL from our windows computer",
"Creating the malicious Windows Theme",
"Setting up a SOCAT forward to send port 445 from our linux box to our Windows Box",
"Updating the IP Address in our DLL and then getting a shell",
"Downloading the PDF by converting it to base64 and then copy and pasting it to our box",
"Researching CVE-2023-28252, which is a Windows Local Privesc in the Common Log File System (CLFS) and patched back in April 2023",
"Opening the CLFS Exploit up in Visual Studio and placing a Powershell Web Cradle to send a reverse shell and getting Root"
]
},
{
"name": "Agile",
"os": "Linux",
"difficulty": "Medium",
"techniques": [
"Description timestamps will be populated later today."
]
},
{
"name": "AI",
"os": "",
"difficulty": "",
"techniques": [
"Begin of Recon",
"Taking a look at the page, noticing the site is PHP, running GoBuster to find other PHP Files.",
"Playing with the File Upload, failing to identify how uploaded files are stored",
"Investigating PHP Files that GoBuster found, discovering intelligence.php",
"Searching for Text to Speach programs (create WAV Files)",
"The first program didn't do a good job saving WAV Files, Downloading Festival",
"Installing apt-file so we can use apt to search for what package contains a file (like yum whatprovides)",
"Using text2wave to create wav files and upload them, then discover a SQL Injection over voice",
"Having trouble getting the voice recognition to recognize the word union. Using \"intelligence.php\" to discover alternative words.",
"Extracting the username and password out of the database, then logging in via SSH",
"Investigating how the file upload script works, turns out to be a dead end",
"Running linPEAS to check other privesc paths (see JDWP)"
]
},
{
"name": "Alert",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap",
"Enumerating the Link_Share for Directory Traversal, coming up with nothing",
"Discovering XSS in the Contact Us Form",
"Playing with the XSS, we keep getting extra URL Encoded data turns out its not XSS but instead the admin is clicking links",
"Sending only a link, discovering they click it. Now we need to find XSS in a page so manipulate their browser. Playing with the Markdown converter",
"Creating an XSS Payload that will navigate to a page and send us the page and discovering a messages page",
"The page shows us there is a messages.php file, showing other ways to see this. Then finding a file disclosure vulnerability",
"Downloading the HTPASSWD from our File Disclosure vulnerability, then cracking it",
"SSH into the box as Albert, looking for any databases we can exfil",
"Discovering there is a PHP Webserver running as root in /opt/website-monitor and we can write files to the config. Dropping a php script to get root"
]
},
{
"name": "Ambassador",
"os": "Linux",
"difficulty": "Medium",
"techniques": [
"Start of nmap",
"Discovering Grafana and seeing it is ~2 years old",
"Looking for exploits",
"Manually performing the exploit",
"Looking for interesting files, extracting Grafana config which lets us log in",
"Extracting the SQLite3 Database in order to get the MySQL Password",
"Logging into MySQL and getting SSH Creds from the whackywidget database",
"Looking at the WhackyWidget application and discovering an Consul API Key",
"Looking for the Consul API Documentation",
"Playing with the API, examining the Metasploit script and building out our curl request",
"Building a JSON file which will create a Consul Script to send us a reverse shell and getting root"
]
},
{
"name": "Analysis",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap",
"Discovering the internal.analysis.htb subdomain",
"Talking about why I want to run FeroxBuster here and showing the menu so we can stop crawling non-interesting directories (ex: js, css, img)",
"Discovering list.php in users and fuzzing parameters",
"Start of program to bruteforce usernames",
"Got the first character of every username, get the full name",
"Discovering the script it vulnerable to LDAP Injection",
"Converting our ldap username bruteforcer to exploit this ldap injection and exfil fields",
"Talking about having to deal with wildcards in the field",
"Completing the script",
"Discovering we can upload PHP Scripts using the SOC Report page"
]
},
{
"name": "Analytics",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap",
"Discovering Metabase, noticing the HTTP Headers are different. Checking TTL just to see if it decrements from the main web page.",
"Searching for an exploit for metabase, then enumerating version",
"Manually exploiting Metabase by pulling the setup-token, then getting injection on the /setup/validate endpoint through the JDBC Driver",
"Reverse shell returned",
"Discovering credentials in the environment variables, then ssh into the box",
"Googling the kernel to discover its vulnerable to GameOverlay",
"Explaining the gameoverlay exploit (CVE-2023-23640, CVE-2023-32629)",
"Stepping through the exploit manually to understand how the overlay fs works, and what the exploit did to abuse it",
"Looking into the permissions of the binaries that were created"
]
},
{
"name": "Anubis",
"os": "Windows",
"difficulty": "Insane",
"techniques": [
"Start of nmap, getting hostname and",
"Discovering the Server Header changes for virtualhost, probably navigating to a different box/container/etc [MasterRecon]",
"Getting a good SSTI Fuzz String then identifying this string causes an error on the webserver. Removing parts of the string until we see the type of SSTI",
"Playing with ASP Code in this SSTI or ASP Code Injection... Not sure what the vulnerability is",
"Getting a VBScript One Liner to execute code and then getting a reverse shell",
"Discovering a x509 certificate, decoding it with openssl, and discovering a second hostname",
"Downloading and running chisel to setup a reverse socks proxy so we can attempt to pivot through this container",
"Running nmap through the chisel socks proxy with proxychains",
"Setting FoxyProxy to only send specific domains through our proxy",
"Discovering the softwareportal.windcorp.htb attempts to install software on machines, set it to our machine and wireshark to see how 3it connects back to us",
"Using responder to intercept the WinRM Connection and then use hashcat to crack the credentials"
]
},
{
"name": "Apocalyst",
"os": "",
"difficulty": "",
"techniques": [
"Enumeration Start",
"WPScan Start",
"Directory Scanning with GoBuster",
"Examining WPScan Output",
"Bruteforcing with WPScan",
"Bruteforcing HTTP Post with Hydra",
"Edit WP Theme to get Code Execution",
"Return of Reverse Shell",
"Privelege Escalation Word Writeable Passwd"
]
},
{
"name": "AppSanity",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap, showing 5985 isn't in the top1000 so doing a full port scan",
"Taking a look at the MedDigi website",
"Taking a look at the Signup Request seeing AcctType",
"Changing the AcctType to 2 and getting a different privilege",
"VHost enumeration shows the portal.meddigi.htb domain, using our pre-existing session from the main page on this domain to bypass login",
"Discovering SSRF in the Prescriptions page",
"Discovering the File Upload requires a PDF but checks the magic bytes so we can make a PDF Header on our file and upload ASPX Web Shells",
"Going back to the SSRF and discovering we can use time-based queries to identify ports listening on localhost",
"Using FFUF to filter by duration to show us the requests that don't take a long time",
"Discovering port 8080 shows our upload location, then navigating to it and getting a shell",
"Finding DLL's the webserver uses, they are dotnet so copying them to a windows box so we can use dnspy and finding a password"
]
},
{
"name": "APT",
"os": "Windows",
"difficulty": "Insane",
"techniques": [
"Start of nmap and poking at the webserver",
"Looking into MSRPC, showing MSF info overflow which is why I had historically ignored it",
"Poking at RPC with Impacket's RPCMap",
"Converting a RPC Script to get IPv6 address from Python2 to Python3",
"Using nmap to scan the IPv6 Address",
"Showing how I would enumerate a Firewall, nothing works here but something I do.",
"Finding SMB accepts anonymous users and contains an Active Directory Backup",
"Using Impacket's SecretsDump to extract the NTDS.DIT with password last set, user status, and history",
"Using KerBrute to enumerate valid users on the box based upon the AD Backup",
"Using PyKerbrute to bruteforce Henry.Vinson's account",
"Using Socat + CrackMapExec to enumerate IPv6 (if i updated CME, it would be able to do IPv6)"
]
},
{
"name": "Arctic",
"os": "Windows",
"difficulty": "Easy",
"techniques": [
"Enumerate with nmap",
"Going to the webpage",
"Using SearchSploit to find ColdFusion Exploits",
"Attempt to exploit through MSF. Debug why it failed.",
"Setting up a Burp Redirect listener",
"Examining request send by MSF Exploit",
"Getting a reverse shell",
"Using Unicorn to create a Powershell Meterpreter Loa",
"Reverseshell returned",
"Using the MSF post module local_exploit_suggestor"
]
},
{
"name": "Ariekei",
"os": "Linux",
"difficulty": "Insane",
"techniques": [
"Explaining VM Layout",
"Poking at Virtual Host Routing (Beehive & Calvin)",
"Fixing GoBuster to find /cgi-bin/",
"Enumerating WAF (Web Application Firewall), to see how it detects Shellshock",
"Using VirtualHostRouting to navigate to Calvin.htb.htb",
"Using ImageTragick to exploit Calvin",
"Calvin Reverse shell returned",
"Poking at /common, which allows pivot to Bastion Host",
"SSH into the Bastion Host",
"Explain SSH Local and Remote Port Forwarding",
"Beehive Reverse Shell Returned"
]
},
{
"name": "Arkham",
"os": "Windows",
"difficulty": "Medium",
"techniques": [
"Begin of Recon",
"Checking the WebPages",
"Examining /userSubscribe.faces, to discover potential deserialization",
"Exploring javax.faces.ViewState",
"Googling around to see what an unencrypted serialized object should look like",
"Checking out SMB to discover an openshare",
"Downloading appserver.zip from batshare via smbclient",
"Cracking a luks encrypted file with dd and hashcat",
"Luks cracked, mounting the disk with luksOpen",
"Discovery of the secret used to encrypt the java object",
"Creating a python script to decrypt the ViewState to verify we have correct crypto settings",
"Script completed, lets test the decryption!"
]
},
{
"name": "Armageddon",
"os": "Linux",
"difficulty": "Easy",
"techniques": [
"Start of the box, showing a quick way to nmap",
"Looking at web page",
"Looking for Drupal Scanners",
"Showing how I would fingerprint opensource apps if there was no scanner",
"Using DroopeScan to scan the site",
"Starting to use Drupalgeddon2 to get a shell",
"Installing gems so DrupalGeddon works",
"Drupalgeddon2 works, going from a webshell to reverse shell",
"Confused about OSError: out of pty devices when improving the shell, give up eventually",
"Looking for users on the box, then hunting for the Drupal configuration",
"Cannot find the drupal configuration, going to google and asking for how to change the SQL Password"
]
},
{
"name": "Artificial",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap",
"Looking at Upload Modules, can see the version of python/tensorflow looking for a way to get RCE in tensorflow h5 files",
"Using docker to run the tensorflow, mounting our cwd in the docker to make it easy to copy files from the docker image",
"Shell returned, looking at the database to get a password hash and cracking it to get another user",
"SSH as the Gael User, discover another webserver running on port 9898 which is BackRest",
"Using find to show files by user/group and discovering a backup of BackRest which contains the password hash, crack it",
"Getting root.txt by backing it up and downloading it",
"Getting root by putting a command in the backup job hook",
"Showing another way to get root by command injection in Restic"
]
},
{
"name": "Atom",
"os": "Windows",
"difficulty": "Medium",
"techniques": [
"Start of nmap",
"Running RPCDump which shows if this is vulnerable to PrintNightmare (Exploit it later)",
"Examining the webpage",
"Explaining why i use lowercase wordlists on against Windows Webservers",
"Listing shares with smbclient to find an open share",
"Decompiling the Electron installer/app with asar",
"Everything is extracted looking at package.json and main.js to find electron-updater",
"Searching for exploits within Electron",
"Using MSFVENOM to build a reverse shell",
"Editing our installer YAML to point to our reverse shell",
"Putting the files on the share and getting our reverse shell"
]
},
{
"name": "Attended",
"os": "Linux",
"difficulty": "Insane",
"techniques": [
"Showing a tmux keybinding to",
"Setting up an IPTables rule to log new connections",
"Using SWAKS to send an email",
"Starting up a python SMTP Server so we can see the email coming back to us",
"Finding a VIM RCE and verifying it works by using ping",
"Testing a python2 web cradle within the VIM Exploit",
"Explaining how our C2 is going to work and why what we are doing it uniquely",
"Quick high level overview of the C2 Program we are creating",
"Start coding the C2",
"Demoing the C2 Keeping the HTTP Request alive until a command is sent",
"Updating our Client/Implant to work with the new C2"
]
},
{
"name": "Authority",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap",
"Taking a look at the website",
"Using NetExec to search for file shares and discovering the Development share is open. Using smbclient to download everything",
"Exploring the Ansible Playbooks in the Development Share to discover encrypted passwords (ansible vault)",
"Converting the Ansible Vault Hashes to John/Hashcat format so we can crack them",
"Decrypting the values and getting some passwords, one of which lets us log into PWM (webapp)",
"Adding a rogue ldap server into the PWM Config, then clicking test config will send us the password for the ldap account",
"Running Certipy to find the server is vulnerable to ESC1, we just need to enroll a computer",
"Using NetExec to show how the MachineAccoutnQuote, confirming we can enroll machines",
"Using Impacket to add a rogue computer",
"Using Certipy to perform the ESC1, it works but smart card login isn't enabled so we can't log in right away."
]
},
{
"name": "Awkward",
"os": "Linux",
"difficulty": "Medium",
"techniques": [
"Introduction",
"Start of nmap",
"Taking a look at the web page, finding users on the site, and using FFUF to VHost Enumeration due to talking about a store",
"Fingerprinting the websites, dev looks to be PHP and the main page appears to be Vue",
"Exploring the vue app in Firefox Dev Tools, discovering some routes in the webpack which lead to an API",
"An JWT error message is displayed when accessing some API Pages, removing the token and bypassing authentication",
"Explaining why the web application skips authentication when a cookie is not present, and showing how similar it was to the OMIGod Vulnerability",
"Extracting all users from the page and then using curl to save the hashes to a file. Use CrackStation to crack hashes and get a cred",
"Logged in as Christopher.Jones, checking the Online Store Status link which is vulnerable to SSRF",
"Using FFUF to fuzz for all possible ports and using a bash trick to create a wordlist based upon a range of numbers without creating a file",
"Discovering some API Documentation on a page on port 3002",
"The API all-leave page uses awk, and we can abuse this binary to perform a file disclosure vulnerability if we can poison user names."
]
},
{
"name": "Axlle",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap",
"Looking at what an XLL Is",
"Finding a skeleton xll payload, then compiling it on Linux",
"Shell returned, grabbing the NTLMv2 Hash of our user with responder",
"Looking into hMailServer, discovering emails from other users. Hints at dropping URL Shortcuts in a directory",
"Converting the XLL Payload to an exe, then uploading it to the box and creating a URL Shortcut and getting shell as Dallon.Matrix",
"Using Powershell to search a directory for files containing password, discovering the Powershell ConsoleHost_History",
"Using Bloodhound.Py to get bloodhound data",
"Discovering we can ForceChangePassword on other users",
"For some reason our Bloodhound Python Ingestor didn't get the WinRM Edge, running Sharphound to see it should of been there",
"The users in App Dev can enter the \"App Development\" directory which has a program called kbfiltr, and a hint towards StandaloneRunner.exe being ran"
]
},
{
"name": "Backdoor",
"os": "Linux",
"difficulty": "Easy",
"techniques": [
"Start of nmap",
"Starting WPSCAN",
"There's no index.php in wp-content/plugins/, which lets us find a vulnerable plugin (eBook Download 1.1)",
"Playing with the eBook Download LFI",
"Doing a full nmap portscan",
"Using the LFI to extract the process names with curling /proc and doing some cut/sed magic",
"Downloading the cmdline for the first 1000 PID's",
"Using find to show us files greater than a couple bytes to show us every valid PID",
"Examining the final output, discovering screen running and gdb",
"Using metasploit to exploit GDB",
"Reverse shell returned, playing with screen to connect to the session"
]
},
{
"name": "Backfire",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap",
"Showing Havoc adding the X-HAVOC true header on GET/POST requests on its HTTP Hosting Service",
"Seraching CVEDetails finding CVE-2024-41570 which is a SSRF",
"Some quick C2 talk before we dive into the SSRF",
"Going over the Havoc SSRF Script",
"Talking about a research article that looked at multiple open-source C2's and the vulnerabilities they had",
"Allowing our SSRF to make a websocket connection, which lets us authenticate and perform the RCE in Havoc",
"Getting a shell, explaining our attack chain again",
"Discovering Hardhatc2, looking at google and seeing it has a static JWT Signing Key",
"Standing up HardHat c2 via docker to craft an authenticated cookie, then tunneling to backfire and bypassing auth. Use terminal to get shell",
"Our new user can run iptables/iptables-save with sudo. Using this combo to write to roots authorized_keys2 to get a shell, which is a bit safer than authorized_keys"
]
},
{
"name": "Bagel",
"os": "Linux",
"difficulty": "Medium",
"techniques": [
"Introduction",
"Start of nmap",
"Taking a look at the web page",
"Looking for LFI, then exploring /proc to find where the application is and extracting the source code",
"Taking a look at the Python Source Code and discovering port 5000 is the dotnet application and uses websockets",
"Using wscat to test the websocket",
"Bruteforcing the /proc/{pid}/cmdline directory in order to see running processes and find the dotnet dll",
"Reversing Bagel.dll and discovering a deserialization vulnerability in dotnet which allows us to read files",
"Looking at what TypeNameHandling means in NewtonSoft's deserialize",
"Looking for a gadget to use with our deserialization",
"Building the deserialization payload",
"Dumping Phil's SSH Key, then logging in"
]
},
{
"name": "Bank",
"os": "",
"difficulty": "",
"techniques": [
"Nmap Results",
"DNS Enumeration",
"HTTP VirtualHost Routing",
"DirSearch (Web Enumeration)",
"HTTP Redirect Vulnerability",
"PW in Balance-Transfer",
"File Upload, WebShell",
"First Shell",
"First Privesc Method (SUID)",
"Second Privesc Method (passwd)"
]
},
{
"name": "BankRobber",
"os": "Windows",
"difficulty": "Insane",
"techniques": [
"Begin of nmap, discover XAMPP",
"Running GoBuster while we poke at the website",
"Registering an account then seeing what new functions are avaialble",
"Attempting to transfer money and discovering XSS",
"Basic Cross Site Scripting worked, check cookies to see HttpOnly is false then do a basic XSS to steal cookies",
"Doing the OnError payload to steal administrative cookie",
"Logging in as the administrative user, checking out the new pages. Search which is SQL Injectable and BackDoorChecker which can execute code from localhost",
"Playing with the SQL Injection in Search, confirming it is union then sending it to SQLMap to dump the database",
"Using SQL Injection to read the source code via LOAD_FILE in a Union Injection.",
"Creating a XSS Payload that can send a Post Request (XMLHttpRequest)",
"Reverse shell returned",
"Manually poking around the box, discover port 910 is open but our nmap didn't show it"
]
},
{
"name": "Bart",
"os": "Windows",
"difficulty": "Medium",
"techniques": [
"Begin Recon, Windows IIS/OS Mapping and GoBuster",
"Explanation of Virtual Host Routing",
"Developers name exposed in HTML Source, also discover /monitor",
"Enumerating Username in PHP Server Monitor: Challenge Watch Sense to und",
"erstand CSRF and write an automated bruteforcer",
"Discover of Internal-01.bart.htb",
"Harveys Password with Hydra (Note: This is bypassable if you DIRBUST to find /Log/log.php)",
"Finally got Hydra to return the password!",
"Log Poisoning + LFI = Remote Code Execution",
"Return of Reverse Shell",
"Why you should check if you're a 32-bit process on a 64-bit machine",
"### Start of Failing attempting to do a RunAs... Lol."
]
},
{
"name": "Bastard",
"os": "Windows",
"difficulty": "Medium",
"techniques": [
"Sherlock was fixed, should no longer report the false negative https://github.com/rasta-mouse/Sherlock/commit/ceb49f5b54be54effbada47fa3198abf744af390",
"If you wanted to do this with MSF -- Watch the Arctic Video and use the exploit shown in the video. If it doesn't work, try changing the payload with the exploit and ensure you're a 64 bit process."
]
},
{
"name": "Bastion",
"os": "Windows",
"difficulty": "Easy",
"techniques": [
"Begin of recon",
"Using SMBClient to view open shares, discover /Backups",
"Mount the SMB Share",
"Playing with SMBMap which is a bit more automated but write files!",
"Checking out files in the /Backups share",
"Using 7zip to view files in a VHD file",
"Installing libguestfs-tools in order to use guestmount",
"Mounting the VHD with guestmount",
"Extracting local passwords from SAM and SYSTEM with secretsdump",
"Cracking the hash and then using SSH to login to the box",
"Viewing local adminstrators and seeing administrators is not actually disabled (backup indicated it was)",
"Running JAWS"
]
},
{
"name": "Beep",
"os": "",
"difficulty": "",
"techniques": [
"Watch me fail my way to victory as I exploit beep 4 different ways. Next time I try to exploit something multiple ways, I'll probably split it up in multiple videos.",
"Method 1: LFI + Password",
"Method 2: Turning LFI into RCE",
"Method 3: Code exec via call",
"Method 4: Shellshock"
]
},
{
"name": "BigBang",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap",
"Discovering BuddyForms on Wordpress, manually discovering the version (before this we ran WPSCAN aswell)",
"Finding a BlogPost showing a File Disclosure Vulnerability in BuddyForms and they used a Phar Deserialization trick to get RCE but this doesn't work on PHP8",
"Playing with the File Disclosure, using a PHP Filter Chain to prepend GIF89a to our file and show we can trick the magic byte trick",
"Finding a Blog Post which talks about a buffer overflow in GLIBC ICONV for PHP, which shows we can get RCE on file reads up to php 8.3.7",
"Setting up WrapWrap which is just a better way to prepend/append bytes, showing we do miss the end of the file when we use this technique",
"Modifying the CNEXT exploit which exploits the ICONV in PHP to achieve RCE on file_get_contents",
"Reverse shell returned! Using Chisel to setup a tunnel to the MySQL Server, so we can dump and crack the wordpress database",
"Shell as Shawking, finding Grafana and the SQLITE Database, downloading it and cracking the password to get another user",
"Downloading the Satellite APK File, then decompiling it to discover the HTTP Requests it makes to the server",
"Logging into the satellite webserver"
]
},
{
"name": "Bighead",
"os": "Windows",
"difficulty": "Insane",
"techniques": [
"Begin of Nmap",
"Pulling important information from the website",
"Discovering DNS Names, adding stuff to /etc/hosts",
"Odd behavior with code.bighead.htb, redirects us to 127.0.0.1; change that with Burp",
"Using wfuzz to dirbust, with the ability to see HTTP Codes (hunting for 418)",
"Found BigHead Web Server on Github, pulling Zips and cracking",
"Before reversing the binary, keep hunting for information about the OS",
"Discovering PHPInfo within the PhpMyAdmin directory, has OS.",
"Installing Immunity and Mona",
"Grabbing MinGW so we can run the Bighead Webserver",
"Crashing the webserver, seeing we have",
"Sending a pattern to the box and examining the stack to see where our overwrites are"
]
},
{
"name": "Bitlab",
"os": "",
"difficulty": "",
"techniques": [
"Begin of recon",
"Taking a loot at the webserver and seeing a GitLab signin page",
"Using wget and exiftool to check metadata on files on the server to see when stuff was uploaded",
"Running gobuster, explaining why we need the Wildcard flag on this box for this tool to work",
"Finding the /help directory which has some javascript that contains the password to GitLab",
"Logging into Gitlab with creds from the bookmark.html",
"Showing how to do GoBuster with a cookie (gets past the wildcard issue earlier in the video)",
"Looking at snippets to see a Postgresql password",
"Looking at Git Commit History of various files to see there's a post hook to upload merges to a webserver",
"Creating a New Branch on Profile, adding a webshell, then merging it to trigger it to be uploaded to the server",
"CMD PHP Shell is on the server, lets get a reverse shell.",
"Reverse shell returned, setting up a proper pty with rows and cols"
]
},
{
"name": "Bizness",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap",
"Seeing JSESSIONID and NGINX trying the off by slash exploit to get access to /manager, doesn't work here",
"Dirbusting with FFUF because the lack of 404's messed with gobuster",
"Discovering the OfBiz Version, looking for exploits",
"Going over the Authentication Bypass in OfBiz",
"Downloading YSOSERIAL and building a Docker so we don't have to worry about Java Versions",
"Building a ReverseShell Payload that works with YSOSERIAL",
"Reverse shell returned! Looking at OfBiz and finding out it uses the Derby Database",
"Copy the Derby Database then using IJ from Derby-Tools to dump the data",
"The hash in the database is a URL Base64 Encoded, decoding it reveals it has a length of 40 which is normal for Sha1Sum. Decoding it then cracking with hashcat"
]
},
{
"name": "Blackfield",
"os": "Windows",
"difficulty": "Hard",
"techniques": [
"Start of nmap",
"Enumerating fileshares with SMBClient and CrackMapExec, highlighting some picky syntax",
"Mounting the profiles$ directory so we can build a username list",
"Using Kerbrute to enumerate valid usernames",
"Running GetNPUsers to perform an ASREP Roast",
"Checking what we can do with the Support User from the ASREP Roast",
"Running the python Bloodhound ingestor from Linux",
"Bloodhound ran, playing around with the data, eventually seeing support can reset audit2020's password",
"Setting an Windows users (Audit2020) password from linux using RPCClient",
"Audit2020 has access to the forensic share which has a memory dump of lsass, running pypykatz to extract credentials",
"Using Evil-WinRM to access the box as SVC_Backup and discovering the backup privilege"
]
},
{
"name": "Blazorized",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap",
"Examining the website looking for interesting functionality",
"The check updates page loads a unique DLL and puts a JWT in the request",
"Opening Blazorized.Helpers.Dll with ilSpy to discover a hardcoded JWT",
"Using Burp to add the header to all of our requests and installing the Blazor Traffic Processor Plugin",
"Examining the traffic, discovering the server instructs our client to get a JWT from localstorage",
"Discovering MSSQL Injection in the Super Admin Panel, getting RCE",
"Reverse shell returned",
"Running SharpHound, then standing up a WebDAV server on nginx so we can use files back to our host over HTTP PUT Requests",
"Starting Bloodhound discovering we can SetSPN on another user",
"Setting the SPN on a user via Powerview, which lets us kerberoast to get a hash and cracking it"
]
},
{
"name": "BlockBlock",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap",
"Registering an account and discovering the chat, examining source and seeing a database solidity contract",
"Testing for XSS, discovering it within the username",
"The /api/info page exposes the JWT, which lets us exfiltrate it even if HTTPONLY is set",
"Using FeroxBuster to enumerate the API with different methods",
"Discovering XSS in the Report feature, and get a hit from the admin, create a JS Payload to exfiltrate the admin token",
"We are now the admin, which has access to a new endpoint that interacts with the blockchain via the json-rpc API playing with endpoints",
"Playing with eth_getAccount",
"Playing with eth_getBlockByNumber, then viewing information on the chain. Enumerating all blocks will start revealing credentials",
"Shell on the box as Keira, can run forge as paul which we can exploit two ways",
"Exploiting forge with path injection since the sudo has no env_reset set"
]
},
{
"name": "Blocky",
"os": "",
"difficulty": "",
"techniques": [
"The STTY command I messed up was simply `stty rows ## cols ##`",
"Begin Recon with Reconnoitre",
"Examining findings from Reconnoitre",
"Decompiling java Jar Files with JAD",
"Using JD-GUI",
"Running WPScan",
"Manually enumerating wordpress users",
"SSH To the box and PrivEsc",
"------ Box Completed, Below extra content (Some mistakes, pretty much do this live without prep)",
"Rabbit hole, gaining access through FTP",
"Finding Wordpress DB Password",
"Switching to WWW-DATA by using phpMyAdmin + Wordpress"
]
},
{
"name": "Blue",
"os": "Windows",
"difficulty": "Easy",
"techniques": [
"Start of Recon",
"Finding NMAP Scripts (Probably a stupid way)",
"Running Safe Scripts - Not -sC, which is default.",
"Listing NMAP Script Categories (Prob a really stupid way)",
"Really Cool Grep (Only show matching -oP)",
"Nmap Safe Script Output",
"Exploiting MS17-010 with MSF",
"Setting up Dev Branch of Empire",
"Starting a Listener",
"Getting a PowerShell Oneliner to launch payload",
"Invoke-Expression (IEX) to Execute Launcher",
"Interacting with a single agent"
]
},
{
"name": "Blunder",
"os": "Linux",
"difficulty": "Easy",
"techniques": [
"Start of NMAP",
"Discovering install.php, which says bludit is being installed.",
"Looking for exploits searchsploit, everything requires Auth",
"Attempting a login and noticing the CSRF Tokens",
"Looking for exploits online that haven't made it to SearchSploit yet",
"Placing the X-FORWARDED-FOR header to bypass brute force protection",
"Creating a Python Brute Forcer",
"Scripting: Grabbing the CSRF Value with python requests",
"Scripting: Grabbing the PHP Session Cookie with python requests",
"Scripting: Sending a login request with python requests",
"Scripting: Telling request to not follow and detect a valid login"
]
},
{
"name": "Blurry",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap, then gobuster to do a vhost scan",
"Enumerating RocketChat version by looking at the version of Meteor it uses",
"Registering for a RocketChat Account then reading the chat to get information about ClearML",
"Logging into ClearML, looking at the project to see some scripts which are running",
"Discovering ClearML Version in the footer of the settings page and finding public exploits",
"Setting up the ClearML API on our box",
"Building our script to upload a pickle artifact to ClearML And getting a shell",
"Copying the SSH Key from the box and logging in",
"We can run a bash script with sudo that runs a pytoch model, before doing so it uses Fickle to identify if it malicious",
"Creating an exploit script to save a malicious pytorch file and getting a root shell",
"BEYOND ROOT: Going into Fickling about how it works, changing our payload from os.system to subprocess.popen and seeing its detection gets less confident"
]
},
{
"name": "Boardlight",
"os": "",
"difficulty": "",
"techniques": [
"Introduction",
"Start of nmap",
"Running a VHOST Scan to discover CRM Subdomain",
"Discovering Dolibarr is running at version 17.0.0 which is vulnerable to CVE-2023-30253",
"Discovering default credentials of admin:admin work then running the exploit",
"Using BurpSuite to act as a Transparent/In-Line proxy so we can proxy the exploit script without editing it, so we can understand what it does",
"Manually stepping through the exploit to understand exactly what it does",
"Reverse shell returned, dumping the local database",