"allrequestsallowed.com"… 해킹 시도?


11

내 (작고 개인적이며 절대적으로 중요하지 않은) 웹 서버에 대한 많은 시도가 있으며, 아파치와 fail2ban은 일반적으로 자신의 일을 올바르게 수행합니다. 그러나 나를 걱정하는 로그 항목이 있습니다.

xx.yy.www.zzz - - [9/Jul/2011:12:42:15 +0100] "GET http://allrequestsallowed.com/?PHPSESSID=5gh6ncjh00043YVMWTW_B%5CFAP HTTP/1.1" 200 432 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12"

문제는 대답이 404 코드가 아니라 200이었습니다. 괜찮아? 나에게는 이상하게 보이지만,이 분야 (및 다른 많은 분야)에 대한 나의 지식은 그것을 부드럽게 제한하는 것입니다.


1
새 답변을 게시 할 수는 없지만 로그에서 이와 같은 항목을 찾았으며 curl :을 사용하여 요청을 재현하여 위험하지 않은지 확인할 수있었습니다 curl -v http://allrequestsallowed.com/?PHPSESSID=5gh6ncjh00043YVMWTW_B%5CFAP -x www.example.com:80. 기본 설정은 우분투 시스템에서 의미있는 내용이없는 "Nginx에 오신 것을 환영합니다"페이지를 반환하는 것 같습니다. 따라서 200 응답이지만 간단한 포괄 페이지입니다. 실제로 다른 곳이나 그와 비슷한 요청을 프록시하지는 않습니다.
Frank Farmer

답변:


12

먼저, 예상되는 공격자가 무엇을하려고하는지 모르겠습니다. 어쩌면 이상한 세션 ID 공격에 취약한 PHP 스크립트 또는 PHP 버전이있을 수 있습니다. 그래도 걱정할 필요가 없습니다.

서버가 예상대로 동작했습니다. Apache가 URL로 전달되는 URL을 해석하는 방식으로 인해 특정 상황에서 200이 예상되는 코드입니다.

첫째, http://allrequestsallowed.com더 일반적인 'Host :'헤더로 처리됩니다 ( 이것이 RFC에 지정되어 있다고 생각하지 않으며 다른 서버가 내가 잘못한 방식으로 해석하지 않을 수 있습니다 . 5.1 절의 RFC 2616에 지정되어 있습니다. 2, 클라이언트가 그 형식을 거의 사용하지 않는 것 같지만 실례합니다. 잠시 전에 작성한 HTTP 서버 구현을 수정해야합니다 ...).

아마도 'allrequestsallowed.com'이라는 사이트가 없을 것입니다. 아파치가 Host:인식하지 못하는 호스트 이름에 대한 헤더 (또는 이와 동등한)를 받으면 어떻게됩니까 ? 첫 번째 가상 호스트를 기본값으로 선택합니다. 이것은 Apache에 대해 잘 정의되고 문서화 된 동작입니다. 따라서 이름이 무엇이든 첫 번째 가상 호스트가 무엇이든 (또는 가상 호스트가없는 경우 기본 서버 구성 만) 인수됩니다.

이제 나머지 URL은 경로 /, 및 GET 매개 변수 ( ?PHPSESSID...비트) 의 두 부분으로 구성됩니다 .

이제 경로 /는 거의 모든 웹 서버에 존재해야합니다. 대부분 의 경우이 스크립트 index.htmlindex.php스크립트 와 유사 하거나 스크립트에 매핑 되지만이 중 어느 것도 무시할 수 있습니다.

정적 HTML 파일에 매핑되면 파일의 내용이 반환되므로 매개 변수가 무시됩니다. (고급 구성 지시문이 설정되어 있지 않으며 거의 ​​확실하지 않다고 가정합니다.)

반면에 일종의 스크립트 인 경우 해당 PHPSESSID변수가 스크립트로 전달됩니다. 스크립트가 실제로 해당 변수를 사용 하는 경우 (이 경우 PHP의 내장 세션 처리를 사용하는 PHP 스크립트 만 가능) 내용에 따라 동작이 달라집니다.

그러나 /세션을 사용하여 PHP 스크립트에 매핑 하더라도 아무 일도 일어나지 않습니다. 어쨌든 세션 ID가 존재하지 않으며 무시되거나 스크립트에 오류가 표시됩니다.

드물게 세션 ID가 존재하는 경우에도 침입자는 다른 사람의 세션을 납치 할 수 있습니다. 그것은 나쁘지만 실제로는 보안 허점이 아닙니다. 공격자는 공격자가 세션 ID 정보를 어디에서나 얻을 수 있습니다 (HTTPS를 사용하지 않는 경우 무선 네트워크 감지는 좋은 후보입니다). 실제로는 원래 세션을 할 수 없었던 사용자는 할 수 없었습니다.

편집 : 또한 SESSIONID 내의 '% 5C'는 백 슬래시 문자로 매핑됩니다. 이것은 Windows 호스트에 대한 디렉토리 탐색 공격에 대한 테스트 인 것 같습니다.


나는 비슷한 요청 (404), (500), (403), 실행 내 서버의 20 배 했어 nginxlighttpd, 다른 것들 사이에 서버에 구멍을 악용하려는 시도를했고 사이버 분석 회사에 IP를 / 소스 호스트를 보낸 후,이 확인되었다 . OP, 다른 호스트에 의해 지정된 것과 유사한 요청. 당신은 그들이 완전히 무시되어야한다고 말하고 있습니까? 이들이 정말로 염려된다면에서의 호스트를 차단할 수 있기 때문입니다 iptables.
토마스 워드

@The Evil Phoenix : URL의 호스트는 요청이 시작된 곳이 아니며 'Host :'헤더와 같습니다. OP가 가려진 실제 클라이언트 IP 주소는 원하는 경우 iptables로 차단 될 수 있지만 요청이 많지 않으면 실제로 중요하지 않습니다. 누군가가 구멍을 악용하려고한다고해서 구멍이있는 것은 아닙니다. 매일 수많은 취약점을 악용하는 수많은 이상한 요청을 기록하는 수많은 Linux 서버를 관리합니다. 대부분의 서버는 Windows / IIS 취약점입니다! 맹검 스캔입니다. 적중하지 않으면 다음 IP 주소로 이동합니다.
Nicholas Knight

@The Evil Phoenix : 더구나, 만약 구멍 있다면, 그것을 악용 한 IP 주소를 차단하면 1 비트를 잘하지 못할 것입니다. 서버가 이미 손상되어 다른 소스의 동일한 공격에 취약 할 수 있으며 많은 소스가 있습니다. 모든 좀비 시스템 (및 수백만 개)은 악성 스캔의 잠재적 소스입니다.
Nicholas Knight

훌륭하고 철저한 설명 .... 많이 감사합니다. 나는 가려 기분을 상하게 : 그 / 그녀의 IP-자아 surfes을 경우에 IP를. 내 /는 아파치의 기본 "작동"에 매핑됩니다 (나는 전문가가 아닌 방법을 알고 있지만 개인적이라고 말했습니다). 따라서 동일한 IP가 고통 스럽지 않으면 아무것도 하지 않아야한다고 가정합니다.이 경우 iptables (또는 hosts.deny?)로 차단합니다. 다시 감사합니다.
luri

1

이 모든 요청이 모든 주차 도메인에 대한 A 레코드로 사용되는 IP에 기록되었습니다.

이 호스트 이름은 대상 호스트를 가리키는 "공격자"로컬 호스트 파일과 함께 사용됩니다.

31.44.184.250의 실제 웹 서버는 외부 요청을 처리하기위한 것입니다.

내 의견 : 전혀 무해합니다. 호스트 파일의 다른 가짜 도메인 이름으로 할 수있는 일을 제외하고는 부가 가치가 사용되지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.