문제

최근 SQL 인젝션 공격의 희생양이 된 비영리 웹 사이트의 유지 관리를 맡았습니다. 누군가 사이트의 양식을 악용하여 데이터베이스에서 사용 가능한 모든 텍스트 유사 필드 (varchar, nvarchar 등)에 텍스트를 추가했습니다.이 필드는 HTML로 렌더링 될 때 JavaScript 파일을 포함하고 실행합니다.

Google에서 URL을 검색하면 루마니아 또는 중국에 거주하는 이메일 스팸 발송자가 보낸 것으로 표시되지만 지금은 중요하지 않습니다.

나는 사이트에서 가장 눈에 잘 띄고 인기있는 페이지에 렌더링되는 텍스트 필드에서 정보를 수동으로 제거했지만 다른 텍스트 필드에서 텍스트를 제거하는 가장 좋은 프로그래밍 방식이 무엇인지 궁금합니다. 그 자리에서.

분명히해야 할 일이 더 많고 (SQL 인젝션에 대한 사이트 강화, HTML 저장 대신 마크 다운과 같은 것을 사용하는 등) 작업 중이지만 당분간은 정말 필요한 것이 좋은 방법입니다. 들어가서 삽입 된 텍스트를 프로그래밍 방식으로 제거합니다. 정확한 텍스트가 무엇인지 알고 있으며 매번 동일하며 항상 모든 텍스트 필드의 끝에 추가됩니다. 지금은 데이터베이스의 모든 HTML을 제거 할 여유가 없으며 이것이 정확히 언제 발생했는지 모르기 때문에 백업으로 롤백 할 수 없습니다. 또한 사이트가 공유 호스팅에 있으며 SQL Server 도구를 사용하여 데이터베이스에 직접 연결할 수 없습니다. 그래도 쿼리를 실행할 수 있습니다. 따라서 "전체 데이터베이스의 모든 테이블에서 모든 텍스트 필드를 찾아서 정리하기 위해이 작업을 수행"효과에 대한 SQL 업데이트 문을 구성하는 방법이 있다면 베스트.

도움이 되었습니까?

해결책

최근 백업에서 데이터를 복원합니다.

다른 팁

나는 피해자 였고 당신은 그것을 정리하는 데 사용할 수 있습니다 라코 디스

당신이 다른 모든 사람들과 같은 공격에 희생되었다고 가정하면, SQLMenace의 코드는 가깝습니다. 그러나이 공격은 다양한 스크립트 URL을 사용하므로 데이터베이스에 표시되는 URL과 일치하도록 사용자 정의해야합니다.

저도 이에 대해 썼습니다 , 내 솔루션 코드에는보다 일반적인 정리가 포함되었습니다.

한 가지 중요한 점은 가장 먼저 사이트를 삭제 하는 것입니다. 지금은 사용자에게 악성 코드를 적극적으로 제공하고 있으며, 이로 인해 나중에 법적 문제가 해결 될 수 있습니다. 사용자가 어둠 속에 두지 않도록 자리 표시 자 페이지를 게시하고 맬웨어를 계속 제공하지 마십시오. 그런 다음 사이트를 수정하여 더 이상 주사에 취약하지 않도록 할 수 있습니다. 이 특정 공격에 대해 이를 수행하는 가장 간단한 방법은 웹 사용자에 대한 sysobjects / syscolumns 권한을 비활성화하는 것입니다.하지만 정리를 통해 더 많은 것을 만들고 싶거나 시간 문제 일뿐입니다. 다시 금이 갈 때까지. 그런 다음 제공된 코드를 사용하여 사이트를 정리하고 다시 활성화 할 수 있습니다.

이렇게하면 사이트가 실행되는 사용자 이름에서 sysobject 권한을 제거하고 입력 내용을 삭제하는 것이 좋습니다 라코 디스

이에 대해 잠시 여기에 썼습니다. Microsoft는 SQL 주입 공격을 해결하기위한 도구를 출시했습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top