123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- To test there is no SQL injection, we can use:
- -- Installation of sqlmap
- -------------------------
- git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap
- cd sqlmap
- ./sqlmap.py --update
- ./sqlmap.py --purge
- Add, into file ~/git/sqlmap/data/xml/payloads/boolean_blind.xml, the custom rule:
- <!-- Boolean-based blind tests - WHERE/HAVING clause -->
- <test>
- <title>Our_ORDERBY_Payload</title>
- <stype>1</stype>
- <level>1</level>
- <risk>1</risk>
- <clause>1</clause>
- <where>1</where>
- <vector>,(select * from(select (CASE WHEN ([INFERENCE]) THEN 1 ELSE exp(710) END))a)</vector>
- <request>
- <payload>,(select * from(select (CASE WHEN (1=1) THEN 1 ELSE exp(710) END))a)</payload>
- </request>
- <response>
- <comparison>,(select * from(select (CASE WHEN (1=2) THEN 1 ELSE exp(710) END))a)</comparison>
- </response>
- <details>
- <dbms>mysql</dbms>
- <os>linux</os>
- </details>
- </test>
- -- Launch sqlmap on a given url/parameter
- -----------------------------------------
- Introduce a vulnerability by changing the GETPOST on parameter search_status into GETPOST('search_status', 'none') and removing $db->sanitize when parameter is used;
- ./sqlmap.py --fresh-queries -u "http://localhostdev/comm/propal/list.php?search_status=*"
- ./sqlmap.py -A "securitytest" --threads=4 -u "http://localhostdev/comm/propal/list.php?search_status=*" --dbms=mysql --os=linux --technique=B --batch --skip-waf \
- --cookie="DOLSESSID_xxxxxx=yyyyyyyy;" --prefix='1' -v 4 > sqlmap.txt
- Check vulnerability is found into sqlmap.txt. Scanner is working.
- -- Launch sqlmap on all the application
- ---------------------------------------
- Set $dolibarr_nocsrfcheck='1' into conf.php file to make access easier.
- With prefix (required to have some rules working)
- ./sqlmap.py -A "securitytest" --threads=4 -u "http://localhostdev/" --crawl=2 --crawl-exclude="logout|user\/card|custom\/" \
- --skip=sortorder --skip=sortfield --dbms=mysql --os=linux --technique=B --batch --skip-waf \
- --cookie="DOLSESSID_xxxxxxxxx=yyyyyyyyyyyyyyyy;" --prefix='1' -v
- Without prefix
- ./sqlmap.py -A "securitytest" --threads=4 -u "http://localhostdev/" --crawl=2 --crawl-exclude="logout|user\/card|custom\/" \
- --skip=sortorder --skip=sortfield --dbms=mysql --os=linux --technique=B --batch --skip-waf \
- --cookie="DOLSESSID_xxxxxxxxx=yyyyyyyyyyyyyyyy;" -v
|