티스토리 뷰
강의를 듣고 정리한거 이후 수정할 예정
XXE : XML 파싱 기능이 있는 애플레케이션에 대한 공격 수행
XML External Entity
body 에 xml 이 있는가
일반적인 웹서비스는 요즘 json을 많이 쓰고, xml을 쓰는 경우는 그렇게 많지 않음
레거시 시스템들이 많이 사용하고 있는데, 여기가 위험함
xml parser ->xml
이때 xml 자체에서 외부 파일, 개체를 참조 할때 위험함
*DTD : Document Type Definition
Q. 외부 개체, 내부 개체
내부 개체 : <!ENTITY str "[문자열]">
외부 개체 : <!ENTITY str SYSTEM "file://[경로]">
-> 이때 외부 개체에 들어가는 경로에 악의적인 경로를 넣으면 위험함. eg) /etc/password
-> SYSYEM이라는 지시어는 위험함
#실습
* 내부 개체 참조
<!DOCTYPE a[
<!ENTITY str "jajajajajajaj">
]>
<print>&str;</print>
* 외부 개체 참조
<!DOCTYPE a[
<!ENTITY str SYSTEM "file:///information/secret_info.txt">
]>
<print>&str;</print>
소스코드 볼려면 base64로 인코딩 해줘야함
* 외부 개체 참조(소스코드)
<!DOCTYPE a[
<!ENTITY str SYSTEM "php://filter/read=convert.base64-encode/resource=file:///APM_setup/htdocs/isw/xmlparser.php">
]>
<print>&str;</print>
=> 암튼 이런 식으로 외부 자원을 무단으로 열람할 수 있다는 거임 (SYSTEM 예약어를 활용해서!)
#대응방안
1. JSON 데이터 형식으로 기능 구현[xml 폐기]
2. DTD 및 외부 엔티티 비활성화
(3. xml parser 기능을 제거)
* 외부 개체 참조 비활성화(java)
factory = dbFactory.newDocumentBuilder();
doc = dBuilder.parse(xmlFile);
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
* 외부 개체 참조 비활성화(php)
libxml_disable_entity_loader(true);
서버 사이드마다 조치 방법이 다르므로, 이를 잘 알아봐서 적용하기!
php의 경우 위 처럼 조치해준 후 외부 개체를 참조하면 에러발생하면서 참조 불가함

'연습' 카테고리의 다른 글
[Typescript] nodemon 설정하기 (0) | 2021.05.27 |
---|---|
[Python] cli에서 '.' 넘기기 (0) | 2021.05.20 |
Prepared Statement (0) | 2021.05.14 |
내맘대로 정리한 데이터 조회 공격: Blind Based (0) | 2021.05.14 |
내맘대로 정리한 데이터 조회 공격 : Union Based (0) | 2021.05.13 |
- Total
- Today
- Yesterday
- 위상정렬
- SQL
- 코딩테스트
- django test
- BOJ
- requests
- 스택
- 삽질
- Event Sourcing
- Javascript
- 이것도모르면바보
- 최대한 간략화하기
- factory_pattern
- Python
- 프로그래머스
- 우선순위큐
- 백준
- 파이썬
- django testcase
- vscode
- cipher suite
- Remote
- SSL
- 불필요한 값 무시하기
- 그리디
- jwt
- docker-compose update
- 힙
- Til
- endl을절대쓰지마
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |