�@��������́A�M�҂炪��u�����g���[�j���O�̓��e���Љ�܂��B
�@1�ڂ́A�uThe Art Of Exploiting Injection Flaws�v�ł��BSQL�C���W�F�N�V�����ɑ�\�����C���W�F�N�V�����U���ɂ��āA�u�t���p�ӂ����T�[�o�[�ւ̋^���U����ʂ��A���̍U����@�𗝉�����̂��ړI�ł��B
�@�u�t�́A�uSQL Injection, attacks and defense�v�̋����҂ŁA�m�b�g�\�[�Z�L���A�iNotSoSecure�j�n���҂̃X�[�~�b�g�E�V�b�_�[���^�iSumit Siddharth�j���ł��B
�@�g���[�j���O�ł́A��{�I��SQL�C���W�F�N�V�����̎�@����A�u���C���hSQL�C���W�F�N�V�����A�C���W�F�N�V�����ɂ��R�}���h���s�ASQL�ȊO�̃C���W�F�N�V�����iLDAP�AXPath�AXQuery�AXML�j�Ȃǂɂ��Ċw�т܂����B
�@�����ł́A�g���[�j���O�̒������u���C���hSQL�C���W�F�N�V�����𗘗p�����U���ɂ��āA���K�ʼn�����ꂽ���e���Č�����`�ŊT�v���Љ�����Ǝv���܂��B
�@�u���C���hSQL�C���W�F�N�V�����Ƃ́A�����y�[�W������ړ��ݏo���̂ł͂Ȃ��A�}������SQL�ɑ��鉞���y�[�W�̈Ⴂ����A�f�[�^�x�[�X�Ǘ��V�X�e���Ɋւ�����i���s���[�U�[��e�[�u�����Ȃǁj�𓐂ݏo�����̂ł��B
�@�܂��A��ނƂ��Ďg�p����A�U���Ώۂ�Web�A�v���P�[�V�����ɂ��Đ������܂��B����Web�A�v���P�[�V�����́A�u���iID�v�u���i���v�u���i�v��3�J��������Ȃ�e�[�u���������Ă�����̂Ƃ��܂��B
id | name | price |
---|---|---|
1 | �R�[�q�[ | 100 |
2 | �g�� | 120 |
3 | �E�[������ | 90 |
Table: items |
�@�����āA���[�U�[���u���E�U�[����ID��^����ƁA����ID�����̂܂܃L�[�Ƃ��ėp���Ĉȉ��̂悤�ȃN�G���s���A���i���Ɖ��i��\��������̂Ƃ��܂��B
SELECT name, price FROM items WHERE id=�i���[�U�[���^����ID�j
�@�Ⴆ�A���[�U�[��ID�Ƃ��āu1�v��^����ƁA�ȉ��̃N�G�������s����A��ʂɂ́u�R�[�q�[ 100�v�Ƃ�����ɁA���i���Ɖ��i���\������邱�ƂɂȂ�܂��B
SELECT name, price FROM items WHERE id=1
�@�ł́A�����Ń��[�U�[��ID�Ƃ��āu1 and 1=1�v��^����Ƃǂ��Ȃ�ł��傤�B
SELECT name, price FROM items WHERE id=1 and 1=1
�ƂȂ�Aand�ȍ~�͐^�ł��̂ŁA��ʂɂ͐�قǂƕς�炸�u�R�[�q�[ 100�v���\������܂��B�ł͎��ɁA���[�U�[��ID�Ƃ��āu1 and 1=2�v��^����Ƃǂ��Ȃ�ł��傤�B
SELECT name, price FROM items WHERE id=1 and 1=2
�@���x�́Aand�ȍ~���U�ł��邽�߁A��ʂɂ͏��i���^���i�͉����\������܂���B
�@���̂悤�ɁAWeb�A�v���P�[�V������SQL�C���W�F�N�V�����̐Ǝ㐫������ꍇ�A�}�����ꂽSQL���̐^�U�ɉ����ĕω����鉞�����ʂ���A�u���C���hSQL�C���W�F�N�V�����ɂ���Ă��܂��܂ȏ���o���Ă��܂����ꂪ����܂��B
�@�Ⴆ�A���[�U�[��ID�Ƃ��āu1 and substring((select user()),1,1)=�fA�f�v��^����Ƃǂ��Ȃ�ł��傤���i���j�B�����Ŏ��s�����N�G���͈ȉ��̂悤�ɂȂ�܂��B
���Fsubstirng()�͕�����̈ꕔ���o�����Auser()�̓f�[�^�x�[�X�Ǘ��V�X�e�������s���Ă��郆�[�U�[��Ԃ����ł���A�f�[�^�x�[�X�Ǘ��V�X�e���ɂ���ẮA�g�p�ł������������قȂ�ꍇ������܂��B
SELECT name, price FROM items WHERE id=1 and substring((select user()),1,1)=�fA�f
�@user()���Ԃ�������̍ŏ��̕������fA�f�ł���Ȃ�Aand�ȍ~���^�ł��邽�߁A��ʂɂ́u�R�[�q�[ 100�v���\������܂��B�fA�f�ȊO�Ȃ�Ή�ʂɂ͏��i���E���i�͉����\������܂���B
�@������ʂɂ�user()�̖߂�l�͈�ؕ\������Ȃ��ɂ�������炸�A������ʂ��m�F���邱�ƂŁA�U���҂�user()�̖߂�l�ɂ��Ă̏��邱�Ƃ��ł��܂��B���ꂪ�u���C���hSQL�C���W�F�N�V�����U���̌����ł��B
�@��L�̕��@�ł́A1�o�C�g�̏�����肷�邽�߂Ɂu������A��B���c�c�v�ƁA�ň��̏ꍇ�̓A���t�@�x�b�g�̐������N�G�����J��Ԃ��K�v������܂����A�����R�[�h�̑召�W��p���A�o�C�i���T�[�`�ŃN�G���s������@���g���ƁA1�o�C�g�̏���8��̃N�G���œ���ł��܂��B���̂悤�ȃN�G���̔��s�́A�X�N���v�g��p����ΊȒP�Ɏ������ł��A���ۂɂ��̂悤�ȃc�[��������m���Ă��܂��B
�@���̂悤�ɁA�u���C���hSQL�C���W�F�N�V�����́A�}������SQL�ɑ��鉞���y�[�W�̈Ⴂ������𓐂ݏo���U���ł���A�����y�[�W���������Ă����̍U���ɋC�t�����Ƃ͍����ł��B
�@�������ASQL�C���W�F�N�V��������m���ɍs�����ƂŁA�u���C���hSQL�C���W�F�N�V�����̔�Q���h�����Ƃ��ł��܂��B��{�I�ȃZ�L�����e�B�����ɏd�v�ł��邩����������ł��B
�@��҂̋L���ł́AModSecurity�Ɋւ���g���[�j���O�ƁA�M�҂炪���ڂ����Z�b�V�����̓��e�����Љ�܂��B
OWASP AppSec USA 2012 ���|�[�g�F
WAF�̐��\�𑪂���@�́H �\�[�V�����G���W�j�A�����O�𐬌������₷���^�C�v�Ƃ́H
http://www.atmarkit.co.jp/ait/articles/1302/12/news013.html
Copyright © ITmedia, Inc. All Rights Reserved.