Ibrahim-jaber.com logo
Work With Me

So I wanted to try out Web App and Android App penetration testing the first software I was introduced to was BURP Suite, best in class industry standard tool for Penetration Testing.

Background

It had crossed me as I remember when Pathao App was accused of stealing personal data (Accusation was proved and necessary actions were taken) BURP was used for testing. So I went on a journey to configure BURP for android.

In Android Nougat, we’ve changed how Android handles trusted certificate authorities (CAs) to provide safer defaults for secure app traffic. Most apps and users should not be affected by these changes or need to take any action. The changes include:

https://android-developers.googleblog.com/2016/07/changes-to-trusted-certificate.html

That was the most painful task to do as though burp was easy setup the main problem was to get the certificate working inside Android 7+. I had a Android 9 and the problem with this version (I said problem but its a benefit if you are a general user) was that it did not allow for CA Certificates that are user installed to allow proxy connections that Burp needed in order to work.

The phone I used was a Xiaomi Mi 6x Rooted with Magisk, it is currently running MIUI 11.2 Android Version 9 - Pie.

As expected I followed all steps denoted in their website: Link, I got through some of the basic steps. Then came the most painful part getting the certificate to android. The Steps over at: Configuring Burp Suite With Android Nougat are really great but the current needs are different as android is ever evolving.

Install the Burp Suite CA as a system-level CA on the device. My recommendation for the easiest solution, but does require a rooted device. Also added benefit of not having to set a lockscreen PIN 🙂

Basic requirements

Though I say basic but its the most crucial element to succeeding in solving this simple problem.

The first thing you will need is an android device, it has to be rooted. (Use Magisk as it simply the best i have seen so far due to its ability to hide from apps)

Second you need a Linux Machine - I use Kali Linux on a virtual Machine to do my task.

Steps

Step 1: Start Burp Suite and add a new proxy listener. Make the proxy listener a Specific Address

Burp Suite new proxy listener
Burp Suite new proxy listener

Step 2: Export the Certificate and the Certificate KEY

First Click on Import / Export Certificate then first click on export in DER Format and Save file as cacert.der (you can use any name but I am using this and will be continuing to use this as reference name) then again do the same but this time select private key in DER format and save it as cacertKey.der . I stored them at root for easier manipultaion.

Exporting the Certificate and the Certificate KEY
Exporting the Certificate and the Certificate KEY

Step 3: Open Terminal and Use the following codes

openssl rsa -inform der -in cacertKey.der -outform pem -out cacertKey.pem

the above code will tell openssl to change the key from DER format to PEM format. We need this in order to sign the conversion of our cacert.der certificate to cacert.pem but the the key.

openssl x509 -inform der -in cacert.der -signkey cacertKey.pem -days 730 -outform der -out cacert2.der

The code that worked next would be telling openssl to create a new certificate in der format and save it as cacert2.der this is done in order to keep the original and the edited version. The code above also changes the validity of the certificate which is needed for apps to function properly. A typical certificate would last about 29 months so I gave about 730 days that is equivalent to 2 years or 24 Months. The signkey is our key we have converted this ensures that we are able to import it back to burp as we changed the date of issue and expiry. Next, we will convert the original to a pem certificate.

openssl x509 -inform der -in cacert.der -signkey cacertKey.pem -days 730 -outform pem -out cacert2.pem

This is needed for the android system which reads pems as a valid certificate. After the certificate is generated we will use the below 2 codes

openssl x509 -inform pem -in cacert.pem -subject_hash_old |head -1

cp cacert2.pem <Hash>.0

The first code will provide a result such as below:

Openssl Code Result
Openssl Code Result

The <Hash> for me is 9a5ba575. Up execution of the next code a new file will be generated with the hash and extension of zero.

Step 4: Copy the Cacert2.der and the <hash>.0 file over to android with any tools or method of your liking.

Step 5: Copy the <hash>.0 to the folder /system/etc/security/cacerts/
my preferred file manager for this is Mixplorer.

Step 6: Follow the steps over at Burp Suite - Link, use the file cacert2.der for the task and then proceed to next step

Step 7: Import into burp the Cacert2.der using the old der key.

Importing into burp the Cacert2.der using the old der key.
Importing into burp the Cacert2.der using the old .der key.
The New cacert and Old cacert key.
The New cacert and Old cacert key.

Viola All steps complete now you can start using BURP Suite with your android device.

Raw Codes

openssl rsa -inform der -in cacertKey.der -outform pem -out cacertKey.pem

openssl x509 -inform der -in cacert.der -signkey cacertKey.pem -days 730 -outform der -out cacert2.der

openssl x509 -inform der -in cacert.der -signkey cacertKey.pem -days 730 -outform pem -out cacert2.pem

openssl x509 -inform pem -in cacert.pem -subject_hash_old |head -1

cp cacert2.pem <Hash>.0

Backdoor Attack - 60 Million WordPress Sites at Risk

Ads Temporarily Disabled

I was a DIVI lover and used to recommend it in my community all the time believing it like as if it was the best thing one could expect at a price of just $200 (now 249) for lifetime, until I met Oxygen Page Builder. It was a great deal given the big community and lots of supported third party plugin, worthy mention plugin from TORTOISE IT - Like the Woo Layout Injector and the DIVI layout injector. So why did I still switch read my whole blog and you will understand.

Why I chose DIVI?

First thing to clear is the reason for me getting DIVI:

  • DIVI is user Friendly
  • It's cheap when compared as a lifetime plan
  • The whole community along with market place like ELEGANT MARKETPLACE mad e DIVI a whole new experience.
  • The Drag & Drop system of DIVI was very seamless.
  • It was a framework robust yet easy.

but it was not enough for my projects such as a listing site.

Switching to Oxygen: Reasons

  • No Bloat compared to DIVI
  • Has a learning curve good for people who want to sustain and grow in their knowledge.
  • The small but growing helpful community with other small communities help to grow it fast.
  • The devs are super helpful
  • Its a site builder so one could say its a DIY tool for all needs, I like my sites self curated.
  • If it does not have a feature you want all things are available for you to integrate yourself.

Reasons for the switch

Divi overall is great but the need for third party paid plugins would always get on my nerve even if they were cheap when I bought it. Compared to Oxygen this is different they give you the power to do everything yourself giving it just the right amount of nuclear power to become the best.

Bloat

when it comes to comparing bloat i always felt DIVI to be bloated with features like for example the contact form. I usually end up using CF7 or Fluent Forms this are by far the smallest contact form and end up giving almost zero load time impact. Another example would be the unneeded CSS codes that are there in DIVI even if you are not using that particular module. Oxygen on this regard is bare bone thus making it by far more lucrative. Below is a chart for comparison:

Divi VS Oxygen chart
Source: https://oxygen4fun.supadezign.com/
Note: This only represents non compressed data compression squeezes everything.

Speed

As Oxygen has less scripts and CSS, it is way faster than any other builder I have seen also the method it uses to deliver output is on par with the current trends.

Special Oxygen Only Features

Oxygen has many features some core to oxygen only. One such feature is the conditions for all elements. Conditions is like sprinkles on top of elements, it can range from cookie based condition to interaction based condition. For example for a E-Commerce homepage one can set elements based on the time and day of the month. They can also set if in mobile show some thing else show blank. Such features are available in other builders too but they are limited, limited by the fact that the code output will happen but would not be displayed where as in Oxygen the code is not even produced so less codes for the browser to process. This helps to speed up sites that are big such as E-Commerce or Listing sites with ever changing contents based on user needs and interactions.

Conclusion

If some is starting with page builders Divi would be a great place to start if you want all in one item but if you are a novice at wordpress oxygen would be the best option there is.

Ads Temporarily Disabled

As I started developing my portfolio section, I noticed 6 great killer portfolio tips that I thought could improve just about any web portfolio. Having a great web portfolio is a must as it helps to describe what you can do, even though you may have a CV / Resume, a portfolio stands out the most. It helps create a difference between landing a job and being the secondary choice. So lets look into the 6 great tips.

Contents

Portfolio listing

Portfolio Tip #1: Showcase the best

Show your best works, it will illuminate your works better instead of throwing out all the different works you have done. If you are not satisfied with a work its best to avoid it in the portfolio. This will ensure you receive quality work instead impractical tasks.

Portfolio Tip #2: Keep it simple

Someone browsing your portfolio only came there for a lot of reasons. Hopefully, to check out what you have accomplished, assess that which you’re able to, if they like what they see, hire you.
This ensures that the shorter, plus more obvious, you create the path to browsing live types of your work, better an impact you are going to leave on a potential employer or co-worker.

Example: Simple Portfolio

Portfolio Tip #3: The Real Thing

It really helps to engage a person when they can browse live versions of your hard work. Imagine how disappointed a potential employer is going to be after they go to a nice piece of work that like, and would like to explore, but it ends up to simply be considered a barely perceptible image of an online site. So, create a link and provides them genuine!

Portfolio Tip #4: Good Website Design

Having a design that does not only looks good: but, is easy to see, navigate, and engages an individual is very important for making a good impression online. Using the A.I.D.A. formula is a fantastic idea when making: A – you would like to capture their Attention. I – Hold their Interest D – Convince them they Desire what your offering and finally A – Lead them to take action.

Portfolio Tip #5: Have a Strong Logo

For a business or any individual, having a logo and a logo to represent that brand can help get you noticed and remembered. A logo signifies strength of a portfolio website. It really is important to have someone that knows what they are doing for this one; if you’re not acquainted with the procedure yourself, rely on someone else which is. Building a brand name and logo that is certainly memorable, distinct, and truly represents the theme of your business or your work.

Portfolio Tip #6: More isn’t always better

If you have plenty of work to exhibit though, if not think of limiting your selection for a best items of work. Think about which pieces highlight skills you would like to offer, highlight stronger interests you pursue, and constantly try to select one that flaunts something was challenging for you: this to spotlight your more advanced/valuable skills.

Conclusion

Having a a great web portfolio describes you and your work. It not only defines what you can do but also help you on landing high paid contracts and jobs, simply ensuring what you have to present to them. Most people look for specific niche thus the illustrations of your work will help to create a vision in their mind what to expect from you.

Extras

Courses you can opt -in to better your portfolio:

Ads Temporarily Disabled

Scope (How the Integration Came to be)

I have recently migrated all my posts from DIVI builder to Gutenberg and plan to use it going forward. Recently diving into Oxygen Builder I found some mismatches in the CSS and they were bugging me a lot. Being a curious new player in the field I wanted to fix it.

Version History

Version 1 - NOV 2019

The first set of integration work is live and is working flawlessly with few errors. Almost all the blocks were working correctly except the Embed of Facebook & Audio.

Version 2 - 10 FEB 2020

Updated it too look better on some cases.
Fixed Bug: Caption links and caption texts on images

Installation - Oxygen Template System

The Installation of this integration is fairly easy. One of the greatest feature in oxygen comes to play regarding this, Inner Content. Inner Content out of the box does not do anything but the mixing of code levels it up.

Steps

  1. Create New Template - No Design Inherits & in the others section toggle Inner Content. What this will do is capture everything that is passes the inner content but is not built with Oxygen Builder itself. Example if a page is made with Gutenberg only that will pass through this template nothing else.
  2. Go to Templates and Navigate to your Blog Post Template (Single Blog Post). Open the template in Oxygen.
  3. Once the Oxygen builder opens, click add and then add a section. Inside the section place a inner content element. This is the default system meant for Oxygen to work correctly. you should already have the inner content template. On the same section follow step 4.
  4. Add a Code Block Element to the section below inner content. Add the below codes to the code block respectively to get them working.

Codes

PHP & HTML

<?php
add_theme_support( 'responsive-embeds' );
add_theme_support( 'customize-selective-refresh-widgets' );
add_theme_support( 'wp-block-styles' );
add_theme_support( 'align-wide' );
add_theme_support( 'editor-styles' );
add_editor_style( 'style-editor.css' );
?>

CSS

.wp-block-preformatted {
display: block;
  font-family: Menlo, Consolas, monaco, monospace;
  white-space: pre-wrap;
  word-wrap: break-word;
  text-align: justify;
  margin: 1em 0;}

    
.wp-block-code {
	font-family: Menlo, Consolas, monaco, monospace;
	font-size: 14px;
	color: #23282d;
	padding: 0.8em 1em;
	border: 1px solid #e2e4e7;
	border-radius: 4px;
 	white-space: pre-wrap;
}

.wp-block-audio{
color: #23282d;
	font-size: $default-font-size;
  text-align: center;}

pre.wp-block-verse {
  white-space: pre-wrap;
}

.wp-block-image figcaption {
  overflow-wrap: break-word;
  text-align: center;
  font-size: x-small;
}

The above should work for all Oxygen versions.

Ads Temporarily Disabled

chevron-down-circle