(JSON:ParserError) "{N}: "alihack <%eval request(\"alihack.com\)"에서 예기치 않은 토큰"%>
저는 Ruby on Rails 3.2.11과 Ruby 1.9.3에 웹사이트를 가지고 있습니다.
다음 오류의 원인:
(JSON::ParserError) "{N}: unexpected token at 'alihack<%eval request(\"alihack.com\")%>
로그에 이와 같은 오류가 몇 개 있습니다.모두 요구(alihack.com\)를 평가하려고 합니다.
로그 파일의 일부:
"REMOTE_ADDR" => "10.123.66.198",
"REQUEST_METHOD" => "PUT",
"REQUEST_PATH" => "/ali.txt",
"PATH_INFO" => "/ali.txt",
"REQUEST_URI" => "/ali.txt",
"SERVER_PROTOCOL" => "HTTP/1.1",
"HTTP_VERSION" => "HTTP/1.1",
"HTTP_X_REQUEST_START" => "1407690958116",
"HTTP_X_REQUEST_ID" => "47392d63-f113-48ba-bdd4-74492ebe64f6",
"HTTP_X_FORWARDED_PROTO" => "https",
"HTTP_X_FORWARDED_PORT" => "443",
"HTTP_X_FORWARDED_FOR" => "23.27.103.106, 199.27.133.183".
199.27.199.199 - 는 CLoudFlare IP 입니다.「 REMOTE _ ADDR " = > 「 10 . 93 . 15 . 235 」및 「 10 . 123 . 66 . 139 」및 그 외는 프록시의 가짜 IP라고 생각됩니다.
다음 링크 담당자는 같은 IP 주소(23.27.103.106)의 웹 사이트에서 같은 문제를 겪고 있습니다.
요약하자면, 모든 에러에서 공통 ip는 23.27.103.106이며, 이들은 루비의 평가를 사용하여 스크립트를 실행하려고 합니다.
그래서 질문하겠습니다.어떤 종류의 취약성을 찾으려 합니까?무엇을 해야 하나?IP를 차단하시겠습니까?
잘 부탁드립니다.
왜 이런 일이 일어나죠?
적어도 리모트 코드 실행의 취약성을 테스트하거나 부정 이용하는 시도인 것 같습니다.일반(Rails 이외의 플랫폼을 대상으로 함) 또는 이전 버전에 존재했던 플랫폼일 수 있습니다.
그러나 실제 오류는 이 요청의 내용이HTTP PUT
와 함께application/json
헤더는 있지만 본문은 유효한 json이 아닙니다.
개발 환경에서 이를 재현하려면 다음 절차를 수행합니다.
curl -D - -X PUT --data "not json" -H "Content-Type: application/json" http://localhost:3000
상세
Rails action_dispatch는 디코딩할 본문을 전달하여 모든 json 요청을 해석하려고 합니다.
# lib/action_dispatch/middleware/params_parser.rb
def parse_formatted_parameters(env)
...
strategy = @parsers[mime_type]
...
case strategy
when Proc
...
when :json
data = ActiveSupport::JSON.decode(request.body)
...
이 경우 유효한 JSON이 아니며 오류가 발생하여 서버가 500을 보고합니다.
생각할 수 있는 해결책
어떻게 대처하는 것이 최선책인지 잘 모르겠습니다.몇 가지 가능성이 있습니다.
- IP 주소를 차단하려면
iptables
- 필터(
PUT
또는 모두)에 대한 요구/ali.txt
의 범위 내에서nginx
또는apache
설정을 실시합니다. - 보석 같은 도구를 사용해서 거기에 필터를 바릅니다.(이 랙 공격 문제 참조)
- 보석을 사용하여 오류를 포착하고 레일 내에서 처리합니다(이 SO 답변 및 이 기트허브 문제 참조).
블록PUT
Rails 내의 요구routes.rb
명시적으로 허용된 URL을 제외한 모든 URL로 이동합니다.이 경우 오류가 Rails의 경로에 도달하기도 전에 발생하므로 이 작업은 불가능할 수 있습니다.- 미들웨어를 사용하여 다음과 같은 설정으로 json 해석 오류를 검출합니다.
config/application.rb
- 자신만의 미들웨어를 작성하십시오.이 게시물에 있는 것과 비슷한 무언가가
저는 지금 3번, 4번, 6번으로 기울어져 있어요.이 모든 기능은 다른 유형의 봇/스캐너 또는 나중에 팝업될 수 있는 기타 잘못된 요청에 유용할 수 있습니다.
다양한 대체 솔루션에 대해 사람들이 어떻게 생각하는지 듣고 싶다.
내 사이트에서 이상한 로그 엔트리를 봤는데(Ruby를 사용하지 않는다) 구글이 나를 이 스레드로 데려갔다.엔트리의 IP가 달랐습니다.[120.37.236.161]
좀 더 자세히 살펴본 후, 주로 추측/학력 있는 추측은 다음과 같습니다.
우선, 제 로그에서 http://api.alihack.com/info.txt에 대한 참조를 보았습니다.- 이 링크를 체크했습니다.PHP 주입을 시도하는 것처럼 보였습니다.
또, 「register.php」페이지도 있습니다.제출하면 「invite.php」페이지가 표시됩니다.
이 도메인에 대한 추가 조사를 통해 http://www.alihack.com/2014/07/10/168.aspx에 접속할 수 있었습니다(페이지가 중국어로 되어 있지만 Google 번역이 도움이 되었습니다).
나는 이 "블랙 스파이더" 도구가 스크립트 키즈들에 의해 수정되어 "취약하기 쉬운" 사이트를 찾기 위해 카펫 폭격기로 사용되기를 기대한다.
설정에 「alihack」서브스트링을 포함한 모든 시도를 자동적으로 거부하는 것을 추천합니다.
롤바 로그에 /ali에 대한 PUT 요청과 같은 문제가 표시되었습니다.txt
이 IP를 차단하기 위해 이 오류가 발생한 요청은 1개뿐입니다.제가 받은 요청은 프랑스에서 왔습니다 -> http://whois.domaintools.com/37.187.74.201
nginx 를 사용하는 경우는, 이것을 nginx conf 파일에 추가합니다.
deny 23.27.103.106/32;
deny 199.27.133.183/32;
Rails-3에는 특별한 회피책이 있습니다.https://github.com/infopark/robust_params_parser
언급URL : https://stackoverflow.com/questions/25274125/jsonparsererror-n-unexpected-token-at-alihackeval-request-alihack-c
'programing' 카테고리의 다른 글
ng-bind-html-unsafe를 제거한 상태에서 HTML을 삽입하려면 어떻게 해야 하나요? (0) | 2023.03.11 |
---|---|
Wordpress에서 Ajax 파일 업로드 - FormData를 전달할 수 없습니다. (0) | 2023.03.11 |
ES6 Import 스테이트먼트에서 곱슬곱슬한 중괄호의 사용법은 무엇입니까? (0) | 2023.03.11 |
자동 구성을 사용하여 여러 개의 (작동 중인) Webmvc 응용 프로그램을 생성하는 스프링 부트 (0) | 2023.03.11 |
Postgre란SQL은 Oracle의 SYSDATE와 동등합니까? (0) | 2023.03.11 |